OpenCode 2.0(阅读约6分钟)
摘要
OpenCode 2.0 是对开源编码智能体的一次重大升级,引入了统一的后台客户端/服务器架构、全新的 API 重写及 JavaScript 客户端包、通过极简 JS 解释器将 MCP 服务器与 OpenAPI 端点进行组合的代码模式、后台子智能体与 Shell 任务,以及一个包含 80 多个内部插件的稳定插件系统。
OpenCode 2.0 包含大量新功能、性能改进和问题修复。服务器现在会自动作为单个后台进程运行。编程客户端会自动发现本地服务并直接可用。OpenCode 现在还可以通过 SDK 包作为库来使用。关于此次更新的更多详情请参阅原文。
查看缓存全文
缓存时间: 2026/10/14 18:31
# OpenCode 2.0
来源:https://anoma.ly/notes/opencode-2-0/
OpenCode 2.0 是一次重大重构。它借鉴了数百万日常用户的实践经验,打造了一个能够灵活适应 agent 各种需求的系统。此次更新包含大量新功能、性能改进和 Bug 修复,以下是其中一些影响较大的面向用户的变更。
## 服务化架构
从一开始,OpenCode 就采用了客户端/服务器模型。但在默认情况下并未充分利用它,主要由高级用户使用。
在 2.0 中,该服务器现在会自动作为单个后台进程运行在你的机器上。无论你打开 TUI、Web 界面还是桌面应用,它们都在与同一个核心进程通信。
如果你使用编程化客户端 `@opencode/client` 编写自己的脚本,它们会自动发现本地服务并直接可用。这对于定时任务尤其有用。你也可以通过 CLI 使用 `opencode api` 命令来调用它。
你可以将其暴露给其他主机,运行 `/pair` 或 `opencode pair` 将其连接到其他应用程序。我们正在开发利用这种流程的原生应用。
## API
旧的 API 是在我们和整个社区共同学习 agent 是什么、应该是什么的过程中随意演进的。它很糟糕。
我们从零开始,审视了数百万 OpenCode 日常用户的各种奇怪用例。现在它几乎支持你需要做的一切。
OpenCode 还能感知自己的 API 并调用它来完成有用的操作,比如在开始新工作时将会话移动到 git worktree 中。
我们也发布了新的客户端包 `@opencode/client`,其中包含原生 JavaScript 和 Effect 的客户端。
```typescript
// review.ts
import { OpenCode } from "@opencode/client"
import { Service } from "@opencode/client/service"
const endpoint = await Service.ensure()
const client = OpenCode.make({
baseUrl: endpoint.url,
headers: Service.headers(endpoint),
})
const session = await client.session.create({
location: { directory: process.cwd() },
})
await client.session.prompt({
sessionID: session.id,
text: "Review the current changes",
})
```
## Code Mode
模型热爱编写代码,而 OpenCode 2.0 比其他任何编码 agent 都更充分地利用了这一点。我们在 `@opencode/codemode` 包中构建了一个极简 JavaScript 解释器。
该包可以导入 MCP 服务器或 OpenAPI 端点,将它们转换为 agent 可以在脚本中调用的函数。它可以原生运行这些脚本,无需 Node.js VM 的复杂性,也无需嵌入 QuickJS 这样的复杂解决方案。
这让你的 agent 可以编写脚本来完成诸如调用一个工具、遍历结果并调用另一个工具等操作。一次往返调用,而不是逐个调用。
2.0 中所有 MCP 服务器默认启用 code mode。这意味着你可以添加上千个 MCP 服务器而不会导致上下文膨胀,你的 agent 将发现并组合它们来完成工作。
## 后台任务
最新一代模型在编排方面表现出色,而 harness 需要让它们充分表达这种能力。
首先,我们添加了后台子 agent。这允许主 agent 将一些工作委派给另一个 agent,同时自己继续工作。
这会自动发生,但你也可以手动触发——甚至可以使用不同的模型。它让你可以做类似"生成一个后台子 agent 来审查这段代码"的事情,同时你继续对话。
其次,我们添加了后台 shell 命令。shell 工具可以被异步调用,这样耗时的工作就不会阻塞主 agent。当事情完成时,它会收到通知。
如果任何前台 shell 命令或子 agent 花费的时间超出你的预期,你可以按一个快捷键将它们移到后台,以便继续对话。
## 插件
虽然 OpenCode 1.0 有插件系统,但它从未得到应有的关注。为了纠正这一点,我们强迫自己将几乎每个 OpenCode 2.0 功能都作为内部插件来实现,现在已有 80 多个。这保证了 Plugin API 得到良好的维护。
我们还将 TUI 插件从实验性提升到了稳定版。由于它完全由 OpenTUI 驱动,你可以构建几乎任何东西。下面是一个无用的例子。
我们还花了大量时间确保 OpenCode 2.0 中的所有内容都支持热重载。所以它可以在会话中途为自己编写一个插件并立即使用——我们在之前的一篇[博客文章](https://anoma.ly/notes/opencode-reloaded)中介绍过这种设计。
你可以让 OpenCode 构建任何你想要的插件,它知道怎么做。但如果你想阅读文档,可以在[这里](https://opencode.ai/v2/docs/build/plugins)找到。
## SDK
OpenCode 现在也可以作为库通过 `@opencode/sdk` 包使用。这是驱动我们 CLI 的完全相同的代码。
这意味着你可以精简它,制作自己的 OpenCode 变体,运行在服务器上或 DurableObjects 等特殊环境中。然后你可以从任何 OpenCode 客户端连接到它,因为它使用标准的 OpenCode 服务器协议。
它还有一个可选的基于 Effect 的 API。
这个仍在开发中,因为内容还在变化,但你已经可以[使用它](https://opencode.ai/v2/docs/build/sdk)了。
## 升级
要升级 CLI,请确保你在最新的 1.x 版本上,然后运行 `opencode upgrade --major`。
要升级桌面应用,请在此[下载](https://opencode.ai/download)最新版本。
有一些破坏性变更:
- 1.0 插件在 2.0 中将无法工作
- Server API 完全不同
- `tui.json` 配置已迁移到 `json`
还有很多其他变更,但它们都是向后兼容的。值得让 OpenCode 指向[这个文档](https://opencode.ai/v2/docs/migrate-v1/),让它为你自动迁移。
相似文章
OpenCode 2.0
OpenCode 2.0 作为开源 AI 编程代理正式发布,支持终端、桌面和 Web 应用,可搭配任意模型使用。
Claude Code 与 OpenCode 对比:我在两者上运行了相同的智能体任务。以下是各自的不足之处。
亲身对比 Claude Code 和 OpenCode 在多种编码任务中的表现,发现 Claude Code 在前端无缝工作和长会话方面更胜一筹,而 OpenCode 则提供更大的灵活性、模型自由度和可检查性。
@LangChain:OpenWiki 0.4.0 新版发布:编程代理集成。更多来自 @colifran_
OpenWiki 0.4.0 添加了与 Claude、Codex 和 OpenCode 的编程代理集成,简化了开发者的设置过程。
CLI编码代理现状,2026年中(37分钟阅读)
详细比较了CLI编码代理,包括Claude Code、Codex CLI、Omp和OpenCode,指出前三者生成的结果质量相似,而OpenCode稍逊一筹,但可与多种模型配合使用。
Ouroboros:核心演进经评审的自进化前沿编码代理
Ouroboros 是一个自进化前沿编码代理,其工具、提示词和核心实现通过受评审的提交不断改进,在 Terminal-Bench、OSWorld 和 CL-Bench 上取得了最先进的结果,并包含一个名为 Hope 的长期运行的实际部署。