启动每个 AI 编码 agent
的终端。
一键装、登录、配置、启动 Claude Code、Codex CLI、Gemini CLI、OpenCode、Aider —— 每个 agent 可自选官方订阅 / 自带 API key / 自定义端点。启动的 agent 反过来还能通过 MCP 驱动 Unterm。
AI agent 统一启动器 · 本地优先 · 无云端 · 无登录
60 秒看懂 Unterm
所有数字都能在源码 / Releases 里核对 · 每次发布刷新- 最新版本
- v0.57.1 · 2026-07-22 · 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 117 MB · .deb 35 MB · AppImage 46 MB · MSI 44 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 · 定制版 WezTerm 引擎 · MCP(line-delimited JSON-RPC)· Tailwind + Alpine 做网页设置
每个编码 agent 都能一键装上。零配置门槛。
如果你同时试过多个 AI 编码 CLI,你知道那个税:npm install、OAuth、申请 API key、~/.config/<vendor>/<每家格式不同>、环境变量、不同身份隔离。Unterm v0.18 把这一切收进一个设置 tab + 一个 CLI 子命令。没有任何其它终端在做这件事。
GUI 装或 CLI 装都行
在 agent 卡片上点 安装,或者跑 unterm-cli agent install <id>。Unterm 按你的平台跑对应的命令 (npm / pipx 等),验证 binary 进了 PATH,自动重新探测。
默认走官方订阅,BYO key 仍是 opt-in
大部分 agent 都有官方账号 / 订阅登录路径(Claude Pro、ChatGPT Plus、Google AI Pro)。Unterm 默认就是这个模式 —— 永远不偷偷往 session 里注入 API key。只有当你确实想按 token 计费或者走企业 gateway 时,才显式切到「自带 key」或「自定义端点」。
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,读取日志,并在仓库变绿之前持续迭代。
外层 agent 先把当前 pane 指向项目根目录,这样每条命令、日志和截图都锚定在同一个工作目录里。
它在分屏里拉起一个 coding agent,把任务交给它,让这个 agent 在终端内部完成编辑循环。
外层 agent 读取测试输出和 pane 状态,必要时继续重试,只有等终端显示工作完成后才进入提交或发布。
AI agent 能驱动终端 —— 包括它自己所在的那个。
下面是当前 Unterm 实例的真实 session。Claude Code 跑在 pane #0,通过 MCP 调 session.split 把右半屏切成新 pane #5,再 session.focus 把它激活,然后用 session.input 一个字符一个字符往里打命令;同一个 TCP socket 接着用 screen.text 把 shell 回显读回来。没有特殊 agent 集成 —— 纯 JSON-RPC,30 行 Python。
# Claude Code, running in pane 0 of this very Unterm window.
# Tells its own MCP server to spawn a new tab, then types into it.
import socket, json, time
s = socket.create_connection(("127.0.0.1", 19876))
# 1. auth — token is in ~/.unterm/instances/<name>.json
s.sendall(b'{"jsonrpc":"2.0","id":1,"method":"auth.login",'
b'"params":{"token":"…"}}\n')
# 2. split CURRENT pane right-half (since v0.17) · also `agent.launch` (v0.18) — true side-by-side, not a new tab
s.sendall(b'{"jsonrpc":"2.0","id":2,"method":"session.split",'
b'"params":{"id":0,"direction":"right","cwd":"/path/to/repo"}}\n')
new_pane_id = … # parse response → e.g. 5
# 3. focus it so the user sees the new pane immediately
s.sendall(b'{"jsonrpc":"2.0","id":3,"method":"session.focus",'
b'"params":{"id":new_pane_id}}\n')
# 4. type, character by character, with human rhythm
for ch in "git log --oneline -5\n":
payload = json.dumps({
"jsonrpc": "2.0", "id": 4,
"method": "session.input",
"params": {"id": new_pane_id, "input": ch}
})
s.sendall((payload + "\n").encode())
time.sleep(0.03)
# 5. read what the shell echoed back — same socket, opposite direction
# s.sendall(... method "screen.text", params {"id": new_pane_id}) alexlee@192 unterm % # 👋 Claude 通过 MCP 实时打字进来 ↓
alexlee@192 unterm % pwd
/Volumes/Dev/code/unterm
alexlee@192 unterm % git log --oneline -5
5f44d15 (HEAD -> master, tag: v0.18) release: prep v0.18 — AI agent integration
8ae3786 agents tab: fix detail view (route + detect plumbing)
7c18235 agents tab: wrap detail view in x-if so child bindings only run when open
6ff27a9 AI agents: Web Settings tab + 'Shell → AI Agents' submenu
6d22e2f AI agent integration: signed manifests + install/auth/configure/launch runtime
alexlee@192 unterm % echo '↑ 5 个 commit 都是 Claude 用 unterm-cli + MCP 推的'
↑ 5 个 commit 都是 Claude 用 unterm-cli + MCP 推的
alexlee@192 unterm % ls -la web/src/pages/docs/ | head -10
total 368
drwxr-xr-x 9 alexlee staff 288 agent-integration.md
drwxr-xr-x 6 alexlee staff 192 architecture.md
-rw-r--r-- 1 alexlee staff 14433 cli-reference.md
-rw-r--r-- 1 alexlee staff 22051 configuration.md
-rw-r--r-- 1 alexlee staff 25587 mcp-reference.md
-rw-r--r-- 1 alexlee staff 39507 multi-instance.md
-rw-r--r-- 1 alexlee staff 23827 profiles.md
alexlee@192 unterm % 写这段网站的 agent 就是跑了上面那段代码,再用 screen.text 把右边的输出拷进了这个 HTML。看到上面那个 v0.18 tag?同一个 agent 30 分钟前 push 的。读和写跑在同一个 socket —— 这就是全部故事。
Unterm 的三种用法
我们没为单一工作流设计。MCP 表面让每个角色都通过不同入口拿到同一套控制平面。
从 Claude Code、Cursor 或自己的 agent 控制多个终端 pane。每个 pane 一个任务;agent 决定在哪儿打字。多实例 NATO 命名(alpha、bravo、charlie…)让跨窗口路由变得简单。
- 导演/工人模式:外层 agent 监督 pane 里的内层 agent
- 长任务监视:发起构建,轮询到 idle,决定下一步
- 多 pane 编排:把工作分到多个项目,聚合结果
- 带 token 脱敏的录制,供 review 和微调
GUI 能做的事 cron 也能做。unterm-cli 在每个 release 里都有;任何下游想要原始 JSON-RPC 都可以用 --json。运维脚本、面板、Runbook 同一个表面。
- 自动代理探测:macOS scutil / Windows registry / GNOME gsettings
- 无头截图、pane 读取,便于事故文档
- 录制 → markdown 用于 Runbook 生成,默认 PII 脱敏
- 无埋点、无登录,所有服务绑定 127.0.0.1
MIT 授权的 WezTerm 分支,自带一流 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
按平台下载
选择适合你系统的已签名安装包,下面的直链会直接跳到 GitHub Releases。
curl -fsSL https://unterm.app/install.sh | sh Detects OS + arch, downloads the right artifact for the latest release. macOS gets the signed + notarized DMG into /Applications. Linux uses apt when available, falls back to the AppImage in ~/.local/bin.
Or grab the artifact directly:
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.
Line-delimited JSON-RPC on 127.0.0.1:19876, auth-token gated. Spawn shells, read pane state, capture screenshots, control sessions.
Same surface from any shell, cron job, or script. Thin JSON-RPC client over the local MCP — no duplicated business logic.
Modern config UI in the browser, not the cell grid. Tailwind + Alpine SPA at 127.0.0.1:19877. Themes, proxy, recordings, language.
en / 简体 / 繁體 / 日本語 / 한국어 / Deutsch / Français / Italiano / हिन्दी out of the box. System locale auto-detect.
OSC 133 block-segmented markdown with built-in redaction. Recordings live in <cwd>/.unterm/sessions/.
One-click region capture from the status bar. PNG to disk, image to clipboard, path to text clipboard.
Reads macOS scutil / Windows registry / GNOME gsettings / env. One-toggle on/off. No URL config.
Built on a customized WezTerm engine — Metal on macOS, OpenGL on Linux, DirectX via ANGLE on Windows.
完整的控制面
不是截图导览,而是每个 agent 和脚本都能调用的真实表面:21 个命名空间下 99 个 MCP 方法,外加 32 个 CLI 命令,全部返回同一份 JSON。
实时看到每个 CLI agent 的状态(干活中 / 等你 / 空闲),从 Agent 收件箱一键跳到需要你的那个,在隔离的 git worktree 里为同一个任务启动 N 个 agent 编队,再对它们的产出审阅、合并或回滚——GUI、MCP、CLI 都能操作。
从终端外创建、切分、聚焦、调整尺寸、销毁 pane。逐字符往任意 pane 打字、读它的 cwd、轮询到 idle —— 完全不用模拟按键。
拉取实时 viewport 文本、把完整 scrollback 作一个字符串、光标位置、或正则搜索。detect_errors 标出失败命令供 agent 响应。
跑命令并流式拿输出、run-and-wait 拿退出码、发原始字节、查状态、取消、或投递 POSIX 信号 —— 结构化结果,不是刮屏。
安装、登录、配置、启动 Claude Code / Codex / Gemini / OpenCode / Aider。mcp-stdio 桥接把每个 agent 自动接回当前终端的 MCP server。
把窗口绑到一套开发者身份 —— GitHub PAT、AWS keys、npm token、SSH key、git 作者。凭据存在系统 vault;7 个嗅探器只读发现已有的。
每个窗口是一个 NATO 命名实例(alpha、bravo、charlie…)。列举机器上每个活着的 Unterm、聚焦其一、或改标题 —— agent 按 cwd 或标题在窗口间路由任务。
把任意 session 录成 asciicast、回放、或导出成 OSC-133 分块 markdown 并脱敏 token —— 每块带命令、输出、退出码和耗时。
截全屏、某窗口、或框选区域;读剪贴板;或把文件直传你自己的阿里云 OSS / 腾讯 COS / 七牛桶并拿回公开 URL —— 全走 MCP。
读 OS 代理状态、在配置好的节点间切换、测延迟、或应用 / 清除系统代理覆盖(macOS scutil · Windows 注册表 · Linux env)—— 零 URL 粘贴。
每次 agent 写入都记录其身份;写入确认策略把控首次接触。测试策略判定、跑内置自测套件、读 liveness/readiness 标志。
保存当前窗口完整的 pane / tab 布局、列出已存布局、恢复其一 —— agent 可以给一组工作快照,之后再拉回来。
meta.surface 一次调用返回每个 MCP 方法(含参数 schema)、每个 CLI 子命令、每个生效的快捷键 —— 刚连进来的 agent 不查文档就学会整套 API。
每个方法都能从 MCP(TCP 上的 JSON-RPC)、unterm-cli 二进制、网页设置 HTTP API 和 GUI 四个入口调用 —— 一次 meta.surface(或 unterm-cli reference)往返就实时返回这整张清单。
Unterm 真正与众不同的地方
三条你自己能 grep / build / run 验证的差异。没营销话术。
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 都能驱动。
session.split + session.focus 通过 MCP 让外部 agent(Claude Code、Cursor、自己写的脚本)把当前窗口左 / 右 / 上 / 下切开并把焦点交给新 pane —— 不用模拟任何按键。Hero 的 Python 例子就在用。其他终端都没把 pane 几何暴露给外部进程。
每一次 session.input / exec.send 都记录调用 agent 的身份。新 agent 首次写入会触发 Allow / Block / Always-allow 横幅。信任写到 ~/.unterm/trusted_agents.json,可在网页设置 MCP 标签里一键撤销。状态栏显示实时 MCP 写入次数。
日常用得到的小细节
都不是宣传级特性,但日复一日加起来就是顺手。
Fish 风格的灰色预测,从任意 pane 的 shell history 续写当前输入;→ 或 End 接受。
Agent 可以「提议」命令而不直接写入 PTY —— 在状态栏上方显示;Tab 接受,Alt+Enter 接受并执行。
从状态栏框选任意矩形;PNG 落盘、图像入剪贴板、文件路径作文本一次到位。
内置 9 套主题;unterm-cli theme set midnight 一键热切换。状态栏显示当前 pane 的 $HOME 相对路径。
Finder 右键 → Open in Unterm。用 AppleScript Services 扩展,应用内不堆右键菜单。
当前窗口绑定的身份 profile(GitHub PAT / AWS keys / npm token)会显示在状态栏;点击切到下一个 profile 的新窗口。
自动读 macOS scutil / Windows 注册表 / GNOME gsettings / 环境变量。一个开关。不用粘贴 URL。
录制按 shell prompt 边界自动切块。每块带命令、输出、退出码、耗时 —— 都可搜。
右键就是复制粘贴,不是菜单
整个复制粘贴闭环只用一个键。有选区时,右键复制并自动取消选中;无选区时,同一下右键在光标处粘贴。永远不会弹出上下文菜单、无需关闭任何东西——一只手握着鼠标,就能把一个 pane 的输出喂给另一个。
拖选输出,或直接双击一个词。右键:内容进剪贴板,高亮自动清除,pane 立即准备好接受下一个手势。
没有选区?同一下右键就在提示符处粘贴。从一个 pane 复制、点进另一个、再点一下——命令搬过去了,零键盘。剪贴板为空时安静无操作,绝不报错。
macOS 把 Ctrl+点击视为副击,Unterm 也一样——触控板、Magic Mouse 或任何第三方驱动都适用。只有纯 Ctrl 才触发,你自定义的 Ctrl 组合鼠标绑定和 Ctrl+Shift 拖窗完全不受影响。vim 等接管鼠标的 TUI 保留自己的右键;按住 Shift 可强制使用 Unterm 手势。
v0.57.1 已在 macOS 上用真实鼠标事件端到端实测:复制、粘贴、Ctrl+点击、空剪贴板静默,全部通过。
终端现在看得见跑在里面的 agent
Claude Code、Codex、Gemini、Aider——每个 pane 都在汇报谁在干活、谁在等你、改了什么。零配置即可用;一条命令升级到 hook 级精确汇报。
四层信号——官方 hooks、标题/OSC 解析、进程识别、屏幕启发——折叠为每个 pane 的一个状态:干活中(呼吸蓝点)、等你(琥珀色)、完成、空闲。顶栏跨窗口计数,一有 agent 等你立刻转为警示色。
Ctrl+Shift+A:所有窗口的所有 agent,等待中的排最前,显示卡了多久、卡在什么上。Enter 直接跳到那个 pane。“过去按个 y”现在只要两次按键。
让 claude × 2 + codex 赛跑同一个任务——每个成员在仓库旁自己的 git worktree 和分支里,自己的 tab、自己的状态角标。你的工作区分毫不动。
agent 一动工,Unterm 就为仓库拍快照(dangling commit——不碰 HEAD、index 和你的文件)。逐行 diff 含 agent 新建的文件,squash 合并到暂存区(commit 由你来做),可回滚到任意快照,成员产出并排对比。
座舱本身就是 MCP + CLI:agent.status、cockpit.inbox、fleet.launch、review.merge……编排型 agent 可以在无人值守下启动编队、审阅 diff。本地优先——这一切不经过任何云。
v0.44 新增
抗抖动的代理自动轮换、每个 AI CLI 的 flag 与参数完整灰字补全、Windows 上零配置探测 Clash —— 最近几个版本,四张卡说清。
编队自己闭环。成员自动验证——Review 会推断该项目的验证命令(Cargo / Go / npm / pnpm / yarn / Python / Maven / Gradle / .NET)或运行你指定的命令,持久化状态与日志,并以验证通过作为 squash-merge 的门禁(可用留痕的 force 覆盖)。成员按验证结果与改动规模排名;失败成员在原 worktree 原地重试,不丢任何改动。同时新增 MCP + CLI 的 review.verify / fleet.retry、侧栏按项目分组导航 + 模糊搜索——以及覆盖所有表面的全新 command-loop 品牌标识。
终端看得见里面的 agent 了:每 pane 实时状态(tab 角标 + 跨窗口计数)、等待优先的 Agent 收件箱(Ctrl+Shift+A)、一个任务在 N 个隔离 worktree 里并行的 Fleet、带快照/diff/回滚/squash 合并的 Review 页。新增 12 个 MCP 方法、3 组 CLI 命令。
一个性能版本。冷启动 ~780ms → ~280ms。五项启动路径优化:config 键改为对预计算集合校验,不再每个键重建整个 config(Lua 求值 297ms → 8ms);跳过多余的第二次 config 加载;WSL 发行版改从注册表读取,不再启动 wsl.exe;1119 个内置配色并行解析;GL 上下文在命令行解析后立刻在辅助线程预热。输出洪峰不再吃满一个 CPU 核。Windows 上,被节流的 WM_PAINT 处理器过去没有校验更新区域,导致持续输出时消息循环空转在约 91% 的核;现在降到约 4%。洪峰中 MCP 保持响应(过去 30s 超时,现在几十毫秒应答)。另修复:终端首行不再被顶栏遮住;设置菜单预热不再因字形图集过小而失败;unterm-cli 不带 --id 时会作用到你正看着的那个 pane。
不只是看着 agent,而是驱动它。Composer —— prompt 队列(Ctrl+Shift+J)。把多条 prompt 排好队,依次发进当前 pane;在自动批准模式下,Composer 会智能跳过 agent 的确认提示,让一批指令一路跑完,无需逐步盯着。只读 Git 面板(Ctrl+Shift+G)。右侧停靠的面板一眼展示当前 pane 的分支、上游跟踪与工作区状态,终端会自动让位,收起也同样迅速。侧栏 tab 显示各自在干什么。每行现在按其前台命令命名,顶栏、侧栏与底部状态栏合并为同一整体框架。启动更稳。修复了无 GPU / 老 GPU 机器上的一处 Windows 崩溃:WebGpu 回退期间进程可能在窗口出现前就退出。
六条原则,没有例外
Every server, every API endpoint, every recording lives on 127.0.0.1. No login, no telemetry, no subscription. Your shell history is yours.
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.
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.
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.
属于系统的能力就交给系统。终端内不做自定义右键菜单,不做 Cmd+Q 确认,不手填代理 URL;Finder 集成改用原生右键扩展和 Services。
你通过 Unterm 装一个 AI agent 时,默认认证模式是厂商官方订阅 (OAuth) —— 走你已购的 Pro / Plus / Team 套餐。Unterm 永远不偷偷往 session 里注入 API key;只有当你在配置表单里把认证模式显式切到「自带 API key」或「自定义端点」时,才会按 token 计费。是 opt-in,不是默认行为。
终端不需要内置 AI。
终端需要被 AI 控制。
这是 Unterm 和 Warp 的根本分岐——不是功能差距,是方向差别。
终端是用三十年的工具,AI 模型是六个月一换的组件。把 AI 焊死在终端里,等于让寿命最长的工具被寿命最短的组件定义——模型一过时,整个终端跟着过时。
Claude Code、Codex、Gemini CLI、Aider——你已经在用世界上最强的编码 agent,它们每个月都在变强。终端里再内置一个聊天框,只是多一个要登录的副驾驶,而且永远不如你正在用的那个。
agent 不缺智能,缺的是看见和操作终端的手。Unterm 把终端做成 MCP 可控面:开 pane、跑命令、读屏、滚屏长截图、改设置、录会话——agent 像人一样用终端,而不是隔着玻璃看。
- AI 内嵌在终端 UI 里,绑定它的云——登录、订阅、配额
- 用它选的模型,按它的节奏升级
- 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 上指正。
Get Unterm 0.23
macOS bundle is signed with a Developer ID and Apple-notarized. Linux .deb / AppImage and Windows .msi / .zip are also published.
打开最新发布页常见问题
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)保留自己的行为——按住 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 ~117 MB · Linux .deb 35 MB · AppImage 46 MB · Windows MSI 44 MB。空闲、单窗口时常驻内存 ~110 MB,每多一个 pane 线性增加。引擎是定制版 WezTerm(GPU 渲染:Metal / OpenGL / DirectX),比裸终端大一些,但运行成本主要来自你的 shell,不是渲染器。
Unterm 会按系统语言自动切吗?
会。首次启动会读 OS 语言(macOS 上 defaults、Linux 上 $LANG、Windows 上注册表)然后在 9 种界面语言中选最接近的。可以在 Web Settings → Language 按窗口覆盖。翻译文件在 wezterm-gui/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?
Yes — MIT licensed. Built on top of the WezTerm engine for renderer / font / SSH / mux work, with a thin Unterm product layer (MCP, Web Settings, recording, i18n, signing pipeline) on top. Source at github.com/zhitongblog/unterm.
如何参与贡献?
在 GitHub 上开 issue 或 PR。Bug、需求、讨论都在一个队列里。我们把累积的修复打成 minor 版本——patch 级别的版本不会触发 CI 构建。文档在仓库里 /docs。
支持 Unterm
一个开发者业余时间在维护 Unterm。如果它给你的日常加速了,少量赞助能让项目活下去。
国际 monthly 或单次。GitHub 经 Stripe 处理。随时取消。
全球单次打赏,本币任意金额。
赞助者会列入 README 和应用内 About 弹窗(征得同意)。没有付费墙、没有 Pro 版 —— 所有功能都在同一个 MIT 二进制里。