跳到主要内容

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编程 #开发者工具 #开源更新