← 返回首页

Code Mode:用代码替代工具,把整个 API 塞进 1000 tokens

MCP Agent Cloudflare 工程实践

Cloudflare 昨天发了一篇技术博客,提出了一个优雅到让人拍大腿的方案:用 2 个工具 + 1000 tokens,覆盖 2500+ 个 API 端点。比传统 MCP 方案节省 99.9% 的 token。

原文:Code Mode: give agents an entire API in 1,000 tokens

问题:MCP 的 context window 困境

MCP(Model Context Protocol)已经成了 AI agent 调用外部工具的标准协议。但它有一个根本矛盾:agent 需要很多工具才能干活,但每加一个工具就吃掉一块 context window。

Cloudflare API 有 2500+ 端点。如果按传统 MCP 的做法,每个端点定义成一个 tool,光是工具描述就需要 117 万 tokens——比任何模型的 context window 都大。

之前 Cloudflare 的解法是按产品拆分:DNS 一个 MCP server,Workers 一个,R2 又一个……但 2500 个端点手动维护几十个 server?不现实。

解法:让 agent 写代码而不是选工具

Code Mode 的核心思想非常简单:不要给模型一个工具列表让它挑,给它一个 SDK 让它写代码。

整个 MCP server 只暴露两个工具:

工具定义加起来约 1000 tokens,固定开销,不随 API 规模增长。

search:渐进式发现

agent 不需要一次看到所有 2500 个端点。它先搜索:

async () => {
  const results = [];
  for (const [path, methods] of Object.entries(spec.paths)) {
    if (path.includes('/zones/') &&
        path.includes('rulesets')) {
      for (const [method, op] of Object.entries(methods)) {
        results.push({ method: method.toUpperCase(), path, summary: op.summary });
      }
    }
  }
  return results;
}

2500 个端点瞬间缩小到它需要的那几个。OpenAPI spec 从未进入 context window——agent 只是通过代码去查询它。

execute:一次调用完成多步操作

传统 MCP 下,查询 + 修改可能需要 4-5 次 tool call,每次都要来回传递上下文。Code Mode 下,agent 写一段代码一次搞定:

async () => {
  const ddos = await cloudflare.request({
    method: "GET",
    path: `/zones/${zoneId}/rulesets/phases/ddos_l7/entrypoint`
  });
  const waf = await cloudflare.request({
    method: "GET",
    path: `/zones/${zoneId}/rulesets/phases/http_request_firewall_managed/entrypoint`
  });
  return { ddos: ddos.result, waf: waf.result };
}

安全:V8 沙箱隔离

让 agent 写代码执行,安全怎么办?Cloudflare 用了自家的 Dynamic Worker Loader——每段代码跑在独立的 V8 isolate 里:

这比 CLI 方案(给 agent 一个 shell)安全得多。Shell 的攻击面是整个操作系统,V8 isolate 的攻击面只有一个沙箱。

四种 context 压缩方案的对比

文章梳理了当前业界的四种方案,这个对比很有价值:

我的思考

这本质上是"编译"思想

传统 MCP 是"解释执行"——每个操作都是一次 tool call,模型一步一步走。Code Mode 是"编译执行"——模型先写一段程序,一次性批量执行。同样的逻辑,从 N 次网络往返变成了 1 次。这和数据库领域从逐行查询到批量 SQL 的演进一模一样。

对 MCP 生态的影响

如果 Code Mode 成为主流,MCP 的生态会发生结构性变化:

局限性

Code Mode 不是银弹。它要求模型具备写正确 JavaScript 的能力。对于 Claude、GPT-4 这种前沿模型没问题,但小模型可能会在代码生成阶段就出错。另外,调试也变得更复杂——当 agent 写的代码出 bug,你需要理解它试图做什么,而不是简单地看 tool call 的参数。

呼应极简哲学

有意思的是,这和我之前写的 Pi Coding Agent 的理念高度一致——少即是多。Pi 用 4 个工具 + 1000 tokens 的 system prompt 在 benchmark 上不输复杂框架。Cloudflare 用 2 个工具 + 1000 tokens 覆盖了 2500 个 API 端点。

这不是巧合。前沿模型越来越强,不需要我们用复杂的工具定义来"教"它怎么做。给它一个最小化的接口和足够的自由度,它自己能找到最优路径。

未来方向

文章最后提到了 MCP Server Portals——多个 MCP server 聚合在一个网关后面,统一用 Code Mode 暴露。想象一下:一个 agent 同时访问 Cloudflare API + GitHub API + 数据库 + 内部文档,全都通过 2 个工具、固定 1000 tokens 完成。这才是 agent 基础设施应该的样子。