v0.11.34 · live

Open Source Terminal GUI

ShellFrame

非工程師也能直覺上手的 AI 終端機。
從一位設計師的需求出發,擴展到整個團隊。

17 stars · 3 forks · released 2 週前
2026 Python + pywebview MIT License

起源

我的合作夥伴是設計師,她看到我用 Claude Code 和 Codex 在終端機裡飛速工作,也想試試看。但她馬上遇到一個問題:終端機沒辦法貼圖

Windsurf、Cursor 這些 IDE 可以直接貼截圖問 AI,但純終端機做不到。她每次都要先存檔、再打路徑,光這一步就把使用意願磨掉了。

於是我決定做一個超輕量的 GUI 包裝器——不是 Electron 那種肥大框架,而是用 Python + 原生 OS WebView,啟動快、記憶體小。Cmd+V 就能貼圖,多分頁管理不同專案,還有 Telegram 橋接讓你不在電腦前也能遠端操作。

完成後我也推廣給公司同事使用,設計師和 PM 團隊同樣從中受益。他們終於不用再面對黑底白字的終端機——ShellFrame 把 AI CLI 工具的門檻,降到了「會用通訊軟體就會用」的程度。

痛點與解法

痛點

  • x 終端機無法直接貼圖片
  • x 非工程師害怕命令列介面
  • x 不在電腦前就無法操作 AI
  • x Electron 太肥、VS Code 太複雜

解法

  • > Cmd+V 一鍵貼上截圖
  • > 簡潔 GUI,預設指令一鍵啟動
  • > Telegram 橋接,手機遠端操作
  • > 原生 WebView,輕量無負擔

一行安裝

macOS / Linux

$ curl -fsSL https://raw.githubusercontent.com/h2ocloud/shellframe/main/install.sh | bash

自動安裝 Python venv + 所有相依套件。macOS 已有 Python,Linux 需先裝 python3。

Windows (PowerShell)

PS> irm https://raw.githubusercontent.com/h2ocloud/shellframe/main/install.ps1 | iex

需先安裝 Python 3.12+Git。安裝程式會自動設定 PATH 和桌面捷徑。

安裝後輸入 shellframe 啟動,或從 Spotlight / 開始選單搜尋 ShellFrame。安裝完執行一次 sfctl permissions 可自動開好 macOS Privacy / Windows Defender 白名單。

功能亮點

📋

截圖 & 多檔智慧貼上

Cmd+V 直接貼圖片或多個檔案。v0.11.9 起對 Claude Code / Codex 用 bracketed-paste 包路徑,AI CLI 會自動壓成 [image #N] 附件預覽而不是打字輸入。

📑

多分頁 + tmux 持久化

每個分頁跑在 tmux session 裡,關掉視窗再打開,對話從上次離開的位置繼續。雙擊 tab 改名、拖拉排序、視窗位置跨 restart 保留。

🎛

sfctl 主控編排

v0.11.0 起新增 sfctl new / send / peek / rename / close / list。一個 master Claude 可以拆任務、開 worker session、poll 結果、收尾——不用碰 tmux,也讓並行 agent 流程在 ShellFrame 裡原生可用。

📱

Telegram 橋接

一個 bot 管所有 session。文字、圖片、檔案、語音(STT)雙向傳。指令:/list /new /fetch /pause /reload /restart /update /close(破壞性指令會 inline confirm)。

🔴

AI 忙碌燈號

側欄每個 session 一顆燈——橘色是執行中,粉紅色是在等你做決定(Claude 權限對話框、Codex 執行前確認等)。掃一眼就知道誰在忙、誰在等你。

📜

乾淨滾動歷史

tmux copy-mode 捕捉 streaming TUI 每一幀會讓滾動歷史看起來像同一行貼 20 遍。v0.11.0-0.11.5 改用 xterm.js overlay + prefix-dedup + CJK width dedup,streaming Claude Code / TUI 回捲乾淨,ANSI 色碼保留。

🎙

語音 STT 轉錄

TG 傳語音直接轉文字丟進 session。plugin 架構:本地 whisper.cpp 或自訂 HTTP server 都可以,不綁雲端服務。Settings 一鍵裝 whisper.cpp。

🧠

AI 上下文 + 可編輯 Prompt

啟動 Claude / Codex 時自動帶入環境 context(有哪些 session、bridge 狀態、sfctl 指令表)。v0.11.8 起 init prompt 跟 TG per-turn preamble 都可以在 Settings 裡直接編輯。

🛡

sfctl permissions 一鍵設定

v0.11.8 新增。macOS 一鍵開 Privacy 面板(Files & Folders、Accessibility、Automation 等)+ 防火牆白名單 python/bun;Windows 加 Defender inbound allow rule。裝完跑一次就好。

🔄

兩段式更新 + 合併指令

UI 改動 → 熱重載;Python 改動 → 重啟(session 保留)。v0.10.12 把 /update/update_now 合併,TG 收到新版自動彈 inline keyboard 「⬇️ Update Now / Cancel」。

⌨️

輸入優化

Shift+Enter 換行不送出、右鍵 CMD-style 複製貼上、Esc 清整行(純終端)、Ctrl+Click 打開終端機裡的路徑(支援硬換行的長 URL)、介面 S/M/L 三段調。

全域快捷鍵 ⌃⌥Space

v0.11.27 起。任何 app 裡按 Ctrl+Option+Space 喚出 ShellFrame,再按一次收起。Spaces-aware:視窗會跑到你當下的虛擬桌面,而不是把你拉走。Settings 可關。目前 macOS only。

🧹

Auto /compact

v0.11.26 起。Bridge 即時監控 Claude Code 的 token 用量,跌破門檻(預設 15%)自動送 /compact 做 context summarise。Settings 可調門檻或關閉。只對 Claude 生效,不會誤觸 Codex / bash。

🔔

完成通知

v0.11.29 起。ShellFrame 在背景時,AI 完成回覆會彈 macOS 原生通知。點通知直接跳回該 session。每個 session 30 秒 cooldown 避免連發。Settings 可關。

🌐

跨平台 + i18n

macOS(WKWebView + tmux 持久化)、Windows(Edge WebView2 + ConPTY + soft persistence)、Linux(GTK WebView)。自動偵測系統語言(繁中/英),Settings 可切。

技術架構

Frontend

xterm.js 終端機
原生 OS WebView
零 Electron 依賴

Backend

Python + pywebview
PTY + tmux (Unix) / ConPTY (Win)
pyte 虛擬終端

Bridge

Telegram Bot API (stdlib)
多 session 路由 + 語音 STT
Plugin provider chain

Self-Evolution

sfctl 遠端控制
兩段式 reload / restart
AI 熱載入自我修改

讓 AI 工具屬於每一個人

Claude Code 和 Codex 是強大的 AI 工具,但它們活在終端機裡——對非工程師來說,那是一道無形的牆。

ShellFrame 把這道牆拆掉了。

當設計師能用截圖問 AI 設計問題;
當 PM 能用 Telegram 遠端請 AI 幫忙整理資料;
當新人不用學 command line 就能開始用 AI——

這就是工具應該有的樣子:為人服務,而不是讓人遷就。

v0.11.34

開源 MIT — macOS / Windows / Linux

17 stars · 3 forks

What's in v0.11.34

### New Features - **Right-click paste now handles images / files like Cmd+V** — the right-click "no selection → paste" branch used to call `paste_text()` which only sees `pbpaste`'s text projection of the clipboard, so images / Finder-copied files just dropped through. Right-click paste now drives the same intake pipeline as keyboard paste: tries `navigator.clipboard.read()` for image blobs first (saves to `~/.claude/tmp/` and attaches), falls back to `get_clipboard_files()` for Finder-copied files, then plain text last. The text path also goes through the large-paste confirm gate (≥ 1000 chars or ≥ 10 lines → Esc to cancel) and bracketed-paste wrapping, matching Cmd+V behaviour exactly. ### 新功能 - **右鍵貼上現在跟 Cmd+V 一樣會處理圖片 / 檔案** — 之前右鍵 paste 走 `paste_text()` 只拿純文字,剪貼簿裡的圖片或 Finder 複製的檔案直接掉。