Files

2.1 KiB
Raw Permalink Blame History

测试影响图

最小覆盖层次

  1. 公开契约:正式 TOOLS/tools/list 与 Codex App 备用列表只公开一个 ccweb_send_message;replyMode 必填且 enum 精确。
  2. 统一发送 E2E:one_way 不建 request;return_and_continue 建 request、 自动回传、来源忙碌时排队。
  3. 隐藏兼容:旧 ccweb_request_reply 不在 tools/list,但正式 MCP tools/call、 Codex App 旧 dynamic call 和内部 dispatcher 仍接受。
  4. 提示语义:目标提示区分模式;来源续跑包含 requestId、目标、原请求和完整性检查。

现有可复用入口

  • scripts/regression.js 已有 TOOLS 静态断言、server 源码片段断言和完整跨对话 E2E。
  • callInternalMcp、nextMessage、waitForJsonCondition 可复用。
  • 现有单向发送、request-reply、busy source 三段应改为:
    • 公开单向:ccweb_send_message(replyMode='one_way');
    • 公开回传:ccweb_send_message(replyMode='return_and_continue');
    • 旧别名:单独保留一条隐藏兼容用例。

必须先失败的断言

  • TOOLS 不包含 ccweb_request_reply。
  • send schema 的 required 包含 replyMode,enum 为 ['one_way', 'return_and_continue']。
  • send description 含“仅当来源不需要结果才 one_way / 依赖结果必须 return”。
  • Codex App 备用列表与正式通信定义一致,且无旧公开工具。
  • return_and_continue 返回 waiting requestId。
  • 自动回传目标提示禁止手工重复回传。
  • 来源 auto-run 文本包含 requestId、目标 ID、原始请求和完整性判断规则。
  • hidden legacy allowlist 仍允许 ccweb_request_reply。

关键风险

  • lib/ccweb-mcp-server.js 的 JSON-RPC tools/call 当前使用公开 TOOLS allowlist。 直接删除定义会让已缓存旧工具 schema 的客户端在 dispatcher 前失败;必须增加隐藏兼容 allowlist。
  • 只测 Schema 不能证明 dispatcher 使用 replyMode,必须保留 E2E。
  • 完整 regression 覆盖面很大,TDD 循环应优先使用可聚焦的静态/跨对话目标,最终再跑完整回归。