OpenCode 2.0已于今日正式发布,距离其公测版上线约三个月时间。此次大规模架构升级引入了一个共享后台服务,将终端、网页和桌面界面连接起来,同时重构了API,推出了新的可嵌入SDK,并支持在后台运行子智能体和执行shell命令。

这款开源编程智能体的开发公司Anomaly在周一发布的博客文章中将此次发布称为"重大改造",并表示该公司借鉴了"数百万日活用户"的使用经验,打造出一个更具适应性的系统,能够支撑不断扩展的智能体能力范围。

实际上,Anomaly过去几个月一直在迭代2.0版本,包括在9月发布了一篇详细的技术文章,介绍其重构后的插件架构和热重载能力。然而,这种拖沓的发布过程给开发者带来了一些困惑,他们不清楚2.0版本是否已正式稳定,并抱怨发布说明缺失,尽管更新一直在持续推出。

周一的公告,以及官方更新日志切换至2.x系列,实际上标志着2.0版本现已成为OpenCode的主要发行版。与此同时,该公司也对此次升级背后的技术决策进行了更为全面的说明。

OpenCode的发展历程

简单回顾一下,OpenCode的起源可以追溯到无服务器开发领域。Anomaly的创始人Jay V和Frank Wang此前曾创建了Serverless Stack(SST),这是一个用于在亚马逊云科技(AWS)上构建和部署应用程序的开源框架。OpenCode开发过程中的另一位重要人物Dax Raad,也曾是SST团队的一员。

自2025年首次亮相以来,OpenCode在希望对其编程工具所使用的AI模型拥有更大自主权的开发者群体中获得了狂热追随。这一点在1月份变得尤为突出,当时Anthropic开始阻止第三方智能体使用Claude Pro和Max订阅凭证,迫使受影响的开发者寻找其他方式访问Claude,或转向其他供应商。

正如Janakiram MSV在5月为The New Stack撰写的报道所述,这些限制措施恰逢人们对OpenCode兴趣激增之时,该工具允许开发者在相互竞争的AI模型之间自由切换。如今,OpenCode的GitHub代码仓库已累积超过21.2万个星标,近3万次分叉。

更广泛地看,这一类编程智能体正显示出日益增长的商业关注度。7月,Anaconda收购了Kilo,这是另一款允许开发者选择自己偏好的AI供应商的开源编程智能体。有趣的是,Kilo此前已经使用OpenCode重建了其命令行界面和VS Code扩展,这表明后者正在其他开发者工具中找到自己的角色。

借助2.0版本,Anomaly阐述了它如何重新设计OpenCode的底层架构,以适应更广泛的使用场景。可以说,其中最重要的变化在于编程智能体的运行方式,以及其不同界面与之连接的方式。

一个服务,多种界面

Anomaly表示,客户端/服务器架构的基础设施从一开始就存在于OpenCode中,不过除了少数高级用户外,很少有人特意去使用它。

在2.0版本中,服务器现在会作为单一后台进程在开发者的机器上自动启动,使OpenCode的终端、浏览器和桌面界面能够与同一底层服务进行通信。

这意味着开发者可以通过不同的界面访问和管理其编程会话,而由该服务来处理底层执行工作。使用OpenCode编程客户端构建的脚本也能够自动发现并连接到本地服务,这使其在定时任务中颇具实用性,同时开发者还可以将该服务暴露给其他机器,并与外部应用程序配合使用。

"开发者现在可以在OpenCode的终端界面中启动一个会话,然后通过桌面或网页应用继续处理该会话,同时让自己编写的脚本连接到同一底层服务。"

简而言之,开发者现在可以在OpenCode的终端界面中启动一个会话,然后通过桌面或网页应用继续处理该会话,同时让自己编写的脚本连接到同一底层服务。

伴随这些架构变化的,还有对OpenCode API的彻底重新设计,Anomaly坦承此前的API是在整个行业仍在摸索方向的过程中零散构建而成的。

该公司在博客文章中写道:"旧版API是在我们和整个行业共同摸索智能体应该是什么、能做什么的过程中杂乱生长起来的,它很糟糕。"

"旧版API是在我们和整个行业共同摸索智能体应该是什么、能做什么的过程中杂乱生长起来的,它很糟糕。"

因此,新版API赋予了智能体对自身运行环境更大的控制权。例如,它可以为新任务创建Git工作树,将现有会话转移到该工作树中,或识别并中断另一个已卡住的会话。开发者还可以通过新的@opencode/client软件包访问该API,该软件包支持标准JavaScript和Effect。

另一项新增功能是以@opencode/sdk形式发行的可嵌入SDK,允许开发者将OpenCode直接集成到自己的应用程序中。该公司指出,这套SDK使用了与OpenCode命令行工具相同的底层代码,使开发者能够为服务器或诸如Cloudflare Durable Objects之类的环境创建定制版本的智能体。

这些定制实现可以通过标准服务器协议与现有的OpenCode客户端进行通信,不过Anomaly表示该SDK仍在开发之中。

代码模式与后台执行

OpenCode 2.0还改变了智能体通过模型上下文协议(MCP)与外部工具交互的方式。

一项名为"代码模式"(Code Mode)的功能允许智能体编写JavaScript代码,在单次执行中调用多个工具并处理其结果。该功能围绕@opencode/codemode软件包中的一个轻量级JavaScript解释器构建,能将MCP服务器和OpenAPI端点转换为智能体可以编程调用的函数。

例如,一个智能体可以从GitHub获取错误报告,提取相关信息,并在Linear中创建相应的问题条目,而无需为每项操作单独进行一次模型往返调用。

这对于将智能体连接至大量外部服务的开发者而言,意义尤为重大,因为工具定义可能会占用模型可用上下文的大量份额。Anomaly正将代码模式设为2.0版本中所有MCP服务器的默认模式,认为这样能让大规模集成变得更加可行。

该公司写道:"这意味着你可以添加成百上千个(MCP服务器),而上下文膨胀却很小,你的智能体会自动发现并组合这些工具来完成任务。"

与此同时,OpenCode正在为子智能体和shell命令引入后台执行功能,使开发者能够在其他操作进行的同时,继续与主智能体进行交互。

例如,开发者可以将代码审查工作委派给一个运行不同AI模型的子智能体,同时继续处理主任务。同样,耗时较长的shell操作,比如运行测试或构建应用程序,也可以异步执行,完成后主智能体会收到通知。

开发者还可以使用键盘快捷键,将耗时超出预期的现有前台任务转移到后台执行。

此次发布的收尾部分是对OpenCode插件架构的改动。Anomaly表示,作为提升插件API可靠性和可维护性工作的一部分,公司已实现超过80个内部插件,涵盖了2.0版本中引入的大部分功能。

终端界面插件也已从实验性阶段升级为稳定版本,同时热重载功能的支持意味着OpenCode可以在活动会话期间创建并开始使用新插件,而无需重启。

不过,对于现有用户而言,此次升级也带来了一些兼容性方面的影响。为OpenCode 1.0开发的插件将无法在2.0版本中运行,而围绕先前服务器API构建的集成方案也需要进行更新。

现有的OpenCode 1.x用户可以通过在命令行中运行opencode upgrade --major,或在终端界面中输入/update命令,升级至2.0版本。根据10月11日的发布说明,更新不再自动安装,这意味着用户必须自行发起升级操作。

The New Stack