读 What is Codemode

读 What is Codemode

💡 原文中文,约5600字,阅读约需14分钟。
📝

内容提要

文章介绍 Pi 1.0 引入的 Codemode:在 WASM 沙箱中运行 JavaScript 来编排工具调用,禁止网络与文件系统访问,只能通过 harness 提供的工具操作。其优势包括节约上下文、支持并发、持久化状态及调用内部接口。案例涵盖图片生成、批量分类 GitHub issue 和调用 MCP 工具。作者认为 Codemode 与推荐使用 CLI 并不矛盾,未来可探索持久执行、替代语言、二进制数据处理及小模型兼容性。

🔎

延伸解读

Codemode 的边界:大脑与手分离

文章用“大脑/手”比喻 harness 与工具执行的关系,强调两者应有清晰边界并可运行在不同安全等级上。Codemode 在 WASM 沙箱中运行,禁止网络与文件系统访问,只能通过 harness 提供的工具操作。这意味着即使代码由模型生成,破坏面也被限制在沙箱内;但同时也要求开发者把需要的能力显式暴露为工具,而不是依赖任意系统调用。

上下文与并发:Codemode 的实际收益

文章列出四项好处:节约上下文、并发处理、持久化状态、调用内部接口。关键机制是沙箱先处理完整输出,只把结果返还给 LLM,避免 bash 原始输出直接占用上下文;JavaScript 让 agent 能编写并发工作流;不同调用间可通过 harness 侧存储共享数据。这些收益依赖 agent 能写出正确代码,因此对模型的代码生成与错误处理能力有要求。

MCP 在 Codemode 中的渐进式发现

案例显示,MCP 工具不必常驻 prompt,agent 可先搜索可用工具再调用,形成渐进式发现。作者据此建议 MCP server 提供结构化输出、保持结果一致性、支持超大二进制文件,并支持多 server 结果合并。不过文中也提到,模型可能因训练记忆而跳过发现步骤,说明这种模式的实际效果仍取决于模型对具体 MCP 的熟悉程度。

与 CLI 主张不矛盾,但仍有待完善

作者认为在 Codemode 中调用 MCP 本质上仍是调用代码,因此与过去推荐 bash/CLI 的观点不冲突。文章同时列出未来方向:持久执行、探索 Starlark 或 Scheme 等替代语言、完善二进制数据传递、降低对小模型的能力要求。这些属于待探索项而非现有保证,读者不宜把 Codemode 视为已解决所有工具编排问题的方案。

❓

Q&A

Codemode 是什么?它在 Pi 1.0 中是如何工作的?

Codemode 是 Pi 1.0 引入的一种机制,允许在 WASM 沙箱中运行 JavaScript 来编排工具调用。它禁止网络和文件系统访问,只能通过 harness 提供的工具进行操作。具体来说,Codemode 通过 QuickJS 运行在 WASM runtime 中,限制内存大小,并且不能直接访问文件系统,必须调用如 tools.read_file 这样的工具。

使用 Codemode 有哪些好处?

Codemode 的主要好处包括:1) 节约上下文,因为可以在沙箱中处理完整输出,只将处理后的结果返回给 LLM;2) 支持并发处理,Agent 可以通过 JavaScript 编写并发工作流;3) 持久化状态,不同 Codemode 调用之间可以共享数据;4) 调用内部接口,如直接使用 image model 生成图片或调用 Jev 做文本分类,而不占用 tool 定义。

Codemode 和直接使用 bash/CLI 矛盾吗?为什么?

不矛盾。作者认为在 Codemode 中使用 MCP 本质上也是调用代码的一种形式。Codemode 提供了更结构化的方式来编排工具调用,而 bash/CLI 仍然有其优势,比如利用管道自由组合和利用 LLM 对文件系统的理解。两者可以互补,Codemode 特别适合需要并发、状态管理和内部接口调用的场景。

Codemode 在实际中有哪些应用案例?

文章给出了三个真实案例:1) 图片生成:通过 Codemode 直接调用 image model 生成图片,并将图片作为临时文件供 bash 使用;2) 批量分类 GitHub issue:使用 Jev 分类模型对 issue 进行情感、挫败感和类型分类,并存储结果;3) 调用 MCP 工具:例如使用 Sentry MCP 工具查找组织和项目,支持并发调用和结果合并。

作者对 MCP server 有哪些改进建议?

作者对 MCP server 提出了四点建议:1) 提供结构化的输出,例如返回 JSON 而不是纯文本;2) 保持返回结果的一致性,以避免渐进式发现失败;3) 支持超大的二进制文件;4) 支持多个 MCP server 结果的合并(fan out)。

Codemode 未来有哪些值得探索的方向?

未来探索方向包括:1) 持久执行(Durable Execution),使复杂工作流能在中断后恢复;2) 探索其他脚本语言,如 Starlark、Scheme 替代 JavaScript;3) 完善二进制数据处理,如图片、音频、视频的传递机制;4) 提高小模型兼容性,降低对模型代码生成和工具编排能力的要求。

🏷️

标签

➡️

继续阅读