夜雨聆风学习资料网

ARTICLE · 1136903

给 AI 接上几十个工具之后,真正的麻烦才开始

给 AI 接上几十个工具之后,真正的麻烦才开始

让 AI 看一眼远程电脑上的公众号后台,需要几步?

我们这次实际做了一遍:先发现本机的 MCP 服务,再列出远程环境,找到目标电脑,读取窗口列表,最后提取浏览器的界面结构。为了把这些步骤接起来,助手写了几段 JavaScript,调用 MCP 客户端。

任务并不复杂,却已经暴露出一个问题:工具接上以后,谁来组织它们干活?

10 月 6 日,Armin Ronacher 在《What is Codemode》中解释了 Pi 1.0 的一种做法:让模型用代码编排工具调用。它不是给 Agent 再加一个技能,而是调整模型与工具之间的分工。

01|别让模型当数据搬运工

假设你让 Agent 检查 100 条 GitHub issue,找出最需要处理的投诉。

一种常见做法是:调用工具,读取结果,决定下一步,再调用工具。这里真正需要判断的,是问题是否严重、用户在抱怨什么;可夹在中间的,还有取字段、传编号、合并结果、排序等机械工作。

这些步骤不一定都值得经过大模型的上下文。

Codemode 的办法是,让模型写一小段程序:拉取数据,调用分类器,整理结果,最后只交回必要的信息。模型仍然负责设计流程,但不用逐条搬运所有中间数据。

Armin 给出的真实会话示例正是如此:获取最多 100 条 issue,交给分类模型分析情绪与类型,保存完整结果,从回传列表中过滤掉分类失败的记录,再返回按挫败程度排序后的前 12 项。这里的排序分数只是分类器的估计,并不等于客观的处理优先级。

图1|把中间数据留在流程里。异常回传为本文建议。

这个区别很重要:省下来的不只是回答字数,还有不必要的模型往返与数据传递。但到底省多少,要看任务、工具返回值和模型表现,不能从一个示例推导出普遍的降本比例。

02|这不就是让 AI 写个脚本吗?

听起来确实很像。Cloudflare 介绍 Code Mode 时,也采用了把 MCP 工具转换成 TypeScript API、让模型写代码调用的思路。

但 Armin 特别强调了代码运行的位置。

Agent 背后有一层宿主程序,通常叫 harness:它管理模型调用、工具分发和会话。另一边是实际执行命令的环境,可能是本机,也可能是远程电脑或容器。

在目标环境里跑 Bash,适合操作文件和程序。但把图片作为视觉输入交给模型、组织子 Agent、调用宿主内置的模型接口,往往还需要宿主配合。把图片文件打印成字符,并不等于模型看到了图片。

Pi 的 Codemode 因此放在宿主侧的独立沙箱里:用 WASM 中的 QuickJS 执行 JavaScript,限制内存,不开放直接网络、文件系统或定时器访问;它通过宿主提供的工具和接口与外部交互。

图2|Pi 的宿主侧编排沙箱示意。权限检查仍然必要。

这不是允许 AI 在高权限宿主上随便跑代码,而是在宿主与工具之间放一个受约束的编排层。不同产品的具体实现并不相同。

回到开头:我们通过终端脚本连接 MCP,可以说明“用代码组织调用”的价值,却不等同于 Pi 的这套宿主侧沙箱。

03|真正改变的是,哪些信息需要模型看

我更看重的不是 JavaScript 本身,而是一条边界:什么值得占用模型的注意力?

比如,100 条结果里挑出缺少某个字段的记录,代码通常更直接;判断一段投诉是否暗含严重故障,则可能需要模型。这两类工作没必要绑在同一种执行方式上。

一个更合理的流程是:先拿少量样本确认数据结构,再批量处理,把需要判断的内容交给合适的模型,最后返回结果和异常。

这里也有一个容易忽视的代价:筛选规则如果写错,重要信息可能在大模型看到之前就被丢掉。只返回“最严重的 12 条”,就必须考虑失败记录是否另行提示、低分项是否需要抽样检查。

所以,“少塞上下文”不是目的,保留足够的证据才是。完整结果、错误记录和必要的复查入口,不能跟着摘要一起消失。

从这个角度看,MCP 和 Codemode 也不是替代关系。前者提供统一的工具连接与描述方式,后者组织这些能力如何配合。接口依然需要,只是不必让每次数据传递都由模型重新组织。

04|流程更顺,也可能把错误放大

代码能组织循环与并发,也能让一次错误判断影响更多操作。要把它放进真实工作流,至少有三件事不能省。

第一,工具结果得稳定。Armin 提到,有的服务在返回少量结果和大量结果时,会采用不同的数据形态。五条样本能跑通,不代表五百条也能跑通。结构化输出和一致的接口,比让模型猜返回格式更重要。

第二,授权不能藏在循环里。只读查询与发送消息、删除文件、发布文章,风险完全不同。沙箱限制直接联网,不代表它调用的工具没有副作用。高影响动作仍需单独授权,批处理也应该设置数量和范围边界。

第三,失败后不能无脑重跑。如果流程中断前已完成部分写入,再执行一遍,可能重复创建记录或重复发送。作者也把持久化与恢复列为尚待解决的问题。工程上需要记录已完成步骤,区分可安全重试的操作和必须人工确认的操作。

另外,小模型未必能稳定写对这些编排代码;图片、大型二进制数据和工具发现,也仍有适配难题。Codemode 不是一个装上就自动提效的开关。

最后

这件事最值得关注的,不是“AI 又学会了一门语言”。

当 Agent 从演示走向真正的工作,瓶颈会越来越具体:哪些步骤交给代码,哪些交给模型;哪些结果必须保留,哪些动作必须停下来问人。

给 AI 接上更多工具,只是开始。让它少搬运数据、多做必要判断,同时留下可检查、可恢复的执行过程,才是把工具变成工作流。

——

资料来源

1. Armin Ronacher:《What is Codemode》,2026-10-06

https://lucumr.pocoo.org/2026/10/6/codemode/

2. Cloudflare:《Code Mode: the better way to use MCP》

https://blog.cloudflare.com/code-mode/

本文基于上述原文整理,分析部分为本文观点;未做性能对比测试。封面由 AI 辅助生成,正文示意图为自行绘制;示意图不代表所有产品实现。

相关学习资料