跳转至

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 命令(如 grepsed
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 安装(推荐)

go install github.com/danielmiessler/fabric@latest

方式二:pipx 安装

pipx install fabric-ai

方式三:从源码编译

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)

# 从播客转录中提取智慧
cat podcast_transcript.txt | fabric -p extract_wisdom

analyze_threat_model — 安全分析

# 分析应用架构的威胁模型
cat architecture.md | fabric -p analyze_threat_model

rate_content — 内容评分

# 给文章打分
cat blog_post.md | fabric -p rate_content

常见问题

Q1: Fabric 和直接用 ChatGPT/Claude 有什么区别?

Fabric 不替代 ChatGPT/Claude,它是一个调用层。核心区别: - 可复用:Pattern 写一次,用无限次 - 可组合:通过管道串联多个步骤 - 可自动化:嵌入 Shell 脚本和 CI/CD - 可版本控制:Pattern 是文本文件,可以 Git 管理

Q2: yt 命令提示找不到?

yt 是 Fabric 的辅助工具,需要单独安装:

go install github.com/danielmiessler/yt@latest

确保 $GOPATH/bin 在你的 $PATH 中。

Q3: 如何查看所有可用的 Pattern?

# 列出所有 Pattern
fabric --list

# 或直接查看目录
ls ~/.config/fabric/patterns/

Q4: Pattern 如何更新?

# 更新所有 Pattern 到最新版
fabric --update

Q5: 可以在离线环境使用吗?

可以,但需要本地模型:

# 先启动 Ollama
ollama serve

# 使用本地模型
cat file.txt | fabric -p summarize -m ollama:llama3

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 系统可以显著提高效率。它特别适合命令行重度用户和需要批量处理的场景。