作者回放两个月106个Claude Code会话共8113次模型调用,用Paveo统计出API费用及被拦截的危险操作,Opus 5消耗占77%达1300美元。
我在做 Paveo,一个介于 AI Agent 和它所有调用之间的检查点,在不该有的调用运行之前就拒绝掉。在让任何其他人信任它之前,我用它来回放我最常用的 Agent:也就是我自己的 Claude Code,覆盖了我构建 Paveo 的那两个月。
我用的是订阅模式,所以这些都没有实际计费。这一点对下面的内容很重要:以下数字是我的用量在 API 上的费用,以及我的 Agent 本来会被阻止执行的命令。
Claude Code 在磁盘上保存每一个会话,每个会话一个 .jsonl 文件,位于 ~/.claude/projects 下。每条 assistant 消息记录了其 token 用量,每个 tool call 记录了其名称和参数。paveo replay 读取这些文件,从带日期的价格表对模型调用定价,并将每个 tool call 过一遍策略。它不存储任何数据,只打印计数和规则名称。
59 天。106 个会话。8,113 次模型调用。8,176 次 tool call。
文件里几乎每个调用都省略了由哪个区域提供服务,而某些模型在美国区域的推理成本更高,所以这些调用都按美国价格定价。总价可能最高高出 10%。它永远不会偏低,这是预算应该 err 的方向。
那个一直萦绕在我脑海的数字是单个会话:$452.92。在订阅模式下,这不过是一个普通的长下午。在 API 上,作为一个无人值守的 Agent,这就是一份事故报告。
Claude Code 的入门策略很短:几条匹配毁灭性命令的模式,加上指向 Agent 自身设置和 guard 自身文件的路径。在 8,176 次 tool call 上回放,它会拒绝 670 次:
关于这些数字的两个诚实说明。
并非每个 rm -rf 都是错误。很多都是 Agent 在清理它刚刚创建的 build 目录。Guard 会让它找另一种方式,或者来问你。我对这种交换没有意见:一次误报只会让你重试一次,漏掉一次则会让你丢失工作。
547 次中的大部分都是误报,但我还是保留了这个规则。我当时在做一个工具,它的文件位于 .paveo 下,所以 Agent 不断触碰它们。但"Agent 编辑自己的设置或自己的 guard"是我最不想允许的一件事,因为这是关闭其他所有限制的方式。一条保护 guard 的噪音规则,留着。
在把会话移到 API 之前,先给它们定价。文件已经在你磁盘上了。如果你手工加总,每条消息 id 只算一次:一条流式消息可能出现在多行上。
在每次运行开始之前设置一个费用上限。每月告警是在 $450 会话发生之后才告诉你。用每次调用前检查的上限来拒绝那个会突破上限的调用。
保持 never-list 短小且机械。值得硬停的操作都是容易被捕获的:递归删除、force-push、任何会花钱的操作。把拒绝写成一条指令("不要用另一种方式重试,告诉我你想要什么"),而不是判决,否则模型会去寻找另一条路线。
Paveo 的仓库本周开源。它运行在你自己的进程里,不打开任何网络 socket,同一个策略文件可以守护 Claude Code、Codex、Cursor 或者你自己构建的 Agent。
如果你给自己的会话定过价,我想知道:费用最高的那次是多少?