Unterm

Unterm 的全部功能

完整清單:每一個控制面、每一項能力,以及為什麼這樣設計。

閱讀高階用法 →

60 秒看懂 Unterm

所有規格都能在原始碼中驗證 · 每次發布更新
最新版本
v0.71.18 · 2026-10-04 · 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 · 無付費方案 · 無訂閱 · 無 App 內購買
平台
macOS(通用)· Linux x86_64 + arm64(.deb + AppImage)· Windows 10/11 x64 + arm64(.msi + 免安裝 .zip)——每次發布 9 個安裝包
安裝檔大小
DMG 50 MB · .deb 27 MB · AppImage 43 MB · MSI 43 MB(x86_64 / x64)
閒置記憶體
常駐~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 用戶端 — 全部透過 1 個 socket,約 30 行程式碼
資料收集
零遙測 · 無帳號 · 無統計分析 · 所有伺服器只綁定 127.0.0.1
技術堆疊
Rust · 原生 next-core 引擎 · wgpu · MCP(以行分隔的 JSON-RPC)· 網頁設定採 Tailwind + Alpine
v0.18 · AI Agent 啟動器

每個編碼 agent 都能安裝。各自一鍵。沒有設定負擔。

如果你試過同時執行多個 AI 編碼 CLI,就知道那筆負擔:npm install、OAuth 流程、API key、~/.config/<vendor>/<different format each>、環境變數、profile 隔離。Unterm v0.18 把這些全收進一個設定分頁 + 一個 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 卡片上按 Install,或執行 unterm-cli agent install <id>。Unterm 會依你的平台執行正確的指令(npm / pipx 等)、確認執行檔已在 PATH 上,並自動重新偵測。

02 · subscription-safe

官方訂閱優先。自帶 key 需主動選擇。

大多數 agent 都提供官方帳號或訂閱登入方式(Claude Pro、ChatGPT Plus、Google AI Pro)。Unterm 預設使用這個模式——絕不會悄悄注入 API key。只有當你確實需要依 token 計費或企業閘道時,才在設定表單中明確切換到 自帶 key 或 自訂端點。

03 · signed catalog

Ed25519 簽署的 manifest 目錄

agent 清單與其安裝指令並非寫死在 Unterm 裡——而是由 unterm.app/api/agents/manifests 提供的簽署信封。即使 CDN 遭入侵,也無法把 curl | sh 推送到你的機器;公鑰已內建在每個 Unterm 執行檔中。

AI 控制終端,MCP 負責落地。

大多數終端把 AI 嵌進二進位裡。Unterm 反著來:把 AI 放在外面,讓任何外部 agent 都能透過 MCP 抓握終端這個表面。被控制的是終端,真正執行的是 agent。

典型案例

一個 AI 透過終端控制另一個 AI。

外層 agent 掌握終端工作階段。它切換 cwd、在 pane 中啟動內層編碼 agent、讀取日誌,並持續迭代直到儲存庫全部通過。

01
開啟儲存庫

外層 agent 把目前的 pane 指向專案根目錄,讓每個指令、日誌和截圖都固定在同一個工作目錄。

02
啟動內層 agent

它在分割的 pane 中啟動一個編碼 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
  • 長時間監看:啟動建置,輪詢到閒置,再決定下一步
  • 多 pane 編排:把工作分到多個專案,彙整結果
  • 帶 token 遮蔽的錄製,供審閱與微調
⚙️
DevOps 與 SRE

GUI 能做的事,cron 也能做。unterm-cli 隨每個版本發布;任何需要原始 JSON-RPC 的下游都可以接上 --json。維運指令碼、儀表板、Runbook 都用同一個表面。

  • 自動偵測代理:macOS scutil/Windows 登錄檔/GNOME gsettings
  • 無頭截圖與 pane 讀取,方便撰寫事故文件
  • 錄製 → markdown,用於產生 Runbook,預設遮蔽個資
  • 沒有遙測、不需登入,所有服務都綁定 127.0.0.1
🔧
進階使用者與開源 hacker

MIT 授權,自 v0.61 起跑在自研 next-core 核心上(約 12k 行、10 個直接相依套件),內建一流的 agent 整合。GitHub 上接受修補。可以自己編譯;二進位 CLI 隨每個版本發布。網頁設定 UI 是 Tailwind + Alpine SPA——fork 頁面,改顏色就行。

  • macOS 通用 arm64 + x86_64 二進位檔,Developer ID 簽署
  • Linux .deb(apt)與 AppImage(任意發行版)
  • Windows MSI(WiX 6)+ 免安裝 .zip
  • 內建 9 種語言,自動偵測系統語系

四個控制面,一個引擎

每個 Unterm 視窗都會啟動一個本機 MCP 伺服器和一個 HTTP 設定伺服器。從任何一個入口都能讀寫同一份 JSON 狀態。

🔌
MCP 伺服器

127.0.0.1:19876 上以行分隔的 JSON-RPC,需 auth token 驗證。開 shell、讀取 pane 狀態、截圖、控制工作階段。

⚡
unterm-cli

在任何 shell、cron 工作或指令碼裡使用同一套表面。它只是本機 MCP 之上的一層 JSON-RPC 用戶端,不重複實作業務邏輯。

🖥️
網頁設定

在瀏覽器裡設定,而不是在字元格裡折騰。Tailwind + Alpine SPA,位址 127.0.0.1:19877。主題、代理、錄製、語言。

🌍
9 種語言

en / 简体 / 繁體 / 日本語 / 한국어 / Deutsch / Français / Italiano / हिन्दी 開箱即用,自動偵測系統語系。

🎬
工作階段錄製

依 OSC 133 分段的 markdown,內建遮蔽。錄製檔存放在 <cwd>/.unterm/sessions/。

📸
區域截圖

在狀態列一鍵框選截圖。PNG 存到磁碟,影像進剪貼簿,路徑進文字剪貼簿。

🌐
代理自動偵測

自動偵測 macOS / Windows / GNOME / 環境變數設定,也支援手動 HTTP/SOCKS 覆寫、具名節點、輪替與 Clash/mihomo 控制器。

⚙️
GPU 算繪

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

完整的控制面

不是截圖導覽,而是每個 agent 和指令碼都能呼叫的真實表面:30 個命名空間下共 152 個 MCP 方法,外加 34 個 CLI 指令,全部回傳同一份 JSON。

152
MCP 方法
30
命名空間
34
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
🪟 工作階段與 pane
session.* · 27

從終端外部建立、分割、聚焦、調整大小和關閉 pane。逐字元輸入到任意 pane、讀取它的 cwd、輪詢直到閒置——完全不需模擬按鍵。

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

取得即時可視區文字、整段回捲內容(合成一個字串)、游標位置,或用正規表示式搜尋。detect_errors 會標出失敗的指令,供 agent 做出反應。

text · scrollback_text · search · cursor · detect_errors · scroll
▶️ 指令執行
exec.* · 5

執行指令並串流輸出、執行並等待結束碼、送出原始位元組、查詢狀態、取消,或傳送 POSIX 訊號——結構化結果,而不是擷取螢幕文字。

run · run_wait · send · status · cancel · signal.send
🤖 AI agent 啟動器
agent · 7 CLIs

安裝、登入、設定並啟動 Claude Code / Codex / Gemini / OpenCode / Aider。mcp-stdio 橋接會把每個 agent 自動接回這個終端的 MCP 伺服器。

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

把視窗綁定到一套開發者身分——GitHub PAT、AWS 金鑰、npm token、SSH 金鑰、git 作者。憑證存放在作業系統的保管庫;7 個偵測器以唯讀方式找出既有憑證。

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

每個視窗都是一個以 NATO 字母命名的實例(alpha、bravo、charlie…)。列出這台機器上所有執行中的 Unterm、聚焦其中一個或修改標題——agent 依 cwd 或標題在視窗之間分派工作。

list · info · focus · set_title
🎬 工作階段錄製
recording · markdown

把任意 pane 錄成依 OSC 133 指令區塊切分的 Markdown——每個區塊含指令、輸出、結束碼和耗時——並遮蔽 token。可透過 MCP 或 CLI 列出、讀取或匯出錄製。沒有回放功能:舊的 asciicast record / replay 指令已移除。

recording_start · stop · status · list · read · export_markdown
📸 擷取與上傳
capture.* · 6 + upload

截取整個螢幕、單一視窗或矩形區域(macOS 和 Windows;Linux 上目前回傳「尚未實作」);在所有平台把 pane 的整段回捲算繪成一張長 PNG;在 macOS 上對其他 app 的視窗截長圖;讀取剪貼簿;或把檔案上傳到你自己的阿里雲 OSS / 騰訊 COS / 七牛 bucket 並取得公開 URL——全部透過 MCP。

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

讀取作業系統代理狀態、在已設定的節點間切換、測試端點延遲,或套用 / 清除系統代理覆寫(macOS scutil · Windows 登錄檔 · Linux 環境變數)——完全不必貼上 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 / 分頁配置、列出已儲存的配置並還原其中一個——agent 可以為一組工作環境建立快照,之後再叫回來。

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

meta.surface 一次呼叫就回傳每個 MCP 方法(含參數 schema)、每個 CLI 子指令和每個生效中的按鍵綁定——剛連上的 agent 不必看文件就能掌握整套 API。

reference · show-keys · settings · theme · lang

agent 和指令碼透過 MCP(TCP 上的 JSON-RPC)和 unterm-cli 執行檔使用這套表面;人則使用 GUI 和 網頁設定 頁面,其 HTTP API 指令碼也能呼叫。這四者彼此重疊,而非一一對應——例如主題、語言和 unterm.conf 就不在 MCP 上。對 meta.surface(或 unterm-cli reference)做一次往返,即可即時取得所有 MCP 方法、CLI 指令和按鍵綁定。

Unterm 的突出之處

三項你可以自己 grep、建置或執行來驗證的主張。沒有行銷話術。

🤖 v0.18
啟動每一個 AI 編碼 CLI 的終端

v0.18 讓 Unterm 成為 Claude Code、Codex CLI、Gemini CLI、OpenCode 和 Aider 的一鍵啟動器。每個 agent 的安裝指令、OAuth 流程、API key 和原生設定檔,都由從 unterm.app 取得的簽署 manifest 描述;執行階段會把 key 存進作業系統鑰匙圈、寫入 agent 自己的 JSON/TOML/YAML 設定(保留未知欄位)、把 Unterm 本身以 MCP 伺服器的形式提供給 agent,並把工作階段記入稽核——全部都能從 CLI 和新的 AI Agents 網頁設定分頁操作。

🪟 v0.17
AI 從終端外部分割 pane

透過 MCP 的 session.split + session.focus,外部 agent(Claude Code、Cursor、你的指令碼)可以把目前視窗向左 / 右 / 上 / 下切開,並把焦點交給新 pane——完全不需模擬任何按鍵。首頁的 Python 範例就內建了這個用法。沒有其他終端以這種方式把 pane 幾何資訊開放給外部程序。

👁️ v0.16
每一次 agent 寫入都可稽核、可撤銷、可檢閱

每一次 session.input / exec.send 都會記錄呼叫端 agent 的身分。新 agent 第一次寫入時會跳出 Allow / Block / Always-allow 橫幅。信任會儲存到 ~/.unterm/trusted_agents.json,可在網頁設定的 MCP 分頁一鍵撤銷。狀態列會顯示即時的 MCP 寫入次數。

使用體驗

積少成多的小細節

日常主力工具的打磨——沒有一項是主打功能,但加起來就消除了摩擦。

👻
跨 pane 幽靈文字

Fish 風格的灰色預測,依任意 pane 的 shell 歷史接續你的輸入;按 → 或 End 接受。

✨
session.suggest 建議列

agent 可以提議指令而不碰 PTY——顯示在狀態列上方;Tab 接受,Alt+Enter 接受並執行。

📋
區域截圖 → 剪貼簿

從狀態列框選任意矩形;PNG 存到磁碟、影像進剪貼簿、檔案路徑以文字形式提供——一次到位。

🎨
主題 + 每個分頁的 CWD

內建 7 套主題;unterm-cli theme set midnight 即時切換全部視窗。狀態列顯示目前 pane 相對於 $HOME 的 cwd。

📁
macOS 原生右鍵選單

在 Finder 按右鍵 → Open in Unterm。使用 AppleScript Services 擴充功能——app 內不另做右鍵選單。

🪪
狀態列身分標籤

目前的身分 profile(綁定到此視窗的 GitHub PAT / AWS 金鑰 / npm token)會顯示在狀態列;點一下即可開啟下一個 profile。

🚦
零設定代理

讀取 macOS scutil / Windows 登錄檔 / GNOME gsettings / 環境變數。一個開關切換開或關。不必貼上 URL。

🌐
OSC 133 區塊切分

錄製會依 shell 提示字元的邊界自動切分。每個區塊含指令、輸出、結束碼和耗時——都可搜尋。

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.18 終端機裡直接顯示圖片

Unterm 現在能顯示內嵌圖片——kitty 圖形協定、iTerm2 內嵌圖片和 sixel,chafa、img2sixel、viu、timg 和 unterm-cli imgcat 都會直接顯示圖片本身。圖片隨旁邊的文字一起捲動、留在回捲歷史裡、在窗格邊緣乾淨裁切,並只屬於繪製它的那一屏(含備用屏)。查詢像素格子大小的程式會得到真實值。Agent 可以用 screen.images 列出圖片。另外:設定裡的 [platform.*] 分段現在生效,close_confirmation 可用,無效的設定會說明原因。

v0.71.17 自己就能更新,也知道指令是怎麼結束的

一鍵更新:unterm-cli update、命令面板裡的「安裝更新」或 Web 設定裡的按鈕,會下載新版本、校驗 SHA-256(macOS 還校驗簽名),然後重新啟動進新版本。shell 整合自動載入到 zsh、bash、fish 和 PowerShell:失敗的指令會在分頁上標 ▲,而只是輸出裡出現「error」字樣的不會。Agent 向終端要的東西也都有了:Shift+Enter 不再等同於 Enter(kitty 鍵盤協定)、顏色查詢按你的主題回答、分頁下的進度條(OSC 9;4)、整屏重繪不再撕裂(mode 2026)。另外:Windows 的 shell 選單裡有 Git Bash 和每個 WSL 發行版;崩潰對話框可以開啟預填好的 GitHub issue;可以用 Homebrew 和 Scoop 安裝。

v0.71 沒有顯示卡驅動的機器,也能把終端打開

啟動只試硬體那兩條路,試完就不試了。一台沒有可用顯示驅動的 Windows 機器上——虛擬機、乾淨安裝的系統、遠端桌面——DX12 找得到配接器卻配不出表面,OpenGL 根本沒有驅動可找,於是終端以「no working GPU path」拒絕啟動,而 WARP 一直在那台機器上:它隨 D3D12 出貨,不需要任何驅動,只是從來沒人問過它。現在回退鏈的末端是軟體光柵器。同一版裡:`unterm-cli start` 交接不成而另起一個行程時會說出來;provider manifest 也終於能通過讀它的那份契約。

v0.68 一個行程,N 扇窗,第二扇 31 毫秒

第二扇窗從前是第二個 Unterm:又一個 GPU 配接器、又一條 Core 連線、587 毫秒的等待。現在它開在已經跑著的那個行程裡,31 毫秒。視窗有了 id,一個工作階段只屬於一扇窗,關窗關掉的是檢視,shell 留在 Core 裡交給剩下的窗。只有最後一扇窗才問你是不是真要離開。

v0.68 能把 agent 託管進去的終端,而不是隔著玻璃喊話

能力現在住在租約後面:agent 申請一份,在一把你看得見的鑰匙下使用,你撤銷時它就失去。批准變得可以回答了,問題說的是「接下來要發生什麼」,而不是碰巧實作它的那個方法名。fleet 改為持久儲存,跑到一半當掉不再丟掉「誰在做什麼」。

v0.66 關掉視窗,shell 留著

「在背景繼續執行」終於在螢幕上留下了東西——三個平台都有的系統匣指示器,報出還活著幾個工作階段,一次點擊把駐留的視窗喚回來。agent 也能做同一件事。兩個關閉按鈕不再對你的 shell 各執一詞。

v0.64 中日韓文字:複製是字,選取是詞,輸入不碎

輸入中日韓文字曾經碎成 `<009d>` 那樣的位元組垃圾。複製出來的是網格裡的佔位格而不是文字,於是貼上回來帶著窟窿。雙擊選取半個詞,另一半丟了。現在寬字元就是一個字元:選取時是,剪貼簿上是,輸入進來也是。

v0.63 工作階段歸一個行程所有——而且安裝包這次真的裝得全

unterm-core 現在持有你的工作階段:每使用者一個行程,裝著 shell、回捲與分割配置,承載整個 MCP 控制面,在視窗之間接力(v0.62)。結束最後一個視窗時它也隨之結束,除非那扇窗駐留在系統匣,或 Core 以 --headless 啟動。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
本機優先,不上雲

所有伺服器、所有 API 端點、所有錄製都在 127.0.0.1 上。不需登入,沒有遙測,沒有訂閱。你的 shell 歷史只屬於你。

02
AI 待在終端之外

沒有聊天浮層,沒有內嵌 AI 面板,終端裡沒有模型。終端就是那塊表面——Claude Code、Cursor、你的指令碼透過 MCP 抓住它。它唯一會做的預測,是 shell 提示字元處根據你自己歷史產生的灰色幽靈文字;在執行著 Claude Code 這類 agent 的 pane 裡它不會出現。

03
MCP 是一等控制面

面向 agent 的功能都帶著 MCP 方法和 CLI 指令一起發布。例外是刻意的:主題、語言和設定檔留在你手裡——網頁設定、<code class="font-mono text-xs">unterm-cli</code> 和 <code class="font-mono text-xs">unterm.conf</code>——這樣沒有 agent 會在工作階段中途改你終端的樣子。

04
跨平台一致才算正確

一個功能在 Windows 上能用、在 macOS 或 Linux 上卻出問題,那就是 bug,不是「暫不支援」。Mac、Linux、Windows 一起發布。

05
做減法,不做裝飾

屬於作業系統的功能就交給作業系統。AI 生成留在終端之外,核心運作保持在本機,macOS 上使用原生 Finder 整合。

06
尊重訂閱。預設 OAuth。

透過 Unterm 安裝 AI agent 時,預設驗證模式是廠商的官方訂閱(OAuth)——也就是你的 Pro / Plus / Team 方案。我們絕不會悄悄把 API key 注入工作階段;只有當你在設定表單中明確把驗證模式切換為「自帶 API key」或「自訂端點」時,才會依 token 計費。這是主動選擇,而不是陷阱。

終端不需要內建 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 駕駛艙(收件箱 · fleet · 審閱) ✓ ✗ ~ cloud ✗ ✗
身分 profile(每個視窗一套憑證) ✓ ✗ ✗ ✗ ✗
多實例協調 ✓ ✗ ✗ ✗ ✗
工作階段錄製 → markdown ✓ md ✗ ~ ✓ ✗
MCP 截圖 + 檔案上傳 ✓ (Linux ~) ✗ ✗ ~ ✗
選取即複製,右鍵即貼上——無選單 ✓ 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 留在外面,把終端開放成 AI 能抓握的表面。

依據截至 2026-05 的公開文件功能整理。Warp 為閉源,提供依賴雲端的免費方案及付費 Team/Pro 方案;iTerm2 提供 Python 指令碼 API 和需自行啟用的 AI 指令外掛;Ghostty 尚無 Windows 版本。歡迎在 GitHub 上指正。

常見問題

Unterm 是什麼?

一個跨平台終端模擬器,內建 MCP、HTTP 和 CLI 控制面。產品主張是終端作為可被 MCP 控制的表面:任何外部 AI agent 都能從外面驅動它,而不是把 AI 塞進終端本身。

怎麼知道 Claude Code 正在等我核准?

Unterm 會追蹤每個 pane 的 agent 狀態。當 Claude Code(或 Codex、Gemini、Aider)卡在等待確認時,它的 tab 圓點會轉為琥珀色、頂欄晶片轉為琥珀色並顯示數量,該 agent 也會升到 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 由你來做)、捨棄不要的,或把 worktree 還原到任何檢查點。

Unterm 支援哪些 AI 編碼 agent?

啟動器可一鍵安裝並接好 Claude Code、Codex CLI、Gemini CLI、OpenCode 和 Aider。座艙的狀態偵測還能開箱辨識 kimi、trae 和 cursor-agent;任何會發出標準終端訊號(標題、OSC 9/777、BEL)的 agent 都能自動獲得基本追蹤。任何工具都可以透過「unterm-cli agent signal」整合。

怎麼只用滑鼠複製和貼上?

選取即複製,右鍵即貼上。拖曳或雙擊後放開,文字就已經在剪貼簿上。右鍵一律在游標處貼上——不論有沒有選取,在每個 pane 都一樣,包括接管滑鼠的程式(vim、htop、Claude Code):Unterm 會保留右鍵,而不是轉交給它們。在這類程式中,按住 Shift 再拖曳即可選取。在 macOS 上,單純的 Ctrl+點按等同右鍵,滑鼠中鍵也能貼上。沒有需要關閉的內容選單,剪貼簿為空時安靜地什麼都不做。

它怎麼和 Claude Code、Cursor 或其他 agent 搭配?

每個 Unterm 視窗都會啟動一個本機 MCP 服務(TCP、JSON-RPC、auth token 驗證)。把你的 MCP 用戶端指向 127.0.0.1:<port> —— 連接埠和 token 在啟動時寫入 ~/.unterm/server.json。agent 可以開 shell、跑指令、讀 pane 狀態、截圖、開關錄製,以及使用 Agent Cockpit(狀態、收件匣、fleet、審閱)。主題、語言和設定刻意不在 MCP 上;請在網頁設定、用 unterm-cli 或在 unterm.conf 裡修改。

如何用一個 agent 驅動多個 Unterm 視窗?

每個 Unterm 程序是一個實例,名字取自 NATO 字母表(alpha、bravo、…),記錄在 ~/.unterm/instances/<name>.json。在任一實例上呼叫 instance.list 即可列出全部;依 cwd/標題/啟動順序挑選;再用該實例的連接埠和 auth token 連過去。~/.unterm/active.json 指向最近仍在執行的實例,供單實例情境備援。

它和 Warp 有什麼不同?

Warp 把 AI 嵌在一個封閉的雲端編排器(Oz)裡——Claude Code 這類外部工具沒辦法從外面驅動 Warp。Unterm 走第三條路:讓 AI 待在終端之外,把終端本身暴露為可被 MCP 控制的表面,任何 agent 都能抓住它。不上雲,不需登入。

我的資料會去哪裡?

哪裡也不去。MCP 和網頁設定伺服器只綁定 127.0.0.1。工作階段錄製存放在 <project>/.unterm/sessions/,內建 token 遮蔽。沒有遙測、沒有統計分析、不需登入,也沒有任何雲端往返。你的 shell 歷史只屬於你。

Unterm 會回傳資料嗎,哪怕一次?

沒有遙測、沒有統計分析、沒有當機或安裝回報、不需帳號。Unterm 本身只會發出兩種請求,都不帶任何關於你的資訊:(1) 檢查更新——啟動約 20 秒後、之後每 6 小時,對 api.github.com/repos/zhitongblog/unterm/releases/latest 發出一次單純的 GET,使用固定的 User-Agent(unterm-update-check),不帶任何識別資訊;結果快取在 ~/.unterm/update_check.json。(2) AI agent 目錄——對 unterm.app/api/agents/manifests 發出 GET,時機是你在網頁設定開啟 AI Agents 或執行 unterm-cli agent 指令時,只在 User-Agent 中帶 Unterm 版本號和一個快取 ETag;請求失敗時改用 app 內建的簽署副本。這兩項目前都無法在設定中關閉——若需要 Unterm 完全離線,請在防火牆封鎖這兩個主機。其餘流量都是由你發起的:下載、上傳到你自己的 bucket、對你自己代理節點的健康檢查,以及你的 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 會偵測我的系統語言嗎?

會。首次啟動時,Unterm 會讀取作業系統語系(macOS 上的 defaults、Linux 上的 $LANG、Windows 上的登錄檔),並從 9 種內建介面語言中選出最接近的一種。你可以在網頁設定 → 語言中針對個別視窗覆寫。翻譯檔位於 unterm-services/src/i18n/locales/*.json——歡迎提交修正。

有什麼能阻止失控的 agent 在我的儲存庫執行 rm -rf?

好幾道關卡。(1) MCP 伺服器只監聽 127.0.0.1——不對網路開放。(2) 它需要 auth token 驗證;token 位於 ~/.unterm/instances/<name>.json,沒有該檔讀取權限的 agent 連線都連不上。(3) 每個請求都會被歸入七個風險等級之一——read、local_mutation、exec、external_side_effect、credential_access、financial、destructive。讀取直接放行。本機變更和執行指令不會跳出提示,但受你政策中的封鎖與允許指令模式約束。external_side_effect 以上的一切都要等你同意,而涉及憑證、金錢和破壞性操作時,那次同意只涵蓋一次呼叫。(4) 在 shell 中輸入算作 exec,所以擋在 agent 和 rm -rf 之間的是首次寫入橫幅:新 agent 第一次寫入 pane 時,你會看到 Allow / Block / Always-allow,稽核日誌會連同呼叫端身分記錄每一次寫入嘗試。隨時可在網頁設定的 MCP 分頁撤銷信任。

怎麼用指令碼控制它?

用 unterm-cli:session list、proxy status、theme set midnight、session record start、screenshot。任何子指令加上 --json 就會輸出原始 JSON-RPC,適合 shell 管線和 cron 工作。

哪些平台有簽名和公證?

macOS:通用 arm64 + x86_64 DMG,以 Developer ID 簽署,經 Apple 公證並 staple(不會有 Gatekeeper 警告)。Linux:Debian/Ubuntu 用 .deb,任意發行版用 AppImage。Windows:WiX 建置的 MSI 安裝程式和免安裝 .zip。每個 minor tag 都發布到 GitHub Releases。

它開源嗎?

是,採用 MIT 授權。目前的 GUI 與終端執行階段使用 Unterm 原生 next-core 引擎,MCP、網頁設定、錄製、i18n 與發布工具都在同一個儲存庫裡。原始碼:github.com/zhitongblog/unterm。

如何參與貢獻?

在 GitHub 上開 issue 或 PR。Bug、功能需求和討論都在同一個佇列裡。我們把累積的修正打包成 minor 版本——patch 層級的版本不會觸發 CI 建置。文件放在儲存庫的 /docs。