ShellGPT
ShellGPT 是一个基于 LLM 的 Shell 命令行工具,本质是一个 LLM 客户端与会话管理器。它可以通过 OpenAI 兼容的 API 与 LLM 服务端进行通信,从而实现命令行的 LLM 问答与辅助功能,并集成了对话管理、命令历史、交互式命令行等功能。
1. 安装
ShellGPT 的安装非常简单,你只需要保证电脑上有 python 环境,然后通过 pip 进行安装:
2. 配置
在第一次使用 ShellGPT 时,会提示配置 API 密钥。ShellGPT 默认使用 OpenAI 的 API Endpoint,并使用 GPT-4 作为模型。如果你没有 API 密钥,你需要前往 OpenAI 注册账号并获取 API 密钥。
当然,你也可以通过配置文件来修改 API Endpoint、模型、对应的 API 密钥等参数,配置文件还可以修改各种缓存路径、历史记录路径等,详情请参考 ShellGPT GitHub 仓库。理论上 ShellGPT 支持所有 OpenAI 兼容的 API,包括 OpenAI、Moonshot(Kimi)、DeepSeek、OpenRouter 等,当然也包括使用 Ollama 部署的本地模型等。
配置文件的默认路径是 ~/.config/shell_gpt/.sgptrc
,例如你需要修改 API 的话,可以配置以下内容:
...
DEFAULT_MODEL=<YOUR-MODEL-NAME, eg. gpt-4o>
...
API_BASE_URL=<YOUR-API-ENDPOINT, eg. https://your.api.endpoint:PORT/v1/>
...
OPENAI_API_KEY=<YOUR-API-KEY, eg. sk-xxx>
...
3. 使用
ShellGPT GitHub 仓库 的 README.md
中有详细的使用方法,和各种生动完整的使用场景例子。
下面我就选择几个基础但常用的场景介绍一下:
3.1 单句问答
首先是最简单的:单句问答。你可以直接在命令行中输入一个问题,ShellGPT 会返回一个回答。例如:

当然你也可以通过 Pipe 或重定向的方式将问题输入到 ShellGPT 中:

或:

3.2 Shell 命令生成与执行
ShellGPT 还支持生成 Shell 命令,你可以使用参数 --shell
或 -s
通过问答的方式来生成一个 Shell 命令,然后选择是否执行它或解释它。例如:

注意,ShellGPT 会根据当前的系统来使用不同的 System Prompt,例如这里他很显然在 System Prompt 提示了这是 macOS,所以使用了 brew install curl
。
你同样可以使用 Pipe 或重定向的方式来输入额外的内容。
此外,你还可以通过 --no-interaction
参数来关闭交互模式,直接生成 Shell 命令到 stdout,并结合 Pipe 等来处理生成结果:
例如这里我将生成的命令复制到了剪贴板中。
3.2.1 Shell 集成
此外,ShellGPT 还支持安装 Shell 集成(支持 bash
、zsh
)来实现 Shell 命令的自动补全。这是非常方便的功能,意味着你可以不使用 sgpt
命令,而是直接在 Shell 中输入问题,并使用快捷键来获取回答。
首先你需要安装 Shell 集成:
然后 sgpt 就会在 shell 的配置文件中添加相应的配置,例如在 ~/.bashrc
或 ~/.zshrc
。此后,你就可以通过直接在 Shell 中输入问题,并使用(默认)Ctrl + l
来获取命令提示了:
然后你就可以自行选择修改和执行这个命令,怎么样,感觉就是 tldr 的全面上位替代了吧。
3.3 代码生成
ShellGPT 还支持代码生成,你可以通过参数 --code
或 -c
来生成代码。例如:

同样你也可以通过 Pipe 或重定向的方式来输入额外的内容,或将输出结果重定向到其他地方。
3.4 对话模式
ShellGPT 还支持对话模式,你可以通过参数 --chat
来进入对话模式,并紧跟着 Session 名称来指定特定的对话。例如:
你还可以同时使用 --shell
和 --code
参数,这样你就可以在对话模式中有指向性地让 ShellGPT 生成 Shell 命令或代码,并通过对话来进一步优化生成的内容了。
当然,你可以通过 --chat-list
或 -lc
参数来查看当前所有的对话 Session,通过 --chat-show <Session>
参数来查看某个特定的对话 Session。
此外,你还可以通过 --repl
参数来进入 REPL (read–eval–print loop) 模式,这样你就可以直接在 ShellGPT 中交互式地聊天了,并且配合 --shell
参数交互式地生成和修改指令的话,你还可以随时通单独输入 e
和 d
来执行和描述当前生成的指令。
详情可以参考 README。
3.5 其他功能
ShellGPT 还支持很多功能,例如 Function Calling 和自定义 Role 等。你可以通过定义自己的 Function 和 Role 来实现更多的功能,例如你可以定义一个 Function 来按照一个特定的 Schema 来执行命令,或定义不同的 role 来执行特定 System Prompt 下的对话等。详细内容还是请参考 README。
4. 结语
总的来说,ShellGPT 是一个非常强大的 Shell 命令行工具,将 Shell 和强大的 LLMs 集成了起来,不需要随时在 Web 标签和 Terminal 之间来回切换就可以和 LLM 快速沟通增加 Shell 效率,同时也不需要使用 Warp 等付费 Terminal 工具,就可以体验 LLMs 支撑的强大 Shell,安全隐私也更有保障(只要你相信你自己选择的 API 供应商)。同时还可以作为精简的 LLM 聊天界面,虽然没有向量数据库的 RAG 支持,但也可以通过输入纯文本,功能已经满足绝大多数 shell 下的使用场景了。