TL;DR:KKTerm 是一款 Windows-first 的終端機工作站,用 Tauri v2 + Rust + React 19 寫的,把 PowerShell、SSH、SFTP、RDP、VNC、Serial、Telnet 全部塞進同一個 app,內建 Dashboard 看 CPU / 記憶體 / 網速 / Claude Code 用量,還附一台 MCP server 讓外部 AI agent(Claude Code、Codex)能直接呼叫終端機。v0.1.46(2026-05-30)在 GitHub ryantsai/KKTerm 釋出,MIT License,作者把它定位成「AI 工具時代被遺忘的 Windows 原生管理工作站」。
📌 目錄
- 🧠 為什麼需要再一個終端機?
- ⚡ KKTerm 是什麼?10 種連線一個 app 收完
- ⭐ 核心功能拆解
- 📦 安裝與初次設定
- ⚖️ vs Windows Terminal / Tabby / Warp 比較
- 🔗 接 Claude Code:內建 MCP server 怎麼用
- 💀 踩坑紀錄
- ❓ 常見問題
- 🔗 延伸資源
🧠 為什麼需要再一個終端機?
Windows 上「跑終端機」這件事,過去十年一直在打地基。PowerShell 強但難看,Windows Terminal 好看但純 terminal、不含遠端協定,WSL 解決 Linux 工具但不解決 RDP / SFTP,MobaXterm 老牌全包但介面停在 2010 年。Mac 那邊有 iTerm、Warp、Ghostty 各種選擇,Windows 這邊長年只能「裝四個工具切來切去」。
實際使用情境是這樣:
六個視窗、六個 alt-tab、六套 keybinding,沒一個會記得彼此。Mac-first 的工具(iTerm、Warp、Tabby)裝在 Windows 上總是少根筋 — Tabby 的 RDP 是用 FreeRDP 包的不是原生、Warp 還沒正式支援 Windows、iTerm 根本沒 Windows 版。
KKTerm 是補這個洞的:Windows-first、把六個工具收成一個 tab 介面、再加上 AI 整合。
⚡ KKTerm 是什麼?10 種連線一個 app 收完
| 連線類型 | 用什麼底層 |
|---|---|
| Local | PowerShell / cmd / WSL |
| SSH | russh(Rust 原生 SSH client)+ auto-named tmux session |
| SFTP / FTP | russh-sftp / suppaftp,雙窗格瀏覽器 |
| RDP | 原生 Microsoft ActiveX control |
| VNC | vnc-rs framebuffer 渲染 |
| Serial | 串列埠直連 |
| Telnet | 古早協定也吃 |
| WebView2 | 嵌入瀏覽器 session(看內部後台用) |
russh 是 Rust 社群主力 client lib,VNC 用的 vnc-rs 也是純 Rust,不依賴 C 函式庫。對於跨平台維護成本,這套用 Rust 純血路線比起 Tabby(Electron 包 native)穩定。
整體模組結構長這樣:
技術棧整理:
| 層 | 用什麼 |
|---|---|
| 桌面框架 | Tauri v2(Rust + WebView) |
| 前端 | React 19、TypeScript、Vite |
| 樣式 | Tailwind CSS |
| 狀態 | Zustand |
| 終端機渲染 | xterm.js + WebGL 加速 |
| 儲存 | SQLite + OS Keychain(Windows Credential Manager / macOS Keychain) |
⭐ 核心功能拆解
SSH 自動 tmux:斷線不掉 session
KKTerm 的 SSH 連線會自動 tmux new -s kkterm-,下次重連用 tmux attach -t silent reattach,遠端跑的 Claude Code / Codex agent 不會因為網路斷一下就死掉。這是針對「AI agent 在遠端 server 跑長任務」設計的,跟一般 PuTTY 重連就丟 session 不一樣。
內建 Dashboard:CPU、記憶體、AI 用量一頁看完
Dashboard 用 drag/resize widget grid 排版,預設 widget 包含:
- CPU / 記憶體 / 磁碟 / 網速折線圖
- Claude Code / Codex API 用量(讀本地 quota 檔)
- 21 種 animated canvas 背景(matrix、aurora、ocean 之類)
- 自訂 widget 用 JSON 或 sandboxed JavaScript 寫
內建 MCP server kkterm-cli
這是最被低估的功能。KKTerm 啟動時會跑一支 MCP server,讓外部 AI agent 直接呼叫 KKTerm 的終端機 / SSH / RDP 能力。意思是 Claude Code 不用透過 Bash tool 自己摸黑開 SSH,而是透過 MCP 把指令丟給 KKTerm 執行、拿到結果。對於要做「跨機器 orchestration」(同時控本機 + 兩台遠端 server)的場景非常省事。
AI Provider:六家全支援
設定頁可選 OpenAI / Anthropic / DeepSeek / Azure OpenAI / GitHub Copilot / Ollama / 任何 OpenAI 相容 endpoint。AI assistant 直接嵌在 sidebar,問答結果可以 inline 執行到當前 terminal。
📦 安裝與初次設定
Prereq
| 依賴 | 最低版本 | 驗證 |
|---|---|---|
| Windows | 10 1809+ / 11 | winver |
| WebView2 Runtime | 預裝在 Win11,Win10 需手動裝 | Get-Package -Name '*WebView2*'(PowerShell) |
| Visual C++ Redistributable | 2015+ | 已內建 |
一鍵裝(終端使用者)
1. 到 https://github.com/ryantsai/KKTerm/releases 抓最新版
下載 kkterm-<version>-windows-x64-setup.exe
驗證 SHA256(release 頁底有)
雙擊執行,SmartScreen 跳警告 → 點「其他資訊 → 仍要執行」
SmartScreen 警告處理:作者標註 unsigned installer,意思是還沒花錢買 code signing cert,reputation 尚未在 Microsoft 累積夠 → 第一次裝會跳「無法辨識的應用程式」。不是病毒,但要自己 SHA256 對檔。對到了再執行,對不到立刻刪掉。
自己 build(開發者)
# 1. 裝 Rust toolchain
rustup default stable
# 2. 裝 Node.js 20+ 和 npm
node -v
npm -v
# 3. clone + build
git clone https://github.com/ryantsai/KKTerm.git
cd KKTerm
npm install
npm run tauri dev # 開發模式,熱重載
npm run package:installer # 包 Windows installer
驗證裝起來了
開 KKTerm,左上角「+」加新 connection → 選 Local → PowerShell → 跑 Get-ComputerInfo | Select-Object WindowsProductName, OsVersion,看到 Windows 版本字串就算 round-trip 通。
⚖️ vs Windows Terminal / Tabby / Warp 比較
| 維度 | KKTerm | Windows Terminal | Tabby | Warp |
|---|---|---|---|---|
| 原生 Windows | ✓ | ✓ | △ Electron | ✗ 尚無 |
| SSH | ✓ russh 原生 | ✗(只 OpenSSH client) | ✓ | ✓ |
| RDP 原生 | ✓ ActiveX | ✗ | △ FreeRDP | ✗ |
| VNC | ✓ vnc-rs | ✗ | ✓ | ✗ |
| SFTP 雙窗格 | ✓ | ✗ | ✗ | ✗ |
| Dashboard / 監控 widget | ✓ | ✗ | △ plugin | ✓ |
| 內建 MCP server | ✓ | ✗ | ✗ | ✗ |
| 包大小 | ~ 8 MB(Tauri) | 系統內建 | ~ 200 MB | ~ 150 MB |
| Cloud 帳號需求 | ✗ 本機優先 | ✗ | ✗ | △ 需登入 |
| 開源 | ✓ MIT | ✓ MIT | ✓ MIT | ✗ 封閉 |
- 純本機終端 → Windows Terminal 已經夠
- 跨平台、要 plugin 生態 → Tabby
- 想要 AI 強化的 prompt 體驗 + 不在意 Cloud → Warp(裝 Mac)
- 要把 SSH / RDP / VNC / SFTP / AI 一次搞定且 Windows-first → KKTerm
🔗 接 Claude Code:內建 MCP server 怎麼用
KKTerm 內建的 MCP server 名稱 kkterm-cli,啟動 KKTerm 時自動跑。Claude Code 接法:
{
"mcpServers": {
"kkterm": {
"command": "kkterm-cli",
"args": ["--mcp-stdio"]
}
}
}
存到 ~/.claude.json 的 mcpServers 區塊,重啟 Claude Code session 後,工具列會多出 mcp__kkterm__* 系列工具。
典型呼叫流程:
為什麼比 Claude Code 自己跑 Bash 好:
cd、source 之後狀態保持rm -rf)會跳確認,Claude Code 沒辦法繞過💀 踩坑紀錄
SmartScreen 把安裝程式擋下
Windows 已保護您的電腦
Microsoft Defender SmartScreen 防止無法辨識的應用程式啟動。執行這個應用程式可能會讓您的電腦面臨風險。
原因:KKTerm 沒花錢買 EV code signing cert(一張一年 4-500 美金),所以 Authenticode reputation 是 0。解法:點「其他資訊 → 仍要執行」。但裝前一定要對 SHA256,作者在 release 頁有放 hash,自己用 Get-FileHash kkterm-0.1.46-windows-x64-setup.exe -Algorithm SHA256 對。對不到就不要裝,可能被中間人換包。
WebView2 沒裝,KKTerm 開了白屏
Win10 第一次跑可能遇到:KKTerm icon 出現但點開只有白屏,沒任何錯誤。原因:Tauri 用 WebView2 渲染前端,Win10 沒預裝,需手動裝 Evergreen Runtime。解法:到 microsoft.com/edge/webview2 抓 Evergreen Standalone Installer,裝完重啟 KKTerm。
tmux session 名稱含特殊字元爆炸
連有 : 或 . 的 hostname(像 IPv6 或 db.prod.internal)時,KKTerm 0.1.x 早期版本 auto-tmux 命名規則會把 : 當成 tmux session 分隔符 → tmux: bad session name 噴錯。解法:升 0.1.40+,或自己在 connection 設定改用簡短 alias。
Dashboard 自訂 widget 用 JS 跑不起來
JSON widget 沒問題,但 sandboxed JS widget 有時候會 Worker is not defined。原因:KKTerm 的 sandbox 不是完整瀏覽器環境,沒有 Worker / IndexedDB / fetch CORS。解法:寫 widget 只用 DOM / kkterm global 提供的 API,不要碰瀏覽器專屬物件。
❓ 常見問題
Q1: KKTerm 跟 Windows Terminal 衝突嗎?可以並存嗎?
可以。兩個是獨立 process,完全不打架。實務上很多人 Windows Terminal 跑簡單本機 PowerShell,KKTerm 開 SSH / RDP / SFTP / VNC 這些需要連線管理的。
Q2: 沒簽章我用得安心嗎?有後門嗎?
開源 MIT,原始碼在 github.com/ryantsai/KKTerm 公開,可以自己 audit 或自己 build。但「沒簽章」本身的風險是第三方仿冒散布版本,不是官方版本有問題。對策:只從官方 GitHub releases 下載,SHA256 對檔,不要從鏡像站抓。
Q3: macOS 和 Linux 什麼時候有?
作者 README 寫 「planned via Tauri v2」,沒給時程。Tauri v2 本身已經支援三平台 build,主要卡在 RDP / VNC 部分需要不同 OS 的原生 API 適配。短期內 Windows-only,Mac / Linux 用戶可以先用 Tabby。
Q4: 內建 MCP server 安全嗎?會不會被 AI 亂下指令?
KKTerm 的 MCP server 有 permission gate,危險指令(rm -rf、shutdown、format)會跳 GUI 確認框,要使用者手動點准。但權限分級規則寫在前端 React,理論上可繞過 — 如果你要讓 Claude Code agent 全自主跑長任務,還是要把 KKTerm 跑在隔離環境(VM / 沙盒帳號)。
Q5: 為什麼叫 KKTerm?
作者 README 寫:典故是台灣文化「乖乖」(綠色椰子味餅乾,放伺服器機架上祈求機器不要當機的儀式)。專案定位是「無聊但可靠的軟體」,跟 hype 路線的 Warp / Wave 反向操作。
🔗 延伸資源
- KKTerm GitHub repo — 原始碼、release、issue
- Tauri 官網 — 桌面 app 框架
- MCP 協議規格 — 怎麼接 AI agent
- russh GitHub — Rust SSH client lib
- yanchen.app/blog/claude-frontend-design-plugin-guide — 同類 AI 工具完整教學