跳到正文
Hacker News· gmays·· 19 天前精选AI 评分73

OpenCode 2.0 发布,引入代码模式与后台子智能体

OpenCode 2.0

AI 导读

OpenCode 2.0 将客户端/服务端架构默认开启并重写 API,所有界面共享同一个后台进程。核心新增:内置 JavaScript 解释器的 Code Mode,可把 MCP 与 OpenAPI 端点整合为脚本以减少上下文消耗;后台子智能体与异步 shell 命令支持并行处理;@opencode/sdk 作为库复用 CLI 代码,支持热重载插件和运行中动态构建新插件。

推荐理由

OpenCode 2.0 重写 API 并加入代码模式与后台任务,展示编码智能体在架构与扩展性上的新选择。

正文 · AI 翻译

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 的客户端。

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",
})

代码模式

模型 喜欢 写 代码, 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