gemini-cli ACP 模式不截断工具输出,单条命令可撑爆百万 token 上下文
barney-s · ghdev · 2026-10-16
问题
google-gemini/gemini-cli 的 issue #29777 报告:当以 ACP agent 模式运行(gemini --acp)时,tools.truncateToolOutputThreshold(默认 40,000 字符)完全不生效,工具的完整输出会被原样发给模型。单条产生大量输出的 shell 命令就能把请求推过模型输入上限,报错 400: input token count exceeds 1048576。交互模式与 -p 模式下同样命令会正常截断(完整输出存文件,模型只看头尾和路径)。
根因
- 正常路径经 tool-executor.ts 调用 truncateOutputIfNeeded 做截断;
- ACP 路径(acpSession.ts)直接调 invocation.execute() 并把未截断的 llmContent 记为函数响应,绕过了截断逻辑;
- 自动压缩也救不了:它在请求前检查的是上一次响应报告的 token 数,不含新工具输出,因此单次超大输出会先于压缩被发出。
实测案例
- 一条测试命令输出约 120 万字符,单轮内上下文从约 98k 跳到 530k token,压缩到下一轮才触发;
- 另一条输出约 270 万字符,请求超过 1,048,576 token 上限,该轮直接失败。
对用 ACP 客户端接入 gemini-cli 的 agent 开发者来说,开启 yolo 自动批准时需特别注意避免运行大输出的命令。
「编程与Agent」频道最新
- Vercel 推出免注册部署:拖拽文件到首页即得线上 URL — steren · 2026-10-23
- 5 个 Claude Code 会话经 MCP 互发邮件,组队攻破多品牌网络摄像头 — doodlestein · 2026-10-23
- Vercel 上线 vercel deploy --temporary,可临时部署后自动清理 — cramforce · 2026-10-23
- 用同一个 Notion 工作区让多个 Agent 互相沟通分工,实测有效 — nbaschez · 2026-10-23
- Sierra 伦敦大会被指逊色旧金山场,Agent 落地数据成稀缺话题 — DimlyDimwitted · 2026-10-23
- 开源 C-Sweet 用本地 27B 小模型模拟整家公司运营 — Demonicated · 2026-10-23