跳至内容

什么是 OpenCode?开源 AI 编码代理详解

一份关于 OpenCode 的工作流、模型选项、架构,以及与 Claude Code、Cursor 和 Cline 差异的指南。
更新 2026年7月28日  · 14分钟

用 AI 探索

在 ChatGPT 中打开在 Claude 中打开在 Perplexity 中打开

OpenCode 的目标是完成任务。它是一个开源代理,可将 AI 模型连接到您的代码仓库、终端和开发工具。让它修复一个 bug,它可以找到相关文件、拟定计划、编辑代码、运行测试并响应错误。光靠自动补全做不到这些。

这种更广的角色引起了关注。撰文时,活跃的 OpenCode 仓库约有 189,000 个 GitHub star。我不会把 star 当作代码质量的证明,但它们确实显示了项目吸引的兴趣程度。

现实没那么整洁。OpenCode 让您在多个模型间选择,然后要求您自己管理这个选择。2026 年 1 月的一次提供商政策变更显示这些选项会多么快速地变化。下文将结合 OpenCode 的工作方式和适用场景一并说明。

在继续之前先说个命名提示:如果您搜索 OpenCode,可能会找到已归档、基于 Go 的 opencode-ai/opencode 仓库。该项目已于 2025 年 9 月停止维护。本文将聚焦于 github.com/anomalyco/opencode 上的活跃项目,它由 Serverless Stack (SST) 框架团队打造。

What Is OpenCode?

OpenCode 是一个开源的 AI 编码代理,采用 MIT 许可。它对模型持中立态度,意味着不局限于某一家模型提供商。用户可以阅读并修改源码,也可以自托管该工具。软件免费。模型计费单独计算,具体见功能部分。

OpenCode 不是一个 大语言模型(LLM)。所选模型读取提示并生成响应。OpenCode 为该模型提供文件工具、Shell 访问、会话历史、权限规则和界面。我认为这一点很有用,因为更换模型不需要更改工具的其他部分。

它由 Anomaly(原 SST)构建,主要使用 TypeScript 和 Bun 运行。

Archived original OpenCode repository next to the current active repository

对比已归档与当前活跃的 OpenCode 仓库。图片来源:作者。

OpenCode 不绑定某个模型家族。通过 Models.dev 注册表,它可连接 75+ 家提供商,包括 Anthropic、OpenAI、Google、DeepSeek、Groq,以及通过 Ollama 使用的本地模型。一些现有订阅账号也可连接,详见功能部分。

OpenCode terminal interface showing a coding session with a file diff

OpenCode 终端会话显示文件变更。图片来源:作者。

尽管 OpenCode 起步于终端,它如今同时提供终端界面(TUI)、适用于 macOS、Windows 和 Linux 的桌面应用测试版,以及 VS Code 等编辑器扩展。撰文时最新稳定版为 v1.18.8。

Why OpenCode Was Created

如前所述,OpenCode 支持来自多家提供商的模型。之所以这样设计,是因为模型质量和价格会变化,而绑定单一提供商的工具会让用户选择更少。

文档指出,OpenCode 不与任何提供商耦合。上文提到的 Models.dev 注册表提供了 OpenCode 使用的模型详情和价格。

这个选择不仅影响计费。不同模型的上下文上限、工具调用格式和输入类型都不同。OpenCode 用一个接口覆盖这些差异。开发者可以在同一个项目中更换所选模型,而无需把会话迁移到另一款编码工具。

团队也偏好用户可检查的“终端优先”工具。项目说明存放在名为 AGENTS.md 的纯文本文件中。下文将解释 OpenCode 如何创建并使用该文件。

官方项目记录了三项设计选择。第一是上文提到的提供商支持。第二是将主要控制保留在终端中。第三是将客户端和服务器分离。下面介绍这部分。

2026 年 1 月,Anthropic 阻止第三方工具通过非官方渠道使用消费者版 Claude 订阅。随后,OpenCode 增加了其他订阅选项并使用自有网关。用户仍可通过其他提供商连接。

这次事件解释了为什么 OpenCode 如此强调提供商选择。要了解用户如何利用这种选择,下一步是看看一次会话的过程。

How OpenCode Works

OpenCode 以客户端和本地服务器的形式运行。TUI、桌面应用、IDE 扩展和 SDK 都通过 HTTP 与该服务器通信。该服务器还支持使用 opencode attach <url> 进行远程附加,以及使用 opencode serve 的无头模式。

在会话中,代理会读取相关文件,可能会拟定计划,编辑代码,并在需要时运行命令。其 LSP(语言服务器协议)集成会将编译器和 linter 的诊断反馈给模型,以便它响应类型和语法错误。

例如,某个任务可能从 glob grep 开始定位文件。代理可用 read 检查它们,并用 edit 修改选定行,随后用 bash 运行测试或构建命令。输出将成为下一次模型请求的一部分。

我认为“Build 与 Plan 的划分”最容易理解为一个权限开关。Build 为默认模式,可读写并运行命令。Plan 在编辑文件或运行 bash 命令前会询问。按 Tab 在两者间切换。

权限检查在调用工具时适用。项目可以允许某工具、阻止它,或每次询问。规则也可按命令模式变化。团队可能允许常规测试,但在执行其他 Shell 命令前询问。

会话存储在本地磁盘的 OpenCode 数据目录下。OpenCode 会自动压缩冗长对话。使用 /undo /redo 命令可在基于 Git 的文件快照间移动。

Key Features of OpenCode

OpenCode 将其主要功能分为模型访问、项目上下文、任务执行和本地使用。以下小节说明这些分组在编码会话中各自带来的变化。

Multi-model support

如前所述,OpenCode 通过 Models.dev 获取提供商列表。实际使用中,用户可以连接托管服务、云平台,或 OpenAI 兼容端点。GitHub Copilot 和 ChatGPT Plus/Pro 登录提供了无需单独管理 API key 的替代方式。

选择提供商并不意味着每个模型行为相同。工具使用、上下文限制、响应时间与价格仍取决于所选模型与提供商。调用托管模型也会将所需代码上下文发送给相应提供商,并遵循其数据规则。

OpenCode 还提供两种可选的模型访问方式。OpenCode Zen 是带精选模型列表的按量计费网关。OpenCode Go 是一项订阅:首月 5 美元,其后每月 10 美元,面向部分开源权重模型。用户仍可自备 API key。价格可能变动。

这就是让人犯难的地方:免费的工具仍可能产生提供商账单。

Working with repository context

运行 /init 后,OpenCode 会生成 AGENTS.md ,概述项目的结构与约定。团队可以提交该文件,以便会话从共享说明开始。

文件可包含测试命令、文件夹名称、命名规则和项目说明。全局 AGENTS.md 可存放跨项目通用的说明;项目文件则存放单个仓库的规则。

前述 LSP 检查会在编辑后运行。仓库上下文还包括文件引用:使用 @ 符号可将选定文件拉入提示。

Running coding tasks

除了前述 Build 与 Plan 代理,OpenCode 还包含用于多步搜索、代码库扫描和外部文档的子代理。自定义代理可以拥有自己的模型、提示和工具权限。

每个子代理在子会话中工作,因此其消息不会像主会话那样充斥一处。自定义代理可以被限制为仅读取文件、分配更低成本的模型,或为某类任务设定专用说明。

Model Context Protocol (MCP) 服务器可添加外部服务。它们在 opencode.json 中定义,且前述权限检查也适用于它们所添加的工具。

从规划切换到代码更改。视频来源:作者。

Local-first development (and its limits)

“本地优先”这个说法需要限定。我不会把它解读为“永远不出机”。如提供商部分所述,OpenCode 可连接 Ollama。那种设置让代码和提示留在本地基础设施上。托管模型、/share 与 OpenCode Zen 会将数据发送到本机之外。

本地使用仍取决于模型。小模型可能返回无效的工具调用,或错过文件间的关联。本地服务器还需要足够的内存以承载所选模型,并需要足够的上下文空间容纳每次请求携带的文件。

其权限系统是工作流上的保护措施,而非安全沙盒。联网的服务器模式应使用 OPENCODE_SERVER_PASSWORD 并绑定到 localhost。早期一次未认证暴露问题已修补,但服务器模式仍不应在无认证的情况下公开暴露。

OpenCode Architecture

如前所述,OpenCode 将客户端与本地服务器分离。此分离影响配置与存储状态。API 则提供了使用服务器的另一种方式。

如果您只打算使用 TUI,可以跳过 API 细节。最后一段的配置部分是您会用到的。

TypeScript 与 Bun 服务器负责与模型提供商通信并运行工具,同时管理状态。其 OpenAPI 3.1 规范生成官方 @opencode-ai/sdk。脚本和自定义客户端可以使用这个有文档的 API。

API 覆盖会话、消息、文件、提供商、工具、代理与配置。这与 OpenCode 自身客户端使用的是同一个服务器。脚本可以创建会话或发送消息,而不必尝试控制 TUI。

Diagram of OpenCode's client-server architecture connecting the TUI, desktop app, and IDE extension to a shared server

OpenCode 客户端连接至同一服务器。图片来源:作者。

前文列举的界面都作为客户端:TUI、桌面应用、IDE 扩展和 opencode web。它们各自与同一服务器进程通信。另一台设备可以通过该进程附加到现有会话。

运行 opencode serve 可在没有常规 TUI 的情况下启动服务器。运行 opencode web 会添加浏览器客户端。如果服务器可被其他设备访问,这两个命令都需要认证。

配置位于项目级的 opencode.json opencode.jsonc 中,全局回退至 ~/.config/opencode/opencode.json。它控制模型、权限、MCP 服务器和自定义代理。如工作流部分所述,会话历史与工具日志保存在本地文件中,除非用户选择分享。

Common OpenCode Workflows

OpenCode 的相同组件可用于多种常见软件任务。下列示例展示了各任务中仍需人工审阅的环节。

Building new features

使用前述“Plan 到 Build”的流程,开发者可以先提出功能需求,并在任何编辑前审阅拟定步骤。随后按 Tab 将任务切换至 Build 模式以进行代码更改和测试。

在任何文件变更前都可修改计划。我会利用这一步来校正范围、指明不应变更的文件,或补充测试要求。

Refactoring existing code

同样的“Plan 到 Build”流程适用于重构。Plan 模式可在 Build 模式应用编辑前识别依赖与调用点。如果结果不正确, /undo 会恢复到早先的快照。用户仍需审阅 diff,因为测试通过并不代表每个对外接口都保持不变。

Debugging applications

在调试方面,OpenCode 可结合堆栈追踪与语言服务器的类型信息。它可以提出更改、重现导致错误的步骤,并检查结果。若没有清晰的复现步骤,它可能只能确认代码可以构建或现有测试通过。

Writing tests

如前所述,Build 模式可编辑文件并运行命令。就写测试而言,这意味着它可以创建测试、读取结果并进行进一步修改。完整测试套件提供更多反馈,但耗时更长。

测试质量仍需人工审阅。生成的测试可能重复实现细节,而非检查用户所依赖的行为。

Understanding large codebases

仓库部分已解释 /init 如何创建项目说明。此后,类似“这里的认证机制如何工作?”的问题可以引导搜索。 @general 子代理可以搜索仓库的多个部分。

具体问题通常比“解释整个仓库”的请求给出更清晰的结果。使用 @ 引用文件可以进一步缩小搜索范围。

OpenCode vs. Other AI Coding Agents

这些工具在许可、模型支持、界面与计费上存在差异。我将围绕这些点进行对比,而不是把某个工具当作默认选择。

OpenCode vs. Claude Code

我们有一篇OpenCode 与 Claude Code 的对比文章提供更多细节。Claude Code 是专有产品,使用 Anthropic 的模型与账号体系。OpenCode 采用 MIT 许可,并要求用户选择提供商,同时开放其源码与配置供用户使用。如历史部分所述,消费者版 Claude 订阅不再能通过 OpenCode 使用,因此使用 Claude 需要按量计费的 Anthropic API key。

两者都能读文件、进行更改、运行命令并使用 MCP 服务器。主要差异在于模型访问:Claude Code 限于上述 Anthropic 方案,而 OpenCode 可连接其他提供商或本地端点。

OpenCode vs. Cursor

Cursor 是基于 VS Code 的 IDE,也提供 CLI 与云端代理。它的主要工作流将建议、文件更改和代理操作都保留在编辑器内。OpenCode 则使用前文所列的终端、桌面和编辑器界面。Cursor 采用付费订阅方案。OpenCode 的软件免费,但用户可能需要为模型提供商的 Token 付费。主要差异在工作界面、模型选择和计费方式。

Cursor 还提供开发者输入时的行内补全。OpenCode 专注于交给代理的任务,不替代这类补全。一些开发者可能会将两种工具用于不同工作。

OpenCode vs. Cline

Cline 的核心项目是开源的自备密钥(BYOK)代理,提供 VS Code 与 CLI 界面。它也有 JetBrains 客户端,但撰文时该客户端并非开源。Cline 与 OpenCode 均支持 MCP,并允许用户设置审批规则。Cline 将编辑器控制置于侧边栏;OpenCode 使用可独立于编辑器运行的终端会话。选择主要取决于开发者希望在何处审阅并批准更改。

Cline 采用 Apache 2.0 许可。OpenCode 使用前述 MIT 许可。两者都允许审阅与修改源码,但其界面与项目文件不同。

Aider 与 Codex CLI 也是基于终端的编码代理。OpenCode 在同一项目中同时覆盖终端、桌面与 IDE 用途,并支持来自多家提供商的模型。

Installing and Getting Started with OpenCode

官方安装脚本适用于大多数类 Unix 系统。它提供了一种安装命令行工具的方式:

该命令会下载 OpenCode 二进制文件并添加到用户环境。若系统使用软件包管理器管理更新,包管理器可能更合适。

curl -fsSL https://opencode.ai/install | bash

包管理器选项包括 npm i -g opencode-ai@latestbrew install anomalyco/tap/opencode(适用于 macOS 与 Linux),以及 scoop install opencodechoco install opencode (适用于 Windows)。桌面应用适用于 macOS、Windows 与 Linux。在 Windows 上,OpenCode 文档推荐使用 WSL,因为某些文件系统与 Shell 功能在其中表现更好。

安装不包含模型访问。首次会话仍需要采用多模型部分所述的访问方式之一。

安装 OpenCode 并在创建项目说明前进行演示。视频来源:作者。

安装完成后,首次运行流程很短。它涵盖提供商连接和初始项目设置:

  • 在项目目录内运行 opencode 启动 TUI。
  • 运行 /connect 添加一个模型提供商,无论是直接 API key、Copilot 或 ChatGPT 登录,还是 OpenCode Zen 或 Go 连接。
  • 运行 /init 创建前述的 AGENTS.md 文件,若团队需要共享这些说明,请提交版本控制。
  • 使用 Tab 在上述 Plan 与 Build 模式间切换。

这些步骤覆盖初始设置。OpenCode 文档包含完整的提供商与配置选项。

Who Should Use OpenCode?

OpenCode 是否适合,取决于您偏好的界面、模型设置与控制程度。基于上述功能,它可能适合以下用户与团队:

适合:

  • 不希望被锁定在单一模型提供商、并希望根据成本或能力切换的开发者
  • 需要让代码留在本地基础设施中的受监管或对隐私敏感环境的团队
  • 习惯于 CLI 工作流与配置文件的“终端优先”开发者
  • 希望审阅、分叉或扩展工具本身的开源贡献者
  • 偏好按 Token 计费而非固定软件订阅的开发者

不太适合:

  • 想要几乎无需设置的托管产品的人
  • 主要需要行内自动补全、而非自主代理的开发者
  • 只打算使用 Claude 且更偏好订阅计费而非按量 API 计费的人
  • 完全不想接触终端的人,不过桌面应用在一定程度上缩小了这一差距

这些是工作流差异,而非代码质量的衡量。对模型与权限的更高控制也意味着需要更多设置。

The Future of OpenCode

我差点删掉这一节,因为路线图的信息很快就会过时。但已发布的变更仍能体现团队工作的方向。

OpenCode 在第一年发布了 800+ 个版本。最近的版本增加了桌面多标签和实验性的后台代理。发布频率显示了活跃度,但我不会将其视为对稳定性或任何未来功能的承诺。

前述 Zen 与 Go 选项在 BYOK 之外增加了付费方式。MCP 支持与子代理也是项目的活跃部分。其他编码工具也在这些领域持续变化。

没有公开路线图能确认下一个功能或其发布时间。关于未来版本的说法仍不确定。

Conclusion

我会坚持开头提到的“代理与模型分离”的观点。提供商列表会变、价格会动、访问规则会改、订阅会消失;而 OpenCode 可以保持不变,只更换所选模型。这种分离也带来工作量,因为仍需有人管理设置、权限与计费。

我的看法很简单:根据您愿意管理的控制程度来选择。没有哪种方案适合所有开发者或团队。

相关资源包括Claude Code 教程面向开发者的 AI 辅助编码课程

FAQs

OpenCode 真的是免费使用吗?

如前所述,采用 MIT 许可的软件免费。成本来自所选的模型路径:提供商 Token、Zen 或 Go,或用于本地模型的硬件。

我可以在 OpenCode 中使用 Claude 模型吗?

是的,通过标准的 Anthropic API key。正如前文所述,个人版 Claude Pro 与 Max 订阅不能通过 OpenCode 路由,因此 Anthropic 会按其 API 费率计费。

OpenCode 离线可用吗?

可以。本地模型部分已经说明,OpenCode 可通过 Ollama 或其他 OpenAI 兼容端点连接。较小的本地模型相比大型托管模型,可能产生更多工具调用错误。

已归档的 opencode-ai/opencode 仓库与现项目是同一个吗?

不是。正如简介所述,该基于 Go 的项目已于 2025 年 9 月归档。一个额外的辨别方式是配置格式:使用旧命令或 .yml 文件的指南并不适用于当前项目。

OpenCode 如何处理我的源代码隐私?

如本地使用部分所述,发送到托管模型的请求会离开本机。OpenCode 本身不会保留代码。另一个例外是 /share 命令,因为它会将会话上传到公开链接,直到用户取消分享为止。

主题

与 DataCamp 一起学习

Tracks

AI商业基础知识

12小时
加速你的 AI 之旅,掌握 ChatGPT,并制定全面的人工智能战略。
查看详情Right Arrow
开始课程
查看更多Right Arrow