作者实测 OpenCode 两周,认为真正决定 AI 编程助手效率的是对代码库上下文和工作流的理解深度,而非模型本身。
我在过去两周把 OpenCode 作为主力工具用在一个中等规模的 Rust 代码库上,我有一个观点可能会同时得罪开源派和商业派:模型本身已经不再是瓶颈。真正决定一个 coding agent 是帮你节省一小时还是浪费一小时的因素,是它对你的代码库规范和实际工作流程的理解程度。OpenCode 在这些方面做得比 Cursor 和 Copilot 都好。
先明确一下 OpenCode 是什么再进行比较。它是一个基于终端的开源 coding agent。你指定一个代码库,它读取目录树,然后用自然语言与它对话。它可以对接任何你想要的模型——本地的或 API 的——并且完全通过 YAML 配置。没有 IDE 锁定、没有你无法审查的遥测数据、没有你无法取消的订阅。光是这一点,就让它和 Cursor、Copilot 处在不同的类别——后两者都是围绕各自基础设施包装的专有产品。
但我真正在意的事情,也是我写这篇文章的原因:是这些工具之间的差异不在于底层模型有多智能,而在于它们如何处理上下文。
每个代码库都有不成文的规则。错误处理风格。用 this 还是 bind。如何命名模块。测试设置长什么样。一个好的 agent 不仅要知道语言,还要懂你这门语言的方言。
Cursor 尝试用规则文件和对编辑历史的记忆来解决这个问题。有效果,但它是一个专有的黑箱。你在信任他们的启发式方法来推断你的规范,而且你看不到也无法编辑其中的逻辑。Copilot 更糟——它训练于整个互联网的代码,这意味着它默认使用最常见的模式,而不是你的模式。如果你的代码库做了一些稍有不同的事,Copilot 就会跟你较劲。
OpenCode 做了不同的尝试。因为它是开源的,上下文管道是可以审查的。我可以精确看到它在给模型喂什么——哪些文件、什么顺序、哪里被截断了。更重要的是,我可以改变它。我写了一个小配置,告诉它始终先读 CONTRIBUTING.md,并且在形成初始计划时优先读取 src/ 树而非 tests/。这花了我二十分钟,但它改变了之后每一个回复的质量。
这就是真正的开源优势,而且它跟模型一点关系都没有。它是能够塑造 agent 对你代码库的理解,而不是接受别人替你做的猜测。
我测量的第二件事——而且我确实做了量化比较——是每个工具如何融入我的工作方式。
我工作在终端里。我的整套 agent 工具链都是基于终端的。当我尝试 Cursor 时,摩擦点不是 AI,而是 IDE。我必须离开我的 tmux 会话,打开一个 GUI,然后在他们的编辑器里工作才能获得 agent 的好处。这是我不愿意付出的工作流税,所以 Cursor 就那样闲置在我的机器上。
Copilot 在这方面好一些,因为它集成在 VS Code 里,很多人都已经在用了。但它仍然绑在 GitHub 的生态里。如果你不在 GitHub 上,或者你在多个代码托管平台之间工作,就会很别扭。
OpenCode 运行在终端里,这意味着它可以直接插入我已有的工作流。我可以 pipe 它的输出、用脚本操作它、如果愿意的话还可以在 CI 里运行它。它是一个 Unix 工具,而不是一个产品。对于像我这样职业做 agentic 系统的人来说,这不是锦上添花,而是核心价值。我可以把它集成到我自己的流水线里,而不是让我的流水线去迁就它。
我不会假装它完美无缺。OpenCode 有一些 Cursor 和 Copilot 已经打磨掉的粗糙边缘。
首先是安装配置。让它配置好正确的模型、正确的上下文规则和正确的权限,花了我一个下午。Cursor 十分钟开箱即用。这是真实的成本,对于很多团队来说,这会是决定性因素。开源意味着你得自己做工作;商业工具替你做了。
其次是模型路由。OpenCode 是模型无关的,这很棒,但也意味着你要负责选择正确的模型并调优它。我一直用它对接本地模型处理隐私敏感的工作,对接 API 模型做重活,而管理这个分工是我的责任。Cursor 和 Copilot 把这些都隐藏在他们自己的模型选择后面,虽然不够灵活,但更简单。
第三是打磨程度。Cursor 的 diff 预览确实很不错。Copilot 的行内建议很流畅。OpenCode 的终端输出功能正常但很丑,diff 审查体验远没有那么顺滑。如果你注重这些方面,你会注意到差距。
两周之后,我真诚的结论是:这些工具之间的模型能力差距是噪音。它们都在运行足够写出合格代码的模型。真正的区分度在于 agent 如何理解你的代码库,以及它如何适应你的工作流。
对于像我这样的人,OpenCode 在两方面都赢了——因为我可以塑造它的理解,而且它生活在我工作的地方。Cursor 对于想要精致、成熟体验且不介意 IDE 锁定的人是赢家。Copilot 对于已经深度使用 GitHub/VS Code 生态且想要零配置的人是赢家。
这些都跟智力无关。它关乎上下文和工作流。我们越早停止争论哪个模型更聪明,开始争论哪个 agent 理解我们的代码,我们就越受益。
我还没有完全投入 OpenCode——打磨层面的差距是真实存在的,我还在权衡这个控制权是否值得那些摩擦。但它是第一个把我当作开发者而不是用户对待的 coding agent,这一点意义重大。