# Task Plan: 独立任务看板功能 ## Goal 在不破坏现有会话功能的前提下,实现可选加入任务池的任务看板、状态 MCP 与 cc-web 生命周期 Hook,并完成集成回归、视觉验收和安全重启。 ## Current Phase Phase 4 ## Phases ### Phase 1: 完成规划与基线检查 - [x] 固化功能边界、共享接口和互斥文件范围 - [x] 建立并审查执行计划与 TODO CSV - [x] 创建并启动 Trellis 任务,完成 PRD、技术设计与上下文配置 - [x] 记录现有工作区与测试基线 - **Status:** complete ### Phase 2: 并行完成三个独立实现对话 - [x] 前端对话仅实现 `public/task-board.*` 与独立单测 - [x] MCP 对话负责 `lib/task-board-service.js`、MCP 适配模块与独立单测 - [x] Hook 对话仅实现生命周期模块与独立单测 - **Status:** complete ### Phase 3: 汇总并审查三路产物 - [x] 等待三个对话全部完成并收集回复 - [x] 检查文件冲突、接口契约与独立性 - **Status:** complete ### Phase 4: 创建集成对话并完成接线 - [x] 创建第四个集成对话 - [ ] 接入现有 server、MCP、WebSocket 与页面入口 - [x] 保持普通对话默认不进入任务池 - [ ] 删除无数据来源的会话优先级,并将跟踪开关并入现有会话控制栏 - **Status:** in_progress ### Phase 5: 运行集成回归与视觉验收 - [ ] 执行 `node --check`、三个独立单测和 `timeout 60s npm run regression` - [ ] 使用隔离测试服务和真实浏览器验证看板交互与响应式 - [ ] 核对现有核心功能无回归 - [ ] 由主对话对照真实页面亲自复核控制栏单行布局与功能来源 - **Status:** pending ### Phase 6: 审核重启条件并重启服务 - [ ] 调用 `ccweb_list_conversations(status=running)`,仅排除来源 ID `56bb82c6-4fa3-4cb8-bb84-6969e6547d3a` - [ ] 确认四个工作对话均 idle,且 pending replies 无 waiting/delivering - [ ] 满足条件后执行 pm2 restart ccweb --update-env - [ ] 完成服务健康检查 - **Status:** pending ### Phase 7: 清理临时跟踪并交付 - [ ] 完成最终变更审查与测试摘要 - [ ] 同步并清理 TODO CSV - [ ] 交付功能、风险和验证结果 - **Status:** pending ## Decisions Made | Decision | Rationale | |----------|-----------| | 三个实现对话只新增或修改各自边界内文件,中心文件由第四个集成对话统一修改 | 避免共享工作区并发写冲突 | | 使用 cc-web 自身生命周期事件,不自动注入用户 Codex Hook | 保持功能独立并避免污染项目配置 | | 任务跟踪默认关闭,从看板创建的会话默认开启 | 普通简单对话不进入任务池 | | 归档采用软归档,与任务状态分离 | 可恢复、可审计,不影响原会话历史 | | MCP 对话拥有共享 TaskBoardService;Hook 通过依赖注入调用它 | 消除两个后端对话重复实现状态模型的风险 | | 共享契约固定在 `.trellis/tasks/08-11-task-board/info.md` | 三个并行对话与第四个集成对话有同一事实来源 | ## Errors Encountered | Error | Resolution | |-------|------------| | init-session.sh 将 --help 当成任务名并创建 2026-08-11-help | 保留该目录并改写为本任务正式规划,避免未经确认删除或移动文件 | | 首次计划审查发现并行边界、共享服务、Trellis 和重启门禁不够具体 | 已补 PRD、技术契约、明确文件所有权、验证命令和会话检查入口 | | Hook 子对话收尾阶段长时间高 token 运行且不返回终态 | 独立测试通过后使用现有 WebSocket `abort` 仅中断该目标 turn;其最终文件随后重新验收通过 | | 首轮视觉验收只检查跟踪控件自身高度,未检查它是否占用独立行;同时未追查会话优先级的数据生产入口 | 判定首轮验收无效并中止重启;重新打开集成阶段,删除伪优先级并要求跟踪控件与既有会话控制同一行 |