Fabric: AI 命令行工具 — Patterns 驱动的 AI 增强工作流¶
为什么要学 Fabric¶
大多数 AI 工具要求你自己写提示词(Prompt),每次都要从头描述你想要什么。这不仅低效,还难以复用。Daniel Miessler 的 Fabric 用一个简单的思路解决了这个问题:把常用的 AI 用法打包成可复用的 Pattern(模式)。
| 场景 | 传统方式 | Fabric 方式 |
|---|---|---|
| 提取 YouTube 视频要点 | 手动转录 → 粘贴到 ChatGPT → 写提示词 | yt --transcript URL \| fabric -p extract_wisdom |
| 总结一篇文章 | 复制全文 → 粘贴 → 写提示词 | cat article.md \| fabric -p summarize |
| 分析代码安全性 | 阅读代码 → 列清单 → 逐项检查 | cat app.py \| fabric -p analyze_threat_model |
| 改进写作 | 来回修改 → 重复沟通 | cat draft.md \| fabric -p improve_writing |
Fabric 的核心理念是:AI 的真正价值不在模型本身,而在于你如何组织与模型的交互。Pattern 就是这种组织方式的标准化产物。
核心概念¶
白话解释¶
Fabric 是一个命令行工具,它做了三件事: 1. 收集了一堆预写好的高质量 Prompt(叫做 Patterns) 2. 提供了一个 CLI 让你通过管道把内容喂给这些 Prompt 3. 支持多种 AI 模型后端(OpenAI、Anthropic、Ollama 等)
你可以把它想象成"AI 的 Unix 命令"——每个 Pattern 是一个专用命令,通过管道组合起来完成复杂任务。
核心概念表¶
| 概念 | 说明 | 类比 |
|---|---|---|
| Pattern | 预定义的提示词模板 | Shell 命令(如 grep、sed) |
| Stitches | 多个 Pattern 串联 | Shell 管道 cmd1 \| cmd2 |
| Context | 额外的上下文文件 | 命令的配置文件 |
| Model | 后端 AI 模型 | 命令的执行引擎 |
| Session | 一次完整的对话 | 一个终端会话 |
yt | 内置的 YouTube 转录工具 | 专用的视频处理命令 |
ts | 内置的 Twitter/X 内容提取 | 社交媒体抓取命令 |
内置 Pattern 分类¶
Fabric 自带 100+ Pattern,覆盖常见场景:
| 分类 | 示例 Pattern | 用途 |
|---|---|---|
| 内容总结 | summarize, extract_wisdom | 从长文/视频中提取关键信息 |
| 写作改进 | improve_writing, write_essay | 优化文字质量 |
| 代码分析 | analyze_code, explain_code | 代码审查和解释 |
| 安全分析 | analyze_threat_model, create_security_update | 安全评估 |
| 学习辅助 | explain_terms, create_quiz | 学习和教育 |
| 创意思维 | create_idea_compass, rate_content | 内容评估和创意 |
安装配置¶
系统要求¶
- Go 1.22+(编译安装)或 pipx(Python 安装)
- macOS、Linux 或 WSL
- 至少一个 AI 模型的 API Key
安装方式¶
方式一:Go 安装(推荐)
方式二:pipx 安装
方式三:从源码编译
git clone https://github.com/danielmiessler/fabric.git
cd fabric
go build -o fabric .
sudo mv fabric /usr/local/bin/
初始化配置¶
# 首次运行,进入交互式配置
fabric --setup
# 按提示输入你的 API Key
# 选择默认模型
# Pattern 会自动下载到 ~/.config/fabric/patterns/
配置文件¶
配置文件位于 ~/.config/fabric/:
~/.config/fabric/
├── .env # API Keys
├── patterns/ # Pattern 集合
│ ├── summarize/
│ │ └── system.md
│ ├── extract_wisdom/
│ │ └── system.md
│ └── ...
└── context/ # 自定义上下文
.env 文件内容示例:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
DEFAULT_MODEL=claude-sonnet-4-20250514
DEFAULT_VENDOR=anthropic
# 本地模型
OLLAMA_URL=http://localhost:11434
快速上手¶
基本用法¶
Fabric 的基本模式是通过管道传入文本,指定 Pattern 处理:
# 总结一篇文章
cat article.md | fabric -p summarize
# 从剪贴板内容提取要点
pbpaste | fabric -p extract_wisdom
# 直接输入文本
echo "解释什么是 Kubernetes" | fabric -p explain_terms
YouTube 视频摘要¶
这是 Fabric 最受欢迎的功能之一:
# 提取 YouTube 视频的智慧要点
yt --transcript "https://www.youtube.com/watch?v=VIDEO_ID" | fabric -p extract_wisdom
# 总结视频内容
yt --transcript "https://www.youtube.com/watch?v=VIDEO_ID" | fabric -p summarize
# 提取视频中的关键引言
yt --transcript "https://www.youtube.com/watch?v=VIDEO_ID" | fabric -p extract_references
代码分析¶
# 解释一段代码
cat main.go | fabric -p explain_code
# 分析代码中的安全问题
cat server.py | fabric -p analyze_threat_model
# 代码审查
git diff HEAD~1 | fabric -p analyze_code
写作辅助¶
# 改进写作
cat draft.md | fabric -p improve_writing
# 生成文章大纲
echo "写一篇关于微服务架构的文章" | fabric -p create_outline
# 将技术内容转化为通俗版本
cat technical_doc.md | fabric -p simplify_language
指定模型¶
# 使用特定模型
cat file.txt | fabric -p summarize -m gpt-4o
# 使用本地模型
cat file.txt | fabric -p summarize -m ollama:llama3
# 使用 Anthropic
cat file.txt | fabric -p summarize -m claude-sonnet-4-20250514
进阶用法¶
创建自定义 Pattern¶
Pattern 本质上就是一个 Markdown 格式的系统提示词。创建步骤:
# 1. 创建 Pattern 目录
mkdir -p ~/.config/fabric/patterns/my_bio_summary
# 2. 编写 system.md
cat > ~/.config/fabric/patterns/my_bio_summary/system.md << 'EOF'
# IDENTITY and PURPOSE
You are an expert bioinformatics researcher. Your job is to take scientific paper abstracts and extract the key findings in a structured format.
# STEPS
- Read the abstract carefully
- Identify the organism/species studied
- Extract the key methodology used
- List the main findings
- Note any novel contributions
# OUTPUT INSTRUCTIONS
- Use markdown format
- Start with a one-sentence summary
- Follow with a structured breakdown
- End with potential implications
# INPUT
INPUT:
EOF
# 3. 更新 Pattern 列表
fabric --update
Pattern 串联(Stitches)¶
多个 Pattern 可以通过管道串联:
# 先提取要点,再生成推文
cat article.md | fabric -p extract_wisdom | fabric -p create_tweet
# 分析代码 → 生成改进建议 → 格式化输出
cat app.py | fabric -p analyze_code | fabric -p improve_writing
# YouTube 视频 → 提取要点 → 翻译成中文
yt --transcript "URL" | fabric -p extract_wisdom | fabric -p translate_to_chinese
使用上下文(Context)¶
上下文文件让 Pattern 更了解你的背景:
# 创建上下文文件
mkdir -p ~/.config/fabric/context
cat > ~/.config/fabric/context/my_work.md << 'EOF'
我是一名生物信息学研究员,主要做单细胞 RNA-seq 分析。
常用工具:Scanpy, Seurat, CellRanger
研究方向:肿瘤免疫微环境
EOF
# 使用上下文
cat paper.txt | fabric -p summarize --context my_work
输出格式控制¶
# 输出到文件
cat input.txt | fabric -p summarize > output.md
# 复制到剪贴板 (macOS)
cat input.txt | fabric -p summarize | pbcopy
# 复制到剪贴板 (Linux)
cat input.txt | fabric -p summarize | xclip -selection clipboard
# JSON 格式输出(取决于 Pattern 设计)
cat data.txt | fabric -p extract_data_points
与 Shell 脚本集成¶
#!/bin/bash
# batch_summarize.sh - 批量总结目录中的所有 Markdown 文件
INPUT_DIR="./papers"
OUTPUT_DIR="./summaries"
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.md; do
filename=$(basename "$file" .md)
echo "Processing: $filename"
cat "$file" | fabric -p summarize > "$OUTPUT_DIR/${filename}_summary.md"
done
echo "Done! Summaries saved to $OUTPUT_DIR"
常用 Pattern 详解¶
extract_wisdom — 最流行的 Pattern
从任何内容中提取: - 核心观点(IDEAS) - 关键引言(QUOTES)
- 行为建议(RECOMMENDATIONS) - 参考资源(REFERENCES)
analyze_threat_model — 安全分析
rate_content — 内容评分
常见问题¶
Q1: Fabric 和直接用 ChatGPT/Claude 有什么区别?¶
Fabric 不替代 ChatGPT/Claude,它是一个调用层。核心区别: - 可复用:Pattern 写一次,用无限次 - 可组合:通过管道串联多个步骤 - 可自动化:嵌入 Shell 脚本和 CI/CD - 可版本控制:Pattern 是文本文件,可以 Git 管理
Q2: yt 命令提示找不到?¶
yt 是 Fabric 的辅助工具,需要单独安装:
确保 $GOPATH/bin 在你的 $PATH 中。
Q3: 如何查看所有可用的 Pattern?¶
Q4: Pattern 如何更新?¶
Q5: 可以在离线环境使用吗?¶
可以,但需要本地模型:
Q6: 自定义 Pattern 的最佳实践?¶
- 遵循 Fabric Pattern 的标准结构:
IDENTITY → STEPS → OUTPUT INSTRUCTIONS → INPUT - 保持每个 Pattern 职责单一
- 用具体的输出格式约束(如"用 Markdown 格式")
- 在 Pattern 中包含好的示例
- 将自定义 Pattern 用 Git 管理
参考资源¶
| 资源 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/danielmiessler/fabric |
| Pattern 目录 | https://github.com/danielmiessler/fabric/tree/main/patterns |
| 作者 Daniel Miessler 博客 | https://danielmiessler.com |
| Fabric YouTube 教程 | 搜索 "Daniel Miessler Fabric AI" |
| MCP 协议 | https://modelcontextprotocol.io |
| Ollama(本地模型后端) | https://ollama.com |
总结:Fabric 把"与 AI 对话"变成了"用 AI 命令"。如果你经常做内容提取、文章总结、代码分析这类重复性 AI 任务,Fabric 的 Pattern 系统可以显著提高效率。它特别适合命令行重度用户和需要批量处理的场景。