宝玉xp 26-01-10 06:47
微博认证:前微软Asp.Net最有价值专家 2025微博年度新知博主 科技博主

“你们应该多用 Bash。”

过去几周,Anthropic 的 Thariq 和几十家做通用智能体的公司开了电话会议。邮件助手、客服机器人、日程管理——各种产品形态都有。聊完一圈,他发现自己反复在说同一句话。

Bash?那不是程序员用的命令行工具吗,和这些产品有什么关系?

先看一个具体场景。

假设你有一个邮件 Agent,你问它:“这周我在打车上花了多少钱?”

传统做法是这样的:Agent 调用 API 拉取邮件,可能一次性取回 100 封,然后让模型从里面找 Uber、Lyft 的收据,加总金额。

问题在于 100 封邮件塞进上下文,模型要同时记住这些内容,从中筛选、计算。这对大语言模型来说并不轻松。容易漏,容易错,而且你没法验证它到底看了哪些邮件。

这就是典型的模型舒适区问题:数据量不算大到需要专门写程序处理,但又超出了模型一次性硬算的能力范围。夹在中间,很尴尬。

Thariq 的方案是:给 Agent 一个 Bash 工具,让它把中间结果存成文件。

听起来很简单,但背后的逻辑很有意思。

传统的工具调用是这样的流程:

工具 → 模型处理 → 输出结果

所有中间状态都在模型的“脑子”里,你看不见,也没法检查。

换成 Bash 之后,流程变了:

工具 → 存文件 → 搜索/过滤 → 模型处理 → 输出结果

模型可以先把 100 封邮件存到一个文件里,然后用 grep 搜“Uber”,再 grep“Lyft”,分别统计。每一步都有迹可查,最后加总的时候,它还能回头检查自己的中间结果。

这带来三个能力升级:

可复现。同样的命令再跑一遍,结果一样。你可以调试,可以排查问题。

可验证。模型不是凭“记忆”给你答案,而是基于实际文件里的数据。你信不过的话,自己也能打开文件看一眼。

可组合。一个命令的输出可以作为下一个命令的输入,管道一接,复杂任务就能拆成简单步骤。

Bash 让 Agent 从“脑算”变成了“打草稿”。草稿可以留痕,可以检查,可以改。这对需要准确性的任务来说太重要了。

邮件搜索只是最直观的例子。Bash 的能力边界其实很宽。

链式 API 调用是个常见需求。比如“把这周我发过邮件的联系人都找出来”,这需要先拉邮件列表,提取收件人,去重,再逐个查询联系人详情。一连串操作用 Tool calls 来做,调用次数多,中间状态难管理。用 Bash 脚本串起来,逻辑清晰得多。

视频和文件处理也是 Bash 的强项。ffmpeg 这个命令行工具,模型用起来得心应手。找视频里某个片段、裁剪、转码,一行命令搞定。

还有定时任务。在 Agent 运行的容器里,用 cronjob 或 at 命令就能创建定时执行的任务。用户说“每天早上 8 点给我发一份新闻摘要”,Agent 可以自己设好闹钟。

这些场景有个共同点:都需要多步骤操作,都需要保存中间状态,都超出了单次工具调用的能力范围。

但 Bash 是把双刃剑。

能执行命令意味着能做很多事,也意味着能做很多危险的事。rm -rf 一不小心就能删光整个目录。如果 Agent 被恶意提示词攻击,后果可能很严重。

Anthropic 显然考虑到了这一点。他们在 Claude Agent SDK 里做了一套权限系统,包括 Bash 命令解析器和分级权限控制。哪些命令可以直接执行,哪些需要用户确认,哪些完全禁止,都可以配置。

我用 Claude Code 的体会是,这套权限系统确实降低了心理负担。它会在执行敏感操作前询问你,而不是闷头就干。但安全护栏不是万能药。权限系统本身也可能有漏洞,Bash 解析器也可能被绕过。

安全护栏是必需品,但不能因此就觉得万事大吉。

强调 Bash 的好处,也得说清楚它的边界。

如果任务足够简单,别用。“今天天气怎么样”这种一次性查询,直接调 API 返回结果就行,没必要存文件再处理。杀鸡用牛刀反而更慢。

如果环境是 Serverless 的,用不了。很多云函数运行时没有可持久化的文件系统,Bash 的“存中间结果”优势就没了。

如果对安全要求极高,谨慎使用。命令注入的风险无法百分之百消除,金融、医疗这类场景可能更适合用白名单式的专用工具,而非通用的 Bash。

工具的选择取决于场景,而不是工具本身的强弱。Bash 很强,但不是所有场合都该用。

回过头看,Thariq 这条建议的真正价值不是“Bash 很强”这个结论,而是背后的思维方式:

让 Agent 的思考过程“落地”到可检查的中间产物。

传统的 Agent 设计把所有东西都塞进模型的上下文,一锤子买卖。Bash 提供了另一种路径:把复杂任务拆开,每一步都留下痕迹,可以验证,可以回溯。

想想看,这和人类处理复杂问题的方式多像。我们做复杂计算时会列竖式,写长文章时会先拟提纲,处理大量信息时会做笔记。不是因为脑子记不住,而是因为落到纸上更可靠、更容易检查。

Agent 也一样。不是说模型处理不了,而是有中间产物的流程更值得信任。我自己用 Agent 辅助写作,所有中间产物都会存成文件:网络检索资料、提纲、不同版本的草稿、画图的提示词。这些存下来后续就可以灵活组合。

Bash 不只是程序员的工具,更是让 Agent 具备可验证、可复现、可审计能力的关键一环。

x.com/trq212/status/1982869394482139206

发布于 美国