运维日记 - 猛男的AI拓荒录:Fabric (GitHub: danielmiessler/fabric) —— 让 AI 回归 Unix 哲学的终端神器

早上开完周会,回味着老板周末发给我的话,我真的是心服口服。

"还没等我们把这一块研究透彻,AI 就已经又有新的模型发布了。"------这话简直是人间清醒。现在这帮搞 AI 的,恨不得一天发两个大版本,咱们要是死磕在一个工具的底层源码里,很容易变成"起个大早,赶个晚集"。保持敏锐的嗅觉,广撒网、多摸底,才是咱们现在的最优解。

既然老板发话继续去 GitHub 上"拓荒",我今天果断抛弃了那些花里胡哨带 Web 网页的庞然大物,转而寻找真正符合咱们运维老炮儿审美的硬核工具。

结果,还真让我挖到了一个 GitHub 上标星几万的极品项目:Fabric

1. 初识 Fabric:原汁原味的 Unix 浪漫

前几天咱们研究的 Dify 和 OpenHands,要么是靠拖拽,要么是靠聊天框。但这对于我们这些常年泡在黑框终端(Terminal)里的运维来说,总觉得不够"极客"。

Fabric 这个项目,它的核心思想只有一句话:让 AI 融入 Linux 管道符 (|)。

它完全遵循了老一辈程序员定下的 Unix 哲学:"一个程序只做一件事,并把它做好;让程序协同工作;使用文本流作为通用接口。"

简单来说,它就是一个可以直接在命令行里调用的 AI 命令。你可以把任何系统命令的输出,通过管道符 | 直接喂给它,并套用预设好的"Pattern(模式/提示词)"进行处理。

2. 极速部署与"猛男专属"实操

部署非常简单,它本质上是用 Go 和 Python 写的 CLI 工具。我在跳板机上花了两分钟就装好了,配置了咱们内网的 API。

【场景一:看懂天书一样的 AWS IAM Policy】 以前开发丢给我一个几百行的 AWS IAM JSON 策略文件,让我 Review 有没有安全越权,我看得眼睛都花了。 现在有了 Fabric,我直接在终端里敲:

复制代码
cat dev-policy.json | fabric --pattern analyze_iam_policy

结果: 终端里瞬间高亮输出:"警告:第45行存在 s3:* 权限,可能导致任意桶被清空。建议缩减为 s3:GetObjects3:PutObject,并指定具体 Resource ARN。" 猛男点评:太清爽了!不用打开网页复制粘贴,直接在终端里秒出结果。

【场景二:Nginx 错误日志的无缝分析】 线上 Nginx 报 502 了,日志刷得飞起。以前我是用 awkgrep 疯狂过滤。 现在,我直接把日志流导给 AI:

复制代码
tail -n 100 /var/log/nginx/error.log | fabric --pattern extract_errors | fabric --pattern suggest_remediation

大家看懂这个操作了吗?双重管道! 第一段 extract_errors 让 AI 把 100 行日志里的核心报错提取出来; 第二段 suggest_remediation 让 AI 针对提取出的报错直接给出修复建议。 猛男点评:行云流水!这就是赛博时代的命令行艺术!

3. 核心机制:Pattern(模式)即资产

Fabric 最牛逼的地方在于它的 Patterns。它本身开源仓库里就自带了上百个别人写好的优秀 Prompt(提示词),比如 summarize(总结)、extract_wisdom(提取智慧)、write_nuclei_template(写安全扫描模板)。

但我作为资深运维,肯定要写自己的。我今天顺手写了两个我们公司专属的 Pattern 存了进去:

  1. translate_to_kubectl:把人类语言翻译成 kubectl 命令。

  2. audit_dockerfile:专门用来审查 Dockerfile 里有没有用 root 运行进程、有没有暴露敏感端口。

以后只要把这些 Pattern 同步给小张他们,他们敲命令的效率能提升好几倍。


1. 猛男手把手教安装(极简版)

Fabric 作者最近把它用 Go 语言重写了,所以安装过程极其丝滑,不用搞那一堆 Python 虚拟环境了。

Step 1: 安装工具本体 在咱们那台平时敲 kubectl 的跳板机上,直接运行这行命令(前提是机器上装了 go):

复制代码
go install github.com/danielmiessler/fabric@latest

就这一步,它的可执行文件就躺在 ~/go/bin/fabric 里了。

Step 2: 初始配置与对接大模型 装好之后,必须告诉它咱们的 API Key 在哪(比如咱们之前说的 OpenAI,或者本地的 Ollama)。 执行:

复制代码
fabric --setup

这时候终端会弹出一系列交互式的问答,问你 OpenAI 的 Key 是什么、Claude 的 Key 是什么。咱们为了数据安全,跳过公网 API,直接在提示到本地大模型的时候,填入咱们内网跑的 Ollama 地址和模型名。

Step 3: 更新官方海量模板库 Fabric 官方维护了一个非常牛的 Pattern(提示词)库。执行下面这行命令,它会把 GitHub 上几百个经过实战检验的模板全部拉取到本地:

复制代码
fabric --update

拉完之后,这些官方模板(包括您问的 explain_code)就全部保存在跳板机的 ~/.config/fabric/patterns/ 目录下了。


2. 官方 Pattern 怎么用?(以 explain_code 为例)

刚才咱们把库拉下来了。官方自带了一个叫 explain_code 的模板,咱们现在就来用它。

假设我今天在服务器上发现了一个叫 mystery.sh 的奇怪脚本,不知道是哪个离职同事留下的,我不敢跑。

我只需要在终端里敲这行"神仙命令":

复制代码
cat mystery.sh | fabric --pattern explain_code

运行过程拆解:

  1. cat mystery.sh 把脚本内容打印成了文本流。

  2. 管道符 | 把这个文本流塞给了 fabric

  3. fabric 拿着这坨代码,去 ~/.config/fabric/patterns/explain_code/system.md 里读取了官方写好的"老专家提示词"。

  4. 两者拼在一起发给大模型。最后在您的屏幕上,直接吐出一段清晰的中文(或英文)解释:"这是一个定期清理 /tmp 目录的脚本,没有危害,核心逻辑是......"


3. 运维的灵魂:怎么手写一个 extract_errors

老板,官方的模板再好,也不一定完全契合咱们公司的业务。您刚才问的 extract_errors(提取报错),其实官方可能没有,或者不够懂咱们公司的 Nginx 格式。所以,咱们运维要自己写!

写一个 Pattern 极其简单,它就是一个文件夹加一个 Markdown 文件。跟着我一步步来:

Step 1: 创建专属模板目录 在跳板机上建个文件夹,名字就是您以后要调用的参数名:

复制代码
mkdir -p ~/.config/fabric/patterns/extract_errors

Step 2: 编写"系统提示词" (system.md) 在这个文件夹里,新建一个叫 system.md 的文件:

复制代码
vim ~/.config/fabric/patterns/extract_errors/system.md

Step 3: 注入"猛男的灵魂"(填入提示词内容) 在这个文件里,用大白话写下您对 AI 的严格要求。比如我写的是:

你是一个有着 10 年经验的资深运维工程师。 你的任务是从用户输入的杂乱系统日志中,精准提取出真正的"致命报错(Error / Exception / Panic)"。

请遵循以下规则:

  1. 忽略所有的 INFO 和 DEBUG 级别的无用日志。

  2. 将提取出的报错按出现的时间顺序排列。

  3. 在每个报错下方,用一句话给出你认为可能的原因。

  4. 严禁废话,直接输出结果。

保存退出!就这么简单!这就相当于您把十年的运维经验,固化成了一段代码!

Step 4: 享受提效的快感(实操检验) 线上服务突然 502 了,一秒钟刷了几千行日志。我再也不用肉眼去翻了,直接敲:

复制代码
tail -n 1000 /var/log/nginx/error.log | fabric --pattern extract_errors

AI 瞬间在屏幕上给我输出:

发现致命报错:

  1. [error] 1234#0: *5678 upstream timed out (110: Connection timed out) 可能原因:后端的 PHP-FPM 或者 Java 进程卡死了,没有响应。

  2. [crit] 1234#0: *5679 connect() to unix:/var/run/php-fpm.sock failed (13: Permission denied) 可能原因:Nginx 用户没有权限读取后端服务的 socket 文件,检查文件属主。

相关推荐
Zhansiqi1 小时前
day33nlprnn
人工智能·深度学习·机器学习
AC赳赳老秦1 小时前
2026国产大模型协同趋势:以DeepSeek为枢纽,构建高效智能协作网络
大数据·网络·人工智能·搜索引擎·交互·ai-native·deepseek
小鸡吃米…1 小时前
自然语言处理 ——Python 实现
人工智能·python·自然语言处理
Alex艾力的IT数字空间1 小时前
OCR 原理:从像素到文本的智能转换
数据结构·人工智能·python·神经网络·算法·cnn·ocr
FluxMelodySun2 小时前
机器学习(二十) 集成学习-Boosting与Bagging集成方法
人工智能·机器学习·集成学习
李同学Lino2 小时前
拒绝 500 元智商税!AutoClaw 零门槛安装教程,手把手教你低成本“喂龙虾”
人工智能·ai·github·openclaw·autoclaw
wbs_scy2 小时前
Linux 基础 IO 初步解析:从 C 库函数到系统调用,理解文件操作本质
linux·运维·服务器
进击ing小白2 小时前
OpenCv之多通道的分离与合并
人工智能·opencv·计算机视觉
李建军2 小时前
OpenClaw 国内版快速安装指南 (2026 更新)
人工智能