Fabriccheck_agreement模式实战:用 AI 对合同与协议进行结构化风险审查
【免费下载链接】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
check_agreement是开源 AI 增强框架 Fabric 内置的一个Pattern(模式),专门用于把合同、协议、条款等法律文件喂给 LLM,自动提炼关键条款、风险点(gotcha),并生成可直接回传给对方组织的修改请求。本指南围绕 data/patterns/check_agreement/system.md 这一模式提示词文件展开,讲解它的输出结构设计、在 Fabric CLI 中的完整用法,以及如何结合源码理解其运行原理。读完后你将掌握:如何用一行命令对任意协议文本执行审查、如何解读四段式审查报告、以及如何按需定制属于自己的审查模式。
一、check_agreement 是什么:一个用于合同审查的 Fabric Pattern
Fabric 的核心设计理念是"把 AI 的能力组织成可复用的提示词单元",这些提示词单元被称为Pattern,按真实世界任务分门别类存放于仓库的 data/patterns 目录。项目 README 明确指出:Fabric 解决的不是 AI 能力问题,而是 AI 集成(integration)问题——通过按任务组织提示词,让用户"在一个地方创建、收集、整理自己最重要的 AI 解决方案"。
check_agreement就是这数百个内置 Pattern 中的一个,仓库内社区维护的说明清单 pattern_explanations.md 对其定位描述为:
check_agreement: Analyze contracts and agreements to identify important stipulations, issues, and potential gotchas, then summarize them in Markdown.(分析合同与协议,识别重要条款、问题与潜在陷阱,并以 Markdown 汇总。)
在仓库中的文件布局如下:
- data/patterns/check_agreement/system.md——本模式的主体提示词,约 26 行,定义了角色身份、输出结构与输出约束;
- data/patterns/check_agreement/user.md——当前为空文件的用户侧模板,说明该模式的内容完全由 System 提示词驱动,输入内容直接由调用方提供。
从 README 对 Fabric 提示词方法的描述可以推断(README.md 的 "Our approach to prompting" 一节):Fabric 习惯几乎只用 System 部分承载指令、采用 Markdown 保证可读性与可编辑性、用清晰的层级结构强调"让 AI 做什么、按什么顺序做"。check_agreement正是这三条原则的典型产物——system.md就是一份自包含、可直接运行在任意 LLM 应用里的"审查 SOP"。
二、模式提示词结构拆解:从 IDENTITY 到 OUTPUT SECTIONS
check_agreement的system.md可以分成三个层次来理解,我们逐层解析:
2.1 IDENTITY and PURPOSE:先给模型一个专业身份
# IDENTITY and PURPOSE You are an expert at analyzing contracts and agreements and looking for gotchas. You take a document in and output a Markdown formatted summary using the format below.这段的意图是为模型设定一个清晰的能力边界与产出承诺:
- 角色是"合同与协议分析专家",核心职责是寻找隐藏陷阱(gotchas);
- 输入是任意文档;
- 输出是遵循固定格式的 Markdown 摘要。
随后的Take a deep breath and think step by step about how to best accomplish this goal using the following steps.是一句常见的引导语,用来促使模型在进入输出前先进行审慎、分步的思考(类似 Chain of Thought 的轻量版,仓库 data/strategies 目录还提供了更正式的cot.json等策略文件,可与本模式叠加使用)。
2.2 OUTPUT SECTIONS:四段式审查报告框架
这是整个模式最有价值的部分,它把"审查一份合同"这个模糊目标,拆解成了四个明确、可执行、互相衔接的输出段落:
① DOCUMENT SUMMARY(文档总结)
Combine all of your understanding of the content into a single, 30-word sentence.
要求把对全文的理解压缩成一句话、约 30 个词。这是给决策者的一口气式概括——在看任何细节之前,先让读者 10 秒内知道"这份协议整体上是什么、核心交换关系是什么"。
② CALLOUTS(重点警示清单)
Output the 10 most important aspects, stipulations, and other types of gotchas in the content as a list with no more than 20 words per point.
要求提炼全文最重要的 10 个方面、条款或陷阱,每条不超过 20 个词。这一段的定位是"快速扫雷清单",把违约责任、排他性条款、自动续约、赔偿上限、知识产权归属等高风险点单列出来,供非法律背景读者逐条对照。
③ 分级问题清单(CRITICAL / IMPORTANT / OTHER)
Output the 10 most important issues to be aware of before agreeing to the document, organized in three sections: CRITICAL:, IMPORTANT:, and OTHER:.
在签署之前,把所有"需要警惕的问题"按严重程度三级归档:
CRITICAL:——可能直接导致不利后果、足以让你拒绝签署的严重问题;IMPORTANT:——需要认真权衡或谈判的重要问题;OTHER:——其余值得留意但相对次要的问题。
三段合计约 10 条,让读者可以在"时间只够看一遍"时,优先聚焦 CRITICAL 段。
④ RESPONSES(可回传给对方的修改请求)
For each of the CRITICAL and IMPORTANT items identified, write a request to be sent to the sending organization recommending it be changed or removed.
为上面识别出的每一条 CRITICAL 和 IMPORTANT 项,起草一段可以直接发送给合同提供方(sending organization)的请求文本,建议其修改或删除对应条款。这一步把"发现问题"闭环到"推进谈判"——审查报告不再是孤立的分析,而是可以直接用于邮件往来的谈判弹药。
四个段落形成了完整的"概览 → 重点 → 分级风险 → 谈判动作"漏斗,这是该模式可直接复制到任何 AI 应用的精华骨架。
2.3 OUTPUT INSTRUCTIONS:输出约束
# OUTPUT INSTRUCTIONS - Create the output using the formatting above. - You only output human readable Markdown. - Output numbered lists, not bullets. - Do not output warnings or notes—just the requested sections. - Do not repeat items in the output sections. - Do not start items with the same opening words.这批约束看似琐碎,实则都在服务"让产出更稳定、更可机器消费"这一目标:
- 只用可读 Markdown、不要多余的警告或说明——保证报告能被直接存档、转发或喂给下游工具;
- 用有序列表而非无序列表——让每条编号可被精确引用(例如在内部讨论时可以说"CALLOUTS 第 3 条");
- 段落内不重复条目、条目避免相同开头词——防止模型凑字数,倒逼每一条都是独立且不同的信息点。
从这些细节可以看出 Fabric Pattern 的一贯风格:把输出格式当成协议来约束,从而提高结果的可解析性(方便 LLM、Agent 与脚本处理)。
三、在 Fabric CLI 中运行 check_agreement
3.1 安装与初始化(环境前提)
依据 README.md 的 Installation 章节,Fabric 的 Go 版本可用以下方式安装:
# 从源码安装(需先安装 Go) go install github.com/danielmiessler/fabric/cmd/fabric@latest # 或使用官方一行安装脚本(Unix/Linux/macOS) curl -fsSL https://raw.githubusercontent.com/danielmiessler/fabric/main/scripts/installer/install.sh | bash安装后首次运行需要配置 AI 提供商:
fabric --setupfabric --setup会引导你设置 API Key 与默认模型。Fabric 原生支持 OpenAI、Anthropic Claude、Google Gemini、Ollama 本地模型等多家提供商,也支持 DeepSeek、OpenRouter、Groq 等 OpenAI 兼容端点。若使用 Homebrew/Arch 安装,命令名是fabric-ai,建议在 shell 配置中加alias fabric='fabric-ai'。
3.2 确认模式存在并预览其提示词
先确认本模式在你的环境中可用:
fabric --listpatterns该命令输出全部可用模式名。要直接查看check_agreement内部到底会向模型发送什么,可用--readpattern:
fabric --readpattern check_agreement在发送任何内容之前,还可以用--dry-run预览将构造出的完整请求而不消耗 API 额度:
cat agreement.txt | fabric --pattern check_agreement --dry-run3.3 三种最常见的调用方式
根据 README.md 的 Usage 与 Examples 章节,Fabric 的核心交互模型是通过标准输入喂内容、通过--pattern指定任务:
方式一:本地文本文件 + 管道
cat nda.txt | fabric --pattern check_agreement方式二:从剪贴板粘贴(macOS 示例)
pbpaste | fabric --pattern check_agreement方式三:直接抓取网页上的协议正文(利用-u通过 Jina AI 将 URL 转为 Markdown 后送入模型)
fabric -u https://example.com/terms-of-service --pattern check_agreement如果合同原始文本在 PDF 里,可以先借助仓库的 cmd/to_pdf 等辅助工具完成格式转换,再以纯文本/管道方式喂给本模式。
3.4 高频参数速查
以下参数在 README.md 的fabric -h帮助中均有定义,与合同审查场景组合使用效果最佳:
| 参数 | 含义 | 审查场景建议 |
|---|---|---|
-p, --pattern | 选择模式 | check_agreement |
-s, --stream | 流式输出 | 长合同建议开启,边生成边阅读 |
-o, --output | 结果写入文件 | -o report.md便于存档与二次加工 |
-m, --model | 指定模型 | 复杂条款分析可选推理能力强的模型 |
-t, --temperature | 采样温度(默认 0.7) | 审查任务建议调低,如-t 0提升稳定性 |
-c, --copy | 复制到剪贴板 | 便于直接把 RESPONSES 段落粘贴进邮件 |
-g, --language | 指定输出语言 | 如-g zh让审查报告输出中文 |
--strategy | 叠加提示策略 | 如--strategy cot强制逐步推理 |
--dry-run | 只预览不调用 | 排查模式与输入格式问题 |
一个组合示例(流式输出、存盘、控制语言):
pbpaste | fabric --pattern check_agreement --stream -o agreement-review.md四、理解其输出:一份审查报告的形态与用法
模式本身没有规定具体合同的真实审查结论,因此下面给出的是按该模式框架生成的结构示意,帮助你预判输出形态(实际每条内容由模型依据输入文档产生):
DOCUMENT SUMMARY: 本协议为一份标准的软件服务协议,规定乙方按年订阅方式向甲方提供 SaaS 服务, 包含自动续约、责任上限与保密等核心条款。 CALLOUTS: 1. 第 4.2 条:合同到期自动续约一年,需提前 60 天书面通知终止 2. 第 7.1 条:乙方责任上限以过去 12 个月实付费用为限 3. 第 9.3 条:甲方数据在合同终止 30 天后将被永久删除 …… CRITICAL: 1. 第 8 条无限赔偿排除条款可能使甲方无法就数据泄露索赔 2. 第 12 条单方变更权允许乙方随时修改核心条款 IMPORTANT: 3. 自动续约条款缺乏到期提醒机制 …… OTHER: 6. 争议管辖地约定在乙方所在地法院 …… RESPONSES: 1. 致 [公司名称]:建议删除第 8 条中的无限赔偿责任排除条款, 或至少为数据安全事件造成的直接损失保留索赔权。 ……使用这套输出的推荐工作流:
- 先读
DOCUMENT SUMMARY确认理解是否与己方判断一致(防幻觉); - 扫
CALLOUTS建立风险地图; - 深入
CRITICAL / IMPORTANT / OTHER决定哪些必须谈判; - 把
RESPONSES段落逐条编辑成正式邮件话术回传给对方组织。
五、从源码理解执行链路(为什么它"开箱即用")
当你在终端输入pbpaste | fabric -p check_agreement时,实际发生的事可以从仓库源码中得到印证:
- CLI 入口位于 cmd/fabric/main.go:它调用
github.com/jessevdk/go-flags解析命令行参数,并将控制权交给cli.Cli(version)——你在 3.3 节使用的所有--pattern、--stream、--dry-run参数都在这一层被解析(帮助文本同样来自这里)。 - Pattern 的定位与加载由
internal包负责:Fabric 会从内置的 data/patterns 目录(以及用户目录~/.config/fabric/patterns)加载模式,system.md作为系统提示词随请求发送。这也是为什么你在 3.2 节用--readpattern check_agreement能看到文件全文。 --dry-run的意义:它会打印"将发送给模型的完整内容"而不真正发起 API 调用(README 明示该选项"useful for debugging patterns, checking prompt construction"),调试合同这类长文档时非常实用,可避免浪费 token。
此外,check_agreement的可发现性也做得很好:社区维护的模式描述数据 scripts/pattern_descriptions/pattern_descriptions.json、pattern_explanations.md,以及用于"按需求推荐模式"的 suggest_pattern 中都能检索到它——当你直接问 Fabric "帮我审查一份协议该用哪个模式"时,得到推荐就是它。
六、定制你自己的审查模式
Fabric 允许在不改动仓库的前提下创建个人化模式。最简单的方式:把该模式复制到用户配置目录并修改:
mkdir -p ~/.config/fabric/patterns/check_agreement然后在~/.config/fabric/patterns/check_agreement/system.md中基于原版微调,常见定制方向包括:
- 调整段落:例如给协议类型分分支(
如果是租赁合同……如果是软件采购……); - 收紧约束:把"每条不超过 20 词"改为"每条以一句话长度呈现"、要求所有条款给出原文引用位置;
- 补充输出语言:在 OUTPUT INSTRUCTIONS 中追加"若输入为中文,请用中文输出全部段落";
- 叠加策略:运行时用
--strategy cot(Chain-of-Thought)或--strategy self-consistency提升复杂长合同的推理质量,策略文件位于 data/strategies。
README 的 Custom Patterns 章节还说明:Fabric 会把用户目录模式与内置模式合并,名称相同即可覆盖,删除用户目录下的副本即可回退到内置版本。
七、适用边界与使用注意
- 适用对象:任何"合同与协议"类文本——保密协议(NDA)、SaaS 服务条款、外包/劳务合同、采购单、许可协议等,只要能把正文转成文本通过标准输入送入即可。
- 能力边界:该模式产出的是结构化风险审查素材,而非正式法律意见。CRITICAL / IMPORTANT 分级结果可用于排序谈判优先级,但重大交易仍应交给专业律师复核——这是工具使用层面的合理提醒,也与模式"起草给对方的修改请求、推动谈判"的定位一致。
- 输入质量决定输出质量:建议先清洗文本(去除页眉页脚、乱码、被拆断的表格),可用 README.md 中提到的
--readability等选项或先转换文档格式,避免模型在残缺文本上产生幻觉。
结语
check_agreement是 Fabric "把提示词变成产品"理念的一个精彩切片:一段不足 30 行的 system.md,通过精确的身份设定 + 四段输出框架 + 格式约束,把专业合同审查压缩成了人人都能驱动的 AI 工作流。无论你是想立刻用pbpaste | fabric -p check_agreement审查手头的协议,还是想借鉴它的结构设计自己的 Pattern,都可以从本仓库的这份文件与配套源码开始。
【免费下载链接】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),仅供参考