# 任务计划:ccweb_list_conversations children scope ## 目标 为 `ccweb_list_conversations` 增加兼容默认行为的 `scope: "all" | "children"`,让来源对话能查询自己通过 MCP 创建的持久子对话,并同步提示词、schema、回归测试和文档。 ## 当前阶段 已完成 ## 阶段 ### 阶段 1:核对现有接口、提示词、回归覆盖与工作树重叠 - [x] 核对服务端列表实现、两处工具 schema、README 和回归入口 - [x] 审查工作树中与本任务重叠的既有改动并保留其语义 - **状态:** complete ### 阶段 2:为 children scope 编写失败回归断言 - [x] 新增省略 `scope` 与显式 `all` 返回完全一致的兼容断言 - [x] 新增 `children` 只匹配 `kind === 'mcp'` 且来源 ID 为当前调用上下文的直接子会话断言 - [x] 新增非法 `scope` 保守回退 `all` 的服务端断言 - [x] 先运行定向回归,确认新断言在实现前失败 - **状态:** complete ### 阶段 3:实现列表过滤与双端 MCP schema/描述 - [x] 按 `createdFrom.kind === 'mcp'` 与来源会话 ID 过滤 - [x] 更新 stdio MCP 与 Codex App 工具描述、参数 schema - **状态:** complete ### 阶段 4:更新 README 文档与规划记录 - [x] 记录 `scope` 默认值、children 语义和适用边界 - [x] 同步发现、决策与进度 - **状态:** complete ### 阶段 5:运行定向及完整回归验证 - [x] 运行语法检查,并定向覆盖列表实现、stdio MCP schema 与 Codex App 工具描述 - [x] 在 60 秒超时约束下运行完整回归 - **状态:** complete ### 阶段 6:审查差异、清理临时清单并完成交付 - [x] 检查差异只追加本任务语义且未覆盖用户改动 - [x] 将 CSV 全部推进为 DONE 后清理 - [x] 保留 `.planning/2026-08-11-ccweb-list-children-scope/` 作为长期任务记录 - **状态:** complete ## 关键问题 1. `children` 是否仅包含 `createdFrom.kind === 'mcp'` 的直接子对话? 2. 默认省略 `scope` 时是否完全保持当前全量列表行为? 3. 过滤应在 limit 之前还是之后执行? 4. 返回结构是否需要新增父子字段,还是只改变列表集合? ## 决策 | 决策 | 理由 | |------|------| | `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 秒。 - 不重启服务;若后续确有必要,先按项目规则检查其他运行中对话。