52天,2,340行,每条成本记录为零:停止钩陷阱

2026年8月25日1 次浏览来源:Dev.to阅读原文

六个月后,从每月700美元到一个真正的企业 我不再教Claude, 开始让它自主经营整个环境。

然后,这一环境花了52天时间写出2 340行的日志,其中每个成本都是零的——它从未抱怨过。

为什么从克洛德代码开始的大多数人 都用它来方便聊天 但一旦月收入超过某一门槛,你的思维就会转变。

而不是"发布指令和获得输出",你移动到"让整个环境运行自己".

具体区别如下.

在第一个模式中,每次输入一个提示,然后得到结果.

在第二作中,在入睡时会钩起火来,脚本会被执行,而日志会累积.

就我而言,有十几个工作 运行在时间表 通过启动, 和克洛德代码停止钩 火在每会结束。

我醒来时只记得昨天坐在我的桌面上的简短发言,以及每场会议消耗了多少象征物的记录——不管怎样,这是理想的。

为什么跟踪成本?

Claude Code的MAX计划是固定的月费,但有一个直观的天花板,其中"使用太多有效扼杀下个月的能力".

没有能见度,哪个会话使用哪个模型和多少, 你运行的自主代理 零成本意识。

一个自主的环境越方便,就越能默默地吃.

故以量为先.

停止钩是处理这种测量的机制.

当一个 Claude 代码会话结束(当用户运行时,或超时时),它会运行在 .

将成本汇总脚本放在那里,然后得到"会话结束=自动录制"的管道.

电子表格中不再包含手写成本 。 "正跑"和"正跑"是不同的东西——任何工程师都知道这种感觉.

带有全零内容的日志流出比出错还糟糕.

出错很容易被注意到;一个充满了零的日志保持了"正常记录"的外观,而内部却完全空洞.

我错过了52天2 340行。

成本聚合"静静地撒谎"的根本原因是一个简单的事实:Stop hook's stdin并不包含或字段.

最早的版本是在假设"停止钩子的sdin必须包含符号计数"的基础上被写出.

了解管道流(v2)运行情况的总体流程使其余部分更容易遵循。

关键点是设计原理:"Stop hook中唯一值得信赖的数据源是抄本文件".

而不是期望能直接到达 标准有效载荷, 你读JSONL文件 Claude代码 在整个会话中 一直写。

这是切换到v2的核心.

按模式计算的比率表 实际费率由档案第34-38行规定。

三层:海库(Haiku),索内特(Sonnet)和奥普斯(Opus).

根据模型名字符串是否包含或.

发送,并将其他东西作为索内特处理.

简单的字符串匹配在这里是很多的;这不值得一个 regex.

在成本计算上 缓存问题比你预期的要多 (初始缓存写出)是1.25x普通输入,(从第二次读出)是0.1x.

如果你和Opus大量使用缓存,读取率会达到每百万个活字币1.50美元——这比Haiku的正常输入要便宜.

扫描线条的函数 57–90 是这个修复的核心。

它逐行解析 JSON , 只选择条目 。

对于模型名称,它使用最后发现的模型名(假设即使模型开关会中,最终的助手转会也带有正确的模型).

处理错误是故意松开的 。

如果无法读取文件, ; 如果一行无法解析, .

在这两种情况下,目标是避免整个Stop悬钩失败.

缺失的成本记录比Stop悬钩扔出出错误并影响克洛德代码会话终止的问题要小.

阅读 stdin 和 Full Fl

分享