OpenCode v2.2.6 于 11 月 7 日 07:33 发布正式版(npm 推包时间,北京),latest 已指向它。距 v2.2.5 隔了七天,改动集中在脚本化运行和服务端边界。
这次更新了什么
脚本与自动化
- 脚本化会话可以直接开在独立的 git 工作树里,名字可自动生成也可指定;不能与续跑或指定会话同用
- 新增一种建好就藏起来的运行方式:会话建立即移入归档,不进收件箱、首页和会话列表,终端列表也隐藏、续跑时跳过
- 非交互运行会等后台 shell、子 agent 和图像任务出结果,让模型回应完才退出;等待时打印剩余任务数,JSON 格式有对应事件
- SIGTERM 现在会取消会话及其后台任务,并以 143 退出
- SDK 能按会话、后代、类型和状态列出后台任务
连接与模型
- MCP 服务器加池化开关后,配置相同的目录共享一条连接和一份工具列表
- 模型调用前最多等两秒仍在握手的 MCP;本地工作目录支持
~、兼容旧 stdio 服务器、动态注册会带上 logo - 会话预热可按供应商和模型分别设置,间隔支持按缓存 TTL 自动取值
- 桌面端 MCP 登录可在自动跳转不可用时粘贴回调地址
- Foundry Claude 模型支持 Azure Messages;Windows 上从 Microsoft Store 安装的 PowerShell 7 也能用了
插件与界面
- GUI 插件能注册配色主题、自定义代码块渲染与动作、使用原生设置和菜单组件,侧栏宽度可持久化
- 手机平板的输入区动作移到键盘上方的触控栏,按钮 44px
- 标签菜单加了「关闭其他 / 关闭右侧」,收件箱按未读分组、标签上显示失败运行
- Markdown 预览把 frontmatter 显示成属性列表;命令面板对七天以上的会话显示日期;提示历史最多留 200 条
- 终端设置里新增「发送后滚动」,选 Keep 可在提交后保留阅读位置
权限与安全
- 服务端的文件读取和媒体改为沙箱下载:附件头、禁嗅探、沙箱 CSP,HTML / JS / XML 按纯文本下发
- 跨站导航和来源不被允许的
/api/*请求会被拒绝 - 网页抓取与 Code Mode 的 fetch 拒绝带凭据的地址,权限匹配忽略片段标识,并逐跳校验重定向
- 会话移出当前项目前要先拿到外部目录权限
- 新增网页搜索策略动作和一次性打开全部实验开关的环境变量;Code Mode 的虚拟机执行路径默认关闭
另有一批修复:中文输入法组字时 Escape / Enter / Tab 不再打断、Ctrl+Z 能挂起、粘贴的图片不再因临时文件被删而失效、控制台配置请求等五秒就放弃、供应商主机不可达时重试、Cohere 断流可恢复。
脚本跑完才退出,这是行为变化
问题出在 shell 工具的约定上:它告诉模型把耗时任务丢到后台、结束当前回复,等命令跑完再被唤醒。在交互式会话里这套没问题,可非交互运行里没有留下能唤醒它的人——训练、测试套件、评测常常在模型看到结果之前进程就退了。
现在每次回复结束都会扫一遍整棵会话树:主会话、它的子 agent、子 agent 的子 agent,以及它们启动的后台 shell 和图像任务。还有任务在跑就继续等,任务完成 → 唤醒对应会话 → 模型回应 → 再查一遍,直到整棵树都空了才退出。
代价是它没有等待上限。 一个自己不会退出的任务(dev server、file watcher)会让这次运行一直挂着,只能手动中断。
十个目录,一条连接
一个 server 托管十个目录时,Cloudflare MCP 要开十条连接、存十份各含 3,765 个工具的列表;本地的 cua-driver 是十个进程、189 MB。以前每个目录各自连一次,和别的目录无关。
共享的键是这台服务器本身的配置。配置完全相同的目录合用一条连接;账号不同、参数不同的目录仍然各自一条。不加开关的行为和以前一模一样。
这台 server 上目录开得越多,差别越大;只跑单个目录的不用管。
怎么升
终端:官方页给了五条安装命令,重跑原来那条就是升级,没有单独的 update 子命令。
升完用 opencode --version 确认是 2.2.6。
桌面端:brew install --cask opencode-desktop,或去 https://opencode.ai/desktop 按平台下载(Windows x64 / ARM64、macOS Apple Silicon / Intel、Linux deb / rpm / AppImage)。IDE 扩展在各自编辑器的扩展商店里更新。
想把会话开在独立工作树、或直接归档,加参数:
-w 不能和 --continue、--session 一起用。CI 里的调用记得套一层超时,比如 timeout 10m opencode run ...。
要开 MCP 池化,在对应服务器配置里加一项:
其他开关按需开:session.submit_scroll: "keep" 是终端「发送后滚动」的 Keep 选项,会话预热间隔可以写 interval: "auto";experimental.codemode_vm: true(或 OPENCODE_FLAGS 里的同名开关)打开 Code Mode 字节码 VM,OPENCODE_FLAGS=all / experimental.all_flags 一次开全部。实验项默认都是关的。
自己起 opencode serve 并暴露到局域网或公网的,升级后先确认前端没有依赖同源读文件的旧行为。
我的判断
我准备先只升终端那台,桌面端留一周再跟上。你们那边是多项目共挂同一批 MCP,还是主要靠 CI 跑脚本?






