大家好,我是杂烩君。平时做嵌入式 Linux 开发,终端基本离不开。
看 dmesg、查文件、分析串口日志、编译 Buildroot/Yocto、临时写脚本,这些事都在终端里完成。命令用多了以后,有些参数能记住;但也有一些命令,隔一段时间不用就忘。
例如:
想用 find 找出某类文件;想用 grep 从日志里过滤错误;想查当前目录下最大的 10 个文件;想临时写个脚本批量处理文件;想看构建日志到底错在哪里。
这时候我们通常会打开浏览器搜索。ShellGPT 解决的就是这个小问题:把大模型接到终端里,让我们直接在命令行里描述需求,让它先生成命令、代码片段,或者给出一段日志分析。
注意,这里说的是先生成草稿。ShellGPT 不是替代我们理解 Linux,更不是让我们闭着眼睛执行命令。最终要不要执行,还是要自己判断。
1. 什么是 ShellGPT
ShellGPT 是一个 Python 写的命令行工具,命令名叫 sgpt。
GitHub 仓库:https://github.com/TheR1D/shell_gpt
PyPI 项目页:https://pypi.org/project/shell-gpt
它的基本用法:
sgpt "你的问题"
生成 Shell 命令:
sgpt --shell "find all json files in current folder"
--shell 也可以写成 -s。上面这个例子通常会生成:
find . -type f -name "*.json"
Shell 模式下不会直接悄悄执行,而是会提示:
[E]xecute, [M]odify, [D]escribe, [A]bort:
这几个选项很好理解:
E:执行;
M:修改;
D:解释;
A:放弃。
刚开始使用时,建议多选 D 看解释。涉及 rm、dd、mkfs、烧录、权限修改这类命令,更不能直接回车。
ShellGPT 的整体链路如下:
2. 安装与后端选择
ShellGPT 本身不是大模型。它只是命令行客户端,真正生成内容的是后端模型。
当前仓库的 pyproject.toml 要求:
Python >= 3.10
安装命令:
pip install shell-gpt
如果你的环境里 pip 不确定对应哪个 Python,可以写成:
python3 -m pip install shell-gpt
查看版本:
sgpt --version
安装完成后,先简单测试:
sgpt "hello"
ShellGPT 的后端选择可以先看这张图:
如果第一次运行时没有 API Key,ShellGPT 会提示输入,并写入:
~/.config/shell_gpt/.sgptrc
后面不管接 OpenAI、DeepSeek,还是本地 Ollama,主要都是改这个配置文件。
3. 使用云端 OpenAI 兼容接口
ShellGPT 默认使用 OpenAI 兼容接口。这里的“OpenAI 兼容”不等于只能使用 OpenAI 官方服务。只要平台提供 OpenAI Chat Completions 兼容接口,一般就可以通过下面三个配置接入:
OPENAI_API_KEY=你的API Key
API_BASE_URL=接口地址
DEFAULT_MODEL=模型名
这几个配置的含义是:
OPENAI_API_KEY:平台的 API Key;
API_BASE_URL:平台提供的 OpenAI 兼容接口地址;
DEFAULT_MODEL:要调用的模型名。
这里有个容易误会的地方:配置项名字叫 OPENAI_API_KEY,但不代表只能填 OpenAI 官方 Key。接 DeepSeek 时,这里填 DeepSeek API Key 即可。
3.1 使用 DeepSeek
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
如果更关注速度和成本,也可以改成:
DEFAULT_MODEL=deepseek-v4-flash
DeepSeek 旧模型名 deepseek-chat、deepseek-reasoner 已于北京时间 2026-07-24 23:59 弃用。新配置建议直接使用 deepseek-v4-pro 或 deepseek-v4-flash。
配置完成后,先用低风险问题测试:
sgpt "用一句话解释什么是设备树"
再测试命令生成:
sgpt -s "查看当前目录下最大的10个文件"
DeepSeek 仍然是云端接口。日志、代码、Token、IP、客户信息等敏感内容,发送前最好先脱敏。模型名、价格和计费规则也可能变化,实际使用时以 DeepSeek 控制台和官方文档为准。
4. 使用 Ollama / 本地模型
如果不想每次都调用云端 API,也可以让 ShellGPT 连接本地模型。常见做法是使用 Ollama。
Ollama 官网:https://ollama.com/
本地模型一般不需要按云端 API 计费,日志和代码通常也不需要发到云端。但数据是否离开本机,仍然取决于你的部署方式和配置。
配置思路如下:
API_BASE_URL=http://localhost:11434/v1
DEFAULT_MODEL=<你的模型名>
USE_LITELLM=true
这里重点是 USE_LITELLM=true。当前 ShellGPT 源码里,只有打开这个配置,才会通过 LiteLLM 调用本地模型。
本地模型效果不一定稳定。命令能不能写准,和模型能力、提示词、问题描述都有关系。
5. 常见使用场景
嵌入式 Linux 开发中,比较适合先用 ShellGPT 起草的场景如下:
5.1 忘记命令参数
例如查找大文件:
sgpt -s "查找大于500M的文件"
可能得到:
find / -type f -size +500M 2>/dev/null
这类命令短、容易检查,比较适合让 ShellGPT 先生成。
5.2 分析日志
看内核日志时,可以先过滤再交给 ShellGPT:
dmesg | grep -i i2c | sgpt "找出这里面可能的错误,并说明原因"
串口日志也类似:
cat uart.log | sgpt "分析这些串口日志,看看有没有通信异常"
这里要注意:日志分析只能作为线索。真正定位问题,还要结合原理图、驱动代码、设备手册和实际波形。
5.3 写小脚本
sgpt --code "写一个bash脚本,批量把当前目录下所有.c文件重命名为.cpp"
--code 会尽量只输出代码。涉及批量重命名、批量删除、批量修改文件内容时,建议先在测试目录里跑一遍。
5.4 生成提交信息
git diff | sgpt "Generate git commit message for my changes"
这个用法适合生成草稿。最终 commit message 还是要自己确认是否准确。
6. 其他功能简单了解
ShellGPT 还有 Shell 集成、Chat/REPL、Roles、Function calling 等功能。关系可以先看这张图:
6.1 Shell 集成
sgpt --install-integration
当前源码里只支持 Bash 和 Zsh。安装后会往 .bashrc 或 .zshrc 追加配置,默认快捷键是 Ctrl+l。
6.2 Chat / REPL
普通 sgpt 每次问答没有连续上下文。如果想保留上下文,可以使用:
sgpt --chat debug_i2c "我在调试一个I2C设备,设备地址是0x3C"
sgpt --chat debug_i2c "帮我整理一下接下来可以检查哪些地方"
也可以进入连续交互模式:
sgpt --repl temp
6.3 Roles
Roles 可以理解为预设输出要求:
sgpt --create-role json_generator
sgpt --role json_generator "random: user, password, email"
6.4 Function calling
sgpt --install-functions
这个功能风险更高,因为模型可能调用本机函数甚至执行命令。刚开始使用 ShellGPT 时,不建议急着开启。
7. 使用时要注意的问题
最重要的注意事项放在一张图里:
简单说就是三句话:
第一,不要执行自己看不懂的命令。
第二,涉及删除、格式化、烧录、权限修改的命令要格外小心。
第三,云端模型不要随便上传敏感日志、代码和客户信息。
8. 总结
ShellGPT 本质上是一个把大模型接入终端的工具。它能帮我们生成命令、解释命令、写代码片段、分析文本、保存连续对话。
对嵌入式 Linux 开发者来说,很多问题也都和命令、日志、脚本有关。把这些问题直接在终端里问出来,有时候确实能少切几次浏览器,也能更快得到一个排查方向。
欢迎分享你在嵌入式 Linux 开发中使用这类命令行工具的经验。
176