Unterm

Unterm 的全部功能

完整清单:每一个控制面、每一项能力,以及为什么这样设计。

阅读高级用法 →

60 秒看懂 Unterm

所有数字都能在源码 / Releases 里核对 · 每次发布刷新
最新版本
v0.71.14 · 2026-09-25 · MIT
内置 AI agent
7 个签名 manifest —— Claude Code · Codex CLI · Gemini CLI · OpenCode · Aider · Kimi Code CLI · Trae Agent。从 unterm.app/api/agents/manifests 拉 Ed25519 签名信封,每个 agent 可选认证模式。
价格
永久 $0 · 无付费层 · 无订阅 · 无内购
平台
macOS(universal)· Linux x86_64(.deb + AppImage)· Windows 10/11(.msi + 便携 .zip)
安装包大小
DMG 50 MB · .deb 27 MB · AppImage 43 MB · MSI 43 MB
空闲内存
~110 MB · 随开启 pane 线性增长
界面语言
9 种 — en · 简体 · 繁體 · 日本語 · 한국어 · Deutsch · Français · Italiano · हिन्दी
控制面
MCP(TCP 上的 JSON-RPC)· HTTP 网页设置 · unterm-cli · GUI — 同一份 JSON 状态四个入口共用
已验证 agent 集成
Claude Code · Cursor · Codex CLI · 自定义 Python / Node MCP 客户端 — 都走同一个 socket,约 30 行代码
数据收集
零遥测 · 无账号 · 无统计 · 所有服务仅监听 127.0.0.1
技术栈
Rust · 原生 next-core 引擎 · wgpu · MCP(line-delimited JSON-RPC)· Tailwind + Alpine 网页设置
v0.18 · AI Agent 启动器

每个编码 agent 都能一键装上。零配置门槛。

如果你同时试过多个 AI 编码 CLI,你知道那个税:npm install、OAuth、申请 API key、~/.config/<vendor>/<每家格式不同>、环境变量、不同身份隔离。Unterm v0.18 把这一切收进一个设置 tab + 一个 CLI 子命令。没有任何其它终端在做这件事。

Claude Code
Anthropic
OAuth · BYO key · gateway
Codex CLI
OpenAI
ChatGPT OAuth · BYO key · gateway
Gemini CLI
Google
Google OAuth · BYO key · Vertex
OpenCode
SST
BYO key · local
Aider
Open-source
BYO key · local
01 · one click

GUI 装或 CLI 装都行

在 agent 卡片上点 安装,或者跑 unterm-cli agent install <id>。Unterm 按你的平台跑对应的命令 (npm / pipx 等),验证 binary 进了 PATH,自动重新探测。

02 · subscription-safe

默认走官方订阅,BYO key 仍是 opt-in

大部分 agent 都有官方账号 / 订阅登录路径(Claude Pro、ChatGPT Plus、Google AI Pro)。Unterm 默认就是这个模式 —— 永远不偷偷往 session 里注入 API key。只有当你确实想按 token 计费或者走企业 gateway 时,才显式切到「自带 key」或「自定义端点」。

03 · signed catalog

Ed25519 签名 manifest 目录

agent 列表和安装命令不是写死在 Unterm 里 —— 而是从 unterm.app/api/agents/manifests 拉的签名信封。即使 CDN 被攻破也推不了 curl | sh 到你机器上,公钥 baked 进每个 Unterm binary。

终端是手柄,AI agent 是手。

大多数终端把 AI 嵌进二进制里——Warp 的云端编排器、ChatGPT 桌面的侧边栏。Unterm 反向选:AI 完全在外面,终端本身作为可被 MCP 控制的表面,谁来抓握自己定。终端是手,谁握它由你决定。

典型场景

一个 AI 通过终端控制另一个 AI。

外层 agent 拿着终端会话,切换 cwd,启动分屏里的内层 coding agent,读取日志,并在仓库变绿之前持续迭代。

01
打开仓库

外层 agent 先把当前 pane 指向项目根目录,这样每条命令、日志和截图都锚定在同一个工作目录里。

02
启动内层 agent

它在分屏里拉起一个 coding agent,把任务交给它,让这个 agent 在终端内部完成编辑循环。

03
读取、重试、发布

外层 agent 读取测试输出和 pane 状态,必要时继续重试,只有等终端显示工作完成后才进入提交或发布。

outer agent → inner agent
demo
→ open /work/auth-service in a new tab and start a coding agent
unterm session.create { cwd: "/work/auth-service" }
→ { session_id: "7", pid: 41208 }
unterm exec.run { id: "7", command: "claude" }
→ inner agent ready
unterm exec.run { id: "7", command: "cargo test" }
running 142 tests
test result: ok. 142 passed; 0 failed
unterm screen.scrollback_text { id: "7" }
→ { text: "…build is green, commit the fix", row_count: 142 }
$
zsh · ~/work/auth-service · 80×24 · mcp:4

Unterm 的三种用法

我们没为单一工作流设计。MCP 表面让每个角色都通过不同入口拿到同一套控制平面。

🤖
AI 工程师

从 Claude Code、Cursor 或自己的 agent 控制多个终端 pane。每个 pane 一个任务;agent 决定在哪儿打字。多实例 NATO 命名(alpha、bravo、charlie…)让跨窗口路由变得简单。

  • 导演/工人模式:外层 agent 监督 pane 里的内层 agent
  • 长任务监视:发起构建,轮询到 idle,决定下一步
  • 多 pane 编排:把工作分到多个项目,聚合结果
  • 带 token 脱敏的录制,供 review 和微调
⚙️
DevOps 与 SRE

GUI 能做的事 cron 也能做。unterm-cli 在每个 release 里都有;任何下游想要原始 JSON-RPC 都可以用 --json。运维脚本、面板、Runbook 同一个表面。

  • 自动代理探测:macOS scutil / Windows registry / GNOME gsettings
  • 无头截图、pane 读取,便于事故文档
  • 录制 → markdown 用于 Runbook 生成,默认 PII 脱敏
  • 无埋点、无登录,所有服务绑定 127.0.0.1
🔧
高级用户与开源 hacker

MIT 授权,自 v0.61 起跑在自研 next-core 内核上(约 12k 行、10 个直接依赖),自带一流 agent 集成。GitHub 上接受 PR。自己编译;二进制 CLI 每个 release 都打包。Web Settings UI 是 Tailwind + Alpine SPA——fork 页面,改颜色。

  • macOS 通用 arm64 + x86_64 二进制,Developer ID 签名
  • Linux .deb(apt)和 AppImage(任意发行版)
  • Windows MSI(WiX 6)+ 便携 .zip
  • 9 种语言开箱即用,自动跟随系统 locale

Four control surfaces, one engine

Every Unterm window starts a local MCP server and an HTTP settings server. Read and write the same JSON state from any of them.

🔌
MCP server

Line-delimited JSON-RPC on 127.0.0.1:19876, auth-token gated. Spawn shells, read pane state, capture screenshots, control sessions.

⚡
unterm-cli

Same surface from any shell, cron job, or script. Thin JSON-RPC client over the local MCP — no duplicated business logic.

🖥️
Web Settings

Modern config UI in the browser, not the cell grid. Tailwind + Alpine SPA at 127.0.0.1:19877. Themes, proxy, recordings, language.

🌍
9 languages

en / 简体 / 繁體 / 日本語 / 한국어 / Deutsch / Français / Italiano / हिन्दी out of the box. System locale auto-detect.

🎬
Session recording

OSC 133 block-segmented markdown with built-in redaction. Recordings live in <cwd>/.unterm/sessions/.

📸
Region screenshots

One-click region capture from the status bar. PNG to disk, image to clipboard, path to text clipboard.

🌐
Auto proxy detect

自动检测 macOS、Windows、GNOME 与环境变量,也支持手动 HTTP/SOCKS 地址、命名节点、轮换及 Clash/mihomo 控制器。

⚙️
GPU rendering

使用 Unterm 原生 next-core 终端引擎与跨平台 wgpu 渲染。

完整的控制面

不是截图导览,而是每个 agent 和脚本都能调用的真实表面:30 个命名空间下 151 个 MCP 方法,外加 37 个 CLI 命令,全部返回同一份 JSON。

151
MCP 方法
30
命名空间
37
CLI 命令
4
控制面
22ms
启动到 MCP 可用
~12k
内核源码行数
🛩️ Agent 座舱
cockpit · fleet.* · review.* · 11

实时看到每个 CLI agent 的状态(干活中 / 等你 / 空闲),从 Agent 收件箱一键跳到需要你的那个,在隔离的 git worktree 里为同一个任务启动 N 个 agent 编队,再对它们的产出审阅、合并或回滚——GUI、MCP、CLI 都能操作。

agent.status · cockpit.inbox · fleet.launch · fleet.retry · review.verify · review.diff · review.merge · review.rollback
🪟 会话与分屏
session.* · 27

从终端外创建、切分、聚焦、调整尺寸、销毁 pane。逐字符往任意 pane 打字、读它的 cwd、轮询到 idle —— 完全不用模拟按键。

create · split · focus · resize · input · destroy · history · idle · cwd
👁️ 屏幕读取
screen.* · 8

拉取实时 viewport 文本、把完整 scrollback 作一个字符串、光标位置、或正则搜索。detect_errors 标出失败命令供 agent 响应。

text · scrollback_text · search · cursor · detect_errors · scroll
▶️ 命令执行
exec.* · 5

跑命令并流式拿输出、run-and-wait 拿退出码、发原始字节、查状态、取消、或投递 POSIX 信号 —— 结构化结果,不是刮屏。

run · run_wait · send · status · cancel · signal.send
🤖 AI agent 启动器
agent · 7 CLIs

安装、登录、配置、启动 Claude Code / Codex / Gemini / OpenCode / Aider。mcp-stdio 桥接把每个 agent 自动接回当前终端的 MCP server。

install · auth · launch · config · mcp-stdio bridge
🪪 身份 profile
profile · 7 sniffers

把窗口绑到一套开发者身份 —— GitHub PAT、AWS keys、npm token、SSH key、git 作者。凭据存在系统 vault;7 个嗅探器只读发现已有的。

list · current · create · switch · delete
🛰️ 多实例
instance.* · 8

每个窗口是一个 NATO 命名实例(alpha、bravo、charlie…)。列举机器上每个活着的 Unterm、聚焦其一、或改标题 —— agent 按 cwd 或标题在窗口间路由任务。

list · info · focus · set_title
🎬 录制与回放
recording · asciicast

把任意 session 录成 asciicast、回放、或导出成 OSC-133 分块 markdown 并脱敏 token —— 每块带命令、输出、退出码和耗时。

recording_start · stop · status · list · read · export_markdown
📸 截图与上传
capture.* · 6 + upload

截全屏、某窗口、或框选区域;读剪贴板;或把文件直传你自己的阿里云 OSS / 腾讯 COS / 七牛桶并拿回公开 URL —— 全走 MCP。

screen · window · select · clipboard · scrollback · window_scroll · upload.file
🌐 代理管理
proxy.* · 12

读 OS 代理状态、在配置好的节点间切换、测延迟、或应用 / 清除系统代理覆盖(macOS scutil · Windows 注册表 · Linux env)—— 零 URL 粘贴。

status · switch · nodes · speedtest · configure · disable · env
🛡️ 治理与审计
governance · 9

每次 agent 写入都记录其身份;写入确认策略把控首次接触。测试策略判定、跑内置自测套件、读 liveness/readiness 标志。

audit_log · policy.check/set · agent.identify · selftest.run · server.health
💾 工作区
workspace.* · 3

保存当前窗口完整的 pane / tab 布局、列出已存布局、恢复其一 —— agent 可以给一组工作快照,之后再拉回来。

save · restore · list
📖 自描述表面
meta.surface

meta.surface 一次调用返回每个 MCP 方法(含参数 schema)、每个 CLI 子命令、每个生效的快捷键 —— 刚连进来的 agent 不查文档就学会整套 API。

reference · show-keys · settings · theme · lang

每个方法都能从 MCP(TCP 上的 JSON-RPC)、unterm-cli 二进制、网页设置 HTTP API 和 GUI 四个入口调用 —— 一次 meta.surface(或 unterm-cli reference)往返就实时返回这整张清单。

Unterm 真正与众不同的地方

三条你自己能 grep / build / run 验证的差异。没营销话术。

🤖 v0.18
你启动每个 AI 编码 agent 的终端

v0.18 让 Unterm 变成 Claude Code / Codex CLI / Gemini CLI / OpenCode / Aider 的一键启动器。每个 agent 的安装命令、OAuth 流程、API key、原生配置文件都由 unterm.app 服务的签名 manifest 描述;runtime 把 key 落进系统 keychain、用 preserve_unknown_keys 写 agent 自己的 JSON/TOML/YAML 配置、把 Unterm 自己暴露为 MCP server 给 agent 用、把 session 入审计 —— 全部从 CLI 和新的 AI Agent Web Settings tab 都能驱动。

🪟 v0.17
AI 从终端外切分屏

session.split + session.focus 通过 MCP 让外部 agent(Claude Code、Cursor、自己写的脚本)把当前窗口左 / 右 / 上 / 下切开并把焦点交给新 pane —— 不用模拟任何按键。Hero 的 Python 例子就在用。其他终端都没把 pane 几何暴露给外部进程。

👁️ v0.16
每一次 agent 写入都可审计、可撤销、可复盘

每一次 session.input / exec.send 都记录调用 agent 的身份。新 agent 首次写入会触发 Allow / Block / Always-allow 横幅。信任写到 ~/.unterm/trusted_agents.json,可在网页设置 MCP 标签里一键撤销。状态栏显示实时 MCP 写入次数。

QUALITY-OF-LIFE

日常用得到的小细节

都不是宣传级特性,但日复一日加起来就是顺手。

👻
跨 pane 的 ghost text

Fish 风格的灰色预测,从任意 pane 的 shell history 续写当前输入;→ 或 End 接受。

✨
session.suggest 建议条

Agent 可以「提议」命令而不直接写入 PTY —— 在状态栏上方显示;Tab 接受,Alt+Enter 接受并执行。

📋
区域截图 → 剪贴板

从状态栏框选任意矩形;PNG 落盘、图像入剪贴板、文件路径作文本一次到位。

🎨
主题 + 每 tab 的 CWD

内置 9 套主题;unterm-cli theme set midnight 一键热切换。状态栏显示当前 pane 的 $HOME 相对路径。

📁
macOS Finder 原生右键

Finder 右键 → Open in Unterm。用 AppleScript Services 扩展,应用内不堆右键菜单。

🪪
状态栏身份芯片

当前窗口绑定的身份 profile(GitHub PAT / AWS keys / npm token)会显示在状态栏;点击切到下一个 profile 的新窗口。

🚦
零配置代理

自动读 macOS scutil / Windows 注册表 / GNOME gsettings / 环境变量。一个开关。不用粘贴 URL。

🌐
OSC 133 分块录制

录制按 shell prompt 边界自动切块。每块带命令、输出、退出码、耗时 —— 都可搜。

v0.71.6 鼠标流

右键就是粘贴。复制交给选中。

整个复制粘贴闭环都在鼠标上,但两半分在两个动作里:松开选区,内容已经在剪贴板;按右键,就在光标处粘贴——有没有选区都一样。永远不弹上下文菜单,没有东西需要关掉。

🖱️
选中——已经复制了

拖选输出,或者直接双击一个词。按键一松,文本就已经在剪贴板上。没有第二个手势要记,也没有什么要按下去确认。

📥
按右键——粘贴

一个键只做一件事:在提示符处粘贴,不管当前有没有选区。从一个 pane 复制、点进另一个、按右键——命令搬过去了,零键盘。剪贴板为空时安静无操作,绝不报错。

⌃
Ctrl+点击,macOS 惯例

macOS 把 Ctrl+点击视为副击,Unterm 也一样——触控板、Magic Mouse 或任何第三方驱动都适用。只有纯 Ctrl 才触发,你自定义的 Ctrl 组合鼠标绑定和 Ctrl+Shift 拖窗完全不受影响。macOS 会把这一个动作派发成两个事件,Unterm 只响应一次。vim、Claude Code 这类接管鼠标的 TUI 里行为相同。

v0.71.6 起改成这样。以前只要有选区,右键就是复制——重复了选中已经做完的事,代价是它本来要做的那次粘贴没发生。

since v0.55 Agent 座舱

终端现在看得见跑在里面的 agent

Claude Code、Codex、Gemini、Aider——每个 pane 都在汇报谁在干活、谁在等你、改了什么。零配置即可用;一条命令升级到 hook 级精确汇报。

Agent 收件箱:Codex 等待批准,Claude 已完成,Claude 工作中
🛰️ 每个 tab 上的实时状态

四层信号——官方 hooks、标题/OSC 解析、进程识别、屏幕启发——折叠为每个 pane 的一个状态:干活中(呼吸蓝点)、等你(琥珀色)、完成、空闲。顶栏跨窗口计数,一有 agent 等你立刻转为警示色。

📥 Agent 收件箱

Ctrl+Shift+A:所有窗口的所有 agent,等待中的排最前,显示卡了多久、卡在什么上。Enter 直接跳到那个 pane。“过去按个 y”现在只要两次按键。

🚀 Fleet:一个任务,N 个 agent

让 claude × 2 + codex 赛跑同一个任务——每个成员在仓库旁自己的 git worktree 和分支里,自己的 tab、自己的状态角标。你的工作区分毫不动。

🔍 Review:改动全程有据可查

agent 一动工,Unterm 就为仓库拍快照(dangling commit——不碰 HEAD、index 和你的文件)。逐行 diff 含 agent 新建的文件,squash 合并到暂存区(commit 由你来做),可回滚到任意快照,成员产出并排对比。

🔌 和其他一切一样,完全可编程

座舱本身就是 MCP + CLI:agent.status、cockpit.inbox、fleet.launch、review.merge……编排型 agent 可以在无人值守下启动编队、审阅 diff。本地优先——这一切不经过任何云。

阅读 Agent 座舱文档 →

v0.71 有什么新变化

一台没有显卡驱动的机器也能把终端打开,第二扇窗从 587 毫秒变成 31 毫秒,shell 活得比开它的那扇窗久,中日韩文字终于能按文字复制——最近八个版本,七张卡。

v0.71 没有显卡驱动的机器,也能把终端打开

启动只试硬件那两条路,试完就不试了。一台没有可用显示驱动的 Windows 机器上——虚拟机、干净装的系统、远程桌面——DX12 找得到适配器却配不出表面,OpenGL 压根没有驱动可找,于是终端以「no working GPU path」拒绝启动,而 WARP 一直在那台机器上:它随 D3D12 发货,不需要任何驱动,只是从来没人问过它。现在回退链的末端是软件光栅器。同一版里:`unterm-cli start` 交接不成而另起一个进程时会说出来——那个退路要付出一份额外的 GPU 适配器和一个共用的 Core;provider manifest 也终于能通过读它的那份契约。

v0.68 一个进程,N 扇窗,第二扇 31 毫秒

第二扇窗从前是第二个 Unterm:又一个 GPU 适配器、又一条 Core 连接、587 毫秒的等待。现在它开在已经跑着的那个进程里,31 毫秒。窗口有了 id,`instance.new_window` 会回答它刚造出来的那一个,`instance.focus` 认它;一个会话只属于一扇窗,关窗关掉的是视图,shell 留在 Core 里交给剩下的窗。只有最后一扇窗才问你是不是真要退出。

v0.68 能把 agent 托管进去的终端,而不是隔着玻璃喊话

能力现在住在租约后面:agent 申请一份,在一把你看得见的钥匙下使用,你撤销时它就失去——而不是每个调用方都攥着同一个没有边界的 socket。批准变得可以回答了,问题说的是「接下来要发生什么」,而不是碰巧实现它的那个方法名。fleet 改为持久存储而不是一个 JSON 文件,跑到一半崩了不再丢掉「谁在做什么」。

v0.66 关掉窗口,shell 留着

「在后台继续运行」终于在屏幕上留下了东西——三个平台都有的托盘指示器,报出还活着几个会话,一次点击把驻留的窗口唤回来。agent 也能做同一件事:`instance.focus` 会唤醒一扇驻留的窗,而不是在它上面失败。两个关闭按钮不再对你的 shell 各执一词——正是那个分歧让「关闭」按哪一个意思就变一次。

v0.64 中日韩文字:复制是字,选中是词,输入不碎

输入中日韩文字曾经碎成 `<009d>` 那样的字节垃圾——GUI 把一个自己从没设过的 locale 交给了 shell。复制出来的是网格里的占位格而不是文字,于是粘贴回来带着窟窿。双击选中半个词,另一半丢了。现在宽字符就是一个字符:选中时是,剪贴板上是,输入进来也是。另外重绘风暴也结束了——比较帧的方式错了,于是不管有没有东西动过都重画一遍。

v0.63 会话活得比窗口久——而且安装包这次真的装得全

unterm-core 现在持有你的会话:每用户一个进程,装着 shell、回滚与分屏布局,承载整个 MCP 控制面,关掉窗口也不消失(v0.62)。v0.63 是安装体验该得的那一版:core 守护进程真正进了全部六种安装包;设置页在 Core 模式下可用;emoji 第一次画得出来——捆绑的字体是 FreeType 画不了的 COLRv1;停顿后打字延迟从 96ms 降到 8ms;macOS 换上新标;Windows 右键新增「Open in Unterm tab」。

v0.61 自研内核:启动 22ms 即有可用控制面

Unterm 不再基于 WezTerm fork。next-core 是为本产品自研的终端内核 —— 解析器、屏幕模型、PTY 运行时、字体栈、wgpu 渲染器,并以 ~12k 源码行 / 10 个直接依赖为硬预算。启动到 MCP 控制面就绪 22ms(旧内核 7.1s),空闲占用 6.6% 单核(旧 80%),20 万行吞吐持平。对旧内核的功能对齐按 159 项需求台账逐项收口,排版全面原生化:macOS 真红绿灯、pt 精确字号、CJK 渲染彻底修正。详见博客。

View all releases on GitHub →

六条原则,没有例外

01
Local-first, no cloud

Every server, every API endpoint, every recording lives on 127.0.0.1. No login, no telemetry, no subscription. Your shell history is yours.

02
AI lives outside the terminal

No chat overlay, no ghost-text autocomplete, no inline AI panel. The terminal is the surface — Claude Code, Cursor, your scripts grip it through MCP.

03
MCP is a first-class surface

Every product feature ships with an MCP method and a CLI subcommand on day one. If it can't be driven from outside, it doesn't ship.

04
Cross-platform parity is correctness

A feature that works on Windows but bails on macOS or Linux is a bug, not a 'not yet supported.' Mac, Linux, Windows ship together.

05
做减法,不做装饰

属于系统的能力就交给系统。AI 生成留在终端之外,核心功能保持本地运行,Finder 集成使用原生扩展。

06
尊重订阅。默认 OAuth。

你通过 Unterm 装一个 AI agent 时,默认认证模式是厂商官方订阅 (OAuth) —— 走你已购的 Pro / Plus / Team 套餐。Unterm 永远不偷偷往 session 里注入 API key;只有当你在配置表单里把认证模式显式切到「自带 API key」或「自定义端点」时,才会按 token 计费。是 opt-in,不是默认行为。

终端不需要内置 AI。
终端需要被 AI 控制。

这是 Unterm 和 Warp 的根本分岐——不是功能差距,是方向差别。

寿命错配

终端是用三十年的工具,AI 模型是六个月一换的组件。把 AI 焊死在终端里,等于让寿命最长的工具被寿命最短的组件定义——模型一过时,整个终端跟着过时。

你已经有 agent 了

Claude Code、Codex、Gemini CLI、Aider——你已经在用世界上最强的编码 agent,它们每个月都在变强。终端里再内置一个聊天框,只是多一个要登录的副驾驶,而且永远不如你正在用的那个。

缺的是“抓手”,不是“大脑”

agent 不缺智能,缺的是看见和操作终端的手。Unterm 把终端做成 MCP 可控面:开 pane、跑命令、读屏、滚屏长截图、改设置、录会话——agent 像人一样用终端,而不是隔着玻璃看。

Warp 的答案:把 AI 装进终端
  • AI 内嵌在终端 UI 里,绑定它的云——登录、订阅、配额
  • 用它选的模型,按它的节奏升级
  • AI 核心闭源,你的命令上下文走它的服务器
Unterm 的答案:把终端交给 AI
  • 终端是 MCP 可控面——任何 agent 即插即驱动,今天的或明年的
  • 你选 agent、你选模型,Unterm 永不绑定
  • MIT 全开源,一切都在 127.0.0.1——无登录、无订阅、无遥测

三十年后你还会在用终端。到时候驱动它的 AI 是哪一个,没人知道——所以唯一面向未来的终端,是把“被驱动”做到极致的那一个。

Unterm vs 原生终端 vs 付费 AI 终端

原生终端(Terminal.app)是你已经有的基线;Warp 是付费的 AI 终端;iTerm2 和 Ghostty 是免费的高级终端。Unterm 走自己的赛道:一切外部 agent 能从外面抓握的能力。

能力 Unterm Terminal.app Warp iTerm2 Ghostty
agent 优先 原生 付费 免费 免费
可从外部经 MCP 驱动 ✓ ✗ ✗ ✗ ✗
每个动作都有可脚本化 CLI ✓ ✗ ✗ Python API ✗
内置 AI 编码 agent 启动器 ✓ ×7 ✗ ✗ ✗ ✗
agent 自动接回终端 MCP ✓ ✗ ✗ ✗ ✗
Agent 座舱(收件箱 · 编队 · 审阅) ✓ ✗ ~ cloud ✗ ✗
身份 profile(一窗一套凭据) ✓ ✗ ✗ ✗ ✗
多实例编排 ✓ ✗ ✗ ✗ ✗
会话录制 → markdown ✓ md ✗ ~ ✓ ✗
MCP 截图 + 文件上传 ✓ ✗ ✗ ~ ✗
右键即复制 / 粘贴手势 ✓ gesture menu menu menu menu
内置代理管理 ✓ ✗ ✗ ✗ ✗
本地优先,无云端 / 无登录 ✓ ✓ ✗ ✓ ✓
AI 内嵌进终端 ✗ 刻意如此 ✗ ✓ (cloud) plugin ✗
GPU 渲染 ✓ ✗ ✓ ✓ ✓
macOS + Linux + Windows ✓ ✗ ✓ macOS mac+Linux
客户端开源 ✓ MIT ✗ ✗ ✓ GPL ✓ MIT
原生界面语言 ✓ ×9 OS en en en
价格 $0 $0 免费+付费 $ $0 $0

✓ 有 · ✗ 无 · ~ 部分 · ×N 数量。「AI 内嵌」那行的 ✗ 刻意如此 正是整个产品主张:Unterm 把 AI 留在外面,把终端本身作为它抓握的表面。

反映 2026-05 公开可查的功能。Warp 闭源,有云端支撑的免费层 + 付费 Team/Pro;iTerm2 提供 Python 脚本 API 和一个 opt-in 的 AI 命令插件;Ghostty 暂无 Windows 版本。欢迎在 GitHub 上指正。

常见问题

What is Unterm?

A cross-platform terminal emulator with built-in MCP, HTTP, and CLI control surfaces. The product thesis: terminal as MCP-controllable surface, so any external AI agent can drive it from outside instead of having an AI baked into the terminal itself.

怎么知道 Claude Code 在等我确认?

Unterm 跟踪每个 pane 的 agent 状态。当 Claude Code(或 Codex、Gemini、Aider)卡在确认上时,它的 tab 圆点变琥珀色、顶栏 chip 变警示色并计数、agent 升到收件箱(Ctrl+Shift+A)最顶端——Enter 直接跳到那个 pane。Claude Code 和 Gemini 零配置即可检测;“unterm-cli agent enable-hooks”可升级到 hook 级精确汇报。

能并行跑多个 Claude Code 实例而互不冲突吗?

可以——这正是 Fleet 的用途。“unterm-cli fleet launch --agents claude,claude,codex -- 任务”给每个成员在仓库旁分配独立的 git worktree 和分支,互相之间、以及和你的工作区之间都完全隔离。每个成员有自己的 tab 和实时状态角标,Review 页可以并排对比它们的产出。

如何审阅或撤销 AI agent 的改动?

agent 一开始干活,Unterm 就为仓库拍快照——一个 dangling git commit,不碰 HEAD、index 和你的文件。Review 页(Web 设置里)显示逐行 diff(含 agent 新建的文件),可以把满意的产出 squash 合并到暂存区(commit 由你来做)、丢弃不要的、或把工作区回滚到任意快照。

Unterm 支持哪些 AI 编码 agent?

启动器可一键安装并接线 Claude Code、Codex CLI、Gemini CLI、OpenCode 和 Aider。座舱的状态检测还开箱识别 kimi、trae、cursor-agent;任何发出标准终端信号(标题、OSC 9/777、BEL)的 agent 都能获得基础跟踪。任何工具都可以通过“unterm-cli agent signal”接入。

怎么只用鼠标完成复制粘贴?

右键一键两用:有选区时复制(并清除高亮),无选区时在光标处粘贴。macOS 上 Ctrl+点击是同一手势。在接管鼠标的终端应用里(vim、htop、Claude Code),用 Shift+拖选后纯右键同样能复制;无选区时右键归应用——按住 Shift 可强制 Unterm 粘贴。没有需要关闭的上下文菜单,剪贴板为空时安静无操作。

How does it work with Claude Code, Cursor, or other agents?

Each Unterm window starts a local MCP server (TCP, JSON-RPC, auth-token gated). Point your MCP client at 127.0.0.1:<port> — the port + token are written to ~/.unterm/server.json on launch. The agent can spawn shells, run commands, read pane state, capture screenshots, toggle recording, and switch settings.

如何用一个 agent 驱动多个 Unterm 窗口?

每个 Unterm 进程是一个实例,名字来自 NATO 字母表(alpha、bravo、…),记录在 ~/.unterm/instances/<name>.json。任意一个上调 instance.list 列举所有;按 cwd / title / 启动顺序选;用对应实例的 port 和 auth_token 连过去。~/.unterm/active.json 指向最近活的实例,给单实例 agent 兜底。

How is this different from Warp?

Warp embeds AI inside a closed cloud orchestrator (Oz) — external tools like Claude Code can't drive Warp from outside. Unterm picks the third lane: keep AI out of the terminal, expose the terminal itself as an MCP-controllable surface, and let any agent grip it. No cloud, no login.

Where does my data go?

Nowhere external. MCP and Web Settings servers bind to 127.0.0.1 only. Session recordings land under <project>/.unterm/sessions/ with built-in redaction for tokens. There is no telemetry, no analytics, no login, no cloud round-trip. Your shell history is yours.

Unterm 会上报数据吗?

不会。默认零遥测 —— 连「请允许收集匿名数据」的弹窗都没有。Unterm 唯一会发出的网络请求是:(1) 你在网页设置里点下载链接时;(2) 你的 shell 自己发的请求 —— 跟其他终端一样。我们不出货任何统计、错误上报、安装回调或更新检查。

有付费版或高级特性吗?

没有。Unterm 是 MIT 协议,同一个二进制包含所有功能。无订阅、无 Pro 版、无插件市场、无「付费解锁分屏」。如果想支持项目,页脚的「赞助」是唯一的方式。

安装包和运行时占多大?

macOS DMG ~50 MB · Linux .deb 27 MB · AppImage 43 MB · Windows MSI 43 MB。空闲、单窗口时常驻内存 ~110 MB,每多一个 pane 线性增加。原生 next-core 引擎通过 wgpu 渲染,运行成本通常主要来自每个 pane 中的 shell 和应用。

Unterm 会按系统语言自动切吗?

会。首次启动会读 OS 语言(macOS 上 defaults、Linux 上 $LANG、Windows 上注册表)然后在 9 种界面语言中选最接近的。可以在 Web Settings → Language 按窗口覆盖。翻译文件在 unterm-services/src/i18n/locales/*.json,欢迎 PR。

能阻止一个失控 agent 在我的仓库里跑 rm -rf 吗?

三道闸:(1) MCP 服务只监听 127.0.0.1 —— 没网。(2) 走 auth token;token 在 ~/.unterm/instances/<name>.json,没有这个文件的读权限连不上。(3) 新 agent 首次写入会弹 Allow / Block / Always-allow 阻塞条;审计日志记录每一次写入尝试和调用方身份。可以在网页设置 MCP 标签里随时撤销信任。

How do I script it?

Use unterm-cli: session list, proxy status, theme set midnight, session record start, screenshot. Pass --json to any subcommand for raw JSON-RPC output suitable for shell pipelines and cron jobs.

哪些平台有签名和公证?

macOS:通用 arm64 + x86_64 DMG,Developer ID 签名,Apple 公证 + stapled(无 Gatekeeper 警告)。Linux:Debian/Ubuntu 用 .deb,任意发行版用 AppImage。Windows:WiX 构建的 MSI 安装包和便携 .zip。每个 minor tag 都发到 GitHub Releases。

Is it open-source?

是,采用 MIT 许可。目前 GUI 与终端运行时使用 Unterm 原生 next-core 引擎。源码:github.com/zhitongblog/unterm。

如何参与贡献?

在 GitHub 上开 issue 或 PR。Bug、需求、讨论都在一个队列里。我们把累积的修复打成 minor 版本——patch 级别的版本不会触发 CI 构建。文档在仓库里 /docs。