跳到正文
Hacker News· bovermyer·· 7 天前AI 评分74

OpenCode 2.0 发布:服务端常驻、Code Mode 与后台任务

OpenCode 2.0

AI 导读

OpenCode 2.0 发布,服务端改为在机器上自动作为单一后台进程运行,TUI、网页界面和桌面应用都连接同一进程,@opencode/client 可自动发现本地服务。

正文 · AI 翻译

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

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 端点 , 将 它们 转换 为 智能体 可以 在 脚本中 调用的 函数 。 它 可以 原生 运行 这些 脚本 , 无需 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