Compact context 因 MCP 服务启动失败而中止,仅执行 1 步后停止

Resolved 💬 1 comment Opened May 3, 2026 by CyanChan61 Closed Jun 1, 2026

问题描述

触发 compact context 后,若某个 MCP 服务(本例中为 codex_apps)在握手阶段失败,整个 compact 操作会在执行 1 步后中止,不会走到完成状态。需要用户再次手动点击按钮才能成功完成 compact。

复现步骤

  1. 在配置了外部 MCP 服务(如 codex_apps,依赖访问 https://chatgpt.com/backend-api/wham/apps)的环境中使用 Claude Code
  2. 在网络无法访问该 MCP 服务的情况下,触发 compact context
  3. 观察 compact 操作行为

实际行为

  • compact 操作仅执行 1 step,在 Thought 中出现以下错误后停止:

``
[mcp codex_apps failed] MCP client for
codex_apps failed to start: MCP startup failed:
handshaking with MCP server failed: Send message error Transport
[rmcp::transport::worker::WorkerTransport<rmcp::transport::stream-able_http_client::
StreamableHttpClientWorker<codex_rmcp_client::http_client_adapter::StreamableHttpClientAdapter>>]
error: Client error: HTTP request failed: http/request failed: error sending request for url
(https://chatgpt.com/backend-api/wham/apps), when send initialize request
``

  • compact 操作未能完成,UI 上未显示 "Context compacted" 状态(或停在 compacting 状态)
  • 再次点击 compact context 按钮后,操作正常完成

预期行为

compact context 是一个独立的上下文管理操作,不应因与 compact 本身无关的 MCP 服务初始化失败而整体中止。

可能涉及的代码位置

根据错误信息中的 MCP 初始化链路,问题可能出现在以下环节:

  • MCP 客户端初始化逻辑codex_apps MCP 客户端握手失败时,错误被向上抛出并中断了 compact 流程(涉及 rmcp::transportStreamableHttpClientAdapter 相关模块)
  • Compact context 的执行主流程:未对 MCP 初始化阶段的失败做隔离处理,导致单个 MCP 服务的失败影响了整个 compact 操作的完成

环境信息

  • 平台:iOS 客户端 + Raspberry Pi 后端(Distiller 设备)
  • 截图:见附注(文件名 photo_1777815875_367.jpg,包含错误的完整 Thought 输出及 compact 状态)

Made on Distiller

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗