ShellGPT:把 LLM 接進終端機的 sgpt 指令
A command-line productivity tool powered by AI large language models like GPT-5, will help you accomplish your tasks faster and more efficiently.
秒懂
- 它是什麼?
- ShellGPT 以 pip 安裝的 sgpt 指令,把提示、stdin 與 shell 指令生成整合進 Bash、Zsh、PowerShell。它解決的是查語法這件事,代價是把執行權交給模型。
- 適合誰用?
- 如果你經常在終端機裡查 find、ffmpeg、docker 的語法,而且願意接受每次呼叫都把提示送到 OpenAI,ShellGPT 是安裝成本最低的選擇:pip install shell-gpt,跑一次 sgpt --install-integration,Ctrl+l 就能用。如果你需要離線、或打算用本地模型當主力,README 自己寫了「not optimized for local models and may not work as expected」,這不是保守措辭,是官方免責,請先照 wiki 的 Ollama 指南試一次再決定。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 76 天前。
- 用什麼語言寫的?
- 主要是 Python(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
ShellGPT 要解的是「我忘了 find 怎麼寫」
這個工具針對的場景很窄:你記得要做什麼,但不記得語法。README 的開場就是把痛點寫成問句,忘記 find 這類常見 shell 指令、需要上網查語法。ShellGPT 把這個查詢動作壓縮成一行 sgpt --shell "find all json files in current folder",回傳 find . -type f -name "*.json",然後問你要執行、要描述、還是放棄。
目標使用者是每天待在終端機的人:維運、後端、資料處理。不是給想寫應用程式的人用的 SDK,也不是給需要多輪對話管理的團隊用的平台。它是一支 CLI,輸入提示或 stdin,輸出文字或指令。README 明講它支援 Linux、macOS、Windows,以及 PowerShell、CMD、Bash、Zsh 等主要 shell,這個跨平台覆蓋是它相對同類工具的一個實質差異。
值得注意的是它的定位是「檢索與生成」,不是「自動化」。README 說它 useful for straightforward requests ranging from technical configurations to general knowledge,範圍刻意放寬,但每個請求都是一次性的,沒有內建的工作流程或狀態機。
提示、stdin、與三種輸出模式的資料流
機制本身不複雜。sgpt 接受兩種輸入來源:命令列參數,或 stdin。README 列出三種重導向寫法,sgpt "summarise" < document.txt、here-document 的 << EOF、以及 here-string 的 <<< "..."。這代表它可以被放進既有管道,例如 git diff | sgpt "Generate git commit message, for my changes",或 docker logs -n 20 my_app | sgpt "check logs, find errors, provide possible solutions"。
輸出模式由旗標決定。-s 或 --shell 產生 shell 指令並進入互動確認;-c 或 --code 要求純程式碼輸出,README 示範 sgpt --code "solve fizz buzz problem using python" > fizz_buzz.py 直接寫檔。第三種是加上 --no-interaction,README 說這會 disable interactive mode and will print generated command to stdout,範例是接 pbcopy 把指令複製到剪貼簿。
這裡有個設計上的取捨值得指出:--no-interaction 讓 sgpt 可以當管道的上游,但它同時移除了確認步驟。README 只示範接到 pbcopy,沒有示範接到 shell 執行,這個留白是刻意的還是沒想到,從材料看不出來。
另外一個機制是環境感知。README 說 ShellGPT is aware of OS and $SHELL you are using,同一個提示 update my system 在 macOS 回 sudo softwareupdate -i -a,在 Ubuntu 回 sudo apt update && sudo apt upgrade -y。這是把系統資訊塞進提示的做法,不是查表。
安裝路徑與 .sgptrc 這個檔案
安裝只有一行:pip install shell-gpt。預設走 OpenAI API 與 GPT-4 模型,README 說你會先被要求輸入 API key,然後它會被存到 ~/.config/shell_gpt/.sgptrc。這個路徑是本文唯一能從材料確認的設定檔位置。
README 明確提醒 OpenAI API is not free of charge,並指向 OpenAI 的定價頁。這是使用前必須自己算的成本,材料裡沒有任何用量或價格數字,所以無法估算。
shell 整合是第二個安裝步驟:sgpt --install-integration,然後重開終端機。README 說這會 add few lines to your .bashrc or .zshrc,之後預設用 Ctrl+l 觸發。觸發的行為是把建議指令放進終端機的輸入緩衝區,取代你當前行,你可以先編輯再按 Enter。這個設計比直接執行保守,因為編輯權還在你手上。
要提醒的是,安裝整合會改動你的 shell 啟動檔。README 沒有說它加了哪幾行、也沒有提供移除指令,材料中查不到。如果你對 dotfile 有版本控制,這件事可控;如果沒有,先備份。
-s 模式的確認提示是唯一的安全閥
這是使用 ShellGPT 最需要想清楚的地方。sgpt -s 產生的指令會直接在你的機器上執行,README 的每個範例都停在 [E]xecute, [D]escribe, [A]bort 這一行,也就是說執行與否由你按鍵決定。
互動確認是這個工具唯一內建的安全機制。它防的是模型答錯,不是防惡意輸入,這兩件事不同。README 的範例裡出現過 sudo softwareupdate -i -a、sudo apt update && sudo apt upgrade -y、docker run -d -p 80:80 -v $(pwd)/index.html:... 這些都是具備實際副作用、且部分帶 sudo 的指令。模型產出這類指令是預期行為,不是異常。
實務上的界線是:把 -s 用在讀取類、查詢類、容器類的指令上,風險可控;用在刪除、權限變更、套件升級上,你等於把一個不確定性的來源接進有 root 權限的終端機。這不是 ShellGPT 獨有的問題,但它把產生指令到執行指令的距離縮到只剩一個按鍵。
還有兩個未被材料回答的問題:--no-interaction 搭配 -s 之後,產生的指令是否仍經過任何檢查;以及 Ctrl+l 整合觸發時,指令是進緩衝區還是直接執行。README 對後者的描述是 replace you current input line (buffer),聽起來是前者,但沒有更明確的說明。
本地模型:README 自己貼了免責聲明
ShellGPT 提供了一條不花 API 費用的路:跑本地開源模型。README 的 TIP 區塊指向 Ollama,並連到 wiki 的專門指南。
緊接著那句是整份文件裡最直接的一句話,原文是 Note that ShellGPT is not optimized for local models and may not work as expected。這不是行銷文案裡的免責套語,因為它出現在推薦本地模型之後,等於先給選項再收回保證。
這句話的實際含義是:提示模板、輸出解析、互動流程是為 OpenAI 的模型調過的,換成參數規模小得多的本地模型,格式遵循度會下降。對 -c 模式尤其明顯,因為它要求純程式碼輸出、不能有解釋文字;模型多講一句,重導向到檔案的結果就壞了。
材料沒有提供任何本地模型的實測品質、支援清單或已知問題,所以無法判斷「may not work」涵蓋哪些情境。這是一個必須自己驗證的空白,也是本文對本地部署持保留態度的原因。
維護節奏與 MIT 授權的實際含義
從 release 紀錄看,1.4.5 在 2025 年 4 月,1.5.0 在 2026 年 1 月,1.5.1 在 2026 年 5 月,最後一次 push 是 2026 年 7 月。節奏大約是數個月一個版本,中間有過一次 1.4 到 1.5 的次版本跳躍。這代表專案仍在動,但沒有頻繁到每週都要跟。
升級成本的主要來源是模型供應商的 API 變動,不是 ShellGPT 本身。README 的 topics 同時掛了 gpt-3、gpt-4、gpt-5 與 llama、ollama,描述文字也寫 GPT-5,這說明它跟著模型世代更新。每次模型換代,提示行為與輸出格式都可能位移,尤其是依賴純輸出的 --code 模式。
授權是 MIT。這對個人與商業使用都很寬鬆,但要注意兩件與授權無關、卻更實際的事:你的提示與被管道送進去的內容會傳到 OpenAI,這包括 git diff、docker logs、以及任何你用 < 重導向的檔案;而 API key 存在 ~/.config/shell_gpt/.sgptrc 這個明文位置。授權允許你怎麼用,跟資料去了哪裡,是兩個獨立問題。我不提供法律意見,只指出這兩個檔案層級的事實。
和 aichat 的差別在哪裡
同類工具裡最常被放在一起比的是 sigoden 的 aichat。兩者都是 Rust 或 Python 寫的終端機 LLM 前端,都支援多家供應商與角色設定,但切入點不同。
aichat 的重心在互動式 REPL 與角色(role)系統,你可以定義多個角色、在會話中切換,適合把 LLM 當成一個可以持續對話的工作區。ShellGPT 的重心在單次呼叫與管道整合:一個提示進去,一段文字或一行指令出來,然後結束。它的 shell 整合是把結果放進你當前的輸入緩衝區,aichat 的對應設計是把對話留在 REPL 裡。
如果你要的是「在終端機裡開一個 AI 對話視窗」,ShellGPT 不是為這個設計的;如果你要的是「把 LLM 當成一個過濾器接進既有管道」,ShellGPT 的 stdin 支援與 --no-interaction 更貼合。README 沒有提到任何多輪對話狀態的保存機制,這是它與 REPL 型工具最根本的分野。
至於供應商覆蓋,README 只具體寫了 OpenAI 與透過 Ollama 的本地模型,其他供應商在材料中沒有出現,所以無法比較。
編輯結論
如果你經常在終端機裡查 find、ffmpeg、docker 的語法,而且願意接受每次呼叫都把提示送到 OpenAI,ShellGPT 是安裝成本最低的選擇:pip install shell-gpt,跑一次 sgpt --install-integration,Ctrl+l 就能用。如果你需要離線、或打算用本地模型當主力,README 自己寫了「not optimized for local models and may not work as expected」,這不是保守措辭,是官方免責,請先照 wiki 的 Ollama 指南試一次再決定。導入前務必確認三件事:~/.config/shell_gpt/.sgptrc 的權限、--no-interaction 是否會把指令直接寫進 stdout 被下游程式執行、以及你的 shell 是否在支援清單內。最後一點最實際:-s 模式產生的指令會直接在你的機器上執行,先按 D 讀描述,再按 E。
社群筆記