Files
cc-web/.planning/2026-08-24-gitea-codex-turn/task_plan.md

2.5 KiB
Raw Blame History

Gitea Codex 工作流会话与回执实施计划

目标

新增独立的 Codex App/Gitea 工作流适配模块,覆盖线程级官方 gitea-mcp 注入、turnId 关联、waiting_user 连续评论、回执确认、一次补触发和 REST 兜底;以最小挂接点接入 server.js,并用协议 mock 与单测验收。

步骤

  • 定位现有 Codex App 线程、turn、MCP 配置和通知路由挂接点
  • 冻结独立模块 API 与隐藏 turnId/Bot 自评论标记协议
  • 实现线程级 gitea-mcp 配置、waiting_user 评论串联和回执状态机
  • 增加 server.js 最小挂接示例与可复制的接入说明
  • 编写协议 mock 和模块单元测试,覆盖补触发/REST 兜底
  • 运行语法检查、单测和现有回归并记录结果

完成记录

  • 线程级 mcp_servers.gitea、隐藏标识、Bot 过滤、waiting_user 连续评论、一次补发和 REST 兜底已接入 server.js。
  • 回帖校验允许历史补发标识集合;查询 unknown 时保守失败,不自动重复写操作。
  • node scripts/gitea-workflow-codex-unit.js、Gitea 专项回归和全量 npm run regression 均通过。

验收约束

  • 隐藏标识采用版本化 HTML 注释,编码后的 payload 必须包含 taskId、turnId 和 resourceKey,解析失败时不得误判为本轮回执。
  • Bot 自评论优先按稳定 user id 判定;未配置 id 时才回退到大小写无关 login;带有效 ccweb 隐藏标识的评论始终不触发新任务。
  • 回执确认严格区分 confirmed、missing 和 unknown;查询异常为 unknown,禁止据此重复执行代码修改。
  • 正常回执未确认时最多创建一个 reply_retry,且必须复用原 threadId;补触发提示词只允许补发回执,不允许修改代码。
  • 补触发后仍非 confirmed 才允许 REST 兜底;REST 成功或最终失败后不得再次补触发。
  • gitea-mcp 只能出现在 thread/start.config.mcp_servers.gitea,host/token 经该线程的 args/env 注入,禁止写入 app-server 进程全局环境。
  • server.js 仅增加 require、配置合并、turn started/completed/user-input 信号等薄挂接;工作流逻辑必须留在独立模块。
  • 单测必须断言线程配置形状、标记往返/Bot 过滤、waiting_user 同线程投递、查询异常、单次补触发和 REST 兜底次数。

错误记录

错误 尝试 处理
planning-with-files catchup 脚本路径不存在 1 记录后改为直接读取现有规划文件并继续