Claude Code 账单多出 40%?可能不是模型的问题,是你的 HERMES.md

一个开发者的真实经历:Claude Code 每月账单突然多出 40%,排查一周后发现问题出在项目根目录的 HERMES.md 文件上。这个被设计用来注入项目规则的 文件,在某些情况下会导致请求被路由到额外计费的 API 端点。

一个开发者的真实账单:每月多出 40%,根因是一个 .md 文件

2026 年 4 月 29 日,一个 Hacker News 帖子引爆了开发者社区。一个 Claude Code 用户发现自己的 API 账单突然多出了 40%,排查了整整一周,最后发现问题出在项目根目录的 HERMES.md 文件上——这个被设计用来注入项目规则的文件,在某些情况下会导致请求被路由到“额外使用计费”的 API 端点,而用户完全不知情。

这不是一个“AI 太贵”的故事。这是一个关于隐藏计费机制和文件格式冲突的产品设计问题。

1. 发生了什么?GitHub Issue 53262 始末

事件的起点是一个 GitHub Issue:anthropics/claude-code#53262。标题很短,但信息量很大:

“HERMES.md in commit messages causes requests to route to extra usage billing”

这个 Issue 在发出后 24 小时内获得了 933 个 Hacker News points 和 380 条评论。核心问题是:

Claude Code 在扫描项目时,会读取项目根目录下的 HERMES.md 文件,并将内容注入到每次 Claude API 调用的 system prompt 中。 这本身是一个功能,叫“项目级上下文注入”。但问题出在实现层面:

当 HERMES.md 中包含特定格式的指令关键词时,请求会被路由到一个“额外使用计费”端点。 这个端点的费率可能和标准 Claude API 不同,而且通常不会在用户的用量仪表板中清晰显示。

2. 技术原理:HERMES.md 的工作机制

Claude Code 有一个功能,允许用户在项目根目录放置一个 HERMES.md 文件。这个文件的内容会被自动读取,并注入到每次 Claude API 调用的 system prompt 中。

Claude Code 在读取 HERMES.md 后,会对内容进行格式解析,提取关键指令(如 “/commit”、”/system” 等)。这些指令解析后,会影响请求的路由逻辑。

这是设计层面的模糊地带。不是恶意代码,但是一个极其容易踩的坑。

3. 谁踩坑了?典型场景分析

根据 HN 评论区的讨论,踩坑的用户有几个共同特征:

  • 场景一:团队规范文件 — 很多团队会在项目根目录放一个 HERMES.md,用来描述代码规范、Git 工作流等。当 Claude Code 读取这个文件时,文件中的某些格式化指令会被误解析为路由指令。
  • 场景二:开源项目 — 一些开源项目在文档中会包含 HERMES.md,用来描述项目架构。贡献者 clone 项目后用 Claude Code 工作,会自动继承这个文件。
  • 场景三:多项目开发者 — 开发者在不同项目之间切换时,如果每个项目都有 HERMES.md,很容易忽略某个项目的 HERMES.md 正在影响自己的 API 调用。

一个 HN 真实案例

“我调查了一整周,最后发现是项目里的 HERMES.md 在作怪。我的账单多了 30%,但用量仪表板显示的 API 调用次数和之前差不多——费率不一样,而不是用量增加了。”

4. 如何避免:官方建议和最佳实践

目前 Anthropic 官方已经在 GitHub Issue 中确认了这个问题,并给出了临时解决方案:

  1. 在 HERMES.md 文件顶部添加路由跳过标记:
    <!-- @claude-code: no-route-billing -->
  2. 避免在 HERMES.md 中使用 “/” 开头的指令格式 — 用转义格式:`/commit` 而不是直接写 /commit
  3. 定期检查 API 账单明细 — 如果你发现账单异常,先查项目中是否有 HERMES.md

5. 这个问题的本质是什么?

表面看,这是一个技术 bug。但往深一层看,这是一个信息不对称问题

Claude Code 帮开发者做了很多自动化的事:读取 HERMES.md、注入 system prompt、选择 API 端点。这些自动化提升了体验,但也隐藏了成本逻辑。当自动化遇上隐藏的计费规则,用户就踩坑了。

结论:你的 HERMES.md 在影响你的账单

如果你现在正在用 Claude Code,打开你的项目根目录,看一眼有没有 HERMES.md。

如果有,检查一下里面有没有以 / 开头的指令字符串,或者没有被标记为「不用于路由」的指令格式。

这个坑,踩不踩,取决于你愿不愿意在写 HERMES.md 之前多看两行文档。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注