凌晨刷到这玩意儿的时候,我手指已经搁在键盘上了。
一个开源 agent,功能是发现你坐久了,就把显示器锁死,逼你出门摸树皮、听鸟叫、用鼻子深呼吸五次。DeskBreak,Hacktoberfest 参赛作品,作者 Aman Maurya,给 Swift、Dart 做过贡献,还自己创着业。顺手报了个 Sentry 的 tracing 奖。
说白了,"AI 版强制站起来"。这种项目我一般扫一眼就划走——demo 里全是"让世界更美好",一上生产全是债。
结果没划走。作者贴了张火焰图。
开发早期,Sentry 的 tracing 抓出两个问题。
一个:环境工具被串行调了三次,算太阳赤纬、算日落窗口、算空气清新度,全同步、没做记忆化。火焰图上一条 4200 毫秒的阻塞瀑布就那么杵着。
另一个:每次请求塞 2800 个 prompt token。根因是早期 system prompt 里塞了一整段讲睫状肌痉挛神经科学的教科书,每次运行原样带上。
我看着就想笑。不是笑这个老哥——是这俩毛病太熟了。串行同步不缓存、prompt 里挂一段没人看的背景文献,这不是 AI 的毛病,这是任何一个手生的人第一次写东西的毛病。AI 只是把它生成得更快、更多。
这个剧本我看过。换皮而已。
但再往下那段,我笑不出来了。
他把环境计算合并成一次确定性求值,4200 毫秒掉到 8 毫秒以下,整条 pipeline 从 4200 掉到 320。prompt 那边删掉教科书,换成两行动态生理锚点,2800 token 掉到 520。项目文档里写的目标是 350 毫秒,最后跑到 320——压线达标,也就这样了。
然后我盯上的是另一个问题:他是怎么知道这俩毛病的?
靠图。他一开始根本不知道哪一步慢、哪一次烧了 token。是那条火焰图和那张 token 曲线告诉他的。
这就是我看完这项目唯一想说的东西。
所有人都盯着 agent 聪不聪明、能不能自己调工具、跑分多少。我不看。我看的是——它挂了的时候,你能不能看见它干了什么。
AI agent 跟以前所有系统有个不一样:它的"推理"你没法直接看,也基本不可信——它会一本正经地给你编,编得比真的还像。所以别去看它怎么想,你只能看它的痕迹。哪个 span 慢,哪次调用烧了多少 token,哪个工具返回了什么。trace 是黑盒上唯一一扇开着的窗。
没有 trace 的 agent,在我这儿就是不能上生产。不是"最好加一个",是"没有就直接毙"。出事了连它在哪一步把自己整挂的都指不出来,只能对着一行告警,跟凌晨三点一起干瞪眼。
说句实话,我见过太多团队给 agent 加 trace,加的是"调用日志"——调了啥、返回了啥,打印一坨。那玩意儿一出事往下滚十五屏,滚到天亮也找不着是哪一步。有用的 trace 得带层级:根事务量端到端,子 span 量单个工具,推理单独一个 span,token 和成本挂上去。这样你一眼能看出慢在哪一层。
DeskBreak 这点做对了。root 是整条调度延迟,工具调用是子 span,推理是另一个子 span,token 和成本挂在头上——成本那格写着 0.00 美元。
那个 0.00 我多看了两眼。不是因为它省钱,是因为它背后是本地跑的开权模型(gemma-2-2b 这个量级),加一堆确定性本地工具,整套在浏览器里跑,没有服务器。
副作用我特别在意:离线可用。你在公园里、在山道上,没蜂窝信号,它照样出任务、照样倒计时。
放生产里看,这点是对的。你的 agent 依赖什么,决定了你故障时的容错边界在哪。把 agent 挂在某个云 SaaS 的推理接口上,那接口抖一下,你就是瞎的——而且你连它为什么抖都看不到。本地优先不是抠门,是把"依赖"这层收进自己摸得到的地方。
再往下翻评论区。八个回复,大部分"好棒""有意思",跳过。
有两条问到点子上了。
一条说:agent 得靠 IDE 或者终端上下文,判断这人是正在深度工作,还是刚好适合休息。他担心的是——开发者正在处理生产事故呢,你弹个"起来走两步",那不是关怀,那是往伤口上撒盐。
另一条问得更老练:有没有 cooldown,有没有迟滞?你刚出去回来,它会不会立马又觉得你久坐,又把你锁一遍。
看出来没有——这俩问题,才是这个项目离"能上生产"最近的地方。
所有主动出击的系统,难的从来不是"什么时候触发",是"什么时候不触发"。告警系统就是这个理:噪声一多,pager 就没人看了,真的 Sev1 淹没在一堆"CPU 用了 40%"里。一个把"让人离开屏幕"当成功标准的 agent,分不清对方是在写代码还是在救火,它自己就是新的噪声源。
主动这东西,一旦做错,比被动还招人恨。补一刀:这俩问题评委不一定会问,但半夜被误锁屏幕那个冤种一定会问。
回到开头。
DeskBreak 我一开始是准备笑的——一个用 AI 让你去摸树皮的极客玩具。看完笑不出来。让我记住的不是 350 毫秒那个宣传数,也不是那三档休息时长起了多好听的名字。
是它背后那两张图。
本期教训一句:评估一个 agent 能不能上生产,别先问它多聪明、跑多快——先问它有没有 trace,trace 里哪一条是红的,哪一段每次都烧着没人要的 token。剩下的,等凌晨三点再说。
