Skip to content

Latest commit

 

History

History
263 lines (191 loc) · 22.9 KB

TASK.md

File metadata and controls

263 lines (191 loc) · 22.9 KB

当前开发任务:照着一本书写的创作承接合同

更新时间:2026-09-24
工作分支:feature/creative-carryover-contract
开发基线:2c035ac7(main / beta)
阶段状态:第一部分已完成代码核对与针对性验证,等待用户人工入口验收;第二、三部分尚未完成。

总目标与前置条件

用户从已完成拆书点击“照着一本书写”后,能看到原书特点、本书实现和前三章方向;续写承接原作事实与未完线索,参考创作继承阅读体验并生成独立故事。这份关系必须持续作用于方向、宏观规划、卷章与章节。普通原创没有创作承接合同,其请求、Prompt 上下文、检索和恢复行为保持原样。

  • 来源拆书应已完成,冻结的原文版本仍可读取;材料不足时列出缺失内容并引导补做拆书,不静默进入普通原创。
  • 创作模型应能完成结构化输出;向量库与嵌入模型可以增强原文证据,但不是生成承接合同的前置条件。
  • 使用现有导演任务、检查点、恢复及章节生产链;只在参考路线的入口和上下文边界增加能力,不复制导演执行器或状态机。
  • 数据库只允许兼容的新增迁移;不得重置或清理现有小说、拆书与任务数据。

第一部分:入口与承接合同

目标:用户选择续写或参考创作后,先看到可理解、可采用的 AI 方案,刷新与任务恢复时不丢失。

  • 核对 Prompt Registry 的结构化合同:模式、来源拆书及冻结的原文版本、证据、原书特点、本书实现、前三章方向。续写覆盖终局人物状态与未完线索;参考创作覆盖钩子、冲突循环、爽点节奏和新书转换方案。
  • 核对材料门槛、生成失败与重试、采用方案后才能生成方向;普通原创不生成合同。材料不足应给出可执行提示。
  • 核对合同在开书草稿、导演任务快照、小说可空字段中的持久化与恢复;写法资产异步准备,不阻塞承接方案。
  • 完成针对性测试、类型检查及人工入口验收后,才将本部分标记为完成。

代码核对已覆盖合同生成、材料门槛、草稿和任务恢复、建书写入;切换创作模式或拆书来源时,旧合同不再用于生成方向或保存,建书前再次校验采用状态与来源。共享类型、客户端、服务端的针对性检查及双数据库 schema 校验已通过;人工入口验收仍待用户完成,因此第一部分暂不标记为完成。 用户反馈采用方案后页面可能持续显示生成状态,刷新后才显示完成。已修复任务恢复回调反复回放旧快照的问题;待用户复验采用后的即时状态,第一部分完成项继续保持未勾选。

第二部分:规划接入与来源隔离

目标:承接合同持续影响长篇生产,并将新增逻辑收口在参考能力内部。

  • 扩展现有 NovelReferenceService 的阶段上下文出口;核对方向候选,并接入故事宏观规划、卷战略、卷骨架与章节节拍。各阶段消费简短的结构化合同块,不在每个生成器复制模式判断。
  • 续写章节复用 NovelContinuationService 的来源约束,承接原作终局状态、人物关系与未完线索。
  • 参考创作章节使用合同的阅读承诺与节奏,同时只针对该参考项目排除来源原文的章节事实召回;普通原创的知识库检索范围不变。
  • 核对写法资产晚于建书完成或提取失败时的绑定与提示,不让写法状态覆盖结构参考合同。

当前快照主要覆盖第一部分及开书时“帮我填写”的参考输入;宏观、卷章、章节及检索隔离的完整接入仍需开发和验证。

第三部分:回归验收与交付

目标:证明三条路线的行为正确,尤其证明普通原创未受影响。

  • 先固定普通原创的请求、Prompt 上下文、检索范围和恢复基线;变更后逐项对照。
  • 用同一份已完成拆书分别检查续写和参考创作:合同、任务恢复、宏观与卷章输入、前三章承接效果。
  • 验证无向量库、拆书材料不足、合同生成失败、写法提取失败或延迟、任务中断恢复等场景。
  • 运行共享类型、服务端、客户端、双数据库迁移及相关链路的最窄充分检查;UI 交互由用户验收。
  • 各阶段形成独立提交并补充稳定 wiki 知识;功能分支通过后再合入 beta 做组合验证,beta 稳定后再考虑 main 与发布。

跨电脑接续与上次交接

  • 上次用户要求保存当时的新代码并推送分支,以便在另一台电脑继续;当时明确不验证那些新代码。那次提交与推送只证明快照已保存,不代表功能通过。
  • 另一台电脑执行:git fetch origin,然后 git switch feature/creative-carryover-contract;若本地已存在该分支,执行 git pull --ff-only origin feature/creative-carryover-contract。
  • 先阅读本节及 docs/wiki/workflows/book-analysis-workflow.md,再检查分支 diff、未完成事项、第一部分的合同读写闭环。不要依据下面的历史任务标题、分支名或“本机禁止推送”说明处理当前分支。
  • 上次交接建议优先核对合同生成/采用/恢复及普通原创隔离,再开发第二部分;第三部分的测试与真实模型验收在用户恢复工作后进行。向 Codex 提供分支、提交号、测试结果和验收样例,供独立校验。

历史任务归档:正文生产与问题治理收束

更新时间:2026-09-01 当前分支:codex/issue-governance-p1-closure 开发基线:beta@9bdb5766(本地 beta 尚未推送) 阶段状态:P0、P1 已收束;执行链清理 Phase 1–5 已完成,当前功能分支等待进入 beta 组合验证

阶段目标

把“正文生成 → 审核 → 问题识别 → 修复 → 保存 → 继续运行”收束为一条低耦合、可恢复、可解释的生产链。问题管理只负责给出治理动作,生成与运行模块只执行动作,不在各调用点重复判断、重试或修改任务状态。

两条产品路线不是写死在执行代码中的分支,而是问题管理的预设配置:

  1. 连续完成优先:允许审核与一次修复尝试;局部问题形成质量债并继续,只有明确重规划、无可用正文或运行安全/数据完整性问题才暂停。
  2. 质量优先:无论人工分阶段还是整本自动创作,只要统一治理决定为 pause_for_manual,就停在已保存的章节边界等待显式恢复。

共同硬边界:

  • 单章自动修复的最大重试次数小于 2,即最多 1 次。
  • 局部质量问题不得自动升级为整本书失败或重规划。
  • 连续完成优先在整本自动创作已有可用正文时,把局部质量问题降级为质量债并继续。
  • 质量优先允许在相同章节边界暂停,但只能通过问题治理快照决定,不得在执行器中另写判断分支。
  • 只有结构化治理决定可以要求暂停、失败或重规划。
  • 正文保存、章节状态、时间线和任务状态必须在统一生命周期边界内提交。
  • 不增加新的执行路线、不引入新的依赖、不恢复“章节合同/分场景多轮正文生成”。

已完成任务

A. 当前分支前置产品任务

  • 热门题材雷达支持选择分析榜单与逐本勾选作品。
  • 榜单采用固定高度列表,榜单内提供全选/取消全选,页面保留紧凑标题并移除冗余框架。
  • 项目低边框视觉规范写入全局开发规则;现有兼容 UI 原语继续保留,但不再新增 shadcn 组件。
  • 自动导演预计章节数允许清空后重新输入。
  • 自动导演简易模式、专业模式入口移到更明显的位置。
  • 专业创作导出支持 TXT。

对应本地提交:3210a5ff、fab0c354、ca010796、a89c6d0f、f2f31e33、c5ff1808、ec07fa05、36be4da4、fcd56814、04ed970d、e0ab3451。

B. 问题治理预设与运行边界

  • 把“连续完成优先 / 质量优先”实现为问题管理预设,而不是两套硬编码执行流程。
  • 两份命名预设覆盖全部问题动作;选择后不再逐项继承全局,只有“恢复继承全局”整体解除本书预设。
  • 人工恢复动作遵守当前小说的问题治理策略。
  • 移除章节运行前重复的问题评估,避免同一问题被二次判断。
  • 章节运行与质量修复共用同一重试预算,自动修复最多 1 次。
  • 运行时直接信任已生成的治理动作,不再额外套一层风险判定。
  • 缩小自动导演运行前检查职责:只做运行安全与数据完整性检查,不拥有质量重试策略。
  • 问题发现改为只读,不在识别阶段顺带修改任务、章节或问题状态。

对应本地提交:d7d8f281、9a929f4a、b2faf530、0a5185f2、8950981f、232068e3、1724c6df。

C. 正文修复、终结与生命周期收束

  • 手工修复与自动修复共用正文终结服务,避免修复成功后遗漏状态、摘要或后续同步。
  • 正文释放前先完成时间线终结:正常正文写入稳定时间线,可用但有质量债的正文写入降级时间线。
  • 时间线检查点写入成功后才释放后续状态,防止正文已完成但时间线仍未提交。
  • 删除隐藏的“松散锚点补丁再次调用 LLM”动作;修复路径保持一次补丁尝试,必要时最多一次整章修复。
  • 新增章节生命周期服务,统一管理 Chapter.content、生成状态与章节状态写入。
  • 运行时、修复流和正文终结不再直接分散写章节生命周期字段。
  • 补充章节运行边界、章节生产链与生命周期模块说明。

对应本地提交:cc5d69a6、948dd3a5、ee979e82、1873a958。

D. 人工审核与剩余旁路收束

  • 人工章节审核不再静默调用规划器;审核结果只返回结构化质量评估与重规划建议。
  • 明确的 stop_for_replan + global_book 会记录为章节级可恢复检查点,保留正文并等待用户显式重规划。
  • 质量标记、修复历史、generationState 与 chapterStatus 由章节生命周期服务一次提交,质量闭环不再直接写章节表。
  • 审计正文主链剩余直接写入与重规划调用:显式用户重规划、结构化局部窗口调整、无可用正文或数据安全失败保留;人工审核自动重规划和质量闭环直接状态写入已移除。
  • 版本恢复、用户显式编辑、规划章节创建属于各自受保护的数据边界,不混入章节问题治理执行器。

对应本地提交:本次 P0 1–2 阶段提交。

E. 热门题材雷达创作基础收束

  • AI 市场分析输出结构化题材基底、主要推进模式和可选辅助推进模式。
  • 雷达推荐在用户确认后复用统一题材基底库与推进模式库,缺失资产由 AI 结构化候选补充,不再维护雷达专属分类。
  • 市场简报持久化统一资源引用,并兼容旧版仅保存信号数组的数据。
  • 从雷达进入自动导演时直接展示并补齐推荐创作基础,不覆盖用户手动选择。
  • 雷达报告分别提供“加入题材基底库”和“加入推进模式库”,服务端成功后才显示查看入口并定位真实节点。
  • 已有资源明确显示“库中已有”而非新增成功;真正新建后主动刷新对应资源库缓存。

F. 真实章节故障闭环

  • 定位真实任务在第 8 章保存后、准备第 9 章路线窗口时失败:路线同步错误要求尚未进入执行期的章节必须已有完整执行合同。
  • 路线窗口同步只校验章节大纲;执行合同继续由章节执行前的 JIT 边界补齐和校验。
  • 章节异常、滚动规划异常和未知运行异常统一进入一次问题治理;动作失败会向上抛出,动作成功后才记录为已处理。
  • 质量问题的继续、暂停或失败动作接入同一控制流,不再只记录检测结果。
  • 人工恢复状态同时写回章节批次与书级工作流;后台同步不清除暂停,终态会收束遗留的运行中步骤。
  • 非阻断 JIT 预取失败仅记录运行日志,正式执行时重新准备,不再制造重复问题记录。

G. 2026-08-27 再次出现的真实任务问题

  • 已从本地运行库核对任务 cmtazkoqd0001osv1nh9hrfez、章节 cmtazrog400p0osv1a1l3jjk5 与批次:第 8 章正文仍完整保存(3153 字符,approved/completed),不是正文丢失。
  • 已确认当前批次 cmtb92o8300lobcv1modd4z0r 的实际阻断原因为 402 Insufficient Balance;批次状态为 queued + pendingManualRecovery,已完成 6/72,等待人工恢复。
  • 已确认同一书级任务仍显示 failed,并保留旧的 chapter.draft.write 未满足其完成标准 摘要;执行详情因此把历史章节合同错误放在当前余额错误之前,造成状态与原因错位。
  • P0:统一任务主状态投影:章节批次进入 pendingManualRecovery 后,chapter.draft.write 将其识别为合法暂停,不再用通用完成标准错误覆盖书级恢复状态;书级投影优先展示等待恢复与最新错误。
  • P0:补充余额不足恢复语义:模型供应端明确返回 HTTP 402 时直接归类为 runtime.model_unavailable,按问题治理预设消费一次重试预算或暂停;恢复继续复用已保存章节事实。
  • P0:增加投影回归:已覆盖“旧 runtime failed + workflow queued/pendingManualRecovery + 最新余额错误”组合,并验证最新余额错误和恢复入口优先于历史 chapter.draft.write 错误。

H. 执行链清理 Phase 1

  • 删除章节接收服务中无生产调用的并行 Timeline gate、缓存和伪通过结果;Timeline 只由最终正文终结服务提交。
  • 删除无生产调用的旧全书重规划循环和对应 replan-loop 熔断生产器;显式结构化重规划与历史字段读取保持不变。
  • 将旧“补丁失败自动升级整章重写”测试改为验证不升级,固定最多一次局部修复边界。
  • 服务端构建通过;章节运行与熔断定向回归 16 项全部通过。

I. 执行链清理 Phase 2

  • 删除 forceFullRewrite 隐式升级参数、escalatedFromPatch / patchFailure 恒假结果和原样重新抛出的异常分支。
  • 删除流水线未消费的 auditMode、从未写入的 budgetActionsConsumed 和固定描述 degradedProposalRouting。
  • 保留显式 heavy_repair 用户选择;轻修失败仍保留正文并返回可恢复质量债。
  • 服务端构建通过;章节补丁、修复流和流水线定向回归 39 项全部通过。

J. 执行链清理 Phase 3

  • 停止自动导演继续写入旧质量循环预算;历史 qualityLoopLedger 只用于兼容旧任务投影,不再决定当前运行的修复或重规划动作。
  • 通用执行失败只按真实模型/运行时失败进入熔断与恢复,不再伪装为 patch failure,也不再为任意失败创建修复工单。
  • 删除按修复数量、章节占比或大范围标签暂停整本任务的风险阈值;只有结构化显式重规划、问题策略或运行安全/数据完整性边界可以阻断。
  • 服务端构建通过;导演质量风险、熔断、自动执行与事件投影定向回归 40 项全部通过。

K. 执行链清理 Phase 4

  • 删除章节质量评估中按历史 repairHistory 签名计数、再依次升级为整章重写、窗口重规划和人工门禁的第二套预算。
  • 质量评估只输出当前结构化结论:局部问题建议局部修复,显式全局失配建议重规划;历史质量记录不再改变动作类型。
  • 核对手动编辑后的重新审校:专业工作台与简易书架共用 ChapterQualityLoopService,审校通过关闭待优化项,仍有问题则保存为可继续质量债,并刷新两种模式共用的数据缓存。
  • 共享包与服务端构建通过;章节质量、补丁修复、流水线、运行协调及人工复审定向回归 64 项全部通过。

L. 执行链清理 Phase 5

  • 自动导演 Worker 改为等待启动恢复初始化完成后再领取命令;恢复初始化失败时保持 Worker 未启动,避免旧任务绕过人工恢复边界。
  • 命令领取统一收口到 DirectorCommandLeaseService,删除队列与命令门面中的重复租约、续租、完成、取消和失败实现。
  • 领取与条件占用都排除 pendingManualRecovery 任务,防止状态在候选查询和真正加租之间变化后仍被执行。
  • 服务端构建通过;命令服务、Worker 与启动恢复定向回归 33 项全部通过。

已完成验证

  • 共享契约与服务端构建通过,客户端类型检查通过。
  • 章节运行、问题治理、自动导演、状态投影与服务边界定向回归通过:155 项中 149 通过、6 项按条件跳过、0 失败;集成保护回归 37 项全部通过。
  • 文档清单校验通过:33 份文档、17 个键。
  • P0 1–2 定向回归通过:人工审核、质量闭环与服务边界 36 项;生产执行、治理预设、生命周期与恢复 37 项;共享和服务端构建、客户端类型检查通过。
  • P0 预设、恢复矩阵与状态投影定向回归通过:服务端主回归 96 项中 95 通过、1 项按条件跳过,正文保存安全边界回归 28 项全部通过,客户端纯状态 26 项全部通过;共享契约和服务端构建通过。
  • 恢复验证覆盖服务重启、租约过期、模型暂不可用、正文保存失败、明确重规划和局部质量债;恢复按已保存事实跳过完成章节。
  • 任务中心、AI 驾驶舱、简易书架和专业工作台均使用自动导演任务/书级投影;失败、阻塞与待恢复任务无 URL 参数时仍可定位,workspaceTaskId 保持为独立人工工作区通道。
  • 2026-08-28 人工恢复暂停、后续投影步骤截断、旧失败投影与 402 模型不可用分类定向回归 60 项中 54 项通过、6 项按条件跳过、0 失败;共享类型和服务端构建通过。
  • 问题治理生命周期快照与后续章节合同恢复改动均已同步至当前分支。
  • 未运行浏览器、截图或视觉验收;按项目规则留给用户验收。

剩余开发任务

P0:完成本阶段后才可进入下一轮 beta 集成验收

  • 收束人工审核 → 重规划入口:人工审核不得直接改写为重规划或失败;先生成结构化问题与治理动作,仅当动作明确为 replan / stop_for_replan 时写入可恢复检查点并暂停。
  • 审计剩余旁路:检查正文生成、审核、修复、保存、恢复入口中是否仍存在绕过问题治理的直接状态写入、直接失败、额外 LLM 重试或直接重规划。
  • 补齐两套预设的端到端回归:
    • 连续完成优先:局部审核失败、一次修复失败、可用正文降级后继续下一章。
    • 质量优先:人工分阶段与整本自动创作中的同类问题都按冻结策略暂停、通知人工,处理后从检查点继续。
    • 两条路线都必须验证自动修复不超过 1 次。
  • 补齐恢复矩阵:Worker 重启、租约过期、模型暂不可用、正文保存失败、明确重规划、已有正文的局部质量债;确认恢复不会重复生成已完成章节。
  • 统一状态投影验收:任务中心、AI 驾驶舱、简易模式、专业模式必须展示同一治理动作、质量债、暂停原因和恢复入口;不得用 workspaceTaskId 代替自动导演任务 ID。

P1:治理兼容与清理

  • 评估并补齐旧任务治理快照的兼容读取:真实运行库存在缺少治理快照的旧任务;恢复时只读采用当前本书/全局规则,不回写历史任务或预建迁移。
  • 清理旧风险阈值接线和无调用方兼容代码:问题目录调用审计确认现有目录项仍有结构化识别或安全保护入口,因此不误删;已删除孤立的旧风险评分 Prompt、Service、Registry 与通知方法。历史风险结构和迁移仅保留只读兼容,不再参与控制流。
  • 逐个审计 reportIssue 调用点,保证治理动作执行成功后才记录为已处理;章节质量闭环、流水线终结、熔断和 Worker 租约恢复均提供真实动作处理器,动作失败会向运行边界传播。
  • 为降级完成的章节补齐可查询的质量债来源、实际修复尝试次数和后续人工处理入口;简易与专业模式共用章节编辑和重新审校闭环,只有审校通过才关闭待优化项。

P2:集成与真实链路验收

  • 问题治理生命周期快照已合并到 beta,并完成构建、类型检查和组合回归。
  • P1 完成后再次同步 beta,重跑相关定向测试和组合回归。
  • 使用脱敏真实小说连续运行至少 10 章,验证局部质量债不中断整本生产、恢复不重复写章、明确重规划与数据安全问题仍会暂停。
  • 验证 beta 稳定后再决定是否进入 main;本机禁止推送,发布与桌面打包不属于当前阶段。

P1.1:继续收缩当前执行链

  • 删除修复运行时恒为 false/null 的整章升级归因和无效 forceFullRewrite 传递;历史 patchAnchorFailed 只读兼容。
  • 删除不参与流水线运行的 auditMode、budgetActionsConsumed 和固定提案路由描述。
  • 停止当前运行继续生产旧 chapter_rewrite/window_replan 质量预算动作;历史 ledger 只读兼容。
  • 将手动修复后的审校、质量债关闭和缓存刷新汇入唯一章节质量闭环。
  • 退出当前风险阈值与失败即 patch failure 的重复控制,只保留模型、用量、数据完整性和显式问题策略边界。
  • 将 Worker 启动、恢复初始化和命令租约收成单一安全顺序,人工恢复任务不得被后台租约重新拉起。

下一步执行顺序

  1. 在当前功能分支完成组合构建、定向回归与文档清单验证。
  2. 将 P1 提交同步到 beta,验证自动导演、章节执行、恢复和双模式投影的组合行为。
  3. 使用脱敏真实小说连续运行至少 10 章并记录验收结果。
  4. beta 稳定后再决定是否进入 main。

当前工作区说明

  • 已验证快照中的 client/src/pages/novels/autoDirector/directorCreateStages.ts 已由本次远端基线覆盖,不再保留额外工作区差异。
  • server/.backups/ 是未跟踪备份目录;不得修改、删除、提交或纳入工程快照。
  • 当前功能分支的后续提交仅保留在本地,禁止从本机推送。

明确不做

  • 不增加第三套问题治理路线。
  • 不把两套预设复制成两套执行器。
  • 不增加修复重试次数或隐藏 LLM 调用。
  • 不为尚未出现的旧数据问题预建迁移框架。
  • 不在本阶段扩展新的 UI、创作能力或第三方依赖。