大数跨境

OpenCode v1.17.11:会话回滚终于来了,桌面端拖拽 tab + 崩溃修复补丁

OpenCode v1.17.11:会话回滚终于来了,桌面端拖拽 tab + 崩溃修复补丁 创见AI实验室
2026-06-26
4
导读:之前 OpenCode 的 session 是不可逆的。Agent 跑了一长串对话之后改了不该改的文件、或者某步操作搞坏了代码结构,只能手动 git checkout 或者重新开一个 session

v1.17.10 刚发了,OpenCode 又推送了 v1.17.11(6 月 25 日发布)。

当前仓库:178,721 Stars / 21,927 Forks。

这版只有一个新功能,但就这一个就值得更。


会话回滚:我等你等得有点久

changelog 第一行:

Add session snapshots and revert controls so you can roll a session back to an earlier message, including file changes.

会话快照 + 回滚。可以回滚到之前的某条消息,附带文件变更一起回滚

之前 OpenCode 的 session 是不可逆的。Agent 跑了一长串对话之后改了不该改的文件、或者某步操作搞坏了代码结构,只能手动 git checkout 或者重新开一个 session 从头来。遇到 agent 自作主张的情况就很烦。

v1.17.11 做的事情,我拆一下:

快照机制:每次 agent 执行完一步(生成一条消息、改一批文件),系统自动拍一个快照,记录当前的文件状态和对话节点。

回滚入口:session timeline 里每一条消息旁边多了回滚按钮。点一下就能把整个 session 状态恢复到那一步——不只是对话回到那个节点,当时的文件改动也一并回退

这个功能在 OpenCode 的 issue 里催了很久了。特别是那些跑长 session 的人(30+ 回合的 debug、重构、跨文件改动),回滚是刚需。


桌面端改进:拖拽 tab + 快捷键

@arvsrn 个人贡献了 5 个 PR,桌面端这次变动不少:

拖拽 tab(@arvsrn,#31364)—桌面端的 tab 现在可以拖拽排序了。多 session 用户终于不用关掉重新开。

Chrome 风格 tab 快捷键 — mod+1 到 mod+9 快速切换 tab。用键盘多的人应该会喜欢。

空状态页面(@arvsrn,#33315)—没有 session 时不再显示空白页,改了设计。

v2 session 视图的 jump-to-latest 按钮重新设计(@arvsrn,#33809)—跳转到最新消息的按钮换了样式,位置更顺手。

桌面端布局改版持续优化 — titlebar tab 的 size 统一、session 归档功能完善。


崩溃修复:v1.17.10 的问题补上了吗

我知道很多人关心这个。直接说结论:changelog 没有用 "crash"/"fix crash" 这个字眼,但有几个修复跟稳定性直接相关。

我翻了 v1.17.10 的已知问题,这次修的主要是这几个:

  • Todo dock 跨 session 乱跑:之前切 session 的时候 todo dock 会移位或者消失
  • Provider 弹窗/附件/回滚脱离 session:之前这些 UI 元素会跟所属 session 脱钩,切 tab 之后找不到
  • Session 已关闭但 tab 还在:之前关掉 session 后 tab 残留,点了还报错
  • 草稿跟 server/项目绑定不牢:之前从 Home 创建的 draft 可能跑到别的 server 下
  • Session 通知滞后的 toast 不消失:已经打开 session 了,之前没读的通知还在弹
  • 去掉 session loading stripe:之前加载 session 时有条进度条一闪而过,有时会卡住不消失

总结一张表:

v1.17.10 可能遇到的问题
v1.17.11 修复状态
Todo dock 切 session 后移位/消失
✅ 修复:dock 保持在原位
Provider 弹窗脱离 session
✅ 修复:绑定到发起 session
关掉的 session tab 仍残留
✅ 修复:自动关闭
草稿绑错 server/项目
✅ 修复:正确绑定
通知 toast 不消失
✅ 修复:打开 session 后清除
Session 加载进度条卡住
✅ 移除 stripe

如果你升了 v1.17.10 之后遇到上述任何一个问题,v1.17.11 就是补丁版本。


会话回滚这个功能意味着什么

我的理解:

之前:OpenCode 的 session 是"写入式"的——agent 改了什么,文件就变了,除非你人肉 git diff 逐行回退,否则不可逆。

现在:session 变成了"可回退式"的——每一步都有快照,可以倒回去。

这对高风险操作(修改配置、重构核心逻辑、批量替换)是个质变。之前这些操作只能在代码仓库里做确认,现在可以直接在 session 层面控制——回滚按钮按下去,不仅对话重置,文件也恢复。

不过有几点我还没试清楚:

  • 快照的存储位置和保留策略(一直存?有数量限制?)
  • 回滚之后 agent 的状态怎么处理(之前的上下文是保留还是丢弃?)
  • 多人协作时回滚是否会影响其他人

这些问题等我跑一阵子再补充。


2 位贡献者

贡献者
PR
@arvsrn
拖拽 tab、空状态页面、jump-to-latest 重新设计、v1 图标更新、桌面端布局改进(5 个 PR)
@isaachuangGMICLOUD
GMI Cloud provider 文档(#32914

@arvsrn 已经连续三个版本在修桌面端了(v1.17.9/10/11)。如果想让他修某个 bug,大概去 PR 下 @他比较快。


更不更

建议更。原因依次是:

  1. 会话回滚——长 session 用户是刚需
  2. 崩溃修复——如果 v1.17.10 碰到了上面表里的问题,更了就好了
  3. 拖拽 tab + 快捷键——日常体验提升

v1.17.11 整体给我的感觉是:OpenCode 在做一件对的事——让 AI 会话从"不可逆"变成"可回退"。这件事不止 OpenCode 在做(Cursor 也有 checkpoint),但在开源世界里,这是 agent 类工具第一次把这个能力原生做进去。


互动问题:你用 OpenCode 写代码时,最长的一个 session 有多少回合?有没有过改错文件回退不了的经历?

精选系列





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