fish-ai

GitHub
508 43 简单 3 次阅读 2天前MIT插件
AI 解读 由 AI 自动生成,仅供参考

fish-ai 是一款专为 Fish Shell 打造的智能辅助插件,旨在利用大语言模型增强命令行体验。它能有效解决查阅文档、记忆复杂参数以及修正拼写错误的痛点。当用户输入自然语言注释时,fish-ai 可自动生成对应的 Shell 命令;若命令执行失败,它也能像 thefuck 一样提供修复建议。此外,内置的模糊匹配功能支持智能补全,仅需两个键盘快捷键即可完成操作,全程无需鼠标。

fish-ai 特别适合习惯使用 Fish Shell 的开发者、运维人员及系统管理员。其技术亮点在于高度可配置,支持接入 Anthropic、Azure OpenAI 甚至本地部署的私有模型,兼顾灵活性与数据隐私。作为开源项目,fish-ai 代码精简易读,通过 fisher 即可快速安装,且不会干扰 fzf.fish 等其他现有插件。如果你希望提升终端工作效率,fish-ai 是一个值得尝试的轻量级解决方案。

使用场景

深夜,后端工程师小李需要紧急修复一个部署在 Kubernetes 集群中的服务,面对复杂的参数配置感到十分头疼。

没有 fish-ai 时

  • 需要反复查阅 kubectl 官方文档确认每个参数的正确拼写和具体用法。
  • 输入长命令时极易出现手误,导致报错后需逐字检查并重新输入。
  • 频繁切换浏览器搜索解决方案,严重打断当前的编码思路和专注度。
  • 难以记忆大量开关组合,往往依赖复制粘贴过往脚本或 Stack Overflow。

使用 fish-ai 后

  • 直接在终端输入自然语言描述需求,fish-ai 即可生成准确的 kubectl 命令。
  • 发现拼写错误时能自动识别并提供修正方案,无需手动回溯排查原因。
  • 通过预设快捷键快速补全后续参数,保持终端操作的连贯性和流畅性。
  • 大幅减少对外部文档的依赖,将更多精力集中在核心业务逻辑的处理上。

fish-ai 通过将 LLM 能力无缝融入命令行,显著降低了 Shell 脚本编写的门槛与时间成本。

运行环境要求

操作系统
  • Linux
  • macOS
GPU

未说明

内存

未说明

依赖
notes1. 必须安装 Fish Shell 环境;2. 需配置外部 LLM API Key(支持 OpenAI、Anthropic、Azure、Bedrock 等多种服务商);3. 支持本地自托管模型(如 Ollama),具体硬件需求取决于用户选择的模型;4. 隐私注意:插件会将 OS 名称、命令缓冲区、文件内容及命令行历史记录发送至 LLM;5. 使用 fisher 工具进行安装和更新;6. fzf 已随插件捆绑,无需单独安装。
python未说明
git
fisher
pip
venv
fzf
fish-ai hero image

快速开始

Badge with time spent Popularity badge Donate XMR

关于

fish-aiFish 添加了 AI 功能。 它非常棒!我构建它是为了简化我的生活,也希望它能简化你的生活。 以下是完整的功能介绍:

  • 它可以将注释转换为 Shell 命令,反之亦然,这意味着减少了阅读 manpages(手册页)、Google 搜索以及从 Stack Overflow 复制粘贴的时间。在处理 gitkubectlcurl 和其他拥有大量参数和开关的工具时非常有用。
  • 打错字了吗?它也可以修复错误的命令(类似于 thefuck)。
  • 不确定接下来该输入什么或者只是懒得打字?让 LLM(大型语言模型)配合内置的模糊查找器自动补全你的命令。
  • 所有操作均通过两个(可配置的)键盘快捷键完成,无需鼠标!
  • 它可以连接到您选择的 LLM(甚至是自托管的!)。
  • 整个项目是开源的,希望能做到易于阅读,代码量约 2000 行,这意味着你可以在一个下午内自行审计代码。
  • 使用 fisher 轻松安装和更新。
  • 已在 macOS 和最常见的 Linux 发行版上测试。
  • 不会干扰 fzf.fishtide 或你正在使用的任何其他插件!
  • 不会包装你的 Shell,不会安装遥测,也不会强迫你切换到专有终端模拟器。

此插件最初基于 Tom Dörr 的 fish.codex 仓库。 没有 Tom,这个仓库就不会存在!

如果你喜欢它,请添加一颗 ⭐。

欢迎提交 Bug 修复!我认为该项目已基本功能完备。 在针对功能请求打开 PR 之前,建议先打开一个 Issue,说明你想添加什么以及为什么,我们可以先讨论一下。

🎥 演示

Demo

👨‍🔧 如何安装

安装 fish-ai

确保已安装 git 以及 uv,或者支持版本的 Python 以及 pip(包管理器)和 venv(虚拟环境)。 然后使用 fisher 获取插件:

fisher install realiserad/fish-ai

创建配置

创建一个配置文件 $XDG_CONFIG_HOME/fish-ai.ini(如果未设置 $XDG_CONFIG_HOME,则使用 ~/.config/fish-ai.ini),在其中指定 fish-ai 应该与哪个 LLM 通信。 如果你不确定,请使用 GitHub Models。

Anthropic

要使用 Anthropic

[anthropic]
provider = anthropic
api_key = <your API key>
model = claude-sonnet-4-6

Azure OpenAI

要使用 Azure OpenAI

[fish-ai]
configuration = azure

[azure]
provider = azure
server = https://<your instance>.openai.azure.com
model = <your deployment name>
api_key = <your API key>

Bedrock

要通过 OpenAI 兼容 API 使用 AWS Bedrock 上的模型:

[fish-ai]
configuration = bedrock

[bedrock]
provider = bedrock
aws_region = us-east-1

如果未配置 api_key,将自动从您的 AWS 凭证(SSO(单点登录)、IAM(身份和访问管理)角色、环境变量等)生成短期令牌。 如果您更喜欢使用 Bedrock API 密钥,也可以直接指定 api_key

这使用了支持 Bedrock 上所有可用模型的 Bedrock Mantle 网关。 请参阅 支持的区域 以查看可用区域。

Cohere

要使用 Cohere

[cohere]
provider = cohere
api_key = <your API key>
model = command-a-03-2025

DeepSeek

要使用 DeepSeek

[deepseek]
provider = deepseek
api_key = <your API key>
model = deepseek-chat

GitHub Models

要使用 GitHub Models

[fish-ai]
configuration = github

[github]
provider = self-hosted
server = https://models.github.ai/inference
api_key = <paste GitHub PAT here>
model = gpt-4o-mini

你可以在此处创建个人访问令牌 (PAT)。 PAT 不需要任何权限。

Google

要使用来自 Google 的 Gemini

[google]
provider = google
api_key = <your API key>
model = gemini-3.1-pro-preview

Groq

要使用 Groq

[groq]
provider = groq
api_key = <your API key>

Mistral

要使用 Mistral

[fish-ai]
configuration = mistral

[mistral]
provider = mistral
api_key = <your API key>

OpenAI

要使用 OpenAI

[fish-ai]
configuration = openai

[openai]
provider = openai
model = gpt-4o
api_key = <your API key>
organization = <your organization>

OpenRouter

要使用 OpenRouter

[fish-ai]
configuration = openrouter

[openrouter]
provider = self-hosted
server = https://openrouter.ai/api/v1
model = google/gemini-3-flash-preview
api_key = <your API key>
extra_body = {"reasoning": {"effort": "minimal", "exclude": true}}

自托管

要使用自托管的 LLM(位于 OpenAI 兼容 API 之后):

[fish-ai]
configuration = self-hosted

[self-hosted]
provider = self-hosted
server = https://<your server>:<port>/v1
model = <your model>
api_key = <your API key>

如果您选择自托管,我建议使用 Ollama 搭配 Llama 3.3 70B。 运行在 localhost 上的开箱即用配置可能如下所示:

[fish-ai]
configuration = local-llama

[local-llama]
provider = self-hosted
model = llama3.3
server = http://localhost:11434/v1

可用模型列于 此处

将 API key(API 密钥)放入你的 keyring(密钥环)

不要将 API key 放在配置文件中,你可以让 fish-ai 从你的 keyring 中加载它。要保存新的 API key 或将现有的 API key 转移到你的 keyring,请运行 fish_ai_put_api_key

🙉 如何使用

将注释转换为命令,反之亦然

输入一个注释(任何以 # 开头的内容),然后按 Ctrl + P 将其转换为 shell 命令!注意,如果你的注释非常简短或模糊,LLM(大型语言模型)可能会决定改进注释而不是提供 shell 命令。这时你需要再次按 Ctrl + P

你也可以反向操作。输入一个命令并按 Ctrl + P 将其转换为解释该命令作用的注释。

自动补全命令

开始输入你的命令或注释,然后按 Ctrl + Spacefzf 中显示补全列表(它随插件捆绑在一起,无需单独安装)。

为了优化结果,在 fzf 内输入一些指令并按 Ctrl + P

建议修复方案

如果命令失败,你可以在命令提示符处立即按 Ctrl + Space,让 fish-ai 建议修复方案!

🤸 其他选项

你可以通过在 fish-ai.ini 配置文件中添加额外选项来调整 fish-ai 的行为。

更改默认键盘绑定

默认情况下,fish-ai 绑定到 Ctrl + PCtrl + Space。如果你的系统上存在任何现有键盘绑定的干扰,你可能想要更改此设置。

要更改键盘绑定,请将 keymap_1(默认为 Ctrl + P)和 keymap_2(默认为 Ctrl + Space)设置为你要使用的键盘绑定的转义序列。

要获取正确的键盘绑定转义序列,请使用 fish_key_reader

例如,如果你有来自 fish_key_reader 的以下输出:

$ fish_key_reader
Press a key:
bind ctrl-p 'do something'
$ fish_key_reader
Press a key:
bind ctrl-space 'do something'

然后将以下内容放入你的配置文件中:

[fish-ai]
keymap_1 = 'ctrl-p'
keymap_2 = 'ctrl-space'

重启 shell 以使更改生效。

用不同语言解释

要用不同的语言解释 shell 命令,请将 language 选项设置为该语言的名称。例如:

[fish-ai]
language = Swedish

只有当你使用的 LLM 是在包含所选语言的数据集上训练时,这才能良好工作。

补全数量

要更改按下 Ctrl + Space 时 LLM 建议的补全数量,请设置 completions 选项。默认值为 5

以下是如何将补全数量增加到 10 的示例:

[fish-ai]
completions = 10

要更改在 fzf 中按 Ctrl + P 时 LLM 建议的精修补全数量,请设置 refined_completions 选项。默认值为 3

[fish-ai]
refined_completions = 5

使用命令行历史个性化补全

你可以通过发送命令行历史的片段来个性化 LLM 建议的补全。

要启用它,请使用 history_size 选项指定要从历史记录中发送给 LLM 的最大命令数。默认值为 0(不发送任何命令行历史)。

[fish-ai]
history_size = 5

如果你启用此选项,请考虑使用 sponge 自动从你的命令行历史中删除损坏的命令。

预览管道

要在补全命令时将管道的输出发送给 LLM,请使用 preview_pipe 选项。

[fish-ai]
preview_pipe = True

这将发送光标前最后一个未闭合括号之后最长的连续管道的输出。例如,如果你自动补全 az vm list | jqaz vm list 的输出将被发送给 LLM。

此行为默认禁用,因为它可能会减慢补全过程并导致命令被执行两次。

配置进度指示器

你可以更改插件等待 LLM 响应时显示的进度指示器(默认为 ⏳)。

要更改默认值,请将 progress_indicator 选项设置为零个或多个字符。

[fish-ai]
progress_indicator = wait...

使用自定义标头

你可以使用 headers 选项发送自定义 HTTP 标头。使用逗号分隔的 Key: Value 对指定一个或多个标头。例如:

[fish-ai]
headers = Header-1: value1, Header-2: value2

🎭 在不同上下文之间切换

你可以使用 fish_ai_switch_context 命令在配置的不同部分之间切换。

🐾 数据隐私

使用插件时,fish-ai 会将你的操作系统名称和命令行缓冲区提交给 LLM。

当你将命令代码化或补全命令时,它还会发送你提到的任何文件的内容(只要文件可读),当你解释或补全命令时,<command> --help 的输出会被提供给 LLM 作为参考。

fish-ai 还可以在补全命令时发送你命令行历史的片段。默认情况下这是禁用的。

最后,为了修复之前的命令,之前的命令行缓冲区,以及任何终端输出和相应的退出码都会被发送到 LLM。

如果你关心数据隐私,你应该使用自托管的 LLM。当本地托管时,没有任何数据会离开你的机器。

敏感信息脱敏

插件尝试在向 LLM 提交之前从提示中删除敏感信息。敏感信息会被替换为 <REDACTED> 占位符。

以下信息会被删除:

  • 作为命令行参数提供的密码和 API 密钥
  • 存储在文件中的 PEM 编码私钥
  • 提供给例如 cURL 的 Bearer 令牌

如果你信任 LLM 提供商(例如因为你正在本地托管),你可以使用 redact = False 选项禁用删除功能。

版本历史

v2.9.32026/02/07
v2.0.32025/07/23
v2.0.12025/07/14
v2.11.12026/04/03
v2.10.62026/03/12
v2.10.52026/03/07
v2.10.22026/02/22
v2.10.02026/02/13
v2.9.02026/02/03
v2.7.22025/12/29
v2.5.02025/11/27
v2.3.12025/09/30
v2.3.02025/09/17
v2.1.02025/07/28
v2.0.02025/07/11
v1.8.02025/04/28
v1.7.02025/03/20
v1.5.02025/03/14
v1.4.12025/03/10
v1.2.12025/03/05

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架

gpt4free

gpt4free 是一个由社区驱动的开源项目,旨在聚合多种可访问的大型语言模型(LLM)和媒体生成接口,让用户能更灵活、便捷地使用前沿 AI 能力。它解决了直接调用各类模型时面临的接口分散、门槛高或成本昂贵等痛点,通过统一的标准将不同提供商的资源整合在一起。 无论是希望快速集成 AI 功能的开发者、需要多模型对比测试的研究人员,还是想免费体验最新技术的普通用户,都能从中受益。gpt4free 提供了丰富的使用方式:既包含易于上手的 Python 和 JavaScript 客户端库,也支持部署本地图形界面(GUI),更提供了兼容 OpenAI 标准的 REST API,方便无缝替换现有应用后端。 其技术亮点在于强大的多提供商支持架构,能够动态调度包括 Opus、Gemini、DeepSeek 等多种主流模型资源,并支持 Docker 一键部署及本地推理。项目秉持社区优先原则,在降低使用门槛的同时,也为贡献者提供了扩展新接口的便利框架,是探索和利用多样化 AI 资源的实用工具。

66k|★★☆☆☆|2天前
插件语言模型Agent

gstack

gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置,旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战,gstack 提供了一套标准化解决方案,帮助开发者实现堪比二十人团队的高效产出。 这套配置特别适合希望提升交付效率的创始人、技术负责人,以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具,涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令(如 `/review` 进行代码审查、`/qa` 执行测试、`/plan-ceo-review` 规划功能),即可自动化处理从需求分析到部署上线的全链路任务。 所有操作基于 Markdown 和斜杠命令,无需复杂配置,完全免费且遵循 MIT 协议。gstack 不仅是一套工具集,更是一种现代化的软件工厂实践,让单人开发者也能拥有严谨的工程流程。

64.3k|★★☆☆☆|今天
Agent插件

meilisearch

Meilisearch 是一个开源的极速搜索服务,专为现代应用和网站打造,开箱即用。它能帮助开发者快速集成高质量的搜索功能,无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果,而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性,并支持 AI 驱动的混合搜索(结合关键词与语义理解),显著提升用户查找信息的体验。 Meilisearch 特别适合 Web 开发者、产品团队或初创公司使用,尤其适用于需要快速上线搜索功能的场景,如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK,部署简单,资源占用低,本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下,为用户提供流畅、智能搜索体验的团队来说,Meilisearch 是一个高效且友好的选择。

57k|★★☆☆☆|今天
图像Agent数据工具

awesome-claude-skills

awesome-claude-skills 是一个精心整理的开源资源库,旨在帮助用户挖掘和扩展 Claude AI 的潜力。它不仅仅是一份列表,更提供了实用的“技能(Skills)”模块,让 Claude 从单纯的文本生成助手,进化为能执行复杂工作流的智能代理。 许多用户在使用 AI 时,常受限于其无法直接操作外部软件或处理特定格式文件的痛点。awesome-claude-skills 通过预设的工作流解决了这一问题:它不仅能教会 Claude 专业地处理 Word、PDF 等文档,进行代码开发与数据分析,还能借助 Composio 插件连接 Slack、邮箱及数百种常用应用,实现发送邮件、创建任务等自动化操作。这使得重复性任务变得标准化且可复用,极大提升了工作效率。 无论是希望优化日常办公流程的普通用户、需要处理复杂文档的研究人员,还是寻求将 AI 深度集成到开发管线中的开发者,都能从中找到适合的解决方案。其独特的技术亮点在于“技能”的可定制性与强大的应用连接能力,让用户无需编写复杂代码,即可通过简单的配置让 Claude 具备跨平台执行真实任务的能力。如果你希望让 Claude

51.3k|★★☆☆☆|今天
Agent插件