OpenCode 2.0 发布,引入代码模式与后台子智能体
OpenCode 2.0
OpenCode 2.0 将客户端/服务端架构默认开启并重写 API,所有界面共享同一个后台进程。核心新增:内置 JavaScript 解释器的 Code Mode,可把 MCP 与 OpenAPI 端点整合为脚本以减少上下文消耗;后台子智能体与异步 shell 命令支持并行处理;@opencode/sdk 作为库复用 CLI 代码,支持热重载插件和运行中动态构建新插件。
OpenCode 2.0 重写 API 并加入代码模式与后台任务,展示编码智能体在架构与扩展性上的新选择。
OpenCode 2.0 是一次重大 改版。它 汲取 了 数百万 日常 用户 的使用 经验, 致力于 打造 一个能 灵活 适应 智能体 一切 需求 的 系统。 新 功能、性能 改进 以及 错误 修复 都 非常 多, 下面 介绍 其中 影响 较大的 面向用户的 变化。
本服务
从一开始 OpenCode 就 采用 了 客户端/服务器 模式。 然而, 它 默认 并 没有 利用 这一点, 该模式 主要 被 高级 用户使用。
在 2.0 中, 该 服务器 现在 会自动 作为 一个 后台 进程 运行 在你的 机器上。 当你 打开 TUI、 Web 界面 或 桌面 应用 时,它们 都在 与同一个 中央 进程通信。
opencodepid 48213Running
会话
修复 flaky 测试
添加深色模式
审查更改
如果你 使用 编程 客户端 @opencode/client 来 编写 自己的 脚本, 它们 会 自动发现 本地 服务 并 直接 运行。 这 对于 计划 任务 特别有用。 你 也可以 通过 CLI 使用 opencode api 命令 调用它。
你可以 将其 暴露 给 其他 主机 并 运行 /pair 或 opencode pair 来 将其 连接 到 其他 应用程序。 我们 有 正在开发中 的 原生应用 会 利用 这一 流程。
API
旧 API 在我们和全世界共同探索 agent 究竟是什么、应该是什么的过程中杂乱无章地生长。它很糟糕。
我们从零开始,仔细审视了每天使用 OpenCode 的数百万用户的所有奇特用例。它现在几乎支持你需要做的任何事情。
OpenCode 也了解自身的 API,并会调用它来做一些有用的事情,比如在启动新工作时将当前会话移入一个 git worktree 。
会话新会话
OpenCode
~/app
修复不稳定的上传测试已中断
迁移配置加载器标签页已关闭
新会话此会话
~/worktrees/rate-limit
我们还发布了一个新的客户端包 @opencode/client ,其中包含用于原生 JavaScript 以及 Effect 的客户端。
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",
})代码模式
模型 喜欢 写 代码, OpenCode 2.0 比 任何 其他 编程 代理 都更 充分 利用 了 这一点。 我们 在 @opencode/codemode 包中 构建 了一个 简洁 的 JavaScript 解释器。
会话
代码模式
MCP 服务器
github
linear
sentry
该 包 可接入 MCP 服务器 或 OpenAPI 端点, 将其 转换 为 代理 可在 脚本中 调用 的 函数。 它 能够 原生 运行 这些 脚本, 无需 依赖 Node.js 虚拟机 或 嵌入 QuickJS 这类 复杂 方案。
这 让 你的 智能体 可以 编写 脚本 来 执行 诸如 调用 工具、 遍历 结果 并 调用 另一个 工具 之类的 操作。单次 往返 即可 完成,无需 逐个 调用。
2.0 中所有 MCP 服务器默认启用 代码模式。 这意味着你可以 添加 上千个 它们 且几乎 不会增加 上下文 开销, 你的 智能体 会 自动发现 并 组合 它们 来 完成 任务。
后台任务
最新一批模型 在编排(orchestration) 方面 非常 出色,让 harness 充分发挥它们 这方面的 能力 十分 重要。
会话
后台
首先,我们 新增了 后台子代理(background sub-agents)。 这样 主代理 (primary agent) 在继续运行的同时,可以把 一部分 任务 分派给 另一个 代理。
这 会自动 发生,但 你 也 可以 手动 触发 它 —— 甚至 使用 不同 的模型。 它 允许 你 在 继续 输入 提示的 同时,执行 类似 “生成 一个 后台 fable 子代理 来 审查 这段 代码” 的 操作。
其次,我们新增了 后台 shell 命令。 shell 工具 可以 被 异步 调用,这样 长时间 运行 的 任务 就 不必 阻塞 主 代理。 任务 完成时,它 会 收到 通知。
如果 任何 前台 shell 命令 或 子代理 运行 时间 超过 你的 预期, 你 可以 按下 快捷键 将 它们 移到 后台 , 这样 你 就可以 继续 输入提示。
插件
虽然 OpenCode 1.0 曾经 拥有 一个 插件 系统, 但它 从未 得到 应有的 关注。 为了 纠正 这一点, 我们 迫使自己 将 几乎 每一 OpenCode 2.0 功能 实现为 一个 内部 插件, 现在 已有 80+ 个 了。 这 保证了 插件 API 能够 得到 良好维护。
我们还 把 TUI 插件 从 实验性 升级为 稳定版。 由于 它 完全由 OpenTUI 驱动, 你 几乎可以构建 任何东西。 下面 是 一个 没什么用处 的示例。
我们 还 花了 大量 时间 来确保 OpenCode 2.0 中的所有内容都能 热重载。 这样它就能在会话中途为自己编写一个插件并 立即 使用—— 我们在 之前的博客文章中介绍了相关设计。
你可以让 OpenCode 构建任何你想要的插件, 它知道怎么做。 不过, 如果你确实想阅读文档, 可以 在这里查看。
SDK
OpenCode 现在 也可以 作为 库 与 @opencode/sdk 包 一起 使用。 这 正是 驱动 我们 CLI 的 同一份 代码。
这 意味着 你 可以 将其 精简 并 打造 自己的 OpenCode 版本, 运行在 服务器 或 像 Durable Objects 这样的 专业 环境 中。 然后 你 可以从 任何 OpenCode 客户端 连接 到 它, 因为 它 使用 标准的 OpenCode 服务器 协议。
它 还 包含 一个 可选的 基于 Effect 的 API。
这一个仍在开发中,因为情况还在变化,但您可以立即使用它了。
升级
要 升级 CLI, 请 确保 您 使用 的是 最新的 1.x 版本, 然后 运行 opencode upgrade --major。
要升级您的桌面应用,请在此下载最新版本。
包含 一些 破坏性更改。
1.0 插件 将 无法 在 2.0 中运行
Server API 完全不同
tui.json 配置 已迁移至 json
还有 许多 其他 更改,但它们向后兼容。 值得让 OpenCode 查看 本文档 ,以便它可以为您迁移这些内容。
来源:Hacker News · anoma.ly