同样的活,为什么 Hermes 用掉你 Claude Max 两倍窗口


下午三点,你盯着 Claude 的用量面板犯嘀咕:今天只是在终端里改了几个文件,五小时窗口已经掉了快一半。你没跑批量任务,也没开第二个会话。那这额度去哪了?

答案可能不在你干了多少活,而在你干活时用的名字。Claude Code 会把调用者的身份写进每一个请求的计费头,而订阅的额度是按这个身份加权的——claude -p 这类非交互调用默认自称 sdk-cli,恰好落在被“加价”的那一档里。同一份工作,换个名字就便宜将近一半。

一个环境变量,决定了你按什么价扣额度

先说清楚机制。Claude Code 在每次请求里带上调用者的名字(计费头里的 cc_entrypoint,用户代理里也有一份)。当你用 claude -p 或者通过 Agent SDK 调用时,这个名字默认是 sdk-cli。而在订阅的计费逻辑里,sdk-* 这类调用者被按每 token 大约两倍的权重计算——比交互式 CLI 贵得多,也比客户端用自己的名字贵得多。这条行为在 Anthropic 的 issue 里被反复报告(anthropics/claude-code#97074),但官方从未把它写进文档。

问题就出在这里:你的 agent 跑的是和你在终端里敲 claude 完全一样的模型、一样的上下文,却因为名字叫 sdk-cli,被扣了将近双倍的额度。

修法本身很小:让子进程以 hermes-agent 这个名字运行,把宿主继承来的任何名字(sdk-py、claude-desktop)覆盖掉。这不是“骗过计费”,而是以客户端自己的身份出场——这正是 Anthropic 给第三方客户端的正常路径。

实测:同样的 $2.19,12% 对 7%

这不是估算,是一次在真实 Max 订阅上做的 A/B。条件写得很具体:

  • 计划 Max,模型 Opus 5.5,Claude Code 2.1.316;
  • 每一臂发四个全新的、约 43K token 的请求(全是缓存写入,不读缓存),输出固定 16 token,单臂列表价等值约 $1.09;
  • 四个臂按“修改前、修改后、修改前、修改后”交替跑,每一臂结束 60 秒后用一次 Haiku 请求读五小时利用率;
  • 窗口从 3% 开始,账号上没有其他流量。

结果:

臂 请求上的名字 五小时增量(两轮) 合计 $2.19 的消耗
修改前 sdk-cli +6% / +6% 12%
修改后 hermes-agent +4% / +3% 7%

同样的活,大约少用 1.7 倍的窗口。这个数字是插件维护方在 2026 年 10 月 31 日实测并写进 README 的,属于官方测量而非社区传闻;同时它也明确标注:Anthropic 没有公开这套加权规则,所以这条收益随时可能变。

还有一个副作用,以及它的补丁

换名字不只有好处。Claude Code 检测到调用者不是 SDK 时,会打开“原生产物”资格,于是每个请求的环境消息里都多出一行 Scratchpad directory: …。对逐 token 计费的窗口来说,这是纯浪费——每次请求都重复一遍。

插件的处理是设置 CLAUDE_CODE_DISABLE_ARTIFACT=1,把这行关掉。所以完整的做法是两件事:把入口名改成 hermes-agent,同时禁用那行产物提示。

怎么拿到这个修复

修复在官方插件 claude-subscription-directsdk 里(不是核心代码),插件版本仍是 0.3.3,但目录里锁定的 commit 已经从 20048e6 换成了 01fa168——对应插件仓库的 PR #245。

已经装过的人,一条命令就能重钉到新 commit:

hermes plugins update claude-subscription-directsdk

从目录安装的插件,更新时不是 git pull,而是重新按目录审核过的 SHA 重新安装,所以这条命令会把旧 commit 换成新的。想先确认自己装的是哪个版本:

hermes plugins info claude-subscription-directsdk

输出里会显示版本和锁定的 SHA。新装的则直接:

hermes plugins install claude-subscription-directsdk

需要 Hermes >=0.21.4,并且机器上要有已登录的 claude 命令行——插件在加载时、在模型选择器里、以及每次请求前都会检查它是否存在,缺了就明确报错,而不是半残运行。

别把这件事读成“订阅等于免费”

有两个容易走偏的地方,值得一起说清楚。

第一,这个 provider 并没有额外惩罚。 它按 claude -p / Agent SDK 的标准费率扣额度,一分不多。真正的差距在交互式 TUI 那边——在有 1M 上下文的 Sonnet 5 上测得,交互式 Claude Code 的扣费速率大约只有 claude -p 的 0.58 倍。换句话说,同样的活,你在终端里手动敲,五小时窗口能撑得更久;用任何 -p/SDK 型的 harness,都要按大约六成的吞吐来规划。

第二,名字的加权是服务端行为,插件改不了规则本身。 你能做的是以正确身份出场,不能做的是让额度凭空变多。如果某天 Anthropic 调整权重,这 1.7 倍就会变成别的一个数字。所以别把它写进预算模型里当常数。

顺便说一下怎么自己量

想验证自己这套到底贵不贵,别靠感觉。做法和上面一样朴素:固定一个任务,跑两轮,中间只读一次用量,看百分比增量和列表价的比值。插件的 A/B 就是这么做的,你也可以用同样的方法比 Hermes 的 /usage 和 Claude Code 的 /cost 在同一条任务上的差异。

如果你还没把 Hermes 接到订阅上、只是想知道怎么接,之前那篇 Claude 订阅 provider 指南 讲了安装和选择模型;想把用量和成本放到一张表里看,用量窗口与套餐 和 成本追踪 两篇可以接着读。

最后一句实话:这类“省一半窗口”的修复,价值不在于数字漂亮,而在于它把一个隐蔽的、和你的工作量无关的损耗找了出来。你付的是同一个订阅,本来就该按同一个价扣。