100小时评测:Pi vs OpenCode

最简单的说法是:OpenCode是VS Code(有点臃肿)。Pi是NeoVim(极简主义)。真实的评测结果是什么?

100小时评测:Pi vs OpenCode
梯形图转SCL | 需求文本转SCL | 梯形图在线查看 | 博途编程文档MCP | AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace

开源编程代理在2026年经历了一个奇怪的开端。

1月份,Anthropic突然阻止第三方工具使用Claude订阅。一夜之间,毫无预警。

OpenCode受到的打击最重。团队在法律压力下不得不移除Claude登录支持。提交信息字面上就是:"anthropic legal requests."

Pi从来不在乎这些。它本来就不是围绕某个提供商构建的。

这就引出了一个显而易见的问题:既然你反正要用自己的API密钥,那么应该选择哪个开源代理?

OpenCode目前拥有199K星标,到你读这篇文章时可能已经超过200K,每月约有800万开发者使用。

然后是Pi。设计上就是极简主义。四个工具。系统提示词不到1000个token。然而,它在我们的基准测试中再次名列前茅。

最简单的说法是:

💁 OpenCode是VS Code(有点臃肿)。Pi是NeoVim(极简主义)。

那么你应该选择哪个?让我们深入了解它们的区别。

TL;DR

类别 Pi OpenCode 胜者
实际工具使用(我们的评估) 21/30 任务通过,每次成功 $0.078 19/30 任务通过,每次成功 $0.119 Pi
总评估花费 30 个任务总计 $1.64 30 个任务总计 $2.25 Pi
速度 中位数 362.9 秒/任务,最慢 中位数 280.6 秒/任务 OpenCode
上下文开销 不到 1000 个 token,提示词 + 工具定义 每个请求约 6,900 个 token Pi
开箱即用功能 四个工具 计划模式、MCP、LSP 诊断、撤销/重做、权限、子代理等 OpenCode
模型支持 20+ 提供商,300+ 模型,会话中切换 75+ 提供商,通过 AI SDK 和 models.dev OpenCode
廉价模型访问 BYOK 或本地,仅此而已 Zen 网关按成本计费,Go 计划 $10/月 OpenCode
可扩展性 TypeScript 扩展在代理进程内运行 插件、自定义代理、技能,主要通过配置 Pi
会话 可分支的会话树,支持分叉和回退 线性日志,支持撤销/重做,但能抵御断连 Pi
运行界面 终端 TUI、桌面应用、Web UI、通过 ACP 的 IDE、GitHub 和 GitLab CI OpenCode
权限 没有。从第一个提示开始就是完全系统访问,这不是我喜欢的风格 每个工具可以设置 allow/ask/deny,支持 glob 模式 OpenCode
资源占用 轻量级,单进程 TUI 需要 1GB+ 内存,有点离谱 Pi

总结

得分卡:Pi 6,OpenCode 6。平局。

说实话,这感觉是对的。这两个工具本来就是为不同类型的人构建的。

还记得我之前说的VS Code vs. Neovim吗?

Pi更像是一个你可以编程的平台。你得到一个核心,然后用TypeScript构建自己的工具链。

OpenCode更像是一个你配置的产品。你从一开始就能得到一个接近完整的Claude Code替代品,然后通过配置进行调整。

Pi在效率、可 hack 性以及至少在我们的评估中,原始结果方面获胜。

OpenCode在功能、提供商支持、运行界面以及普通人可以开箱即用而不需要自己构建一半设置方面获胜。

所以,真正的决定因素基本上取决于你是哪种人。继续阅读。

什么是Pi?

ℹ️ 一个极简的终端编程代理,只提供四个工具,期望你自己构建其余部分。

如果你错过了我们的Pi vs Claude Code文章,这里是快速回顾。

Pi是Mario Zechner对臃肿问题的回答。他厌倦了Claude Code在他使用过程中不断变化,所以他构建了一个代理,模型只能使用readwriteeditbash,系统提示词只有几百个token,其他什么都没有。没有MCP。没有权限。没有计划模式。没有子代理。这些都是故意的。

在他在4月份发布"I've sold out"博客文章后,它现在归Earendil所有,核心仍然是开源的。

真正的产品是扩展系统。TypeScript文件在与代理循环相同的进程中运行,Pi可以读取自己的源代码。所以当你需要一个缺失的功能时,你实际上可以让Pi来构建它。

这种设计也是Peter Steinberger选择Pi作为OpenClaw引擎的原因。

💁 有趣的事实: Pi只有94k星标,但npm包每周约有130万次下载。在开发者中增长非常快。

不是每个人都喜欢VS Code。🤷‍♂️

什么是OpenCode?

ℹ️ 世界上星标最多的开源编程代理,最接近开放、模型无关的Claude Code。

OpenCode是一个开源、模型无关的编程代理,旨在为你提供完整的Claude Code体验,而不会将你锁定在Anthropic中。

它由SST团队构建,该公司在2026年更名为Anomaly,并将仓库迁移到anomalyco/opencode

对于一个免费工具来说,这些数字令人难以置信。约199k星标。约800万月活跃开发者。Cloudflare为自己的工程师发布官方OpenCode设置文档。

你能相信这个免费工具的年收入超过2500万美元吗?只是工具本身免费;他们推出了订阅计划,这才是他们赚大钱的地方。

起源故事比Pi的更疯狂。原始代理叫TermAI,由Kujtim Hoxha在2024年创建。Dax Raad和Adam Elmore进行了OpenCode品牌重塑并使其流行起来。然后Charm雇佣了Hoxha并将仓库拉入自己的组织。这导致了git历史重写、贡献者被禁,整个戏剧性事件。在遭到强烈反对后,Charm将其分支重命名为Crush,而Dax和Adam的项目保留了OpenCode名称,作为从头开始的重写。

如果你不关心"历史",这没什么有趣的。哈哈。

所以在2026年,当任何人说OpenCode时,他们指的是Anomaly的那个。

💁 有趣的事实: 在1.0版本中,团队扔掉了整个基于Go的TUI,用Zig和SolidJS编写了一个名为OpenTUI的新框架,因为旧版本"有性能和功能问题"。真不敢相信Golang在那个规模上会有性能问题。

一个编程代理团队为自己编写Zig渲染引擎用于终端,这是我能想到的最2026年的事情。太疯狂了。

1. 哲学:Pi vs OpenCode

我们之前的比较是开源 vs 闭源。这次是开源 vs 开源。

两个团队在大事上达成一致。工具链应该是MIT许可的。你应该自带模型。没有人应该被供应商锁定。

他们完全不同意工具链应该有多少。

OpenCode的哲学是工具链是一个真正的产品。提供计划模式、权限、LSP集成、MCP、桌面应用、Web UI、IDE支持、GitHub actions。给人们Claude Code拥有的一切,减去锁定。

Pi的赌注是大部分都是开销(不是功能,OpenCode认为这是功能)。前沿模型在编码方面已经经过了如此强烈的RL训练,以至于它们已经知道编程代理是什么。每个工具模式和每个注入的指令都是你在每个请求中都要支付的上下文。所以工具链应该接近零,你只添加回你个人需要的东西。

disler比较对此有最简洁的一句话。

"Pi在运行时级别给你控制。OpenCode在配置级别给你控制。"

是的,这里确实有真正的恩怨。Zechner公开批评OpenCode的压缩会剪除工具结果并破坏提示缓存。

他也不喜欢他们对Vercel AI SDK的依赖。下面会详细说明。

💁 如果"只用bash"的哲学对你有用,这篇文章可能不错:提升编程代理的10个CLI工具。没有MCP,纯原始CLI工具就能完成大部分工作。

2. 代理架构:Pi vs OpenCode

底层两者使用相同的基本循环:读取任务、调用模型、运行工具、反馈结果、重复。

这个循环周围的架构是它们不同的地方。

OpenCode:客户端 + 服务器

OpenCode分为持久化本地服务器和独立客户端。

服务器处理:

  • 代理逻辑
  • LLM调用
  • 工具执行
  • SQLite会话存储
  • MCP服务器

TUI、桌面应用、Web UI和IDE集成都与同一服务器通信。

这使得会话更安全,能够抵御终端崩溃或SSH断开连接,同一服务器也可以在CI中无头运行。缺点是占用空间更大,人们报告TUI设置需要1GB+内存

你没看错。阅读更多信息:OpenCode的资源效率相当低

Pi:单进程

Pi将所有内容保持在一个进程中:

  • 提供商层
  • 代理循环
  • CLI

全部是TypeScript,足够小,无需通过庞大的代码库就能理解。

Pi支持四种运行模式:

  • 交互式TUI
  • 用于脚本的打印模式
  • 通过stdin/stdout的RPC
  • 用于嵌入的SDK模式

那个SDK也是OpenClaw嵌入Pi的方式。

OpenCode的LSP方式

我会称之为OpenCode的一个明星功能,它处理LSP(语言服务器协议)的方式。

OpenCode可以运行真实的语言服务器,如goplstypescript-language-server,并在编辑后将诊断反馈给代理。

所以流程看起来像这样:

模型编辑代码 → LSP报告错误 → 模型看到 → 模型修复

这为OpenCode提供了快速的编译器和类型反馈,无需每次都运行完整测试。

Pi默认没有这个功能。

Pi的会话树

Pi处理会话的方式很有趣。

Pi将会话存储为JSONL,每个条目指向一个父条目。这意味着会话历史是一个树,而不是单一线性日志。

A → B → C
     ↘ D → E
     ↘ F → G

你可以:

  • 使用/tree跳回早期时间点
  • 使用/fork从任何过去的消息分支
  • 保持从同一点出发的多个调试路径

OpenCode使用带有/undo/redo的线性历史,这更简单但不够灵活。

上下文压缩

OpenCode使用隐藏的系统代理在上下文紧张时总结对话,然后从活动上下文中隐藏较旧的消息。

批评是这可能会移除有用的工具输出并损害提示缓存。

Pi也支持压缩,但实现可以通过扩展替换,这符合其更可 hack 的架构。

3. 基准测试。相同模型,不同工具链

现在是我最好奇的部分。

我们对真实应用运行了30个困难的代理工具使用任务。每个工具链都使用相同的模型DeepSeek V4 Pro (0813),通过我们的托管MCP路由器进行最大推理。

相同模型。相同任务。相同工具。相同的验证器检查。

所以这里出现的任何差距主要来自工具链。

以下是完整结果。

工具链(DeepSeek V4 Pro,困难30组) 任务通过 每次成功成本 每次共享成功成本 平均token/任务 平均轮次
Pi代理 21/30 (70%) $0.078 $0.031 924,990 16.3
Codex 20/30 (66.7%) n/a* $0.031 383,722 n/a
DeepSeek工具链 20/30 (66.7%) $0.076 $0.028 88,562 0.9
OpenCode 19/30 (63.3%) $0.119 $0.032 710,140 13.1
Claude Code 19/30 (63.3%) n/a* $0.074 649,900 12.1
Hermes代理 18/30 (60%) n/a* $0.037 113,894 6.5
ℹ️ *不可比较,因为某些单元格的成本测量不完整。共享成功仅计算每个工具链都通过的任务。

Pi实际上排名第一

Pi以21/30任务通过排名第一,而OpenCode以19/30排名第二。

在整个运行过程中也更便宜。

  • Pi花费$1.64
  • OpenCode花费$2.25
  • Pi每次成功成本为$0.078
  • OpenCode每次成功成本为$0.119

最后一个数字对OpenCode来说看起来很糟糕,但有个陷阱。

在两个工具链都实际通过的任务上,它们基本持平。Pi为**$0.031/共享成功**,而OpenCode为**$0.032**。

所以OpenCode在工作时并不真的更贵。它只是失败了更多任务,而失败的运行仍然消耗token

Pi也很慢

Pi有最好的通过率,但也是整个运行中最慢的工具链

  • Pi中位时间为362.9秒
  • OpenCode中位时间为280.6秒
  • Claude Code中位时间为181.8秒

Pi平均每任务16.3轮,而OpenCode为13.1轮,并且推送的原始token比其他任何人都多。

区别在于它的固定开销保持很小。

系统提示词加工具定义保持在1000个token以下,并且前缀在轮次之间几乎不变。这使得大部分重复上下文作为缓存命中。

任务逐项分解更有趣

任务 Pi OpenCode
CRM迁移归档 ✅ 10/10 ❌ 3/10
Slack待办事项 ✅ 5/5 ❌ 2/5
供应商目录 ✅ 11/13检查 ❌ 7/12
移交审计 ✅ 11/11 ❌ 10/11
PagerDuty时间线审计 ✅ 10/10 ❌ 9/10
续约筛选 ❌ 5/11 ✅ 11/11
赞助筛选 ❌ 4/11 ✅ 11/12
Sheets转Airtable跟踪器 ❌ 8/10 ✅ 10/10

Pi在审计和普查式任务上表现更好,这些任务需要耐心阅读所有内容并检查每个细节。

OpenCode在更长的筛选和多步骤工作流上表现更好。

这简直太完美了。

Pi通过小巧获胜。OpenCode在工作流受益于模型周围更多功能时获胜。

经过这一切,评估对两者来说都非常准确。🤧

4. Token开销

这基本上是两个工具构建的基础论证,所以让我们用一些数字来说明。

这里最常被引用的比较是7月份的Systima研究,它在Hacker News上也获得了700+点赞。

他们在工具链和模型之间放置了一个日志代理,然后测量模型甚至看到你的提示之前发送了多少上下文。

工具链 每个请求的固定开销
Claude Code(Systima测量) 约 32,800 token
OpenCode(Systima测量) 约 6,900 token
Pi 不到 1,000 token

OpenCode在这里看起来已经相当不错了。比Claude Code少约4.7倍开销

然后Pi出现,不到1,000个token,包括工具定义。

这使得它比OpenCode大约精简7倍

💁 每个人都是某人的臃肿软件。🗿

Matei Zaharia在X上说原因很简单。Pi有相同的成功率,但成本低2倍

我们的评估也指向相同的方向。Pi有最好的通过率和最低的总花费。

但这里有一个重要的陷阱。

OpenCode也有一些相当糟糕的token案例。有一个GitHub问题,询问一个新项目的技术栈这样基本的问题就消耗了13,088个token

Pi在每个意义上也不一定便宜。在我们的评估中,它实际上推送了所有六个工具链中最高的原始token计数,主要是因为它需要更多轮次才能完成任务。

所以,小的固定开销确实有很大帮助。但精简的开销并不总是意味着精简的会话

值得记住这个区别。

5. 定价和禁令

两个工具都是免费的,MIT许可。可以分叉、修改、发布。

区别从安装后开始。

Pi

  • 几乎任何提供商都支持BYOK
  • 通过Ollama、vLLM或llama.cpp运行本地模型
  • 在提供商仍允许时使用OAuth登录
  • 完全没有付费CLI层级
💁 Pi基本上只是一个工具链。你带来模型,然后支付给提供服务的人。

OpenCode

OpenCode做同样的BYOK,但它也有自己的模型选项。

  • BYOK,提供商直接向你收费
  • Zen,精选模型按使用量付费
  • Go,开源模型捆绑到便宜的月度计划中

Go计划从第一个月$5开始,然后$10/月,包含GLM、Kimi K3、Qwen、MiniMax和DeepSeek等模型。

⚠️ 请仔细检查定价。OpenCode经常更改这些东西。

说实话,那个Go计划很难忽视。

每月$10,它可能是目前通过编程代理运行强大开源模型的最便宜的合法方式之一。

Pi没有真正的等价物。它的"便宜"版本是运行本地模型,这很有用,但不是同一件事。

然后Anthropic发生了

2026年1月,Anthropic开始拒绝在Claude Code外部使用的Claude Pro和Max OAuth令牌。

错误信息很清楚。凭证**"仅授权用于Claude Code"**。

OpenCode一直通过模拟Claude Code客户端使用这些订阅令牌,所以这直接打击了他们。

然后是法律要求,Claude登录代码被移除,我们得到了开头那个著名的提交信息。

George Hotz称此举**"一个巨大的错误"**。

据报道OpenAI走了另一条路,向第三方工具链开放了Codex订阅访问,包括OpenCode和Pi。

哈哈。

对于这个比较来说,重要的部分现在很简单。

如果你想在Pi或OpenCode中使用Claude,你基本上是在支付API费率。OpenCode还给你提供了Zen作为另一种选择。

6. 可扩展性

两者都高度可定制,但扩展模型非常不同。

OpenCode

OpenCode主要通过opencode.json配置驱动,插件、代理、技能和MCP。

你可以添加:

  • 具有自己模型、提示、权限和步骤限制的自定义代理
  • 带有生命周期钩子(如tool.execute.before)的JS或TS插件
  • 自定义工具
  • 本地和远程MCP服务器
  • 来自.opencode/skills.claude/skills的技能
{
  "permission": {
    "bash": {
      "git *": "allow",
      "rm *": "deny",
      "*": "ask"
    }
  }
}

Pi

Pi扩展是直接加载到单个代理进程中的TypeScript模块。

它们可以:

  • 重写或阻止工具调用
  • 替换内置工具
  • 过滤历史
  • 替换压缩
  • 持久化自定义会话状态
  • 添加TUI组件
  • 可能还有更多...

这赋予了Pi比OpenCode更深入的运行时控制

ℹ️ OpenCode插件扩展工具链。Pi扩展可以修改工具链本身。

代价是安全性。Pi扩展在具有完全系统访问权限的进程中运行,因此需要比OpenCode的插件模型更多的信任。

相关阅读:顶级Pi代理技能

7. 权限和安全

这可能是两者之间最大的差距。

OpenCode有一个适当的权限系统。每个工具都可以设置为allowaskdeny,支持glob模式和每个代理的覆盖。默认值也不错。.env读取默认被拒绝,计划代理在编辑或bash命令前会询问。

它缺乏的是真正的沙箱。没有内置的容器或操作系统级隔离。

Pi走另一条路,基本上不提供任何权限层。从第一个提示开始,代理就以你的完整用户权限运行。

这是故意的。Zechner的观点是,一旦代理可以写文件和执行代码,权限提示只能帮你到此为止。Pi反而期望你使用Docker、微型VM(如Gondolin)或策略沙箱(如OpenShell)来隔离整个进程。

💁 还有一个可选的damage-control.ts扩展,可以根据YAML规则检查bash命令。有点帮助。

所以实际的区别很简单。

ℹ️ OpenCode给你工具级别的防护。Pi期望你在代理外部处理隔离。

你应该选择哪个?

选择OpenCode,如果:

  • 你想要接近完整的Claude Code替代品,而不需要自己构建一半的设置
  • 你想要开箱即用的计划模式、权限、MCP、撤销/重做和LSP支持
  • 你想要$10 Go计划,以低廉价格访问强大的开源模型
  • 你使用类型化语言,想要LSP诊断直接反馈给代理
  • 你为团队设置这个,真正需要适当的allowaskdeny控制

选择Pi,如果:

  • 你关心大规模的token成本。在我们的评估中,相同模型通过更多任务,成本更低
  • 你想要一个小到可以真正阅读和理解整个东西的工具链
  • 你调试时喜欢分支。Pi的会话树对此非常有用
  • 你运行本地或较小模型,其中~1,000和~6,900个token的固定开销差异确实重要
  • 你宁愿用TypeScript更改工具链,也不愿花时间配置别人的抽象

基准测试基本上给出了答案。

Pi在仔细的审计式任务上表现更好。OpenCode在更长、更有结构的工作流上表现更好。

所以可能没有一个赢家适合所有情况。

两个都是免费的。试试两个,保留适合你工作方式的那个。✌️

结论

经过这一切,我仍然不认为有一个明显的赢家。得分卡最终6-6

OpenCode在采用率、功能和易用性方面获胜。Pi以21/30任务 vs 19/30赢得了我们的基准测试,总花费更低,固定开销也少得多。

更大的区别仍然是我们开始时的那个:

OpenCode给你配置控制。Pi给你运行时控制。

如果你只想安装一些东西然后开始工作,选择OpenCode

如果你想理解并修改工具链本身,选择Pi

而如果每次成功任务的成本在大规模上开始变得重要,那就关注Pi吧。🤷‍♂️


原文链接:Pi vs OpenCode: After 100 Hours, Which Open-Source Coding Agent Should You Use?

汇智网翻译整理,转载请标明出处