星標(biāo)公眾號(hào),讓嵌入式知識(shí) “投喂” 不停歇!
大家好,我是雜燴君。平時(shí)做嵌入式 Linux 開發(fā),終端基本離不開。
看 dmesg、查文件、分析串口日志、編譯 Buildroot/Yocto、臨時(shí)寫腳本,這些事都在終端里完成。命令用多了以后,有些參數(shù)能記住;但也有一些命令,隔一段時(shí)間不用就忘。
例如:
find 找出某類文件;grep 從日志里過濾錯(cuò)誤;
這時(shí)候我們通常會(huì)打開瀏覽器搜索。ShellGPT 解決的就是這個(gè)小問題:把大模型接到終端里,讓我們直接在命令行里描述需求,讓它先生成命令、代碼片段,或者給出一段日志分析。
注意,這里說的是先生成草稿。ShellGPT 不是替代我們理解 Linux,更不是讓我們閉著眼睛執(zhí)行命令。最終要不要執(zhí)行,還是要自己判斷。
ShellGPT 是一個(gè) Python 寫的命令行工具,命令名叫 sgpt。
GitHub 倉庫:https://github.com/TheR1D/shell_gpt
PyPI 項(xiàng)目頁:https://pypi.org/project/shell-gpt

它的基本用法:
sgpt "你的問題"
生成 Shell 命令:
sgpt --shell "find all json files in current folder"
--shell 也可以寫成 -s。上面這個(gè)例子通常會(huì)生成:
find . -type f -name "*.json"
Shell 模式下不會(huì)直接悄悄執(zhí)行,而是會(huì)提示:
[E]xecute, [M]odify, [D]escribe, [A]bort:
這幾個(gè)選項(xiàng)很好理解:
E:執(zhí)行;M:修改;D:解釋;A:放棄。剛開始使用時(shí),建議多選 D 看解釋。涉及 rm、dd、mkfs、燒錄、權(quán)限修改這類命令,更不能直接回車。
ShellGPT 的整體鏈路如下:

ShellGPT 本身不是大模型。它只是命令行客戶端,真正生成內(nèi)容的是后端模型。
當(dāng)前倉庫的 pyproject.toml 要求:
Python >= 3.10
安裝命令:
pip install shell-gpt

如果你的環(huán)境里 pip 不確定對應(yīng)哪個(gè) Python,可以寫成:
python3 -m pip install shell-gpt
查看版本:
sgpt --version

安裝完成后,先簡單測試:
sgpt "hello"

ShellGPT 的后端選擇可以先看這張圖:

如果第一次運(yùn)行時(shí)沒有 API Key,ShellGPT 會(huì)提示輸入,并寫入:
~/.config/shell_gpt/.sgptrc
后面不管接 OpenAI、DeepSeek,還是本地 Ollama,主要都是改這個(gè)配置文件。
ShellGPT 默認(rèn)使用 OpenAI 兼容接口。這里的“OpenAI 兼容”不等于只能使用 OpenAI 官方服務(wù)。只要平臺(tái)提供 OpenAI Chat Completions 兼容接口,一般就可以通過下面三個(gè)配置接入:
OPENAI_API_KEY=你的API Key
API_BASE_URL=接口地址
DEFAULT_MODEL=模型名
這幾個(gè)配置的含義是:
OPENAI_API_KEY:平臺(tái)的 API Key;API_BASE_URL:平臺(tái)提供的 OpenAI 兼容接口地址;DEFAULT_MODEL:要調(diào)用的模型名。這里有個(gè)容易誤會(huì)的地方:配置項(xiàng)名字叫 OPENAI_API_KEY,但不代表只能填 OpenAI 官方 Key。接 DeepSeek 時(shí),這里填 DeepSeek API Key 即可。
DeepSeek API 支持 OpenAI 兼容格式,所以 ShellGPT 不需要改代碼,只需要改配置。
DeepSeek API 文檔:https://api-docs.deepseek.com/zh-cn/
編輯配置文件:
vim ~/.config/shell_gpt/.sgptrc
寫入或修改:
OPENAI_API_KEY=你的DeepSeek API Key
API_BASE_URL=https://api.deepseek.com
DEFAULT_MODEL=deepseek-v4-pro

如果更關(guān)注速度和成本,也可以改成:
DEFAULT_MODEL=deepseek-v4-flash
DeepSeek 舊模型名 deepseek-chat、deepseek-reasoner 已于北京時(shí)間 2026-07-24 23:59 棄用。新配置建議直接使用 deepseek-v4-pro 或 deepseek-v4-flash。
配置完成后,先用低風(fēng)險(xiǎn)問題測試:
sgpt "用一句話解釋什么是設(shè)備樹"
再測試命令生成:
sgpt -s "查看當(dāng)前目錄下最大的10個(gè)文件"
DeepSeek 仍然是云端接口。日志、代碼、Token、IP、客戶信息等敏感內(nèi)容,發(fā)送前最好先脫敏。模型名、價(jià)格和計(jì)費(fèi)規(guī)則也可能變化,實(shí)際使用時(shí)以 DeepSeek 控制臺(tái)和官方文檔為準(zhǔn)。
如果不想每次都調(diào)用云端 API,也可以讓 ShellGPT 連接本地模型。常見做法是使用 Ollama。
Ollama 官網(wǎng):https://ollama.com/
本地模型一般不需要按云端 API 計(jì)費(fèi),日志和代碼通常也不需要發(fā)到云端。但數(shù)據(jù)是否離開本機(jī),仍然取決于你的部署方式和配置。
配置思路如下:
API_BASE_URL=http://localhost:11434/v1
DEFAULT_MODEL=<你的模型名>
USE_LITELLM=true
這里重點(diǎn)是 USE_LITELLM=true。當(dāng)前 ShellGPT 源碼里,只有打開這個(gè)配置,才會(huì)通過 LiteLLM 調(diào)用本地模型。
本地模型效果不一定穩(wěn)定。命令能不能寫準(zhǔn),和模型能力、提示詞、問題描述都有關(guān)系。
嵌入式 Linux 開發(fā)中,比較適合先用 ShellGPT 起草的場景如下:

例如查找大文件:
sgpt -s "查找大于500M的文件"
可能得到:
find / -type f -size +500M 2>/dev/null

這類命令短、容易檢查,比較適合讓 ShellGPT 先生成。
看內(nèi)核日志時(shí),可以先過濾再交給 ShellGPT:
dmesg | grep -i i2c | sgpt "找出這里面可能的錯(cuò)誤,并說明原因"
串口日志也類似:
cat uart.log | sgpt "分析這些串口日志,看看有沒有通信異常"
這里要注意:日志分析只能作為線索。真正定位問題,還要結(jié)合原理圖、驅(qū)動(dòng)代碼、設(shè)備手冊和實(shí)際波形。
sgpt --code "寫一個(gè)bash腳本,批量把當(dāng)前目錄下所有.c文件重命名為.cpp"
--code 會(huì)盡量只輸出代碼。涉及批量重命名、批量刪除、批量修改文件內(nèi)容時(shí),建議先在測試目錄里跑一遍。
git diff | sgpt "Generate git commit message for my changes"
這個(gè)用法適合生成草稿。最終 commit message 還是要自己確認(rèn)是否準(zhǔn)確。
ShellGPT 還有 Shell 集成、Chat/REPL、Roles、Function calling 等功能。關(guān)系可以先看這張圖:

sgpt --install-integration
當(dāng)前源碼里只支持 Bash 和 Zsh。安裝后會(huì)往 .bashrc 或 .zshrc 追加配置,默認(rèn)快捷鍵是 Ctrl+l。
普通 sgpt 每次問答沒有連續(xù)上下文。如果想保留上下文,可以使用:
sgpt --chat debug_i2c "我在調(diào)試一個(gè)I2C設(shè)備,設(shè)備地址是0x3C"
sgpt --chat debug_i2c "幫我整理一下接下來可以檢查哪些地方"
也可以進(jìn)入連續(xù)交互模式:
sgpt --repl temp
Roles 可以理解為預(yù)設(shè)輸出要求:
sgpt --create-role json_generator
sgpt --role json_generator "random: user, password, email"
sgpt --install-functions
這個(gè)功能風(fēng)險(xiǎn)更高,因?yàn)槟P涂赡苷{(diào)用本機(jī)函數(shù)甚至執(zhí)行命令。剛開始使用 ShellGPT 時(shí),不建議急著開啟。
最重要的注意事項(xiàng)放在一張圖里:

簡單說就是三句話:
第一,不要執(zhí)行自己看不懂的命令。
第二,涉及刪除、格式化、燒錄、權(quán)限修改的命令要格外小心。
第三,云端模型不要隨便上傳敏感日志、代碼和客戶信息。
ShellGPT 本質(zhì)上是一個(gè)把大模型接入終端的工具。它能幫我們生成命令、解釋命令、寫代碼片段、分析文本、保存連續(xù)對話。
對嵌入式 Linux 開發(fā)者來說,很多問題也都和命令、日志、腳本有關(guān)。把這些問題直接在終端里問出來,有時(shí)候確實(shí)能少切幾次瀏覽器,也能更快得到一個(gè)排查方向。
歡迎分享你在嵌入式 Linux 開發(fā)中使用這類命令行工具的經(jīng)驗(yàn)。