TechFoco Logo
首页专题归档站点地图
© 2026 TechFoco. All rights reserved.
文章归档专题网站地图站点地图 XML爬虫规则GitHub
  1. 首页
  2. /
  3. 返回专题
  4. /
  5. 抛弃 Function Calling 拥抱 Unix 命令行

抛弃 Function Calling 拥抱 Unix 命令行

2026年03月19日•TechFoco 精选

前Meta技术负责人主张:用Unix命令行替代复杂Function Calling构建AI Agent,因其更符合LLM思维模式,通过渐进式帮助、导航式报错和分层架构实现高效交互。

在人工智能代理(AI Agent)的开发领域,Function Calling(或 Tool Calling)长期以来被视为构建智能工具使用能力的标准范式。然而,一位拥有深厚实战经验的技术专家却提出了一个颠覆性的观点:我们可能一直在走弯路。

前 Meta 旗下公司 Manus 的后端技术负责人 Morro Hsu,在深度构建 AI Agent 两年之后,得出了一个足以让许多开发者重新审视其技术栈的结论:是时候放弃复杂的 Function Calling 了。取而代之的,是一个极其简单却异常强大的工具:一个能够执行 Unix 命令行的 run(command="...") 函数。

主流范式与反直觉的洞察

当前,OpenAI、Google 等巨头在其官方文档与 API 设计中,无不推崇精细化的、结构化的 Function Calling。开发者们普遍认为,为 AI Agent 配备一个庞大、分类清晰、接口明确的专用工具库,是提升其能力的不二法门。这种思路催生了诸如 read_file()、filter_lines()、count_items() 等一系列原子化工具。

但 Hsu 的实践揭示了一个被忽略的真相:大型语言模型(LLM)在其预训练阶段,早已消化了海量的代码与系统交互数据,其中自然包括数十亿行涉及 Unix Shell 命令的文本。对于 LLM 而言,grep、awk、sed、find 这些命令的语法和语义,可能比我们人为设计的 JSON 格式函数调用接口更为“原生”。当你需要完成“读取日志文件,筛选出错误行,并计算其总数”这个任务时,LLM 更自然的“思考”方式可能是生成一行命令:grep -c "ERROR" app.log,而非发起三次离散的、结构化的函数调用。

超越 CLI:一套为 AI 设计的交互哲学

Hsu 提出的方案远非简单地“让 AI 执行 Shell 命令”。他将这套模式提炼为一种“启发式设计”哲学,其核心包含三个精妙的工程要点。

首先是 渐进式 --help 发现机制。传统的 Agent 设计通常需要在一开始就将所有工具的详细说明文档加载到上下文(Context)中,这极大地消耗了宝贵的 Token 限额。Hsu 的设计则模拟了人类使用命令行时的学习过程:Agent 可以先尝试运行 memory(一个假设的命令),当系统返回“命令未找到”或简要用法提示时,Agent 可以接着尝试 memory --help 或 memory search 来探索更具体的功能。这种按需探索的方式,使得 LLM 能够高效地动态学习工具集,而非背负全部文档的重担。

其次是 将错误信息转化为导航指引。在传统命令行中,错误信息(stderr)往往是晦涩且终止性的。例如,用 cat 命令查看一张图片只会得到“cat: binary file”这样的报错。Hsu 对其进行了改造,让错误信息变得具有指导性。系统可能会返回:[error] cat: binary image file. Use: see photo.png。这相当于直接告诉 Agent:“你用的工具不对,试试另一个。” Hsu 分享了一个反面案例:由于标准错误流被静默处理,一个 Agent 在尝试安装软件包时,盲目地在 pip、uv、apt 等命令间重复失败了十几次,浪费了大量计算资源与时间。这个案例凸显了 stderr 是 Agent 最需要的信息 这一深刻洞见。

最后,也是最关键的一点,是 执行层与表现层的分离架构。这是保障系统鲁棒性和效率的工程基石。执行层严格遵循 Unix 哲学,保证数据通过管道(Pipe)时是无损且高效的。而表现层则专门为 LLM 的“阅读”体验而优化:它会自动截断过长的输出并告知完整内容的位置,将二进制文件(如图片)替换为友好的提示文本,并在每条命令结果后附加如 [exit:0 | 12ms] 的元数据。这种分层设计有效防止了无意义的二进制数据或冗长日志污染 LLM 的上下文窗口,同时让 Agent 能够逐渐“感知”每个命令的执行耗时与状态,学会评估操作成本。

Shell 作为超集:一种工程上的返璞归真

这一设计思路的终极目标,并非给 Agent 一个完整的、不受限制的 Linux 系统权限。其精髓在于,使用 LLM 最熟悉、最原生的“语言”与之沟通。正如 Hsu 在讨论中所强调的:Shell 是超集。你永远可以轻松地从 Shell 环境中调用一段 Python 或任何其他语言的代码来完成特定任务;但若试图在一个纯 Python 函数调用环境中去模拟 Shell 命令的灵活性与组合能力,无异于舍近求远,自我设限。

这篇分享的价值,在于它将一个看似“技术倒退”的选择——用诞生已五十年的命令行界面替代时髦的 Function Calling——提升为一种更符合 AI 本质的设计哲学。它没有停留在表面比较,而是深入剖析了其底层优势:与训练数据的高度吻合、命令之间无与伦比的可组合性,并给出了使之高效工作的工程实践:渐进式帮助、导航式报错和分层架构。这无疑为那些仍在纠结于如何设计“完美工具库”的开发者们,提供了一条清晰而高效的路径。这是一种基于深刻理解的、工程意义上的返璞归真。


原文链接: 前Meta收购公司Manus的后端技术负责人,在构建AI Agent两年后得出结论:别再用复杂的Function Calling了。

相关标签

AI AgentFunction CallingUnix ShellLLM EngineeringBackend Development

继续阅读

较新文章

AI 偷走代码 程序员身份危机

较早文章

Sirchmunk 革新搜索 无向量数据库黑科技

相关文章

查看更多
抛弃 Function Calling 拥抱 Unix 命令行

抛弃 Function Calling 拥抱 Unix 命令行

前Meta技术负责人主张:用Unix命令行替代复杂Function Calling构建AI Agent,因其更符合LLM思维模式,通过渐进式帮助、导航式报错和分层架构实现高效交互。

2026年03月19日
AI AgentFunction Calling

AI 项目风向标 2024 趋势洞察

MiroFish做数字社会仿真,OpenClaw-RL让Agent持续学习,gstack拆解AI工作流,agent-cli构建交易操作系统,OpenClaw402探索Agent支付,opencli将网站变CLI,sub2api管理AI订阅,Page Agent改造网页交互,bb-browser深耕浏览器控制,BotLearn实现人机共学。

2026年03月19日
AI AgentMulti-Agent Systems
Responses API 工程实践:AI Agents 五层架构解析

Responses API 工程实践:AI Agents 五层架构解析

OpenAI推出Responses API五层架构,让AI Agent能操作计算机。包括Shell工具、编排循环、容器上下文、上下文压缩和Skills系统,实现复杂工作流。

2026年03月19日
AI AgentsResponses API
CLI Anything:让 AI 智能代理真正操控专业软件

CLI Anything:让 AI 智能代理真正操控专业软件

CLI-Anything可将有源码软件一键生成命令行界面,使AI代理能直接操控专业软件,实现自动化。

2026年03月19日
AI AgentCommand-Line Interface
谷歌开源 Always On Memory Agent 打造 AI 持续记忆

谷歌开源 Always On Memory Agent 打造 AI 持续记忆

谷歌开源AI记忆代理,支持多格式文件自动处理,无需向量数据库即可实现持续记忆、整合与检索。

2026年03月09日
AI AgentMemory Agent
Bash 构建 AI 代理:从 0 到 1 实战指南

Bash 构建 AI 代理:从 0 到 1 实战指南

shareAI-lab的learn-claude-code项目,通过Bash和Python,系统性地演示了从零构建Claude Code风格AI智能代理的全过程,包含核心循环、工具调用及多代理协作等关键机制。

2026年03月09日
AI AgentClaude Code