3.4 KiB
3.4 KiB
任务计划:ccweb_list_conversations children scope
目标
为 ccweb_list_conversations 增加兼容默认行为的 scope: "all" | "children",让来源对话能查询自己通过 MCP 创建的持久子对话,并同步提示词、schema、回归测试和文档。
当前阶段
已完成
阶段
阶段 1:核对现有接口、提示词、回归覆盖与工作树重叠
- 核对服务端列表实现、两处工具 schema、README 和回归入口
- 审查工作树中与本任务重叠的既有改动并保留其语义
- 状态: complete
阶段 2:为 children scope 编写失败回归断言
- 新增省略
scope与显式all返回完全一致的兼容断言 - 新增
children只匹配kind === 'mcp'且来源 ID 为当前调用上下文的直接子会话断言 - 新增非法
scope保守回退all的服务端断言 - 先运行定向回归,确认新断言在实现前失败
- 状态: complete
阶段 3:实现列表过滤与双端 MCP schema/描述
- 按
createdFrom.kind === 'mcp'与来源会话 ID 过滤 - 更新 stdio MCP 与 Codex App 工具描述、参数 schema
- 状态: complete
阶段 4:更新 README 文档与规划记录
- 记录
scope默认值、children 语义和适用边界 - 同步发现、决策与进度
- 状态: complete
阶段 5:运行定向及完整回归验证
- 运行语法检查,并定向覆盖列表实现、stdio MCP schema 与 Codex App 工具描述
- 在 60 秒超时约束下运行完整回归
- 状态: complete
阶段 6:审查差异、清理临时清单并完成交付
- 检查差异只追加本任务语义且未覆盖用户改动
- 将 CSV 全部推进为 DONE 后清理
- 保留
.planning/2026-08-11-ccweb-list-children-scope/作为长期任务记录 - 状态: complete
关键问题
children是否仅包含createdFrom.kind === 'mcp'的直接子对话?- 默认省略
scope时是否完全保持当前全量列表行为? - 过滤应在 limit 之前还是之后执行?
- 返回结构是否需要新增父子字段,还是只改变列表集合?
决策
| 决策 | 理由 |
|---|---|
scope 默认 all |
保持现有调用完全兼容 |
children 仅返回当前来源直接通过 MCP 创建的会话 |
与用户提出的“我曾创建的子对话”语义一致,排除 branch 与孙级会话 |
非法 scope 在服务实现中回退 all |
schema enum 会拦截正常 MCP 调用;内部兼容入口保持保守且不破坏旧行为 |
| 先过滤、再排序、再应用 limit | 避免全局热门会话占满 limit 后漏掉子对话 |
| 不在父会话维护 children 数组 | 现有子会话 createdFrom 已是权威数据,避免双写一致性问题 |
遇到的错误
| 错误 | 尝试 | 解决方式 |
|---|---|---|
项目内 /home/cc-web/.codex/skills/todo-list-csv/SKILL.md 不存在 |
1 | 使用会话公布的有效路径 /home/hdzx/.codex/skills/todo-list-csv/SKILL.md |
codebase-memory-mcp 连续返回 Transport closed |
3 | 停止重复调用,基于此前已确认入口降级为本地 rg/sed/git diff |
约束
- 保留工作树中其他对话已存在的
server.js、lib/ccweb-mcp-server.js、scripts/regression.js改动。 - 测试命令最大超时 60 秒。
- 不重启服务;若后续确有必要,先按项目规则检查其他运行中对话。