米哈游的工程师测试多Agent协作,没设熔断,几十个智能体陷入循环调用,13小时烧掉200万人民币Token账单。
我看到这个案例的第一反应不是“Agent太危险”,是我自己的夜间任务有没有设熔断。答案是没有。Claude Code和Codex跑长任务的时候,我人已经睡了,它还在调用工具、读文件、写代码。如果它陷进一个循环,我第二天早上看到的可能不是产出,是账单。
所以我花了一个周末,把三道“刹车”装进了自己的工作流:Peras管预算,DotMD管计划,OpenShell管系统权限。三道都装完,第一道就差点没拦住。
![]()
先搞清楚:Claude Code自带的控制,为什么不够
Claude Code不是完全没有成本控制。 /usage 可以看当前会话的Token和估算费用, --max-budget-usd 可以给单次运行设一个美元上限,订阅用户还能在Settings里调月度spend limit。
但这些控制解决的问题和“夜间跑疯”不是同一个。
--max-budget-usd 限制的是单次 claude -p 运行的美元消耗,它不知道你周配额的剩余百分比。月度spend limit是账户层的硬上限,到了就停,但它是“最后一道墙”,不是“提前减速的刹车”。 /usage 是查看工具,你得主动去看,Agent不会因为“你快用完了”而自己停下来。
Peras的作者把这个问题说得很直接:他受够了每周中途额度耗尽,受够了不停刷 /usage 去猜一个任务会吃掉多少,所以做了这个工具。
原生控制是“到了墙就撞”,Peras想做的是“在墙之前设一条线,跨线就拒绝下一次调用”。
![]()
Peras:它确实“拒绝调用”,不是“杀掉进程”
Peras的核心命令只有一行:peras set weekly 85 pause 。意思是周用量到85%时,Agent的下一次工具调用会被拒绝,并附带一个明确的原因。
我把它设得更激进,peras set weekly 20 pause ,然后启动一个会产生大量文件读写和搜索调用的编码任务。
触发时的表现和我想的不一样。它没有把Claude Code进程杀掉。 当前正在执行的那一步跑完了,但下一步工具调用被拦下来,终端里返回了一行原因,大意是“周用量已达阈值,暂停”。Agent收到了这个原因,它没有继续重试,而是停下来等待。
这个设计比“硬杀”聪明。硬杀会让你丢掉当前会话的上下文,恢复起来很麻烦。拒绝下一次调用,是把“停”这个动作交给Agent自己消化,你可以从终端或菜单栏恢复,恢复之后它接着干。
Peras有三档模式:warn(只通知)、ask(请求确认)、pause(硬停)。它还能按项目文件夹设不同的线,peras set --here weekly 80 pause 只对当前目录生效。
但它的限制也必须说清楚。claude -p 模式停不了,因为那个模式不走PreToolUse hook。Codex的hook如果自身坏了,会fail open,也就是闸门坏了就默认放行。它只支持macOS,Linux没测过。它读的是Claude Code status line里的 rate_limits.seven_day.used_percentage ,不是自己估算Token,所以不依赖Anthropic的用量API。
CLI和hooks免费,MIT协议,Mac菜单栏应用€4.99一次性。对用订阅套餐、经常跑长任务的人来说,这个价格基本等于白送。
![]()
DotMD:把“Agent的计划”变成一份你能逐行批注的PR
Peras管的是“花多少钱”,DotMD管的是“干什么活”。
它的逻辑很具体:Claude Code、Codex或Cursor把规格、计划、README通过MCP发给DotMD,你在Mac上的Markdown应用里逐行选中、逐行评论,Agent读到评论后通过MCP修改文档,你再确认接受。
我模拟了一个场景:让Agent写一份“给现有模块加缓存层”的计划。它交上来的文档结构很完整,有背景、方案、回滚步骤。我选中“回滚步骤”那一节,加了一条评论:“只写了删缓存键,没写如果新缓存层上线后数据不一致,怎么回滚到旧读取路径。”
Agent没有整篇重写,它只改了那一节,把数据一致性的回滚路径补了进去。 我再确认,文档更新,版本历史里多了一条记录。
这就是“像审PR一样审计划”和“在聊天框里跟Agent说改一下”的区别。聊天框里说“回滚那块再想想”,它可能把整篇计划都重排一遍;行级评论把修改范围锁在了你指的那一段。
DotMD基础阅读功能免费,原生Mac应用,要求macOS 14以上,所有数据本地存储。它不适合“一个人随便写写”的场景,它适合的是“Agent写的计划要经过人签字才能执行”的团队流程。 如果你本来就是一个人干活、计划在脑子里、不需要留审计痕迹,DotMD的PR式审阅对你来说是流程负担。
![]()
OpenShell:墙很硬,但门是人自己开的
第三道刹车管的是最底层的东西:Agent到底能碰什么。
OpenShell把策略放在Linux内核层,文件访问用Landlock,进程用seccomp,出站网络默认全拒,每个请求过L7代理检查目标主机和发起程序。OffSeq在Apple Silicon上跑了123次越权测试,OpenShell v0.1.2的默认策略下没有任何绕过。同一个恶意脚本,不装OpenShell时10次全部泄露了秘密数据,装完之后10次全部被拦截。
但测试也发现了一个更值得警惕的事:泄漏不是从墙上打洞出去的,是从操作员自己打开的门出去的。 读写规则、GET请求的查询参数和header值、审计模式规则、自动批准机制——这四类由人配置的“方便选项”,每一样都能成为数据外流的通道。
这跟Peras的局限是同一个道理。刹车工具能拦住Agent的“自主行为”,拦不住人的“图方便”。 你把工作区设成整个用户目录、把网络策略开成自动批准、把Peras的线设在99%,然后问“为什么还是烧了”,答案不在工具里。
![]()
三道刹车到底该怎么配:按场景拆开看
三道装完,我的判断是:它们各自管一个层面,替代不了彼此,按你的使用方式选,不需要全装。
如果你用Claude Code或Codex的订阅套餐,经常跑夜间长任务,那就装Peras,线设在周配额70%到80%。原生只有账户上限,没有周百分比拦截;Peras在跨线时拒绝下一次调用,不杀进程。
如果Agent写的计划或规格要经过人确认才能执行,那就装DotMD。行级评论锁定修改范围,MCP回写,版本可审计;一个人干活不需要。
如果Agent要接触不受信任的代码、网页或第三方工具,那就装OpenShell。默认策略实测零绕过;但必须检查自己有没有开“方便门”。
如果你按API付费、任务短、人一直在旁边盯着,可以先不装。原生 /usage 和 --max-budget-usd 够用;刹车的配置和维护成本大于收益。
“刚需还是焦虑税”的答案取决于你跑的是什么。 如果你每天让Agent在无人值守的情况下跑几小时,Peras的€4.99和十分钟配置,跟米哈游那200万比起来,连零头都算不上。如果你只是偶尔在终端里让Claude Code改几行代码,装刹车更像是给自行车装ABS——不是没用,是没必要。
![]()
我的配置,和一条没解决的缝
我现在的配置是:Peras线设在周配额75%,DotMD用来审跨模块的改造计划,OpenShell只在跑来源不明的代码时开。
三道都装完之后,我发现还有一条缝没堵上。Peras拦的是“周配额百分比”,但它不区分“这个任务是正常消耗还是循环调用”。如果一个任务在10分钟内快速烧掉10%的周配额、然后停下来,Peras只会在跨过75%那条线的时候才拦。它能防“一整夜慢慢烧”,防不了“一小时内快速烧”。
Peras支持按单次提示的消耗比例设线——比如“一个prompt消耗超过周额度3%就暂停”。我把这条也开了。但它仍然是事后的,不是事前的。真正的“事前刹车”,需要你在给Agent任务的时候就设定好边界:让它跑多久、最多调多少次工具、什么情况下必须停下来问人。 工具能兜底,但兜底之前的那道判断,还在你手里。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.