<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Codemode | 面条的草稿箱</title><description>无原创，纯转发</description><link>http://drafts.miantiao.me</link><item><title>Earendil 的 Pi 终于拥抱了 MCP：一次&quot;真香&quot;背后的思考Earendil 团队曾在官网和播客中多次公开表态&quot;不支持 MCP&quot;，但最新版本的 Pi 却将 MCP 纳入了核心功能</title><link>http://drafts.miantiao.me/posts/183</link><guid isPermaLink="true">http://drafts.miantiao.me/posts/183</guid><pubDate>Wed, 30 Sep 2026 00:04:14 GMT</pubDate><content:encoded>&lt;b&gt;Earendil 的 Pi 终于拥抱了 MCP：一次&quot;真香&quot;背后的思考&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Earendil 团队曾在官网和播客中多次公开表态&quot;不支持 MCP&quot;，但最新版本的 Pi 却将 MCP 纳入了核心功能。这不是打脸，而是一次深思熟虑的转变。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;为什么改变了？&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;团队给出了三个理由：&lt;br /&gt;&lt;br /&gt;1.  &lt;b&gt;MCP 本身在进化。&lt;/b&gt; 过去一年，MCP 协议有了显著改进，今天的 MCP 已非昔日可比。&lt;br /&gt;2.  &lt;b&gt;技术上的协同效应。&lt;/b&gt; 将 MCP 引入核心所需的架构改造（如沙箱解释器），同样让 Jev 等其他功能在 Pi 中运行得更顺畅——一举多得。&lt;br /&gt;3.  &lt;b&gt;主动参与比旁观更好。&lt;/b&gt; 与其站在场外批评 MCP 生态中的问题，不如亲自下场，推动它在小型 harness 中更好地工作。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;仍然存在的问题&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;MCP 最大的痛点依然是&lt;b&gt;可组合性差&lt;/b&gt;——许多 MCP 服务端仍为&quot;把工具一股脑塞进上下文&quot;的模式而设计，返回纯文本而非结构化数据。Earendil 认为 MCP 应该更接近 OpenAPI 的思路：工具返回结构化数据，并通过文档和描述实现智能发现。&lt;br /&gt;&lt;br /&gt;&lt;mark class=&quot;highlight&quot;&gt;&lt;b&gt;Codemode&lt;/b&gt;&lt;/mark&gt;&lt;b&gt;：关键拼图&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Pi 引入了一个名为 &lt;mark class=&quot;highlight&quot;&gt;&lt;b&gt;Codemode&lt;/b&gt;&lt;/mark&gt; 的机制——一个运行在 harness 侧的 JavaScript 沙箱，让 AI 能够用代码灵活编排和组合工具调用。配置 MCP 后 &lt;mark class=&quot;highlight&quot;&gt;Codemode&lt;/mark&gt; 会自动加载。文章展示了一个令人印象深刻的示例：通过 &lt;mark class=&quot;highlight&quot;&gt;Codemode&lt;/mark&gt; 同时调用 Linear MCP 和 Jev 模型，自动分析 issue tracker 中 167 个问题的情绪倾向，整个过程不浪费任何上下文窗口。&lt;br /&gt;&lt;br /&gt;这篇文章传递的核心信息是：&lt;b&gt;技术判断应随环境演变而更新，曾经说&quot;不&quot;并不意味着永远说&quot;不&quot;。&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i class=&quot;emoji&quot;&gt;&lt;b&gt;🔗&lt;/b&gt;&lt;/i&gt; &lt;a href=&quot;https://earendil.com/posts/you-said-no-mcp/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://earendil.com/posts/you-said-no-mcp/&quot;&gt;https://earendil.com/posts/you-said-no-mcp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23MCP&quot; title=&quot;#MCP&quot;&gt;#MCP&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Codemode&quot; title=&quot;#Codemode&quot;&gt;#Codemode&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Pi&quot; title=&quot;#Pi&quot;&gt;#Pi&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Earendil&quot; title=&quot;#Earendil&quot;&gt;#Earendil&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E5%B7%A5%E5%85%B7%E9%93%BE&quot; title=&quot;#AI工具链&quot;&gt;#AI工具链&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://earendil.com/posts/you-said-no-mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Pi now supports MCP. Why we changed our minds, what changed in MCP and in Pi, and what Codemode is.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Earendil&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;“You Said No MCP!” | Earendil&quot; src=&quot;https://drafts.miantiao.me/static/https://cdn4.telesco.pe/file/nXr2sx4SvIIyAnL_n2QH6wn6jkjuCDPSTlhknk74fv05tVbRKC85aiTgl5q4saujracx7xyMvDQCaCshyHyIKbSGiPFYwhk-JDYn0Fd9dG7DN4ZHjosAsUiKiOmd_Y_6d3AImKnQMmBYnOo3D5AYPAWde_qiyU4UA_itts6lKjxC0AHW3i0QoH2jajoGa8OwoMm48NRIvcckGwvSqcRkhjSzkFkbAgdQYEBjG4WmLMuQSMPCoCRT7_4Xwqgpge8SnTJ3QCCYGu8823nBm2Ner7udLVOLPnuVnbRY8L5CM8BoAoeXCQk5q0kjro2Yl5Ua-wlTC0EKKjWVdWJsJVG7xw.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;“You Said No MCP!” | Earendil&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Pi now supports MCP. Why we changed our minds, what changed in MCP and in Pi, and what &lt;mark class=&quot;highlight&quot;&gt;Codemode&lt;/mark&gt; is.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>