Unterm v0.71.22: Unterm Pocket 移动端网关、Agent Harness、主屏重排与 xterm 网格对齐
局域网/Tailscale 扫码配对与三级权限控制、零污染隐藏 Git 检查点、窗口缩放软换行重排与单元格级字形裁切。
2026-11-05T00:00:00.000Z
English version: Unterm v0.71.22: Unterm Pocket, Agent Harness, Main-Screen Reflow & xterm Grid Alignment
Unterm v0.71.22 带来了两条核心工程演进:
- Unterm Pocket 与 Agent Harness(
unterm-cli remote)——纯本地优先的局域网 / Tailscale 移动端远程网关,支持扫码配对与三级权限控制、本地开发服务器端口发现与反向代理预览、零污染隐藏 Git 检查点、跨 Agent 便携交接以及窗口 + A11y 控件树快照。 - 主屏重排(Reflow)与 xterm 网格对齐——宽度变化时自动重排软换行、高度缩小时保留光标所在行、全面对齐 xterm / ECMA-48 网格与光标语义,以及严格按单元格边界定位与裁切字形。
1. Unterm Pocket:局域网 / Tailscale 手机端远程驾驶舱
当 AI 编程 Agent 正在执行耗时任务时,开发者经常需要在离开电脑时用手机查看终端输出、审批高风险操作,或在真机上预览本地开发服,但又不希望终端数据经过任何第三方云端中转。
在 v0.71.22 中,Unterm 推出了 Unterm Pocket(可通过 unterm-cli remote 或 Web Settings 中的 Remote / Mobile 标签页开启):
- 严格限定局域网与 Tailscale:在 Socket 层直接拒绝非私有局域网(RFC1918)与非 Tailscale(
100.64.0.0/10)网段的连接请求,绝不暴露公网。 - 一次性 6 位配对码与二维码:配对码有效期 2 分钟且单次有效,配对后基于 Ed25519 主机密钥与 SHA-256 哈希令牌持久化设备授权,随时可一键吊销。
- 三级权限范围(
full/approve/readonly):readonly(只读监看):仅允许查看实时终端屏幕、回滚历史与检查点列表,禁止一切写入;approve(仅审批与对话):允许审批/拒绝 Agent 操作并发送对话输入,但拦截信号发送与回滚;full(完全控制):开放全部远程驾驶舱能力,包含检查点恢复与窗口快照。
2. Agent Harness:本地预览代理、隐藏 Git 检查点与跨 Agent 交接
围绕多 Agent 协作与演进安全,v0.71.22 在 Web Settings、手机端与 unterm-cli remote 中同步落地了四大 Agent Harness 能力:
- 本地开发服务器端口发现与预览代理(
/preview/<port>/):自动扫描本机正在监听的 Web 开发端口(如:3000、:4321、:5173、:8080),手机端配对后可直接通过内置反向代理一键打开预览。 - 零污染隐藏 Git 检查点(
refs/unterm/checkpoints/<id>):利用临时索引(GIT_INDEX_FILE)、git write-tree与git commit-tree将当前工作区(含未跟踪新文件)完整快照至隐藏引用refs/unterm/checkpoints/<id>,完全不触碰HEAD、.git/index或工作区状态;执行回滚前还会自动生成安全备份检查点。 - 跨 Agent 便携交接包(
~/.unterm/handoffs/):在严格保留用户新指令的前提下,按 Token 预算自动截取最近终端输出与 Git 状态摘要,生成标准 Markdown 交接文件,方便在 Claude Code、Codex CLI 与 Gemini CLI 之间无缝接力。 - 窗口 + A11y 控件树快照(
~/.unterm/snapshots/):一键捕获前台窗口截图(.png)与 UI Automation / System Events 无障碍控件树(.a11y.json),并生成可直接粘贴给 Agent 的结构化提示词片段。
3. 主屏软换行重排(Reflow)与 xterm 网格语义对齐
在终端分屏或调整窗口大小时,软换行文本如果不能随之重排,就会导致历史输出被截断或错位。v0.71.22 在 unterm-engine 中实现了完整的主屏重排:
- 逻辑行拼接与重折行:窗口宽度变化时,将软换行连接的物理行还原为逻辑行,再按新列宽重新折行,完整保留硬换行、CJK 宽字符、字形簇与 SGR 样式属性。
- 高度缩小时保护光标行:当窗口高度缩小时,优先将顶部行推入回滚缓冲区,确保光标所在行始终留在可视区域内。
- 全面对齐 xterm / ECMA-48 边界语义:
- 软换行标记归属行级(
ICH/DCH/ECH/SL/SR/EL 1/DECERA/DECFRA/DECSERA保留,EL 0/EL 2/ED/DECSED清除); DECLRMM左右边距与上下滚动区的光标移动及钳位规则与 xterm 完全一致;DECFRA/DECERA/DECSERA矩形区域指令在边界处自动拆分跨界宽字符;- 同步输出模式(
CSI ? 2026 h/l)提升为全局状态,跨主/备用屏切换与视口滚动期间均保持生效; LF/VT/FF默认保留光标列坐标,并完整实现LNM(CSI 20 h/l)换行模式。
- 软换行标记归属行级(
4. 单元格级字形定位裁切与 Windows 零闪烁启动
- 按源单元格定位、反色与裁切字形:
unterm-render严格按照字形簇所属的单元格计算坐标、块状光标反色与裁剪矩形,并将 HarfBuzz 26.6 塑形偏移四舍五入至整像素,杜绝超宽图标侵入右侧相邻字符。 - 回滚长图宽字符步进修复:修复回滚 PNG 渲染器未跳过宽度为 0 的宽字符延续格、导致中文字符前进 3 列的问题。
- Windows 启动零闪烁:在
ShowWindow前强制同步施加LWA_ALPHA=0分层透明与 DWM Cloak,直到首帧 GPU 画面提交后再揭开窗口,彻底消除启动瞬间的黑影或白框闪烁。
立即升级
直接运行 unterm-cli update,或通过 Homebrew(brew upgrade --cask unterm)、Scoop(scoop update unterm)及 GitHub Releases 下载升级。