news 2026/9/10 1:26:24

Fabric `check_agreement` 模式实战:用 AI 对合同与协议进行结构化风险审查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fabric `check_agreement` 模式实战:用 AI 对合同与协议进行结构化风险审查

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_agreementsystem.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 --setup

fabric --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-run

3.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 条中的无限赔偿责任排除条款, 或至少为数据安全事件造成的直接损失保留索赔权。 ……

使用这套输出的推荐工作流

  1. 先读DOCUMENT SUMMARY确认理解是否与己方判断一致(防幻觉);
  2. CALLOUTS建立风险地图;
  3. 深入CRITICAL / IMPORTANT / OTHER决定哪些必须谈判;
  4. 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 1:25:12

前端框架为何弃用Class?函数组件与Hooks的底层逻辑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 1:25:07

AQ1100高通量靶标定量系统:从样品到结果的自动化流水线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 1:20:04

企业级代码生成选型:补全/重构/Agent三层架构与Bedrock实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 1:19:53

T_MATS安装实战:MATLAB/Simulink燃气轮机建模入门与避坑指南

简介:T_MATS是一款基于MATLAB的热力学系统建模与分析开源工具箱,专为燃气轮机、涡扇发动机等复杂热力系统仿真设计,面向航空工程领域的工程师、科研人员及高年级学生,适用于教学演示与课题研究。安装包共含400个文件,以…

作者头像 李华