首页 > 教程资讯 > 教程详情

Claude Code 约每 30 秒重发后台 agent 全文,Flamerix AI 测得约占花费 16.4%

AI 与前沿 老K说软件 2026-10-30
文章分享

Flamerix AI 在 GitHub Gist 发布分析,称 Claude Code 约每 30 秒会把每个后台 agent 的完整对话记录发给该 agent 所用的模型(通常是 Opus),只为在 agents 面板写下一句 3 到 5 个词的状态。该功能自 2.1.232 版(2026 年 8 月 13 日)起对交互式后台 agent 默认开启,作者称没有可关闭的设置项。作者同时放出约 70 行的 Bun 预加载脚本。按作者用 OpenTelemetry 导出做的统计,打补丁前一周,这类请求占 Claude Code 全部花费的 16.4%,高于主对话的 15.7%。

状态栏在要什么

Flamerix AI 称,对每个正在运行的后台 agent,Claude Code 会把该 agent 的整段记录发给它自己的模型,并要求用 3 到 5 个词描述最近的动作。返回结果只更新 agents 面板里该 agent 的状态行,不会进入模型,也不会进入用户对话。

时间线上,相关代码在 2.1.32(2026 年 2 月 5 日)首次出现,但在公开构建中并未生效;2.1.72(3 月 9 日)起可作为 SDK 选项开启;2.1.117(4 月 21 日)起可在交互式 CLI 中、于 fork 门控或服务端放量之后到达;不晚于 2.1.220(7 月 24 日),被 fork 出来的 skill 总会做摘要。2.1.232(8 月 13 日)起,交互式后台 agent 默认开启。

花费是怎么量的

异常由 Flamerix AI 的 DRIM 在 Claude Code 的 OpenTelemetry 导出中发现:按 query_source 汇总 claude_code.api_request 后,agent_summary 的花费高于主对话。下表中的花费是 Claude Code 自己按请求估算的 cost_usd,不是账单。作者写道,在订阅下,用户损失的是速率限制余量。

  • 占全部花费:补丁前一周为 16.4%(主对话为 15.7%),补丁后 2 天为 0%。
  • 占全部 API 请求:补丁前一周为 19.7%,约五分之一;补丁后为 0%。
  • 落在 Opus 上的比例:这部分花费中的 96%。
  • 输入与输出 token 之比:约为 9,000:1。

作者还称,GitHub issue #86879 汇集了四份独立测量,结果为 18%–26%。这些请求不会写入磁盘上的会话日志(作者引用 issue #104358),只有 OpenTelemetry 导出能看到。文档中关于后台 token 用量的章节也没有列出它;Agent View 的行摘要则被写成由 Haiku 级别模型每隔几分钟刷新。

作者自己的遥测里,这项花费的周占比在 2026 年 7 月为 3.5%–7%(当时 fork 门控对他们已经打开),拾取 2.1.233 的那一周先到 7.3%、再到 11.8%,10 月中旬约为 16%。关于提示缓存,作者称这类调用里约 98% 会从缓存重读记录;约 2% 命中冷缓存,却占到该项成本的三分之一以上。

约 70 行预加载做了什么

no-agent-summary.js 以 MIT 许可发布,通过 BUN_OPTIONS=--preload=<路径> 加载。它只包装全局 setTimeout:回调源码里若含摘要锚点(例如日志行 [AgentSummary] Timer fired),就返回惰性句柄,不再武装定时器;其他定时器原样通过。脚本不修改 Claude Code 二进制。被抑制的请求在 OpenTelemetry 里仍是 query_source 为 agent_summary 的 claude_code.api_request。

作者解释,模块以预编译 Bun 字节码发布,改二进制里的 JS 文本不起作用,API 客户端也不经过被包装的 globalThis.fetch;但 Function.prototype.toString 仍能返回字节码中回调的源码。惰性定时器用恰好 2³¹−1 毫秒:Node 和 Bun 会把更大的延迟当成 1 毫秒,更长的「无限」延迟会立刻触发。

钩子只在 Claude Code 内安装:Bun.main 须为 /$bunfs/root/cli,且 process.execPath 须是 Claude Code 的安装路径。其他 bun 或入口名不同的编译二进制加载该文件后不做任何事。作者列出的 Linux 安装路径包括 nix 的 …/bin/.claude-wrapped、npm 包路径(在 Linux 上也会出现 .exe)、平台包,以及原生安装目录 ~/.local/share/claude/versions/<version>。macOS 与 Windows 的路径形状未被作者实测。

作者提醒,更新后脚本可能静默失效,需要重新验证。匹配依赖回调源码中的锚点;日志行或 query source 改名、回调经 fn.bind 或其他包装传递、字符串挪到回调外的共享常量、或定时器离开全局 setTimeout,都会让摘要悄悄恢复。环境变量 CC_AGENT_SUMMARY_MODE 默认为 off;设为 pass 时只加载并写日志,所有定时器照常武装,用作对照。

安装后须重启守护进程和已经在跑的会话。作者给出的命令是 claude daemon stop --any:守护进程、pty host 和预热的 bg-spare 继承启动它们的客户端环境,早于 BUN_OPTIONS 启动的守护进程仍会拉起未挂钩的会话。无头运行(claude -p、cron、CI、编辑器集成)也需要这份预加载。作者注明,claude -p 默认不武装摘要定时器,其实测因此设置了 CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES=1;默认开启带来的开销,出现在带有后台 agent 的交互式会话里。若 npm 使用 --ignore-scripts,bin/claude 仍是 shell 桩,Bun 不会启动,钩子也不会运行。

测过的版本和关掉之后

作者在 Linux x64(npm 包 @anthropic-ai/claude-code-linux-x64,其 sha256 与原生安装器 manifest.json 校验和一致)上测试了 2.1.257 至 2.1.312。静态检查确认解出的包里,摘要定时器回调带有钩子锚点;实机则用 claude -p --model haiku 跑一个约 8 步、每步约 20 秒的子 agent。表格中 2.1.312(2026 年 10 月 27 日)在约 2.5 分钟运行里,无钩子、钩子 pass、钩子 off 的 summary fork 为 5 / 6 / 0:pass 那次在负载较高的机器上跑了 232 秒,多出一个 30 秒节拍。2.1.301 自 2026 年 10 月 26 日起日常使用,遥测中 agent_summary 为 0。作者称在 2.1.301 上对每个 Claude Code 进程启用后,没有其他旁路查询顶上这块花费;子 agent、后台 agent、fork 出来的 skill 和后台会话仍正常运行,只跳过摘要那一次 fork。

macOS(darwin-arm64,Claude Code 2.1.312,系统版本写作 macOS 26.7.1,bun 1.4.4)有 Hacker News 用户 lostsock 于 2026 年 10 月 29 日反馈可用:静态可见 3 到 5 个词的提示、30 秒定时器(夹在 30–240 秒)且没有关闭开关;实机预加载能加载,交互会话中后台子 agent 记下 summary timer #1 suppressed (setTimeout, delay=30000)。该反馈未核对 token 数字(没有 OpenTelemetry 导出)。Windows 未测试。

代价是 agents 面板里单个 agent 的状态不再更新,SDK 的 task_progress 也不再带 summary。开销方面,作者有一次测量:claude --version 从约 10 ms 增到约 17 ms。每个不同的定时器回调会做一次 Function.prototype.toString,结果缓存在 WeakMap 里。

为什么没有关闭项

作者列出几条对不上的路径:

  1. 文档中的开关只能打开。 SDK 选项 agentProgressSummaries 默认是 false,但在打包代码里它是 OR 条件的一项,每条写入它的代码路径都设为 true,因此 false 不改变行为。未写入文档的 CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES 也只能用来启用摘要。
  2. 间隔属于服务端。 间隔来自按模型家族区分的服务端标志,并被夹在 30–240 秒。默认已是下限,没有取值能关掉定时器。2.1.300(2026 年 10 月 14 日)起,间隔改为可由服务端调节。
  3. 常见环境变量要么不存在,要么连带关掉 agent。 部分打包方会设置的 DISABLE_NON_ESSENTIAL_MODEL_CALLS 在二进制中根本不出现。CLAUDE_CODE_FORK_SUBAGENT=0 与 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 能停掉摘要,但只是因为同时关掉了 fork 子 agent 或后台任务。

2.1.310(2026 年 10 月 23 日发布)带有一个 short 模式:发送约 2k token 的笔记,而不是完整记录,并可选用更小的模型来写。默认仍是完整记录,只有服务端标志能改变它。

该 Gist 声明项目独立于 Anthropic,未获其关联、赞助或背书;「Claude」与「Claude Code」是 Anthropic, PBC 的商标。脚本按原样提供。作者并写道,改变客户端运行时行为可能与所用服务的条款冲突,确认这一点由使用者自己完成。

相关下载

来源