用途 Butterfish 面向在命令行中工作的开发者,将 LLM 能力直接嵌入 shell(bash、zsh),让用户无需复制粘贴即可获得高上下文的 AI 帮助,偏向软件工程场景。
主要能力
- 在终端内直接向 AI 提问,凡是以大写字母开头的命令会被拦截并作为提示发送给模型。
- AI 可读取 shell 历史与命令输出,因此支持“为什么那个命令失败了?”这类上下文问题。
- 自动补全 shell 命令,AI 口头建议过的命令有可能出现在补全中,按 Tab 应用。
- 目标模式(Goal Mode):以 ! 开头的命令触发代理模式,由 AI 提出命令并交给用户执行,结果回传给模型;以 !! 开头则不确认直接执行(存在风险)。
- 也可当作通用 ChatGPT 界面使用,例如“给我一个意面食谱”。
- 提供更细分的命令行工具,用于提示、生成命令、文本摘要以及管理本地文件嵌入。
- butterfish.nvim 是一个 Neovim 插件,支持在 Neovim 内流畅地使用 LLM 提示,例如按指定指令重写代码块。
使用方式 支持 MacOS 与 Linux,可通过 Homebrew 或 go install 安装。首次运行会提示粘贴 OpenAI API 密钥,密钥写入 ~/.config/butterfish/butterfish.env。可把 butterfish 命令设置别名(如 bf)。运行 butterfish shell 会启动一个新的 shell 实例并拦截输入输出。默认使用 gpt-4-turbo 模型,可配置为其他模型;也可通过 --base-url(-u)指向任意 OpenAI 兼容 API 服务,包括本地模型。提示词包装器保存在 ~/.config/butterfish/prompts.yaml,可见且可编辑。使用 butterfish shell -v 查看原始 AI 请求/响应日志(MacOS 下位于 /var/tmp/butterfish.log),-vv 更详细。
适用场景 适合习惯在终端工作的开发者,用于快速获取命令、排查命令失败原因、自动补全、以代理方式完成诸如递归列出 golang 文件、查找隐藏文件、查看内存占用最高的进程等目标,也可进行一般的 LLM 对话。
限制 目标模式效果并不稳定,官方称“相当看运气”,成功与否取决于目标的复杂度和引导程度;代理可能偏向特定版本的命令,在 MacOS 与 Linux 上可能需要试错,也不擅长操作大型文本文件。历史上下文受模型 token 窗口限制,会尽量包含近期历史,单条历史最多使用 512 token,超长的命令输出会被截断。运行 vim、ssh 等交互式子进程时 Butterfish 会避免干扰。该工具默认会修改 shell 提示符以标识状态,属于实验性项目。