校正客户端 MCP 运行边界
Project CI / Repository checks (pull_request) Successful in 3m4s
Project CI / Frontend tests (pull_request) Failing after 2m43s
Project CI / Backend tests (pull_request) Successful in 7m8s
Project CI / Native shell tests (pull_request) Successful in 20m37s

明确保留客户端对话与 Codex app-server

将 MCP 能力限定为绑定项目的 stdio 子进程

同步决策日志与实施计划
This commit is contained in:
2026-09-03 17:29:08 +08:00
parent d0f9d6a88a
commit 5cabfa258b
2 changed files with 3 additions and 3 deletions
@@ -7963,7 +7963,7 @@ CI 上 `background_agent_runtime_recovers_stale_running_before_pending_task` 在
## 2026-09-03 AGC 客户端能力以 MCP 暴露
- 背景:客户端仍启动并驱动自己的 Codex 对话;同时需要把客户端自身的受控业务能力以 MCP 暴露给 Codex。客户端不应替 Codex 做业务语义门禁、意图判断或完成判定。
- 决策:MCP 作为客户端能力层外挂,GUI 主进程提供 loopback MCPstdio broker 只做协议转发;会话绑定 `accountId + projectId + clientInstanceId + sessionId`,项目切换、登出、重启、断开或令牌轮换失效。客户端保留现有对话/UI 和 `codex_app_server` 链路,仅暴露稳定业务工具白名单,不透传全部 Tauri command、任意路径、凭据、内部 URL、shell、数据库或管理能力。
- 决策:MCP 作为客户端能力层外挂,由客户端启动的 Codex app-server 通过绑定项目工作目录的 stdio MCP 子进程调用;客户端回合结束、项目切换、登出、重启或退出时回收该子进程。账号和项目权限由客户端业务桥接层校验。客户端保留现有对话/UI 和 `codex_app_server` 链路,仅暴露稳定业务工具白名单,不透传全部 Tauri command、任意路径、凭据、内部 URL、shell、数据库或管理能力。
- 返回记录:客户端对话继续走现有 conversation projection;外部 Host 如需旁路归档,才调用 `conversation.record_codex_response` 写入有界、脱敏 journal。该记录不是客户端对话前置条件,UI 不从文本推断完成、规划、同步或其它副作用。
- 迁移与兼容:`codex_app_server``codex_cli``provider`、既有 Agent Runtime 和客户端对话均保留;MCP 仅新增能力暴露,不替换现有 Codex 控制链。公网 `/api/external/v1/mcp` 与桌面 MCP facade 保持独立。
- 影响范围:AGC 客户端 MCP facade、loopback/stdio 传输、DirectProject 会话绑定、Codex 返回 journal、前端对话数据源、运行模式与恢复/幂等测试;不新增 SpacetimeDB 表,不改变公网 External MCP 合同。
@@ -235,10 +235,10 @@ Supervisor 认领该回执后,由父 run 自己为每个原 delivery 逐一创
### 2026-09-03 AGC 客户端能力以 MCP 暴露
- MCP 暴露是客户端能力层,不替换 `codex_app_server / codex_cli / provider` 或客户端对话。Codex 仍可由客户端对话入口驱动,同时其它 Codex Host 也可连接 loopback MCP facade/stdio broker客户端不再替 Codex 做业务语义门禁、意图判断和完成判定。
- MCP 暴露是客户端能力层,不替换 `codex_app_server / codex_cli / provider` 或客户端对话。客户端对话入口继续驱动 Codex app-serverapp-server 通过客户端随附的 stdio MCP 子进程调用审核后的客户端能力。客户端不再替 Codex 做业务语义门禁、意图判断和完成判定。
- MCP 会话在客户端握手时绑定当前账号、项目和实例,工具参数不得携带 `projectPath`、Token、Cookie、objectKey 或内部 URL。仅暴露稳定业务白名单与 `resources/list/read`,所有文件、资源、画布、预览和 operation 副作用继续复用客户端权限、锁、计费、幂等账本、manifest/revision 与恢复机制。
- 客户端对话继续写入现有 conversation projection;外部 Host 如需旁路保存返回文本,可显式调用 `conversation.record_codex_response`。客户端将有界、脱敏正文、SHA-256、安全摘要和状态追加到项目级 journal,UI 只展示记录,不从文本推断业务状态或触发副作用。
- loopback MCP 在账号登出、会话代际变化、项目切换、客户端退出或令牌轮换后立即失效;未知副作用保持 `needs-reconciliation`,只能通过 operation 查询恢复。稳定验收覆盖客户端对话驱动的 MCP 工具调用、Skill 指导资源、跨项目/账号拒绝以及旧 Provider/Codex 回归。
- MCP 子进程只由当前客户端为绑定项目启动,并在该项目工作目录内运行;客户端回合结束或客户端退出后子进程随 Codex app-server 一并回收。账号和项目权限仍由客户端业务桥接层校验,未知副作用保持 `needs-reconciliation`,只能通过 operation 查询恢复。稳定验收覆盖客户端对话驱动的 MCP 工具调用、Skill 指导资源、跨项目/账号拒绝以及旧 Provider/Codex 回归。
### 2026-08-10 Supervisor 边做边聊与条件中断