大数跨境

OpenCode v2.2.6:脚本跑完才退出,MCP 连接可以共用了

OpenCode v2.2.6:脚本跑完才退出,MCP 连接可以共用了 创见AI实验室
2026-11-08
17
导读:OpenCode v2.2.6:脚本会等后台任务跑完才退出,MCP 池化让十个目录从十条连接、十份 3,765 工具列表缩到一条。
oc226-01-cover.png

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 子命令。

curl -fsSL https://opencode.ai/v2/install | bashnpm install -g @opencode/clibun install -g --trust @opencode/clibrew install anomalyco/tap/opencode-v2paru -S opencode-beta

升完用 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 扩展在各自编辑器的扩展商店里更新。

想把会话开在独立工作树、或直接归档,加参数:

opencode run -w "fix the failing test"opencode run --worktree=hotfix "fix it"opencode run --archived "review this diff"

-w 不能和 --continue、--session 一起用。CI 里的调用记得套一层超时,比如 timeout 10m opencode run ...。

要开 MCP 池化,在对应服务器配置里加一项:

{  "mcp": {    "cloudflare": {      "type": "remote",      "url": "https://mcp.cloudflare.com/mcp",      "pool": true    }  }}

其他开关按需开: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 跑脚本?

精选系列





【声明】内容源于网络
0
0
创见AI实验室
创见AI实验室,我们不只是介绍工具,我们共同创造工作方式的未来。
内容 242
粉丝 0
创见AI实验室 创见AI实验室,我们不只是介绍工具,我们共同创造工作方式的未来。
总阅读26.0k
粉丝0
内容242