凌晨时分,距离一场黑客马拉松只剩一天,我向Claude Code代理抛出了一个再简单不过的问题:查查今天的开销,看看最近一小时的烧钱速度,评估一下还能不能继续干活。我本以为会得到一句“谨慎继续”的回复。结果这个代理直接停下了手头的工作,告诉我已经超预算6倍,并且精准定位到了故障模式。
这个模式要追溯到一周前的一场灾难。我放任两个深度研究任务自由运行,它们迅速分裂出了203个子代理。吊诡的是,每一个子代理都悄无声息地默认使用了最昂贵的模型,且全力运转。它们只用了区区一个下午,就吃掉了我的Claude Max一周配额的大头。一周前烧光我配额和那晚拒绝花钱的代理,其实是同一个产品,指向同一个账户。唯一的区别在于:前者是盲跑的,后者装上了一块“电表”。
![]()
Anthropic并没有提供这块“表”。它很乐意在你撞到限额高墙时告诉你,但在这之前,没有任何信号能提示你正以多快的速度冲向红线。当我和另外三人为了共同利益开始一场黑客马拉松时,这意味着每天都有四分之几率引发新一轮的203个子代理风暴。于是,在不久前,我动手造出了这块表:对接Claude Code原生的OpenTelemetry导出器,将数据流式推送到自托管的SigNoz堆栈上,配上个人专属仪表板、失控会话触发器,还有那个会自我审查的代理。
有一件事出乎意料:我原本打算重写导出器,结果发现自己多此一举。Claude Code在几个环境变量背后,已经自带了原生OpenTelemetry支持。整个集成只需在`~/.claude/settings.json`里配置一段环境变量,随后机器上的每一个会话都会自动上报:按模型和类型划分的Token计数、预估的美元成本、会话数量、活跃时间,甚至是代码增删行数,全都会转换为标准的OTLP指标数据,外加一串用于记录API请求和工具权限决策的日志事件。
接收端我当时已经在本机跑起来了,那就是SigNoz,一个自托管的开源可观测性平台,而非租用Datadog。通过其新推出的Foundry安装器,只需一份11行的配置文件,就囊括了ClickHouse、采集器和界面。整个搭建过程新加的额外基建成本为零,所有东西在笔记本上跑得飞快。
上手的第一小时,我就在两个地方栽了跟头。首先是settings文件会覆盖shell环境变量的设置。一旦全局配置了环境变量块,单次命令行调用的内联变量就会失效,这让我一度困惑不已,心想为什么我的隧道测试一直在往本地回环地址上报。解决之道是使用`--settings`标志来明确指定配置路径,它能击败一切默认规则。其次,传统的排查经验在AI工作流里有些水土不服——代理进程的数量和成本消耗的关系,并不总是线性可预测的。
这套简陋的监控体系上线后,效果立竿见影。过去动辄爆发出的203个无头代理乱象瞬间被遏制住,因为只要有人无意中触发大规模推理动作,失控触发器就会弹出警告。这不仅仅是节省了那点可怜的配额,更是把我们从互不信任的相互指责中解救了出来。大家终于可以安心写代码,而不必时刻担心自己敲下的一个回车键会不小心烧掉队友的未来。
这个搭建过程给我们的启示异常具体:在现代AI工程化实践中,对非确定性系统进行成本观测,其紧迫性丝毫不亚于代码调试。仅仅因为是“对话式编程”就忽略财务边界的控制,下场很可能就是在一个慵懒的下午,眼睁睁看着数百个数字劳工替你花掉真金白银。从这件事里得到的经验有三条:第一,像Claude Code这种工具,已经为可观测性预留了底层管道,不需要你从头造轮子。第二,SigNoz之类的轻量级开源方案足以应对这类规模,完全没必要引入复杂冗余的商业监控系统。第三,任何自动化推进的边界上,如果缺乏及时的负反馈机制,成本的失控将是必然,而非偶然。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.