• 正文
  • 相关推荐
申请入驻 产业图谱

把AI装进终端?嵌入式命令行效率神器!

7小时前
176
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是杂烩君。平时做嵌入式 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 看解释。涉及 rmddmkfs、烧录、权限修改这类命令,更不能直接回车。

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-chatdeepseek-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 开发中使用这类命令行工具的经验。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

本公众号专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,公众号内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!