feat: 优化任务状态与图片 MCP 提示

This commit is contained in:
shiyue
2026-08-13 00:34:37 +08:00
parent 86231f0d97
commit 214ff4ec88
13 changed files with 1353 additions and 49 deletions

View File

@@ -0,0 +1,36 @@
# 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 秒绝对超时。