跳到主要内容

25 篇博文 含有标签「OpenCode」

查看所有标签

OpenCode v1.17.8 发布 —— 会话时间线不闪了,MCP 兼容性全面补强

· 阅读需 3 分钟

这两个是 v1.17.8 最值得关注的。剩下的修复集中在 MCP 边角场景——超时续命、错误文本透传、OAuth 服务器收尾,每一处都是真实踩过的坑。

OpenCode v1.17.8 封面

会话时间线终于"稳了"

打开一个长会话的时间线,偶尔会先看到一个空白或混乱的布局,然后整个列表"跳"一下才恢复正常。滚动位置自动弹回顶部,想接着看只能重新滚。

根因是时间线组件在数据未就绪时先渲染了一次"准状态",数据到了又重排一次。v1.17.8 改为数据到位后再统一渲染,体验平滑了很多。

OpenAI 兼容 provider 终于能用 MCP 工具

OpenAI 兼容的 provider(vLLM、Together AI、Fireworks AI)接入某些 MCP 工具时,卡在 schema 校验这一步。工具明明没问题,provider 就是不认。

原因是 MCP 工具 schema 的格式和 OpenAI 兼容 API 预期的格式存在差异,之前 OpenCode 没有做适配。现在能正确接受 MCP 工具 schema 并完成调用了。

MCP 基础能力巩固

Cloudflare AI Gateway 终于能收到正确的 API key:之前配好了 key,实际请求中传过去的却是另一个值,一直 401。

无属性声明的 MCP 工具不再被拒:某些 MCP 工具 schema 里不声明 properties,一些严谨的 provider 会直接拒绝。现在能正确处理。

长任务 MCP 工具 timeout 自动续命:MCP 工具执行时间长,之前被默认超时掐断。现在工具报告进度时会自动续命。

MCP OAuth 回调服务器执行完毕即停:OAuth 授权流程走完后,回调服务器不再赖在后台占用端口。

MCP 工具失败能显示真实错误文本:之前统一显示"tool call failed",现在服务端的错误文本会直接透传。

MCP OAuth 错误页面的转义问题修复:OAuth 错误文本含特殊字符时,页面不再错乱。

Desktop 体验优化

新增 Home 标签切换:v2 布局下,可以在 Home 和上一个标签页之间快速切换。

文件选择器升级:新的桌面文件/文件夹选择器更快、更好操作。

升级方式:

curl -fsSL https://opencode.ai/install | bash
npm i -g opencode-ai@latest
brew install anomalyco/tap/opencode
brew install opencode
scoop install opencode
choco install opencode

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#OpenCode #版本更新 #AI写代码的小任 #LLM更新报告

OpenCode v1.17.7 发布 —— 修了几处「我以为」的 bug

· 阅读需 4 分钟

折腾了大半天,最后发现是插件客户端默认硬编码了 local port,而我的 MCP 服务跑在另一个端口上——它根本没去问当前活跃的 server 实例,而是自顾自地去连接预设的默认端口。

这种情况在开发工具里太常见了。不是功能设计有问题,只是一个「我以为端口就是这个」的小假设,就能浪费开发者几个小时。OpenCode 最新发布的 v1.17.7,刚好集中清理了这样几处「我以为」。

插件客户端不再「想当然」

之前的 Bug 很典型:插件发起请求时,默认指向 localhost 的标准端口,而不检查当前会话中实际在跑哪个 server。如果你的服务没有跑在那个默认端口,请求就直接掉进黑洞。v1.17.7 的第一个修复,就是让插件客户端复用当前活跃的 server 实例,不再做端口假设。

另一个小但扎手的细节:ACP(AI 命令协议)shell 工具的调用,以前等执行完了才展示命令和目录信息。新版本从启动那一刻就显示 working directory 和执行命令,调试体验直观得多。插件提供的 shell 环境变量现在也能正确应用到 PTY(伪终端)会话里了。

MCP 服务端终于知道自己在哪个项目里

MCP 是 OpenCode 连接外部工具的核心协议。之前 MCP 服务器启动后,对自己服务的项目工作区一无所知——它只能看到自己的进程上下文,无法感知当前打开的是哪个仓库、哪个目录。

v1.17.7 让 MCP 服务端可以接收当前工作区作为 client root。这意味着什么?你可以在 MCP 工具里直接操作项目文件、读取项目配置,而不用在工具内部再拼一遍路径。这种感知能力,是让 MCP 从「能连」变成「好用」的关键一步。

桌面端的会话隔离

如果你用过 OpenCode Desktop 的多会话功能,可能会遇到过这种情况:新建一个对话,结果提示和状态莫名其妙指向了之前的会话。问题出在新 session 的路由没有绑定到自己的 draft server(草稿服务器),导致多个会话共享同一份上下文。

v1.17.7 把桌面端新 session 的路由 scoped 到自己的 draft server 上,每个会话的 prompts 和状态只影响自己的工作区。这个修复不显眼,但能避免很多隐性的数据污染。

SDK(软件开发工具包)的感知能力升级

SDK 层面的两个改进方向一致:让客户端对变化更敏感。集成配置发生变化时,SDK 客户端会自动刷新 model 和 provider 的可用列表,不再需要手动重启。credential 的更新和删除也支持了 location 参数——你可以更精确地指定操作哪个位置的凭据,而不是一股脑全部更新。

完整更新日志:GitHub Release

整体来看,v1.17.7 是一个「小修复、大影响」的版本。六个改动没有一个是新功能,全部是在打磨那些「我以为它会这样工作」的边界情况。做工具的人常说「细节决定体验」,这版本就是对这句话的最好注脚。

想要升级的,选一个顺手的方式就行:

# npm
npm i -g opencode-ai@latest

# YOLO 脚本
curl -fsSL https://opencode.ai/install | bash

# 或者 bun / pnpm / yarn
bun i -g opencode-ai@latest
pnpm i -g opencode-ai@latest
yarn global add opencode-ai@latest

📢 关注我,获取最新开源更新日志和开发者工具动态。

#OpenCode #MCP #AI编程 #开发者工具 #开源更新

OpenCode v1.17 发布 —— Snowflake OAuth、MCP 全面加固、桌面端色彩翻新

· 阅读需 4 分钟

OpenCode v1.17 封面

Snowflake Cortex Provider + 外部浏览器 OAuth

Snowflake 的 Cortex AI 服务不是那种"装上就能用的"provider——它需要 Snowflake 账号、Warehouse、外部浏览器认证。之前用户要手工处理 token,现在 OpenCode 内置了外部浏览器 OAuth 流程。生成登陆链接、弹出浏览器、回调接收、token 存储,全自动化,第一次看到这个配置链完成闭环的用户应该能感受到——终于不用在终端里粘贴那个 300 字符的 token 了。

这个功能由社区贡献者 @santigc6 实现(有趣的是,社区 PR 直连 Snowflake 认证体系这事,比很多大厂自己的工具链做得还快)。

MCP 全面加固:session、兼容性、结构化输出

v1.17.5 + v1.17.6 改了三层 MCP 问题。

Expired session 自动恢复。 MCP server 断开一段时间后重新连接,之前的连接状态已经过期,但 OpenCode 没用主动重建 session,导致「连上了但拿不到 tool」的半死不活状态。现在 expired session 会被自动恢复,MCP tools 不会因为 session 过期而静默断连。

已关闭 MCP client 的清理。 更隐蔽的问题:MCP server 被用户手动关闭后,client 侧残留的引用未清除,下次工具自动发现时会把已关闭的 server 重新拉出来,造成悬挂引用。现在 closed client 会被正确清理。

结构化 tool 输出可读了。 MCP tool 返回的数据之前是原始 JSON 堆成一坨在终端里。现在把结构化输出格式化了一下,肉眼能看懂结果了。对于调试 MCP server 的人来说,这个比 session 恢复还刚需——否则你连 server 返回了什么错误信息都看不懂。

v1.17.6:声明 client capabilities。 最后一个补丁看似简单——声明 OpenCode 支持哪些 MCP client capabilities。但这一步其实挺关键:之前 MCP server 不知道 OpenCode 能处理什么(sampling?roots?),只能走最小公分母功能。现在 Server 可以按 capabilities 表优化功能展示,意味着未来 samplings、roots 这类高级 MCP 特性可以按 server 能力逐级开放。

一起修的还有: 修复了 TUI 渲染中因 duplicate renderable IDs 导致页面错位的问题;$ARGUMENTS 中文件内容不再被重复注入两次(由 @verdverm 报告——这个 bug 在不同命令里潜伏了很久,因为只在特定参数组合下才触发)。

桌面端:oc-2 色彩、resize 体验、标签栏溢出

v1.17.5 给桌面端带来了三个值得展开的细节。

oc-2 色彩主题翻新(@arvsrn)。 之前 oc-2 主题的配色在长时编辑中容易视觉疲劳——高对比色块面积偏大、终端输出区域的背景色跟代码区拉不开层级。新版本调整了整个 palette 的饱和度和明度差,让不同信息区域的视觉层级更清晰。如果你日常用桌面版超过 2 小时,应该能感觉到不那么刺眼了。

Terminal resize gutter 更容易拖拽了。 桌面端的终端区域分割线之前只有 1px 宽,鼠标命中区域太小,拖拽分屏时要精确对准那一条线。现在 gutter 区域加宽了,不需要「瞄半秒才点中」。一个小细节,但如果你是横向分屏开两个 terminal 的开发者,每调一次分屏比例就知道这个改动的价值。

标题栏标签溢出不截断,改淡出。 打开几十个 tab 的开发者应该遇到过:标签太多的时候,超出标题栏的部分会被直接裁剪——文字从一半断开,没了下文。现在溢出部分改用渐变淡出,看起来是信息完整但被虚化收尾,比一刀切开要自然得多。视觉效果上更接近浏览器标签页的处理方式。

升级

# 已安装用户
opencode update

# 首次安装
npm i -g opencode-ai@latest
brew install anomalyco/tap/opencode

⚠️ npm 包与 GitHub Release 可能有短暂延迟,运行 opencode --version 确认版本号。

完整更新日志:GitHub Release v1.17.5 · v1.17.6

📢 关注我,获取最新开源更新日志和开发者工具动态。

#OpenCode #AI编程 #MCP协议 #开发者工具

OpenCode v1.17.4 发布 —— MCP 的成熟之路:从可用到可靠

· 阅读需 6 分钟

OpenCode v1.17.4 封面

之前:MCP 的「能用」妥协

在 v1.17.4 之前,用 opencode 跑本地 MCP server 有不少暗坑。

本地 server 启动目录不可控。 你在一个 monorepo 里配了 MCP server,它实际启动时用的是 opencode 进程的 cwd,而不是你 workspace 的根目录——意味着 server 里所有相对路径引用都可能是错的。解决方式要么在配置里写死绝对路径(不可移植),要么在启动前手动 cd 到正确目录(不可脚本化)。

认证头被静默丢弃。 MCP server 配置了 auth headers,但某些 debug 请求和认证流程中这些 headers 被无声地丢掉了。你在日志里看到「401 Unauthorized」,排查半天发现自己明明配好了 token——实际上 token 根本没发出去。

Catalog 超时形同虚设。 MCP catalog 的请求超时配置是存在的,但当 server 列出 prompts、resources 或 tools 时,这个超时并不生效。如果你的 MCP server 在 catalog 响应上特别慢(比如需要远程拉取动态工具列表),就会陷入无上限的等待。

快照创建在大仓库上如龟速。 每次创建 session 快照时,opencode 都会重新哈希仓库里的所有文件。几百个文件还好,几万个文件的 monorepo 上,一次快照能跑十几秒——如果你频繁切换 session,每天浪费在快照上的等待时间能累计到好几分钟。

内容过滤错误被吞掉。 模型因为安全策略拒绝回复时,你看到的是空白 response,没有任何错误信息。你不知道是模型崩了、网络断了、还是内容被 filter 了。排查方向一片漆黑。

现在:逐一填补,MCP 走向可靠

v1.17.4 的改进恰好对应了上面那些裂缝。

本地 MCP server 有了 cwd 支持。 现在你可以为每个 local MCP server 指定 cwd,让它从 workspace 相对目录启动。所有相对路径引用从 server 视角看都是正确的,配置也可以移植。个人觉得这是本次最有「工程味」的改进——它没有新增任何炫目功能,而是把一个隐含的假设(cwd == opencode 进程目录)改成了显式的配置项。这个假设之前是对的,但只在单项目场景下成立;一旦进入 monorepo 或多 workspace 编排,它就悄悄变成了 bug。

认证流程有了正式架构。 新增的 connector-based 认证流和 provider 凭据存储,给 MCP 认证提供了一个统一框架。之前 token 的管理方式是「各 server 自己想办法」——有写在环境变量里的、有硬编码在配置文件里的、有塞在启动脚本里的。现在 opencode 提供了存储和管理凭据的入口。同样重要的是,MCP auth headers 不再被 debug 请求丢弃——那条排查链路修通了。

Catalog 超时终于生效。 MCP catalog 请求的 timeout 配置现在会正确应用到 prompt、resource 和 tool 的列表请求上。如果你的 MCP server 在 catalog 响应上停顿,opencode 会在超时后干净地取消请求,而不是死等。这个修复和一个更隐含的问题有关:之前 timeout 配置「存在但不生效」的状态比没有 timeout 更糟糕——它会让你以为有防御机制,实际上毫无保护。

快照复用 Git 对象,大仓库不卡了。 这是本次我最欣赏的优化方向。Git 已经为每个对象算过哈希了——为什么快照还要重算一遍?v1.17.4 的做法是复用 source Git 对象,避免重复哈希。这个变化在中小仓库上几乎无感,但在几万文件的 monorepo 上,快照创建时间从十几秒降到一两秒。session 启动流程终于不再是「伸个懒腰等它好」的状态,而是「刚切过来就已经就绪」。

内容过滤错误不再沉默。 被安全策略拦截的模型响应现在会以可见的错误形式呈现,而不是静默吞掉。这个改动看着小,但对排查效率的提升很直接——之前遇到模型拒绝回复,你得怀疑模型本身、网络层、token 配额、prompt 触发 filter 四个方向,现在错误告诉你「被 content filter 拦截了」。虽然结果都一样是没输出,但至少你知道下一步该调整 prompt 而不是重启网络。

API v2 的雏形

v1.17.4 还新增了 v2 API 端点:创建和查询 session、列出 session 问题、解析 active location。表面上是给 SDK 客户端准备的,实际上这是一步基础设施搭建——openCode 之前操作 session 的能力分散在 TUI、桌面和 CLI 各自实现里,没有统一的 API 接口。v2 端点的出现意味着第三方集成(CI 流程、自定义前端、监控面板)有了正式的对接入口,不再需要绕过内部接口。

同批还修复了文件读取的 content type——API 和 SDK 客户端现在能拿到正确的原始内容和 MIME 类型,这对于在自定义前端里渲染文件内容而言是基础性修复。

Gemini 工具兼容与生态修复

v1.17.4 修复了 Gemini 工具 schema 中多类型字段导致的兼容问题。如果你在用 Gemini 模型并配置了 MCP tools,之前某些工具会因为 schema 格式不被兼容而过早崩溃。这个修复让 Gemini 用户的 MCP 工具调用回归了正常——不需要改配、不需要降级,升级即可。

升级方式

# 一键安装(推荐)
curl -fsSL https://opencode.ai/install | bash

# npm
npm i -g opencode-ai@latest

# Homebrew
brew install anomalyco/tap/opencode

# Windows
scoop install opencode
choco install opencode

# Arch Linux
sudo pacman -S opencode

# 也支持 brew 直接安装
brew install opencode

一个版本没有新增任何一个炫目功能,却可能是 MCP 在 opencode 上「真正可用」的转折点。cwd 支持、认证流集成、超时修复、快照复用、错误可见——每一条都是之前体验中的隐性摩擦。v1.17.4 没有发明新东西,它只是把这些摩擦逐个清除了。

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#OpenCode #MCP #AI编程 #快照优化 #开发者工具

opencode v1.17 发布 —— 引用描述嵌入、MCP 超时感知、桌面新会话流

· 阅读需 6 分钟

2026 年 6 月 10 日,opencode 在 7 小时内连发 v1.17.1、v1.17.2、v1.17.3 三个补丁版。v1.17.3 只有一句话——修了桌面端崩溃。这个节奏看起来像追赶型发布,但翻一遍 changelog 会发现:不是翻车,是一次有层次感的集中修复。以下按"三次修复,三个层次"来拆。

opencode v1.17 封面

第一发:Core 层的痛点修补

References 终于能告诉 agent 该怎么用。 之前你在 opencode 里引用一个文件(比如 tsconfig.json),agent 只知道"这里有这个文件",但不知道这个文件的用途——是构建配置、是接口定义、还是业务逻辑入口。v1.17.1 允许在引用时附带一段 usage description,agent 看到引用后能理解"这个 tsconfig.json 是用来合并 monorepo 子包的路径别名"而不是"一堆编译选项"。这在我看是把 references 从"静态文件指针"变成了"语义上下文"——一个小改动,但 agent 的决策质量会上一个台阶。另外,这些 description 会出现在新文档中,也可以选择不对 @ 自动补全暴露,避免把不常用的内部引用塞进每个人的补全面板。

MCP 超时从硬编码变成了可配置。 MCP 的 prompt 和 resource 请求之前没有超时兜底——外部 MCP 服务器如果响应慢,opencode 就死等。现在你可以为每个 MCP server 单独配置超时时间,超时后请求会被干净地取消而不是挂死。这背后有一个心态转变:之前 opencode 对 MCP 的假设是"server 永远在线、永远快",现在开始承认外部服务会慢、会卡、会超时,并且把这个防御性编程的决策权交给了开发者。同一批还修了 MCP 客户端初始化失败时的行为——之前失败的 server 会留下一根半死不活的连接,现在会干净地失败并释放资源。

Subagent 权限恢复了。 v1.17.0 改动了权限系统,但把一个细节漏了:subagent 不再使用自己配置的权限集,而是默认降级到主 agent 的权限——这意味着你给 subagent 单独配的精细化权限(比如"只能读 /src 目录")永远不生效。v1.17.2 把这个修了回来。Subagent 自主权限是多 agent 编排的基石,一个补丁就把它弄丢,说明这块功能的回归测试还有缺口,但修了就是好的。

第二发:Desktop 层的体验拼图

新会话流有了独立入口。 桌面端新增 /new-session 路由,这不止是一条新 URL。它的核心设计是 draft tab——在你选好 project 和输入 prompt 之后,这些信息被绑定在同一个 draft 里,直到你主动启动 session。之前用户最常见的误操作是:在新建 session 时选好 project,切了某个 tab 看文件,回来就忘了刚才选的是哪个 project,不得不重来一次。"绑定"机制看似简单,但切中了一个真实痛点——session 编排中的上下文丢失。

Linux 桌面用户不再被排挤。 v1.17.2 修复了 Linux launcher 和图标身份——pinned 应用在重启 dock 后能正确打开 opencode 桌面端。这听起来是个小细节,但对依赖 Linux 桌面工作流的开发者来说,launcher 图标指向一个假入口等于整个桌面版不可用。同一批还恢复了设备附件选择器(device attachment picker),手机/平板的文件传输场景不再走不通。

macOS 自动更新回来了。 v1.17.1 恢复了 macOS 上的自动更新。之前 macOS 用户每次升级都得手动下载 dmg 重新安装,现在回到了开箱即用的体验。这个功能在 v1.17.0 的某个改动中丢失了,两个补丁后才找回来——依赖分发基础设施的团队,建议时刻关注 auto-update 的回归情况。

第三发:企业 & 集成层的合规修复

Remote config 过期不再卡死。 如果 opencode 团队使用远程配置(enterprise 场景下常见),之前配置 auth 过期后工具直接卡在"加载配置"阶段,不会提示你重新登录。v1.17.2 的行为改为检测到过期 session 后弹登录提示,登录成功后继续加载配置。这个场景在个人开发者身上很少见,但 10 人以上的团队大概率会遇到——远程配置过期后全员卡死,半小时后才发现是认证问题。

Anthropic 回退响应也修了。 v1.17.1 修复了 Anthropic fallback 响应的处理回归。对于配置了多模型 fallback 链的用户(比如 Opus → Sonnet → Haiku),fallback 触发后返回的响应曾经被错误解析,导致 session 中断。这种级联场景下的 bug 最难排查——你只会看到一个模糊的"response error",要翻三层日志才能定位到是 fallback 处理链的问题。

废弃的 reference 键兼容读取。 deprecated 的 reference 配置项会被自动读取到新的 references 键下。我在乎的不是向后兼容本身,而是 opencode 团队在这个过渡期选择不破坏已有配置——很多 monorepo 入门的用户还在用 reference 配置了几十上百个文件路径,强迫他们一次性迁移既不现实也不友好。

升级方式

# YOLO (推荐)
curl -fsSL https://opencode.ai/install | bash

# npm
npm i -g opencode-ai@latest

# Homebrew (推荐,always up to date)
brew install anomalyco/tap/opencode

# Snap/Scoop/Choco/Arch等
scoop install opencode
choco install opencode
sudo pacman -S opencode

# Desktop App (BETA) - 从 releases 下载

7 小时内 3 个版本,不是翻车,是一次按影响面顺序执行的集中修复。Core 层补了 references 语义化和 MCP 超时防御,Desktop 层填了多平台的体验坑,企业层修了认证退化和配置兼容。v1.17.3 虽然只有一句话(桌面端崩溃),但它是 1.17.2 发布后发现的热修复,说明团队对 desktop 质量问题保持了实时跟进。

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#opencode #AI编程 #MCP #桌面新会话 #References

opencode v1.17.0 发布 —— 社区 11 人,搜索加速,桌面 WSL 落地

· 阅读需 5 分钟

opencode v1.17.0 封面

以前:局限在哪

文件搜索像在沙子里找针。 opencode 之前的搜索基于 fzf 和 ripgrep,中小项目上体验顺畅,但一进入几千文件的 monorepo,每次敲完关键词总要等几秒才能看到结果。不是工具不好,是缺一个为"极速走读"而优化的底层引擎——fzf 是通用模糊查找,rg 是通用文本搜索,都不是为"人在终端里,需要瞬间跳转"这个场景定制。

Windows 用户被隔离在桌面主力体验之外。 虽然 opencode TUI 在终端里表现不错,但桌面版在 Windows 上的体验始终差一截——无法原生读写 WSL 文件系统,服务器管理得靠手动操作。很多 Windows 开发者要么放弃桌面版退回纯终端,要么干脆换别的工具。opencode 的生态就因此丢了一整批用户。

MCP 集成像个半成品。 MCP 在 opencode 里存在已久,但粗糙:连接失败抛一个笼统的错误文案、工具调用取消有时卡住、Catalogs 超过一屏被悄悄截断。开发者排查全靠猜,依赖 MCP 的深度使用场景基本没戏。

现在:改进在哪、为什么重要

FFF 驱动,搜索不再等。 fff 是专为终端模糊搜索设计的 C 语言工具,速度接近即时。opencode 用它替换了原有的搜索后端,核心变化不在算法层面,而是"你输入关键词的手还没离开键盘,结果已经列好了"。对 monorepo 里的开发者来说,这省下的不只有等待时间,更是保持心流的连续性——每次搜索打断的成本比你想象的高得多。一个容易被忽略的细节:fff 的匹配策略偏向"直觉对齐",你只记得文件名里的两三个片段也能被精准召回,这比纯正则或通配匹配在流式操作中友好太多了。

WSL 桌面落地,Windows 不再是二等公民。 v1.17.0 的桌面版新增了 WSL 后端支持和服务管理面板。Windows 用户现在可以在 WSL 里运行 opencode 后端,桌面 UI 直接挂载到 Linux 子系统的文件系统上操作。之前 Windows 开发者需要在 Win 版工具和 WSL 环境之间反复横跳,现在 opencode 桌面帮你架好了桥。这次还一并升级了 Electron 并修复了面板布局,底层的 Electron 版本跃迁直接带来了更稳定的渲染表现和更少的诡异白屏——这种依赖升级在 changelog 里看着不起眼,实际使用中却能消掉不少隐性痛点。

MCP 体验补齐了最后几块拼图。 v1.17.0 中 MCP 相关的 bugfix 数量可能是各模块中最多的:连接状态文案修订、abort 信号传递、Catalog 分页、服务器能力协商。单看每一项都是小修小补,但合在一起说明了一件事——opencode 对 MCP 的态度从"能用就行"变成了"可靠优先"。Catalogs 不再截断大列表,意味着大型 MCP 市场或企业私有 registry 的全量列举不再出错;MCP 工具调用带上了 abort 信号,意味着 Cancel 一个正在执行的 MCP 操作时不会再等 30 秒才响应。这些体验细节堆积起来,才让 MCP 从"附加功能"真正变成"日常可用功能"。

Session 的生存能力更强了。 之前 session 遇到 provider context-overflow 错误直接崩溃,现在能自动恢复一次再放弃。这不是什么华而不实的功能,但写过长对话的人都知道——写到一半被 LLM 的 token 限制踢出 session 有多崩溃。opencode 给了你一次缓冲,多了一次抢救的机会。

其他值得关注的变化

  • Session 移动流程改进——TUI 里移 session 时更清晰地在哪个 project copy 间切换,而且可以直接从移动对话框里删除 copy,少了一次无谓的点击操作。
  • vLLM 的 reasoning 字段支持——自建 vLLM 推理服务的团队可以更灵活地在流式输出中展示思考过程,这对需要展示 CoT 的应用场景是个实惠的补充。
  • SDK v2 输出边界——大工具的输出现在有了上限,超标后保留输出路径供后续检查。乍看是个限制,实际上是在保护你免于被意外超长的工具输出搞崩 session。
  • Prompt 草稿保留——桌面端切 Tab 不丢输入框内容。这个功能在发布说明里看着简单,可惜很多桌面应用到今天还做不到。
  • Cohere North 模型支持 + MiniMax M3 thinking toggle——opencode 在模型适配层面持续扩展,不只是头部模型,中型厂商的优质模型也在接入名单上。

升级方式

# YOLO (推荐)
curl -fsSL https://opencode.ai/install | bash

# npm
npm i -g opencode-ai@latest

# Homebrew (推荐)
brew install anomalyco/tap/opencode

# Windows
scoop install opencode
choco install opencode

# Desktop App
brew install --cask opencode-desktop

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#opencode #AI编程 #搜索加速

OpenCode v1.16.2 发布 —— 子智能体还要在你的终端里排队等吗?

· 阅读需 4 分钟

OpenCode v1.16.2 封面

Snowflake Cortex:Provider 生态拼上了「数据平台」这一块

@kameshsampath 贡献的 Snowflake Cortex provider 是这次最有趣的新增。Snowflake Cortex AI 是 Snowflake 数据云上的模型服务层,提供 LLM 推理、向量嵌入、文本分析等能力。它的接入意味着:如果你本身就在 Snowflake 上做数据工程,现在不用离开平台就能在 coding agent 里调自家的模型——数据不用搬、环境不用换、权限可以复用。

这不是「又多了一个 provider」这种量级的事。过去一年 coding agent 的 Provider 扩展主要在「通用 API」路线上狂奔(Anthropic、OpenAI、Groq、Together),但企业场景里「数据在哪个平台,模型就在哪个平台调」是很实际的利益——省数据出口带宽、省同步延迟、可以走内部网络而不是公网。Snowflake Cortex 是第一个走这个方向的 Provider。

子智能体终于可以不堵车了

Running subagents can now be sent to the background. 一句话,但解决了一个实际场景。

之前 OpenCode 的子智能体不能后台化。你开了几个子 agent 并行调查,需要等待所有子 agent 结束才能继续主流程,而且子 agent 的输出会阻塞终端。现在直接扔到后台,主 agent 可以继续工作,子 agent 在后台独立完成任务——就像你一边开几个异步线程写报告,一边继续看下一封邮件。

这个改动我猜起源于 v1.16.0 的 reasoning 抽风式改进——当你同时跑多个子 agent 做 RAG 或代码分析时,串行等待是不可接受的。后台化是子智能体体系从「试验功能」走向「日常可用」的关键一步。

Diff 查看器支持逐段导航

Diff view 之前只能看完一整块 diff,现在支持 prev/next hunk 导航。改代码审查场景的体验很明显:review 大 PR 时不用手动滚屏定位每个改动块,点一下「下一段」就能逐段过。配合之前版本加的文件树 diff,OpenCode 的 TUI 代码审查能力已经逼近桌面 IDE 的体验水平。

🔧 修复按主题分

Provider 兼容性:Reasoning 摘要现在只会在支持它的 provider 上运行,修复了某些兼容后端(如 GPT-5 适配)上的请求失败。Bedrock session 启动后卡住的 bug 也一样修了(@alblez 贡献)。这两个 bug 的共同点是:换 provider 遇见怪问题。

编辑安全:Edit 操作现在拒绝可能误覆盖代码的模糊匹配,也不会错误替换已有文件。这直接关系到一个安全场景:agent 改代码时「你以为改的是 A 文件但实际上覆盖了 B 文件」——虽然概率不高,但真碰到一次就够影响几小时的心情的。

终端和外观:终端主题在 live reload 后不再残留旧色或高亮错位。外部编辑器 fallback 修复了 attach 模式下的路径处理(@pcadena-lila),Permission 回复现在走正确的 session 目录。/mo 命令在斜杠自动补全中优先显示 models 子命令。

桌面端:标签栏溢出不裁切了,滚动和拖拽区域也修了。改进的多服务器桌面支持让每个服务器有自己的 home state 和 session tab 隔离——一个复杂但用户感知度高的场景:如果你同时连多个远程服务器,之前标签页会混在一起,现在每个服务器的状态独立。

Session 系统上下文在长对话中也能持久更新了——这修复了长时间 session 中 agent 行为突然偏离预期的问题,因为系统提示词中途被改了但 session 没捕获到。

全版本升级命令(已有 opencode 用户用 npm i -g opencode-ai@latest升级,macOS 用户推荐 brew upgrade opencode):

npm i -g opencode-ai@latest
brew upgrade opencode

完整更新日志:OpenCode v1.16.2 GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边的开发者朋友。

#OpenCode #CodingAgent #Snowflake #MCP #AI编程 #开源

OpenCode v1.16.0 发布 —— Workspace 里的脏代码、桌面端的碎片功能、agent 启动太慢,这次全修了

· 阅读需 6 分钟

OpenCode v1.16.0 把这个问题分两层解决了。

OpenCode v1.16.0 封面

session 不再是「开了就焊死」的单行道

逻辑上,每个 OpenCode session 对应一个工作目录。之前如果你在一个目录下启动 session、改了半天的代码、又想在另一个目录下开新 session,两条路都不好走——关闭当前 session 再开新的会丢失 dirty 文件状态,新开一个终端又没法沿用前一个 session 的上下文。

v1.16.0 加了两项改动,合在一起才完整:第一,managed workspace cloning 会在 clone 时保留脏文件和 untracked 文件。第二,session 可以在 workspace 之间移动。两项不是单独的功能——它们解决的是同一个问题:agent 开发流的中间态(修改到一半的代码、跑了一半的测试)不应该成为切换上下文的障碍。

做法上也很直观:clone 出来的 workspace 就像 fork——保留所有当前工作状态,但指向一个新的目录。你在 clone 出来的 workspace 里继续改,原 workspace 的 dirty 内容不会丢失,也不会被覆盖。

桌面端不再只是「原生壳」

早期 OpenCode 的桌面端更多是 CLI 的一个原生包装。v1.16.0 这批改动表明桌面端开始有自己的功能主张了。

四项改动值得单独说:

Color themes(#30824)——不是 trivial 的调色板下线。桌面端的 Terminal UI 渲染路径跟纯 CLI 不一样,加主题支持意味着整个渲染管线的颜色映射层重构了。一位社区成员(arvsrn)完成了这项工作。

Thinking level selector for v2 prompts——v2 推理模型(如 Claude Sonnet 4.5、GPT-5 Reasoning)支持配置思考预算。之前只能在配置文件中写死,现在桌面端可以直接在 UI 里切换 thinking 级别。不是什么大功能,但推理模型用户每天都会用好几次,省了切出去改配置的功夫。

Servers tab in Settings——之前 MCP 服务器的管理分散在配置文件中。现在桌面端的设置里有一个单独的 Servers 页面,可以查看、启用、禁用已配置的 MCP 服务器。对跑多个 MCP server 的用户来说省事不少。

Update button(#30460)——桌面端之前版本更新要自己下载安装包重装。现在应用内加了一个更新按钮,检测到新版本后一键升级。到 1.16 才加这个,只能说桌面端的提醒策略偏保守了。

社区贡献者交出了两份成绩单

这个版本最亮眼的两个改动来自社区而非核心团队。

Startup time 提升 38%(#30453,StarpTech)。重构了 OpenCode 的冷启动路径,主要是懒加载了不必要的模块和延迟初始化了一些启动阶段用不到的服务端连接。38% 这个数字不小——如果你在 CI 环境或服务器上频繁拉起 OpenCode,每次能省两三秒。对终端会话来说,意味着你敲完一条复杂指令后等 agent 开始「思考」前的白屏时间更短了。

**Color themes(#30824,arvsrn)**前面说过了。这位社区作者同时做了多轮 UI 打磨(#29689、#30436、#30446),如果不是 PR 署名,这些改动看不出是社区提交的——风格和主线的统一性保持得不错,没有「插件感」。

不再遗漏的边角

AWS Bedrock 上的 OpenAI 支持。之前 Bedrock 主要支持 Anthropic 和 Meta 的模型,OpenAI 的接入不完整——你能连上,但推理参数没法透传。v1.16.0 的「proper OpenAI model support through Bedrock」意味着用 Bedrock 的团队现在可以把企业合规层和 OpenAI 模型全链路串起来了,不需要两套 API 来回切。

Skill discovery 和 file-based agent loading。以前 OpenCode 的 agent 配置要么写死在项目配置里,要么通过插件系统加载。现在你可以把 agent 定义写成文件丢在约定目录里,OpenCode 启动时自动发现。这意味着团队可以建一个 agent 配置仓库,成员 clone 过来直接用。对需要跨团队共享 agent 模板的场景来说是零门槛方案。

GitHub Copilot 用量跟踪改为基于 token 计费——跟上 OpenAI 和 GitHub 的 API 更新步伐。之前按请求次数统计,但 Copilot 换了计费模型,OpenCode 这边跟着修了。

修复合并

TUI 方面:实验性的 session switcher 交互有改进,侧边栏长文件路径开始截断显示,按 variant 快捷键时如果没配置 variant 会 toast 提示而不是静默无反应。后台任务 spinner 不会在进程结束后还卡在屏幕上不动。Question 的响应会正确路由到 session 目录而不是混进全局目录。

Desktop 方面:session review 的刷新和 VCS diff 缓存问题、更新提示在桌面端不可用时自动隐藏、标签页标题截断和关闭按钮错位。还有一条很实际的——project sessions 在路径同步完成之前就能显示(#30167,mhart),减少等待感。本地服务器启动失败时不再静默处理,改成应用内显示错误。

Core 方面:Vue 语法高亮终于加上了、ACP session replay 在加载已保存 session 时完整恢复(之前只恢复部分消息)、Shell 取消操作不再造成竞态、SAP AI Core 上 Anthropic Opus 4.7+ 的推理变体参数正确路由、OpenAI websocket session 不再因空闲状态卡住(这个 bug 的表现是:session 看上去在线,但 agent 永远不会响应新消息)。Windows 路径标准化、粘贴宽字符附近的 prompt 损坏。

升级

# 首次安装(推荐)
curl -fsSL https://opencode.ai/install | bash

# macOS(推荐,永远最新)
brew install anomalyco/tap/opencode

# npm
npm i -g opencode-ai@latest

# 其他方式
scoop install opencode # Windows
brew install opencode # macOS(官方法式,更新稍慢)
sudo pacman -S opencode # Arch Linux
mise use -g opencode # 多平台

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边用 OpenCode 的朋友。

#OpenCode #AI编程 #开发者工具 #Agent #开源

OpenCode 1.15.13 发布 —— thinking 框是空的?你的推理被网关拦截了

· 阅读需 3 分钟

你的判断是对的。v1.15.13 修的刚好就是这个。

OpenCode v1.15.13 封面

OpenCode 网关把你 thinking 吃了,自己还不知道

Anthropic Opus 4.7 的 adaptive reasoning 能根据问题复杂度自适应决定思考深度。简单问题浅思考,复杂问题推得深。这个功能对大模型编程来说很实用——不说废话,也不省推理。

但 OpenCode 的 Gateway 在把 Anthropic Messages API 响应转成内部格式时,把 Opus 4.7 返回的 thinking 块压缩成了空的片段。不是没有 thinking——模型确实推了,内容也确实回了——只是网关在协议转换层把 thinking 数据丢掉了,只给用户留了一个 HTML 空壳。

这个 bug 最难的地方在于:功能没断,API 没报错,response 正常返回, 只有 thinking 不见了。你拿 A/B 对比两组输出,才会发现区别。不是改换个 provider,也不是清缓存能解决的——是中间层把东西漏光了。

修法本身不复杂:保留 summarized thinking,网关不再丢弃它——之后 Opus 4.7+ 的推理过程能正常显示了。

配置加载路径:终于有确定性了

第二个修到点子的改进跟每个用自定义配置的人有关。

OpenCode 之前加载配置的方式不确定——全局配置和目录配置之间的优先级规则不够明确,你设了 opencode.json 项目配置,有时被全局覆盖,有时全局不生效。切换项目目录时 provider 策略的行为靠猜。

是一个路径查找优先级问题,只不过影响面广:目录配置、provider 策略、tool 权限,全依赖这个解析顺序。

v1.15.13 的改法是:配置从打开的目录位置向上查找,找到最近的 opencode.json 就停。目录级别的设置现在可以确定地覆盖上级配置。如果你不在多个项目间切换 OpenCode,这个改动对你无感——但如果你在不同项目目录里用不同的 model/provider 组合,修正后的行为很直观。

TUI 行对齐和错误详情展开

终端界面修了两个日常碰到最多的交互问题:

  • 内联工具结果行对齐:工具输出换行后,第二行和第一行的起始位置对不齐,整列工具的结果像歪楼。现在改了行包裹的对齐逻辑。

  • 工具失败时错误详情展开:如果某个内联工具执行出错,可以在原位置展开错误详情。之前你得翻日志或者重新跑一遍才知道具体哪里挂了。

会话元数据 API

SDK 和 API 现在支持给 session 附加自定义元数据了。对在 CI/CD 或自动化流程中集成 OpenCode 的人来说,可以有更多状态管理的可能性——打标签、关联 issue ID、标记上下文,然后按元数据检索历史会话。

升级:

npm i -g opencode-ai@latest
brew upgrade opencode

完整更新日志:GitHub Release

有时候一个空的 thinking 框比一个报错信息更让人头疼,因为前者一点也不像 bug。v1.15.13 就修这种——你不对比根本不知道丢了东西的 bug。

📢 关注我,获取最新开源更新日志和开发者工具动态。

#OpenCode #开发者工具 #AI编程 #Gateway #版本更新

OpenCode 1.15.12 发布 —— ACP 集成终于能发消息了,WebSocket 接入是个信号

· 阅读需 3 分钟

v1.15.12 修的就是这个。

OpenCode v1.15.12 封面

ACP-next:从「能通」到「能用」

ACP(Agent Communication Protocol)是 OpenCode 跟编辑器(VS Code、Zed、JetBrains)交换数据的一套协议。之前 ACP-next 版本已经能建立连接,但你只能用最简单的 prompt 交互。v1.15.12 把这个接口补完整了:现在 ACP-next 支持发送 slash 命令和接收使用状态更新,这不是什么炫酷的新功能,但它决定了你「能不能在编辑器里真正用 OpenCode 干活」。

同时开机的冷启动速度也优化了——第一次 session 的 acp-next 启动时间缩短,模型和配置的切换在「暖」状态下更快了。如果你每天都在编辑器里切模型,这个感受是直接的。

说实话,ACP 这层过去几个版本一直在「搭架子」,对用户来说感知不强。但从 v1.15.12 开始,你能在编辑器里做更多事了——而这对体验来说,比加几个新 provider 重要得多。

WebSocket:OpenAI Responses API 顺便也有了原生通道

另一个隐藏的大改动是 OpenAI WebSocket transport 支持。设 OPENCODE_EXPERIMENTAL_WEBSOCKETS=true 就能用 WebSocket 而非 HTTP SSE 来接收 streaming response。

这个改动对普通用户的意义不大——你感受不到背后的传输协议区别。但它传递了一个信号:OpenCode 在认真做两个方向的集成——一是 OpenAI Responses API(WebSocket 是前置条件),二是实时性更高的交互(agent 跑长任务时推送比轮询好得多)。自定义 base_url 也支持了(感谢 @Tarquinen),如果你用自建网关或第三方兼容端点,WebSocket 一样能通。

其他值得带一笔的修复

桌面端加了 Tab 布局切换设置,主屏空状态和字体问题也修了——Desktop v2 在持续打磨中,从「跑起来了」走向「用得舒服」的阶段。TUI 侧边修了会话导航不会被 prompt 弹窗挡住的问题,以及复用了之前丢了的 thinking spinner。

最后一处:密码里允许冒号了。如果你在代理配置或基础认证里用过带冒号的密码,之前会被 OpenCode 当成 URL 格式分隔符切掉(感谢 @neriousy)。这算是边缘用例,但遇到的人会记得。

升级:

npm update -g opencode-ai
brew upgrade opencode

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边的开发者朋友。

#OpenCode #开发者工具 #ACP协议 #Agent框架 #开源更新