19 小时——这是 v1.18.1 到 v1.18.2 的距离。
我昨天才发《OpenCode v1.18 上线:v2 desktop 收官》(Opencode系列/2026-07-15),结果今天凌晨就收到 v1.18.2 的发布通知。点开一看,release notes 646 字符,8 项改动——但里面藏着 1 个真正的关键 PR。
这个 PR 解决了一个从 v1.17.20 就报上来的 bug:subagent 能无限递归开 subagent。
v1.18.2 是什么节奏
- v1.18.0:2026-07-14 20:29 UTC(38 commits,desktop v2 收官)
- v1.18.1:2026-07-14 21:37 UTC(1h8m 后,6 commits)
- v1.18.2:2026-07-15 16:15 UTC(18h37m 后,14 commits)
48 小时内 OpenCode 连发 3 个版本。其中 v1.18.2 比 v1.18.1 多了 14 个 commit / 646 字符 release body / 8 项改动 / 1 个社区贡献者。
bot 是这次的主力。14 个 commit 里 opencode-agent[bot] 贡献了 7 个——包括 subagent_depth 这个核心防护。
v1.18.2 唯一的主角:subagent_depth
如果你只让我看 v1.18.2 的 1 个 PR,我会看 PR #37124fix(core): limit subagent nesting depth。
这个 PR 是谁写的?opencode-agent[bot]。99 行 + 4 文件。
它解决的是 issue #36878(2026-07-14 15:28 UTC 提交):
在 OpenCode 1.17.20 中,当
permission.task: "allow"是全局配置时,custom subagent 能 dispatch 另一个自己:实测到 depth 2 就开始失控,需要 user 自己在 reviewer agent 配置
task: false才能阻止。dev 上目前没有 hard runtime depth limit 也没有 same-agent cycle guard。
影响是什么?递归 subagent 会无限吃 token / 时间,还会让每个 child 都保留 Task permission,可能在某个 child 卡 permission wait 时把 parent chain 都阻塞住。
PR #37124 怎么修
就 1 行默认配置 + 1 个新字段:
默认 depth=1,意味着 root 可以 dispatch 1 层 subagent,但 subagent 自己不能再 dispatch。task dispatch 一旦 depth 到限值,直接 reject。
这意味着:
- 现有 user 不需要改任何配置,无感升级到 v1.18.2 就自动防护
- 想要嵌套的 user 显式设
subagent_depth: 2即可 - bot 写了对应测试覆盖默认守卫 + 显式 opt-in
值得注意:bot 不只是补了代码,还单独开了 PR #37132 加文档解释这个新配置。从今往后 user 看 OpenCode docs 就能找到 subagent_depth 的语义。
桌面端 4 项:Mod+N + Help + null archive + Windows drawer
subagent_depth 之外的 6 项里,桌面端占了 4 项。挨个看:
1. Mod+N 新 tab 快捷键(PR #37079,bot)
之前只能用 Mod+T 开新 tab。现在 Mod+N 是另一条快捷键——Mod+T 是 terminal / browser 用户熟悉的, Mod+N 是浏览器用户的习惯(Mac Chrome / Safari 都是这个)。
2. Help 按钮 release 露出(PR #37098,bot)
之前 Help 按钮被 dev-channel guard 挡住——也就是说 正式版用户根本看不到 Help 按钮。这是个挺尴尬的事:你在 release build 里看不到帮助,只能在 dev build 看。
bot 把 guard 去掉了,bottom-corner Help 链接 release build 也露出。2 行代码改动。
3. null archive session 不丢(PR #36999,@Brendonovich)
老版本 server 把 archive_time: null 的 active session 错误地从 home list 丢弃。兼容这条 wire payload 后,session 一直可见。
这是数据完整性相关的修——确保你之前的 session 不会因为版本差异突然消失。@Brendonovich 是 OpenCode 持续贡献者,专门处理这类兼容性问题。
4. Windows drawer close 按钮隐藏(PR #36952,@Hona)
在 Windows 桌面端,drawer 的关闭按钮跟系统窗口 chrome 冲突。Windows 上隐藏,macOS / Linux / web 保留。@Hona 也是稳定贡献者。
Core + 1 个社区贡献者
模型调优(PR #36976,bot):Meta 系列模型(Llama 等)reasoning 深度跟其它模型不一致,现在默认调成 xhigh 跟其它模型对齐。1 行配置改动。
社区贡献者(PR #36542,@BB-84C):
v1.17.15 加的 fs.ensureDir(dir) 到 Config.ensureGitignore——每个 resolved config dir 都会跑。并发解析多份配置时会触发 AlreadyExists race。
@BB-84C 改法是把 ensureDir 包一层 catch,发现 race 时吞掉。8 行代码 + 1 行测试。Release notes 里 OpenCode 正式致谢:
Thank you to 1 community contributor:
- @BB-84C:
- fix(core): tolerate AlreadyExists in FSUtil.ensureDir (#36542)
一点观察
48 小时 3 版 → OpenCode v1.18.x 系列正在以小时级节奏消化 v1.18.0 桌面端 v2 收尾的余波。
节奏信号:
- v1.18.0 → v1.18.1 = 1h8m(hotfix 间距)
- v1.18.1 → v1.18.2 = 18h37m(次 hotfix 间距)
bot 是主力:14 个 commit 里 bot 贡献 7 个(含 subagent_depth 这个核心防护)。说明 v2 分支在跑 codemode 等大 feature 的同时,bot 也在盯 v1.18.x 的稳定性修。
社区贡献者持续给力:v1.18.2 的 @BB-84C + v1.17.19 的 @nabilfreeman + @geraint0923——OpenCode 这几个版本每次都有 1-2 个 release notes 致谢的外部贡献者。
v1.18 系列会持续多久? 我猜 1-2 周内还有 v1.18.3 / v1.18.4 出来。但 v1.19 应该不会出现——因为 OpenCode 的下一个大版本号直接就是 v2.0(Opencode系列/2026-07-15 那篇预估 2026-09 ~ 2026-10 发布)。






