Skip to content
目录

09 — App-Server、JSON-RPC v2 与背压

角色

codex app-serverVS Code 扩展等富客户端 提供 JSON-RPC 接口(见 codex-rs/app-server/README.md)。与 MCP 的「工具协议」不同,这里是 一等会话/线程 API

传输与初始化

  • 默认 stdio JSONL;实验性 WebSocket(文档明确 unsupported for production)。
  • 连接后必须先 initializeinitialized,否则拒绝请求;可重复 initialize 报错 Already initialized
  • initialize.params.capabilities.optOutNotificationMethods精确方法名 级别的通知过滤,减少弱客户端负担。

背压与过载

README 说明:传输 ingress、请求处理、出站写之间使用 有界队列;饱和时返回 JSON-RPC -32001 Server overloaded; retry later.,客户端应 指数退避 + 抖动

设计原因:agent 事件流可能突发;无界队列会 OOM 或拖垮 IDE;显式错误码比挂死更可运维。

安全:WebSocket 在非 loopback

文档警告:非 127.0.0.1 监听时默认可能 无鉴权;需 --ws-auth capability-tokensigned-bearer-token 等。

要点:本地 IPC(stdio)与网络监听 威胁模型完全不同,不能复用同一默认安全策略。

v2 方法全景(节选)

codex-rs/docs/codex_mcp_interface.md 与 app-server README 列出:

  • thread/start|resume|fork|read|list
  • turn/start|steer|interrupt
  • config/read|value/write|batchWrite
  • model/list(分页 cursor / limit
  • 通知:thread/startedturn/completedcodex/event/*

事件 payload 与 core/src/protocol.rsEvent / EventMsg 对齐,保证 CLI / IDE / MCP 消费者语义一致

类型与 Schema 生成

codex app-server generate-ts / generate-json-schema生成物与当前二进制版本绑定,避免「文档与实现漂移」。前端可类比 orval / openapi-typescript 的 lockstep 生成。

延伸阅读

MIT License.