Pi.dev:你们曾说不支持 MCP

Pi.dev:你们曾说不支持 MCP

Hacker News 摘要

原标题:Pi.dev: You Said No MCP

这是一篇来自 Earendil 工程团队的技术公告,解释了为什么开发工具 Pi 从最初明确反对并拒绝支持 MCP(Model Context Protocol,模型上下文协议),转变为如今将其直接集成到核心功能中。

转变的原因与背景

过去,Pi 团队曾多次公开表示不支持 MCP。如今团队改变了立场,主要原因包括:

• 技术环境的变化:过去一年中 MCP 本身发生了很大演进,不再是最初的状态。

• 通用底层需求:为了更好地支持 MCP 所做的架构调整,对 Pi 的其他功能同样非常有价值,例如能够让 Jev 等工具更容易在 Pi 中运行。它们共同的需求是一个基于解释器的沙盒环境。

• 直接集成的必要性:虽然 MCP 最初可以作为插件存在,但要配合现代大语言模型的新特性(如延迟加载工具、对话中途插入系统消息、动态调整推理级别等),工具系统需要更细粒度的元数据控制,决定工具是直接暴露给大语言模型,还是仅在代码执行环境中可用。普通插件架构无法很好地提供这些元数据,因此团队选择将其内置到核心系统中。

• 积极参与生态建设:团队认为影响技术的最佳方式是亲自接纳并参与其中,而不是站在一旁观望,他们希望帮助改进现有的 MCP 服务端模式与实践。

MCP 目前的局限与 Pi 的设想

团队指出,MCP 目前最大的问题仍然是难以进行灵活组合:

• 很多现有的 MCP 服务端仍然是针对“直接把工具描述硬塞进上下文”的旧架构设计的,往往只返回纯文本来勉强优化标记(Token)效率。

• Earendil 团队认为,理想的 MCP 应该更接近带有智能工具发现机制的 OpenAPI 规范,工具应返回结构化数据,并通过清晰的文档和描述供模型发现。

• 传统的命令行界面(CLI)之所以高效,是因为智能体和模型可以通过简单的脚本语法自由组合工具。MCP 也应该做到这一点,Pi 的做法就是将这些工具暴露给 JavaScript 沙盒来执行。

核心机制:什么是 Codemode?

Codemode 是 Pi 解决工具组合与调用安全问题的关键机制:

• 运行位置与信任级别:传统的工具调用通常直接运行在底层的 Bash 环境中,沙盒信任度较低;而智能体的运行循环往往处于更受信任的环境。Codemode 正好运行在智能体循环这一侧。

• 工具编排与协调:它是一个沙盒,允许智能体使用 JavaScript 来自由编排、决定调用顺序并组合多个工具调用。

• 状态维护:由于运行在框架层,Codemode 的状态会直接保存在会话记录中,而不需要依赖文件系统。

• 轻量与安全:系统选用 JavaScript 是因为可以通过轻量级的 WebAssembly(WASM)二进制文件来分发运行,兼顾了灵活性与安全性。

实际应用场景

在 Pi 中,配置 MCP 时会自动加载 Codemode,用户也可以将其作为默认工具开启。启用后,模型不仅能使用 MCP 工具,还能跨工具协同分析。例如,结合 Linear 的 MCP 和 Jev,智能体可以直接在 Pi 内部编写逻辑筛选出问题追踪系统中情绪最沮丧的前 20 位评论者,并在沙盒内完成计算,避免将大量无用数据倾倒进上下文从而浪费标记。


原文:https://earendil.com/posts/you-said-no-mcp/

评论:https://news.ycombinator.com/item?id=49906637

Report Page