LLM 0.32:一个命令行工具长成了智能体框架
Simon Willison 发布 LLM 0.32,称其为该项目自诞生以来最重要的一版:推理轨迹打到 stderr 因而不污染可管道的标准输出、接入供应商的服务端工具(含由供应商代跑远程 MCP 调用的 AnthropicMCP)、仿 Git 的内容寻址消息存储解决长对话的重复日志、以及分型的流式事件。工具链还能为人工审批暂停并从存储的消息历史恢复——作者由此写道「我猜 LLM 现在是个智能体框架了」。
基础信息较完整,适合持续跟踪并等待更多验证。
记录
信号正文
这一版改了什么
作者自己的定性是:这是 LLM 项目自发布以来最重要的一版。四条主线:
- 推理轨迹可见,而且打在 stderr 上。 对推理模型运行时,「思考过程」输出到标准错误而不是标准输出——所以你依然可以把标准输出管给下一个程序,思考过程不会混进去(
-R/--hide-reasoning关掉)。 - 服务端工具。 OpenAI 提供代码执行环境与 WebSearch;llm-anthropic 插件补上 WebSearch、WebFetch、CodeExecution 和 AnthropicMCP——后者意味着由供应商在一次请求-响应之内替你执行对某个远程 MCP 服务器的调用。
- 内容寻址的消息存储,仿照 Git。 每一轮请求都携带完整历史是 LLM API 的本质,直接记日志会把同一段 JSON 重复写很多遍;按内容寻址之后去重,
llm logs再把它还原成好读的形式。 - 结构化事件流。
stream_events()返回 reasoning / text / 工具调用 / 图片附件等分型事件,取代原来「一串字符串」的返回形状。
另有 model.prompt(messages=[]) 取代原先的会话抽象,以及一个能对任意 OpenAI 兼容端点跑一次性提示词的 llm openai endpoint。
最小、但最值得抄的那个设计
可观测性和可组合性通常互相打架:你想看到中间过程,又想把结果干净地交给下一个程序。把推理轨迹放到 stderr、把答案留在 stdout,两件事同时成立,而且不需要任何新概念——这是 Unix 老办法在智能体工具上的一次准确复用。
工具循环正在往供应商那一侧挪
AnthropicMCP 这个工具值得单独看:MCP 调用发生在与供应商的一次 API 往返之内,客户端不再驱动那个循环。把它和 07-31 那版无状态 MCP、以及托管智能体放在一起看,是同一个方向的三种形态——执行、状态与工具接入都在向服务端收敛。
而这条信号的位置恰好在反方向
ChatGPT Work 和 Gemini 托管智能体把运行时搬到平台侧;LLM 0.32 走的是另一条路:一个跑在本机、可审计、能和任意 OpenAI 兼容端点拼接的命令行,外加一个足够写出真实智能体的 Python 库。
两条路线的取舍就是「你必须自己拥有哪一层」。这一版还把工具链可以为人工审批暂停、并从存储的消息历史恢复做进了框架——人在回路成了框架能力,而不是产品层面的一个开关。
作者自己的结论
他一度拒绝使用「智能体」这个词,直到接受了一个足够朴素的定义——智能体就是在循环里调用工具以达成目标。这一版之后他写道:「我猜 LLM 现在是个智能体框架了。」
一个命令行工具长成智能体框架,这件事本身就是当下这一层生态的形状:能力不再靠某个大平台一次性给全,而是靠小工具把模型、工具与循环拼起来。
为什么是现在
为什么重要
推理轨迹打到 stderr、答案留在 stdout,是一个很小却值得抄的设计:可观测性和可组合性通常互相打架,而这一版让两者同时成立,没有引入任何新概念。更大的一层是方向——AnthropicMCP 把 MCP 调用收进与供应商的一次往返,说明工具循环正在往服务端挪;而这个项目本身却走反方向,坚持一个能在本机跑、可审计、能拼接任意 OpenAI 兼容端点的命令行。两者的取舍就是「你必须自己拥有哪一层」。
背景
技术背景
四条主线:推理轨迹输出到标准错误(-R 可关);服务端工具(OpenAI 的代码执行与 WebSearch,llm-anthropic 的 WebSearch/WebFetch/CodeExecution/AnthropicMCP);仿 Git 的内容寻址消息存储,解决「每轮都带完整历史」造成的重复 JSON;以及 stream_events() 返回 reasoning/text/工具调用/图片附件等分型事件,取代原先的字符串序列。另有 model.prompt(messages=[]) 取代会话抽象,以及可对任意 OpenAI 兼容端点跑一次性提示词的 llm openai endpoint。
关注人群
谁该关注
下一步
学习路径
- 先读「工具使用与函数调用」,把一次工具调用拆成三段,再回头看服务端工具替你做了哪一段
- 对照 07-31 的无状态 MCP 信号,理解 AnthropicMCP 为什么能收进一次往返
- 用「AI 工具链选型与自建边界评估」的两栏法,判断这条本地路线和托管平台哪个符合你的边界
- 读「智能体可观测性与评测运维」,把推理轨迹接进你自己的轨迹追踪
关系网络
在技术网络中的位置
当前技术与相邻技术、技能和背景知识的连接,点击节点可继续探索。
延伸思考
后续问题
- 服务端工具让供应商代跑循环之后,失败归因还能不能分清「模型选错工具」和「工具执行失败」?
- 内容寻址的消息存储能把长对话的日志体积降到什么量级?
- 「智能体」被写进核心库之后,这个项目还能保持现在这种可拼接的小工具形态吗?
来源参考