3.0 KiB
3.0 KiB
Codex App 任务状态自动分类管道
目标
在不新增分类模型配置、不使用 Hook、不重载 MCP、也不依赖主模型主动调用工具的前提下,复用当前 Codex App 会话已经解析的模型 Provider 与认证方式,在“用户消息进入”和“主对话本轮完成”两个事件点执行无工具、严格结构化的动态看板分类,并以版本门禁安全更新任务列。
阶段
- 1. 固定工作区并定位当前 Codex App Provider、消息入口、轮次完成与任务写入链路
- 2. 写出分类提示词、严格输出、触发时机与失败保持的红灯契约
- 3. 实现复用当前会话 Provider 的无工具结构化分类客户端
- 4. 接入用户消息进入与主对话完成事件,加入串行队列和版本门禁
- 5. 退役自动主链路中的任务 MCP 重载与主动上报依赖,保留必要兼容接口
- 6. 运行专项、自动化集成、当前对话真实 Provider 请求和完整回归并修复真实失败
- 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 直连分类方案整体替换。
- 红灯 1:service 单测退出 1,
classifieractor source 被拒绝。 - 红灯 2:classifier 单测退出 1,
lib/task-board-classifier尚不存在。 - 红灯 3:真实集成中两次分类只留下一个版本增量;定位为轮次完成保存旧 session,覆盖了先完成的用户消息分类。
saveSession()现会保留磁盘上版本更高的taskTracking。 - 红灯 4:当前 Provider 返回 SSE,且
response.completed.output可能为空、文本只出现在response.output_text.done/delta;旧解析会等待连接关闭或拿不到结果。现已支持 SSE 增量、完成事件立即返回和 60 秒绝对超时。