CLI AI

不用 Python、不用 key 的 shell_gpt 替代品

2026-08-20

shell_gpt 是一个用 pip 安装、靠你自己的 OpenAI key 驱动的 Python 包。CliAI 是单个二进制,一行装好,不需要 key。两者都把一句话变成 shell 命令;值得比较的是运行时、这笔账走谁的 key,以及生成与执行之间发生了什么。

1. 真正有差别的三条轴

其余都是口味问题。这三条改变的是在"不是你笔记本"的机器上会发生什么:你得装什么、你得随身带什么秘密,以及模型的答案和你的 shell 之间是否隔着东西。

2. 运行时:每台机器上的 Python

pip install 会带来合适版本的 Python、最好还有虚拟环境和一整棵依赖树。在自己的笔记本上这是一次性的杂活。摊到十几台服务器、一个构建镜像和两个容器上,它就变成了持续的小工作——而系统 Python 比包所要求的还旧的那台机器,偏偏就是你凌晨两点要用的那台。

单个二进制彻底绕开这些:没有需要和系统包管理器调和的东西,也没有会在别人升级 Python 时坏掉的东西。

3. key:它是谁的,最后又会去哪

shell_gpt 靠你的 OpenAI key 运行。你去申请,把它放进环境变量或配置文件,后果从此归你:它会流进 shell 历史、流进用你的 dotfiles 构建的容器镜像、流进备份,以及每一台你想让这个工具能用的机器。

CliAI 根本不需要 key。少一个要轮换的秘密,安全评审时也少一条要解释的条目。

4. 执行之前发生了什么

clai
$ clai delete every log file older than 30 days→ find /var/log -name '*.log' -mtime +30 -delete⚠ CAUTION — deletes files permanently, no recycle binRun it? type yes to confirm:

在这里,风险标记和确认属于协议的一部分,而不是一个你可能忘了打开的选项。凡是把"帮我执行"做成参数的工具,迟早会被某个赶时间的人带着这个参数运行。

5. 追问胜过重打

clai
$ clai show me the largest folders here→ du -sh * | sort -rh | head[R] only top 5, follow into subdirectories→ du -h --max-depth=2 . | sort -rh | head -5

补充提问保留了最初请求的上下文,所以你只是改一个细节,而不是把整句重写。

6. 什么时候 shell_gpt 仍然是对的选择

如果你本来就在 Python 里生活、已经有了 key,而且想按自己的口味改角色、系统提示词和模型,那这份灵活正是它提供的。它是给打算调教它的人准备的工具箱。

CliAI 选了相反的取舍:更少的旋钮、没有需要预备的东西,在别人的服务器上和在自己机器上给出同样的答案。

Gotchas

  • 环境变量里的 key,就是历史记录里的 key。 一行 export OPENAI_API_KEY=… 比你对它的记忆活得更久,而 .bash_history 可被所有人读到的情况比大家以为的更常见。
  • 自动执行省下一秒。 而它只需要出事一次,就比省下的所有秒加起来还贵。
  • 容器镜像里的 Python 是一百兆。 对一个工作是打印一行文字的工具来说,这个价钱在每次构建里都付得很奇怪。

Related questions

能两个都用吗? 能,它们不冲突:不同的二进制,不同的调用方式。

CliAI 能离线用吗? 不能。生成要走云端模型,和 shell_gpt 一样。

我的请求隐私怎么办? 两种情况下你的文字都会到达模型。差别只在于走谁的 key、记在谁的账上。

See also

CliAI 只有一个二进制、不需要 key,还有一个你没法误关的确认步骤。一行安装。