OpenCode 2.0 发布:服务端常驻、Code Mode 与后台任务
OpenCode 2.0
OpenCode 2.0 发布,服务端改为在机器上自动作为单一后台进程运行,TUI、网页界面和桌面应用都连接同一进程,@opencode/client 可自动发现本地服务。
OpenCode 2.0 是一次 重大 全面 革新。 它 汲取 了 数百万 每日 用户 的 经验 , 打造 出 一个 能够 灵活 适应 智能体 所需 一切 的 系统。 其中 有 相当 多 的 新 功能、 性能 提升 和 错误 修复 , 但 这里 列出 一些 影响 较大 的 面向 用户 的 变更。
服务
从一开始 OpenCode 就 采用 了 客户端/服务器 模型。 然而, 这 并 不是 它 默认 利用 的 功能, 而且 主要 由 高级 用户 使用。
在 2.0 中, 该 服务器 现在 会 自动 作为 一个 后台 进程 在 你的 机器上 运行。 当 你 打开 一个 TUI、 Web 界面 或 桌面 应用 时, 它们 都 在 与 同一个 中央 进程 通信。
opencodepid 48213运行中
会话
修复不稳定的测试
添加深色模式
审查更改
如果你 使用 编程 客户端 @opencode/client 来 编写 你自己的 脚本 它们 会 自动发现 本地 服务 并 直接 工作。 这 对于 定时 任务 尤其 有用。 你 也 可以 通过 CLI 使用 opencode api 命令 来 调用它。
你 可以 将 它 暴露 给 其他 主机 并 运行 /pair 或 opencode pair 来 将 它 连接 到 其他 应用程序。 我们 正在 开发 原生 应用 以 利用 这一 流程。
API
旧的 API 随着 我们 和 世界 共同 了解到 agent 是什么 以及 应该 是什么 而 杂乱无章地 增长 。 它 很 糟糕。
我们 从 零 开始 , 审视 了 每天 使用 OpenCode 的 数百万 用户 中 所有 奇奇怪怪的 用例 。 它 现在 支持 几乎 任何 你 需要 能够 做到 的 事情。
OpenCode 也 了解 自己 的 API, 并 会 调用 它 来 做 一些 有用的 事情, 比如 在 开始 新 工作 时 将 当前 会话 移入 一个 git 工作树。
会话新会话
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 端点 , 将 它们 转换 为 智能体 可以 在 脚本中 调用的 函数 。 它 可以 原生 运行 这些 脚本 , 无需 NodeJS 虚拟机 的 复杂性 , 也 无需 像 QuickJS 这样 复杂的 嵌入 方案 。
这 让 你的 agent 能够 编写 脚本 来 执行 诸如 调用 一个 工具、 对 结果 进行 映射 并 调用 另一个 工具 之类的 操作。 只需 单次 往返 , 而 无需 一次 调用 一个。
2.0 中的 所有 MCP 服务器 默认 启用 代码模式 。 这 意味着 你 可以 添加 上千个 服务器 而 几乎 不会 造成 上下文 膨胀 , 你的 agent 会 自动 发现 并 组合 它们 来 完成 任务。
后台任务
最新 一批 模型 在 编排 方面 表现 极其 出色 , 因此 让 测试框架 允许 它们 充分 发挥 这种 能力 至关重要。
会话
背景
首先, 我们 重新 加入了 后台 子代理。 这 使得 主 代理 可以 将 一些 工作 交给 另一个 代理 启动 , 同时 自己 继续 运行。
这会 自动 发生 , 但你 也 可以 手动 触发 它 - 甚至 可以 使用 不同 的 模型。 它 让 你 可以 做 一些 事情, 比如 “生成 一个 后台 fable 子代理 来 审查 这段 代码” , 同时 你 继续 输入提示。
其次, 我们 添加了 后台 shell 命令。 shell 工具 可以 异步 调用, 因此 长时间 运行的 工作 不必 阻塞 主 代理。 当 任务 完成 时, 它 会 收到 通知。
如果 任何 前台shell 命令 或 子代理 耗时 超过 你的 预期, 你 可以 按下 一个 热键 将 它们 移到 后台, 这样 你 就 可以 继续 输入提示。
插件
虽然 OpenCode 1.0 有 一个 插件 系统 它 从未 得到 它 需要的 关注。 为了 纠正 这一点, 我们 强迫 我们自己 去 实现 几乎 每一个 OpenCode 2.0 功能 作为 一个 内部 插件 并且 现在 有 80+ 个 它们。 这 保证 了 插件 API 保持 良好 维护。
我们 还 将 TUI 插件 从 实验性 提升 为 稳定版。 由于 它 完全 由 OpenTUI 驱动, 你 几乎 可以 构建 任何 东西。 下面 是 一个 没什么 用 的 示例。
我们 还 花了 相当 多 时间 确保 OpenCode 2.0 中 的 一切 都 可以 热重载。 因此 它 可以 在 会话 中途 为 自己 编写 一个 插件 并 立即 使用 它 - 我们 在 一篇 之前的博客文章 中 介绍了 这 一 设计。
你 可以 让 OpenCode 构建 任何 你 想要 的 插件, 它 知道 该 怎么 做, 但 如果 你 确实 想 阅读 文档, 它们 可以 在 这里 找到
The SDK
OpenCode 现在 也 可以 通过 @opencode/sdk 包 作为 库 使用 。 这 正是 驱动 我们 CLI 的 同一套 代码 。
这 意味着 你 可以 对 其 进行 精简 , 打造 你 自己 的 OpenCode 版本 , 让 它 运行 在 服务器 上 , 或 运行 在 Durable Objects 这样 的 专用 环境 中 。 然后 , 你 可以 从 任何 OpenCode 客户端 连接 到 它 , 因为 它 使用 标准 的 OpenCode 服务器 协议 。
它 还 有 一个 可选的 基于 Effect 的 API。
这个 仍 处于 开发 中 ,因为 情况 还在 变化 ,但 你 可以 已经使用它。
升级
要 升级 CLI, 请 确保 你 使用 最新的 1.x 版本, 然后 运行 opencode upgrade --major。
要 升级 你的 桌面 应用, 请 在 此处 下载最新版本。
有 一些 破坏性 变更。
1.0 插件 将 无法 在 2.0 中工作
服务器 API 完全 不同
tui.json 配置 已 移至 json
还有 很多 其他 变更 ,但 它们 是 向后 兼容的。 值得 让 OpenCode 参考 这份文档 ,这样 它 就 可以 为你 迁移 相关 内容。
来源:Hacker News · anoma.ly