亮点
- Agent 会话跑在真正的终端里 — 会话现在可以以终端模式创建:对话由 Agent 自己的 CLI 在 PTY 里负责,而不是由 Vibex 绘制时间线。已为这一模式验证十三个 Agent,侧栏、搜索、通知、移动端和 TUI 都在同一行上继续工作。
- 一个像终端的终端 — 回滚缓冲区搜索与匹配跳转、可拖动滚动条、按笔画绘制的制表字符、随包发布的 Symbols Nerd Font、连字、URL 点击打开、OSC 剪贴板与标题支持,以及三种方言的鼠标上报。
- MCP 服务器直达原生 CLI — 读者配置的 MCP 服务器、Vibex 委派、内嵌浏览器和计算机使用能力,通过每个终端模式 CLI 真正读取的启动输入交给它,而凭证不进入 argv。
- 不在应用身后留下任何进程 — 脱离进程树的 Agent 守护进程按它运行的东西收回,计算机使用驱动在空闲五分钟后交还内存,无人观看的帧泵自行退场。
- gpui-kit 0.9.0 — 工作区升级到新 kit 与
gpui-pre0.3.11,并把它新增的两项能力用了起来:编辑器查找栏的概览标尺,以及两端都跟随「减弱动态效果」的光标。 - 自己拼装出来的发布页 — 发布任务现在从带标签的发布说明、本次实际产出的产物,以及 GitHub 的贡献者署名拼出一页。macOS 应用包做了 ad-hoc 签名,Gatekeeper 不再说它「已损坏」。
新功能
终端会话SessionTransport说明一个会话怎么运行:ACP 会话拥有时间线和运行时绑定,终端会话只启动一个 CLI、两者都不拥有;终端创建是独立入口而不是 ACP 创建上的一个开关(35916d16、55c0c32d)- 十三个 Agent CLI 已通过终端模式验证——Claude、Codex、OpenCode、Gemini、pi、Grok、Cline、Copilot、Cursor、Kimi、CodeBuddy、Devin 和 Hermes;每个 Agent 的提示方式、模型/强度/模式参数、重启命令和退出提示里的会话 id 都收在一张
TerminalCli表里(35916d16、46f2e6be) - 配置的模型随命令行传入,因为终端会话没有别的通道;Agent 默认值不传任何东西,而不是猜一个 id,没有已知参数的 Agent 则不传;终端模式只能携带供应商配置,开关会直接说明这一点(
cb2b971d、d4057bc1、4f35c253) - 新建会话的草稿作为位置参数交给 CLI,附件以路径跟随,因此 Agent 从读者已经描述过的那一轮开始(
f7794fdb、35916d16) - Vibex 在终端矩形之外仍然欠读者的东西,被记录为观测事实——存活状态、活动、Agent 自己的会话 id,以及未读和通知路径读取的时间戳;
Unknown是一等取值(2c4bd796、35d2bd87) - 活动状态从屏幕底部读取而不是视口,因此读者向上滚动不会改变 Agent 正在做什么;
working -> idle需要多次一致的扫描结果,因为那是触发完成通知的转变(b8d60159) - 进程结束的会话会被关闭,而不是继续看起来健康;重启会重新提供同一份 argv、工作目录和供应商配置——配置是重新解析而不是读回的,因此密钥留在钥匙串里(
8fc9391b、e9f9822f) - 重启从记录的 argv 重建 PTY;命令无法重建的会话保留其行并标记为错误,读者能看出哪个会话没有回来(
ccb44e41、ca8c955f) - 桌面端把网格包进一个圆角的内嵌窗口,选择模式时输入框会变成终端自身的形状,页面在交出去之前就说明它即将交接哪一种界面(
c8e67a4b、23cef5d8、0591f9f9) - 手机能够到达终端会话的 Agent:会话快照写明它的终端,选中会话即通过普通路径附着,并且附着能扛住与会话列表的竞态(
95d56253、c391662f) - TUI 和手机通过桌面端同一套投影报告终端会话的 Agent 活动;TUI 则指出对话在桌面端,而不是为一个它无法展示的对话画一张空时间线(
35d2bd87)
- 搜索每一条保留的行而不是只搜已绘制的视口,高亮全部匹配,并用上一处/下一处把匹配滚动到视野内(
9efd0d49) - 网格上有可拖动的滚动条,支持
Shift+PageUp/PageDown与Shift+Home/End,在备用屏里把滚轮转成方向键,让全屏 Agent 也能滚动(9efd0d49) - 制表字符按笔画画成相连的矢量线——包括粗线、双线、虚线、圆角和斜线形态——因此表格和面板边框跨单元格对齐(
9efd0d49、7412cf2d) Symbols Nerd Font Mono随应用发布,私用区符号字形贴合单元格轮廓,清掉了 Agent 状态图标原本画出的方块(9efd0d49)- 单元格度量取自字体自身的步进,而不是固定的 8x18 常量;行按同样式片段成形而不是逐字摆放,宽单元格保留字体的步进,因此 CJK 仍占两列(
9efd0d49、bef85503) - 连字成为偏好项,纯 HTTP(S) 链接点击即打开,双击或三击选中一个词或一行(
9efd0d49) - 回应 OSC 52 剪贴板读写、OSC 0/2 标题、OSC 4/10/11/12 颜色查询,以及 1005、1015、1016 三种方言的鼠标上报(
9efd0d49) - 新增终端背景透明度设置;主题墨色会被提亮到最低对比度,而程序自己声明的真彩不受影响(
9efd0d49)
- 终端模式 CLI 通过各自真正读取的附加启动输入收到读者的 MCP 服务器——Claude Code 和 CodeBuddy 用
--mcp-config,Copilot 用--additional-mcp-config,Codex 用-c覆盖,OpenCode 用OPENCODE_CONFIG_CONTENT,Hermes 用受管作用域,Cline 用CLINE_MCP_SETTINGS_PATH,pi 用进程环境(06e89ac7) - 当供应商投影迁移了 Agent home 时,读者真实 home 里的服务器会被重新声明,因此不会丢失(
06e89ac7) - 凭证不进入 argv:文件权限
0600,放在随会话删除的每会话目录里,Codex 收到的是环境变量名而不是值;投递在创建、重启和崩溃恢复时重新生成(06e89ac7) - Cursor、Gemini、Grok、Kimi Code 和 Devin 没有按进程传入 MCP 的入口,因此两个工具面板在终端模式下直接显示为不可用,而不是先宣称可用、随后悄悄丢掉(
7b30af79)
- 侧栏会话筛选改为可多选的集合而不是单一姿态,第二个筛选会加宽这一列而不是把它清空;项目内的会话可以按创建、更新、标题或手动排列排序(
125bea0c、7d99b489) - 在
@文件提及列表里输入路径会直接浏览该目录,因此即使工作区级清单先被上限截断,大工作区深处的目录依然可达(9df4fb9e) - 每个 Agent 的委派行保留自己的运行时配置,用该行的编辑按钮选择,优先级高于默认来源和该 Agent 上次使用的组合(
dde83cf9) - Agent 开始驱动桌面时计算机使用面板会打开,浮动显示且不抢键盘,有自己的默认开启设置,并排除了「被拒绝的调用不能弹出面板」(
f924abb7) - 没有项目的会话现在在侧栏、右键菜单、新建会话选择器和搜索里都显示为「临时会话」,默认图标是解析出来的绿色星光而不是存下来的值(
0226fb90) - 新建会话页会提供 Adapter 仍在下载的 Agent,用 Agent 自己 logo 尺寸里的工作进行中脉冲表示,并给出指向配置中心的中上部卡片;下载一完成,同一个按钮就能创建会话(
b7460d3e) - 传输方式开关从输入框移到了工作区行末端,因为「谁拥有界面」不是又一个「在哪里运行」的控件;没有终端模式的 Agent 完全不显示这个开关,两个分段各有说明自己得失的提示(
0591f9f9、732d7102、2d4a941c) - 输入框占位文案说明了快捷语、引用和历史,
@弹窗把会话引用放到自己的标签页,会话不再排在 Agent 委派下面(9da2b062、b7fda5dc) - 编辑器查找栏在概览标尺上标出每一处命中,关闭查找栏会清掉标记,因为它们属于这次搜索而不是文档(
252329db、e3526e36) - 运行时失败以顶部轻提示出现,一次 Agent 失败只读作一条带可复制详情的提示,失败的回合不再在输入框错误条里重复一遍(
8a070d22、999dedde、59f08d87)
- 「减弱动态效果」现在会传进 gpui 自己的开关,询问上下文的 kit 组件也停止动画;光标在主题层和输入框绘制的基层都是稳定的(
252329db) - 打开的会话保持自己的 workspace 和对话:右栏在发起快照读取前就按会话行重新定位,读取失败也不会把上一个对话的文件、变更和终端留在新页面下面(
5d88cbf5) - 必须切掉当前回合的时间线窗口,会去掉回合带重试一次,因此三个 shell 都装上连续窗口,而不是在一个从来不为空的会话上画「暂无消息」(
5d88cbf5) - 手机终端的 Backspace 能到达 shell:IME 输入槽保留一个空格,并从它转发的这次变更就地重新播种,因此连按或快速 Backspace 都是针对它真正要编辑的文档来测量(
b9ef6f7d)
- 运行时探测返回后会刷新运行选项,因此晚到的探测不会把页面留在过期目录上(
6474902b)
- 发布说明脚本生成区间简报、搭出双语文档骨架,并拒绝缺少语言段落或仍只有注释的文档;发布正文脚本从带标签的说明、按本次实际发布产物渲染的下载表,以及带比较链接的贡献者署名拼出页面(
bd62fe97、07ad58a5、ffb2b245) - 发布任务在上传前运行校验器,正文出现逐条变更列表时直接失败,某个平台没有产出时该行会消失,而不是链接到一个 404(
07ad58a5) - macOS 应用包在组装 dmg 之前由内向外封装——先处理嵌套的 Mach-O 可执行文件,再处理整个包——打包器同时声明
app,dmg,让 app 格式排在钩子之前(347a622c) - macOS 签名仍是 ad-hoc:没有 Developer ID、没有公证、没有强化运行时、没有安全时间戳;这足以把「已损坏」变成用户可以允许一次的普通「未识别开发者」提示(
347a622c)
修复
- 修复终端会话的启动与模型:Claude 和 Codex 从各自的原生 CLI 启动,OpenCode 的模型移出 argv 改由配置文件承载,投影后的模型 id 传给原生 CLI,选中的供应商在 Claude 终端会话里生效(
18d2c5ae、063bfd96、d4057bc1、27a1e83c) - 修复终端会话的状态:从 Agent 自己的报告读取状态,进程结束后会话显示为已结束而不是看起来健康,退出提示缺失时重启仍保留历史(
b8d60159、e9f9822f、2806ec37) - 修复终端会话的重启:重启不再重复第一条提示而是续接,重启后重建终端表面,命令行未打印会话 id 时也不丢历史(
ca8c955f、ccb44e41、2806ec37) - 修复终端渲染:从字体测量网格并干净重绘,输入框提示标记落在第一行且不再重设输入框样式,
Ctrl+F在普通源码编辑器里恢复(bef85503、9255cdd4、a11cf3f2) - 修复终端布局:内嵌终端留出内边距并按指针滚动,面板重开时终端保持原尺寸,终端窗格与会话组菜单恢复渲染(
05590d57、b6187929、8b3f3832) - 修复传输开关:没有终端模式的 Agent 隐藏开关,选中的 Agent 没有终端模式时退出终端模式,没有供应商配置时也退出,切换后仍可选中(
2d4a941c、6034d162、4f35c253、8ec0cca3) - 修复会话行与筛选:原生终端的活动出现在会话行上,会话排序应用到已放置的侧栏行,会话组窗格视图同时按组和窗格作键(
a547d578、7d99b489、6e01decf) - 修复配置中心:写入不再提前中止,写入移出帧线程,启动目录竞态后仍保留较新的供应商状态,供应商创建器保留已选中的 Agent(
fe1be501、dfdaf81e、aa41d696、379e9740) - 修复运行选项:启动目录竞态后恢复运行选项,记住的思考深度在目录尚未探测时仍然保留,路由模型选项按配置证据填充(
8eb47140、3cc7cd7a、f7d30acb) - 修复网关:刷新拒绝并复活失效的 Key(
9424b27d) - 修复移动端:终端 Backspace 到达 shell,打开的会话保持自己的 workspace 与对话(
b9ef6f7d、5d88cbf5) - 修复主题:kit 新的行状态色进入目录,新增
deleted色调(129d7887) - 修复平台编译:Linux 专用的
OsStr导入、未使用的导入和只有一个cfg分支读取的参数在 macOS 与 Windows 上都能编译(74a1dbfe) - 修复 CI:macOS 发布任务移到受支持的
macos-15镜像(e6656a37) - 修复 clippy:满足 1.99 工作区现在看到的 lint(
3673cf8d)
性能
- 终端网格按文本、样式和字号缓存已成形行,只通过预绘制缓存重整受损行,并按片段整行绘制而不是逐字定位(
9efd0d49) - 尺寸变化现在直接填满面板,而不是让已绘制的网格停在旧尺寸直到往返完成;整趟绘制都裁剪到网格自己的内容遮罩内(
9efd0d49) - 配置中心的写入、供应商探测、路由组保存、网关读取以及终端启动/重启都移出帧线程,并配有一个源码守卫:当被 await 的语句在桥接层或 Tokio spawn 之外提到 backend 时就失败(
dfdaf81e) - 计算机使用驱动守护进程在空闲五分钟后被停止——先
stop让它自己移除套接字,不退出再杀掉——并且只停止本客户端自己启动的那个(1347dea8) - 帧泵在每次捕获前检查接收端是否还活着,无人观看时自行退场并回收通道;捕获失败按翻倍延迟重试并封顶十秒,而不是按帧率重试(
1347dea8) - 短命的驱动子命令各自领一个进程组,超时即杀掉整个组,因此超时不再留下一个还在等守护进程的孤儿进程(
1347dea8) - 脱离进程树的 Agent 守护进程按它运行的东西收回:候选进程被 init 或用户的
systemd --user收养,且命令行指向<home>/acp-agents/agents/<agent>/下的文件;只有在同一 Agent 在任何位置都不再留有附着进程、且这一状态持续两分钟后才会被结束(8675b314)
内部、构建与文档
- 版本号统一升到
0.1.0-rc.10:工作区、桌面打包输入、Android versionName 回退值、README、部署文档,以及许可证策略里已审核的资源包版本 - 许可证 SBOM 与第三方声明按当前依赖图重新生成:1110 个 Cargo 包、11 个资源/字体包、5 个原生与安装器输入,全部已批准
- 随包的 Symbols Nerd Font 登记为受审字体输入——
vibex-desktop-nerd-symbols,MIT,两个文件绑定到一个树哈希——因此这个消掉方块的字体与其他内嵌字体走同一道来源审核 - 数据库 schema 从 87 升到 88:会话行上的
transport和一张session_terminals关联表,provider_profile_id为已经跑过该迁移的数据库就地补列 - 工作区升级到
gpui-kit0.9.0与gpui-pre0.3.11;kit 的主题结构体现在是#[non_exhaustive],ScrollWheelEvent改名为ScrollEvent,移动端门面的insets()改为safe_insets() - 默认主题的差异状态色跟随 kit 新的绿/琥珀/红家族,并补上
deleted色调;其余十八套配色保留各自手写的颜色 - 已审核的 Agent 版本推进到各通道发布的最新版:Claude
0.101.0、Codex2.5.0(运行时0.165.0)、ZCode0.82.3、OpenCode2.2.6、Antigravity1.4.5、Cline3.0.74、CodeBuddy2.181.0、Copilot1.0.107、Cursor2026.11.05、DeepSeek Harness0.4.40、Gemini0.67.0、Grok1.0.78和 Kimi2.5.2,每个都把上一版保留为兼容下限(6c827cc8) _session/steering接受queued与startedNewTurn作为「Agent 已经接管这段文字」的回答,因为把它们当作PromptRequired会把同一条消息提交两次- 面向用户的文本不再被替换为
[redacted-sensitive-output]:厂商拒绝原文、权限标题、模型 id、网关与浏览器账本条目、表单输入值和供应商端点都会保留,密钥引用仍是存储边界(e4c76e26) - SSH 与 WSL 测试夹具里的版本字面量故意留在
rc.8:升级与回滚测试需要一个真实的上一版本可以升级,并留在新版本旁边