Files
cc-web/.planning/2026-08-12-task-status-runtime-reliability/task_plan.md
2026-08-13 00:34:37 +08:00

37 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Codex App 任务状态自动分类管道
## 目标
在不新增分类模型配置、不使用 Hook、不重载 MCP、也不依赖主模型主动调用工具的前提下复用当前 Codex App 会话已经解析的模型 Provider 与认证方式,在“用户消息进入”和“主对话本轮完成”两个事件点执行无工具、严格结构化的动态看板分类,并以版本门禁安全更新任务列。
## 阶段
- [x] 1. 固定工作区并定位当前 Codex App Provider、消息入口、轮次完成与任务写入链路
- [x] 2. 写出分类提示词、严格输出、触发时机与失败保持的红灯契约
- [x] 3. 实现复用当前会话 Provider 的无工具结构化分类客户端
- [x] 4. 接入用户消息进入与主对话完成事件,加入串行队列和版本门禁
- [x] 5. 退役自动主链路中的任务 MCP 重载与主动上报依赖,保留必要兼容接口
- [x] 6. 运行专项、自动化集成、当前对话真实 Provider 请求和完整回归并修复真实失败
- [x] 7. 清理临时跟踪文件并交付配置兼容性、测试与残余风险
## 已确认产品契约
- 系统范围仅包含 Codex App不为 Claude 或 Codex CLI 扩展任务分类。
- 动态看板列的 `id / label / prompt` 是唯一分类语义;禁止写死固定状态或用关键词、正则推断。
- 自动分类只在用户消息进入、Codex App 主轮次完成两个事件点发生;请求用户输入属于主轮次完成。
- 运行开始、运行停止、网络失败、人工中断均不自动改变任务列。
- 分类复用当前会话已解析的模型与 Provider不增加模型、密钥、Base URL 或管理界面配置。
- cc-web 不读取或复制 Codex 登录令牌;只有当前 Provider 具备现有普通 API 认证时才发请求。
- 分类请求不提供工具、项目文件、cwd 或 MCP只接受严格 JSON Schema 结果。
- 非标准 JSON、拒答、超时、非法列或版本变化时保持当前状态不做文本修复或兜底猜测。
- `ccweb_task_update` 可作为人工/调试兼容接口,但不再承担自动分类主链路。
- 不修改生产 sessions/config/logs不重启生产服务不覆盖用户已有工作区修改。
## 错误记录
- 旧计划基于 Hook、动态任务 MCP 与模型主动调用,真实环境证明可靠性不足;本轮按用户确认的 Provider 直连分类方案整体替换。
- 红灯 1service 单测退出 1`classifier` actor source 被拒绝。
- 红灯 2classifier 单测退出 1`lib/task-board-classifier` 尚不存在。
- 红灯 3真实集成中两次分类只留下一个版本增量定位为轮次完成保存旧 session覆盖了先完成的用户消息分类。`saveSession()` 现会保留磁盘上版本更高的 `taskTracking`
- 红灯 4当前 Provider 返回 SSE`response.completed.output` 可能为空、文本只出现在 `response.output_text.done/delta`;旧解析会等待连接关闭或拿不到结果。现已支持 SSE 增量、完成事件立即返回和 60 秒绝对超时。