读 You Said No MCP

读 You Said No MCP

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

Pi 曾因 MCP 冗余、难扩展、无法组合而抵制它,改用 CLI 让 agent 写代码交互。v0.99.0 却将 MCP 引入核心,因为所需能力与 Code Mode 重构相通。Code Mode 是编排工具调用的 JS 沙盒,可自由组合、按需加载工具、保留中间结果,还能自动发现隐藏 MCP 工具,并配合 Jev 等完成任务。

🔎

延伸解读

从抵制到拥抱:Pi 为何改变立场

Pi 曾因 MCP 冗余、难扩展、无法组合而抵制它,但 v0.99.0 却将 MCP 引入核心。这并非简单妥协,而是因为集成 MCP 所需的能力——一个以解释器形式存在的沙盒(Code Mode)——恰好是 Pi 当前所缺失的。作者认为,与其袖手旁观,不如直接拥抱 MCP 来影响其发展,使其更适合小型 harness。

Code Mode:不只是为了 MCP

Code Mode 是一个运行在 agent loop 上的 JavaScript 沙盒,用于编排工具调用。它允许模型自由组合工具、按需加载、保留中间结果,从而避免上下文浪费。其用途远不止 MCP,例如可以自动组合 MCP 与 Jev 来分析邮件,整个过程几乎不占用额外上下文。

MCP 的痛点与改进方向

MCP 最大的问题在于无法自由组合,许多 harness 将全部工具定义塞入上下文,导致模型每轮看到大量冗余信息。作者认为更好的做法是类似 OpenAPI + intelligent tool discovery:工具返回结构化数据,并通过文档和描述按需使用。将 MCP 工具暴露给 JavaScript 沙盒,让模型自己写代码串联,是更优的使用方式。

❓

Q&A

Pi 之前为什么抵制 MCP?

Pi 曾坚决抵制 MCP,原因有三:一是大量冗余描述信息占用珍贵上下文;二是难以扩展;三是无法自由组合。因此 Pi 作者选择让 agent 直接使用 CLI 通过编写代码与 server 交互。

Pi v0.99.0 为什么突然加入 MCP 支持?

因为引入 MCP 对应的重构优化本身很通用,能帮助 Pi 更好地使用 Jev 等工具。Pi 当前缺失的能力与集成 MCP 所需的能力非常相似,即一个以解释器形式存在的沙盒(Code Mode)。开发团队深思熟虑后决定将 MCP 引入 core。

什么是 Code Mode?

Code Mode 是跑在 agent loop 上的一个编排 tool call 的小沙箱,使用 JavaScript 灵活决定执行顺序并自由组合执行结果。所有中间结果都会记录在 session 中,方便恢复 session 或切换分支。

MCP 最大的问题是什么?如何解决?

MCP 最大的问题在于无法组合,但根结不在协议本身,而是各家 harness 使用方式的问题。许多 harness 会把 tools 无脑全部塞入上下文,导致模型每轮看到全部 20+ 个 tools 定义。更好的做法是类似 OpenAPI + intelligent tool discovery,让 tools 返回结构化数据,并通过文档和描述按需使用。

Pi 为了适配现代 LLM 做了哪些工作?

Pi 做了大量工作来适配现代最新模型的三个能力:1)tool 延迟按需加载;2)在对话中途插入 system message;3)在对话中途调整 thinking level。但当前的 tool 配置还没来得及重构升级,很难适配这些新能力。

Code Mode 如何自动发现隐藏的 MCP 工具?

通过 Code Mode 调用 Jev,Pi 会聪明地自动组合 MCP 与 Jev 来完成分析,整个过程几乎不浪费占用上下文。例如可以执行“使用 typesafe/jev 通过 codemode 找出最可能是垃圾的 10 封邮件”。

🏷️

标签

➡️

继续阅读