Fabric 怎么为 Zsh、Bash、Fish 安装 Shell 补全,让 fabric-ai 也能触发 Tab 补全?
2026/9/10 9:50:27 网站建设 项目流程

Fabric 怎么为 Zsh、Bash、Fish 安装 Shell 补全,让 fabric-ai 也能触发 Tab 补全?

【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric

如果 Fabric 的 Go 版 CLI 已经装好、命令在 PATH 里可以执行,但输入fabric -pfabric -m时按 Tab 没有任何候选项,说明系统还没有加载 Fabric 提供的补全文件。Fabric 仓库自带 Zsh、Bash、Fish 三个补全文件 和一个自动安装脚本 setup-completions.sh,本条路径的目标就是:把对应 Shell 的补全文件装到系统能找到的位置,并让fabricfabric-ai两种命令名都能触发 Tab 补全。

先确认前提条件

自动脚本通过command -v检测命令名,它只识别两种情况:

  • fabric已安装,或
  • fabric-ai已安装

两者都不存在时脚本直接报错退出(Neither 'fabric' nor 'fabric-ai' command found in PATH)。所以运行任何安装步骤前,先确认当前 shell 里能执行fabricfabric-ai

路径一:一条命令自动安装(无需克隆仓库)

文档给出的自动安装方式是直接把脚本拉下来执行:

curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh | sh

这条命令会把远端脚本交给sh执行,脚本会向 shell 补全目录写入文件,权限不足时尝试用sudo兜底。如果你不想一上来就改动系统,可以先用 dry-run 模式,它只打印将要执行的命令,不做任何修改:

curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh | sh -s -- --dry-run

脚本执行时会依次做这几件事(来自 docs/Shell-Completions.md):

  • 检测装的是fabric还是fabric-ai
  • $SHELL环境变量检测当前 shell(zsh、bash 或 fish);
  • Zsh 下读取你现有的$fpath目录,其他 shell 使用标准补全目录;
  • 把补全文件按命令名写入(fabric-ai会直接写成_fabric-aifabric-ai.bashfabric-ai.fish之类的文件名);
  • 结束时打印启用提示。

如果本地没有补全文件(比如就是curl这种用法),脚本会从 GitHub 自动下载三个补全文件。也可以用环境变量覆盖下载源:

FABRIC_COMPLETIONS_BASE_URL="https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions" \ sh -c "$(curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh)"

路径二:从克隆的仓库运行安装脚本

如果你本地已经有 Fabric 仓库,直接运行仓库内的脚本即可,它优先使用同目录下的补全文件:

# 正式安装 ./completions/setup-completions.sh # 或先看它将做什么 ./completions/setup-completions.sh --dry-run

输出末尾出现Shell completion setup completed!You can now use tab completion with the '<fabric 或 fabric-ai>' command.说明安装完成。

手动安装:Zsh、Bash、Fish 分别怎么做

自动脚本失败或你想精确控制安装位置时,按 docs/Shell-Completions.md 的手动步骤操作。以下命令中的completions/...路径都相对于 Fabric 仓库根目录。

Zsh

  1. 把补全文件复制到$fpath中的目录。系统级安装需要sudo,会写入/usr/local/share/zsh/site-functions/

    sudo cp completions/_fabric /usr/local/share/zsh/site-functions/
  2. 关键步骤:如果二进制装成了fabric-ai,必须建一个符号链接,否则fabric-ai按 Tab 无反应:

    sudo ln -s /usr/local/share/zsh/site-functions/_fabric /usr/local/share/zsh/site-functions/_fabric-ai
  3. 重启 shell,或重载补全:

    autoload -U compinit && compinit

    补全文件 completions/_fabric 第一行的#compdef fabric fabric-ai声明它同时绑定两个命令名,链接建好后两个命令都能补全。

Bash

  1. 复制到标准补全目录。系统级用sudo写入/etc/bash_completion.d/;用户级写入~/.local/share/bash-completion/completions/

    # 系统级安装 sudo cp completions/fabric.bash /etc/bash_completion.d/ # 或用户级安装 mkdir -p ~/.local/share/bash-completion/completions/ cp completions/fabric.bash ~/.local/share/bash-completion/completions/fabric
  2. fabric-ai的符号链接,与安装级别对应:

    # 系统级 sudo ln -s /etc/bash_completion.d/fabric.bash /etc/bash_completion.d/fabric-ai.bash # 或用户级 ln -s ~/.local/share/bash-completion/completions/fabric ~/.local/share/bash-completion/completions/fabric-ai
  3. 重启 shell 或重新加载:

    source ~/.bashrc

Fish

Fish 只写用户目录,不需要sudo,也不需要重启:

mkdir -p ~/.config/fish/completions cp completions/fabric.fish ~/.config/fish/completions/

fabric-ai的符号链接:

ln -s ~/.config/fish/completions/fabric.fish ~/.config/fish/completions/fabric-ai.fish

文档说明 Fish 会自动加载补全文件,无需重启。

可选替代路径:直接在 shell 配置文件里 source

不想复制文件时,可以在 shell 配置文件里直接 source 补全文件(路径需要替换成你实际的仓库位置):

  • Zsh:在~/.zshrc中添加source /path/to/fabric/completions/_fabric
  • Bash:在~/.bashrc中添加source /path/to/fabric/completions/fabric.bash
  • Fish:文档建议优先使用上面的文件安装方式

另有一条用户级 Zsh 变体来自 README:不写系统目录,而是复制到~/.zsh/completions并在~/.zshrccompinit之前把它加进$fpath

mkdir -p ~/.zsh/completions cp completions/_fabric ~/.zsh/completions/ echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc echo 'autoload -Uz compinit && compinit' >> ~/.zshrc

验证与排查

判断是否生效,按文档给出的方式处理:

  • 安装后重启 shell(Zsh/Bash 可用autoload -U compinit && compinitsource ~/.bashrc代替重启;Fish 不需要重启)。
  • 输入fabric -pfabric -m后按 Tab,应能列出模式(patterns)和模型(models)候选项。补全列表是动态生成的:completions/_fabric、completions/fabric.bash 都会实时调用fabric --listpatterns --shell-complete-list--listmodels --shell-complete-list等命令获取当前资源,所以候选项始终跟随你的 Fabric 安装状态。
  • 按 Tab 无反应时,对照文档的排查清单:确认补全文件权限正常;Zsh 下确认补全目录确实在$fpath里;如果重命名过 fabric 二进制,确认已按上文创建对应符号链接;最后重启一次 shell 确保补全被加载。

安装完成后,Tab 可补全的范围包括:-p/--pattern/--readpattern的 patterns、-m/--model的模型、-V/--vendor的厂商、contexts、sessions、strategies、extensions、--voice的 Gemini TTS 音色、--transcribe-model的转录模型,以及--thinking--debug--image-size--image-quality--image-background的固定取值、附件/输出等文件路径,还有所有命令行 flag。

【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询