用途
ShellGPT 是一个命令行生产力工具,由 AI 大语言模型(LLM)驱动。它旨在帮助用户更快、更高效地完成任务,主要用途包括生成 Shell 命令、代码片段和文档,减少对外部资源(如搜索引擎)的依赖。
主要能力
- 生成 Shell 命令:通过 --shell 或 -s 选项,可根据用户描述快速生成并执行所需命令。ShellGPT 能感知操作系统和当前使用的 $SHELL,从而给出适配具体系统的命令。
- 生成代码:通过 --code 或 -c 选项,请求纯代码输出,可将输出重定向到文件。
- 会话与 REPL:支持聊天模式(--chat)和 REPL 模式(--repl),会话保存在可配置的 CHAT_CACHE_PATH。可用 --list-chats 列出会话、--show-chat 查看会话消息。
- 函数调用:OpenAI 提供的函数调用能力允许 LLM 在用户系统中执行函数。可安装默认函数,也可在 ~/.config/shell_gpt/functions 创建自定义 .py 文件,类内 docstring 会作为函数描述传给 OpenAI API。
- 自定义角色:使用 --create-role 创建角色,角色文件保存在 ~/.config/shell_gpt/roles,可用 --list-roles 和 --show-role 管理。若角色描述包含“APPLY MARKDOWN”,聊天会使用 Markdown 格式显示。
- 缓存控制:使用 --cache(默认)和 --no-cache 控制请求缓存。相同查询会命中本地缓存,但若改变了 --temperature 或 --top-probability 等参数会发起新请求。
- Shell 集成:运行 sgpt --install-integration 后重启终端,可在 .bashrc 或 .zshrc 中添加相关配置。默认使用 Ctrl+l 调用 ShellGPT,将建议命令直接放入终端输入行,便于编辑后回车执行。
使用方式
ShellGPT 接受来自标准输入(stdin)和命令行参数的提示。可通过管道传递输入,例如根据 diff 生成 git 提交信息,或传递日志进行分析并获取错误与建议。使用 --no-interaction 选项可禁用交互模式,将生成的命令直接输出到 stdout,便于通过管道复制到剪贴板等操作。
运行时配置文件位于 ~/.config/shell_gpt/.sgptrc,可设置 DEFAULT_COLOR(black、red、green、yellow、blue、magenta、cyan、white 及 bright_ 系列等)、CODE_THEME(参考 pygments 样式链接)、MARKDOWN_LIVE_VERTICAL_OVERFLOW(ellipsis、visible、crop)。默认 ellipsis 模式在 Markdown 输出超过终端高度时仅显示“...”;visible 模式(推荐用于 REPL 会话)可实时显示全部生成内容。
Docker 使用方式:通过 OPENAI_API_KEY 环境变量和 docker volume 存储缓存运行容器,可根据偏好设置 OS_NAME 和 SHELL_NAME 环境变量。也可使用提供的 Dockerfile 自行构建镜像。
适用场景
适用于在终端中快速分析和检索信息,处理从技术配置到通用知识的各种直接请求。可用于生成 git 提交信息、分析日志、查找并执行 Shell 命令、生成代码、进行多轮对话以迭代改进建议等。
限制
默认依赖 OpenAI API 和 GPT-4 模型,需要 API 密钥,且 OpenAI API 并非免费。若在本地运行开源模型,需要自行搭建 LLM 后端(如 Ollama),且 ShellGPT 未针对本地模型优化,可能无法按预期工作。LLM 可能会执行破坏性命令,使用时需自行承担风险。