首页
/ Fabric 中的 detect_silent_victims 模式:识别无法发声的受害者的系统化审计框架

Fabric 中的 detect_silent_victims 模式:识别无法发声的受害者的系统化审计框架

2026-09-08 21:25:28作者:卓炯娓

导读

detect_silent_victims 是 Fabric 开源 AI 框架内置的一种模式(pattern),用于分析行动、政策、系统或提案,识别其中"受到伤害却无法发声"的群体——他们或因尚未存在、或因缺乏权力、或因毫不知情、或因没有表达渠道而沉默。本文以 data/patterns/detect_silent_victims/README.md 与其配套的 system.md 提示词 为主体,结合 Fabric 的 CLI 与模式加载源码,完整讲解该模式的五类受害者分类框架、九步扫描流程、结构化输出规范与实际调用方式,读者将能直接用它审计政策提案、商业模式、AI 系统与立法草案中的隐性伤害。

一、模式要解决的核心问题:"No victim, no crime" 的致命盲区

"没有受害者,就没有罪行"(No victim, no crime)是一条强有力的原则。但它存在一个关键的盲区:那些无法报告自己受害状态的受害者怎么办?

正如模式 README 所指出的核心论断:

The absence of a complaint is not evidence of the absence of a victim. (没有投诉,并不等于没有受害者。)

依据 system.md 的定义,该模式将"沉默的受害者"划分为五类,每类都有典型场景:

类别(Category) 含义 典型示例
未来受害者(Future victims) 今天的行为在未来造成伤害 气候损害、国家债务、资源枯竭
无声受害者(Voiceless victims) 过于无力而无法发声 儿童、动物、生态系统、边缘化社群
不知情受害者(Unaware victims) 不知道自己正被伤害 数据剥削、慢性中毒、被隐藏的外部性
弥散受害者(Diffuse victims) 伤害摊薄到海量个体、无人拥有诉权 影响数百万人的污染、市场操纵
结构性受害者(Structural victims) 伤害内嵌于结构而非个体行为 系统性歧视、榨取性制度

"无诉状"本身不能作为"无受害者"的证据——这正是该模式存在的意义。

二、模式的起源:跨模型 AI 评估的产物

该模式并非凭空设计,而是诞生于一次跨模型 AI 对话评估。依据 README 与 system.md 的记载:

  • 在针对 Ultimate Law 框架的评估中,19 个 AI 系统将"无声受害者"识别为该框架最关键的缺口;
  • DeepSeek-R1 提出"未来世代可以被视为受害者";
  • Cogito:70b 的"魔鬼代言人"攻击将 "No Victim No Crime 是忽视结构性暴力的自由意志主义幻想" 评为 9/10——整个系列中最强的一次攻击;
  • 框架最终的幸存方式不是推翻原则本身,而是承认原则正确,但受害者定义需要扩展

该模式直接继承自 Ultimate Law 框架(github.com/ghrom/ultimatelaw)对受害者的定义:

"Victim: Someone harmed against their will. If no one is harmed unwillingly, there is no victim and thus no violation." (受害者:违背自身意愿受到伤害的人。如果没有人非自愿地受到伤害,就没有受害者,也就没有侵犯。)

三、在 Fabric 中使用该模式

3.1 基本调用方式

模式在 Fabric 中通过 -p--pattern)参数按名称调用。README 给出了四类典型使用场景:

# 审计一项政策提案
echo "Build a coal plant to provide cheap energy" | fabric -p detect_silent_victims

# 评估一种商业模式
echo "Offer free service funded by selling user data" | fabric -p detect_silent_victims

# 检查一个 AI 系统
echo "Train AI on scraped internet data" | fabric -p detect_silent_victims

# 审计立法草案
cat proposed_law.txt | fabric -p detect_silent_victims

其中 -p 参数定义于 internal/cli/flags.go-p, --pattern 用于从可用模式中选择一个,同时支持 -v/--variable 传入模式变量(如 -v=#role:expert)。此外还有几个与模式管理直接相关的命令:

# 列出所有可用模式
fabric -l

# 将模式内容直接打印到终端(查看提示词原文)
fabric --readpattern detect_silent_victims

# 从上游仓库更新模式库
fabric -U

3.2 通过配置文件指定模式

除命令行参数外,也可以把模式写入 Fabric 的 YAML 配置(如 ~/.config/fabric/config.yaml)中,相关说明见 internal/cli/README.md

# Pattern selection
pattern: detect_silent_victims  # 使用模式名或文件名

# 其他常用项
model: gpt-4
temperature: 0.7
stream: true

配置规则上,CLI 标志总是覆盖 YAML 值;同一声明在 YAML 中重复出现时,最后一次生效;声明顺序无关紧要。

3.3 为模式绑定专属模型

Fabric 支持按模式映射特定模型:当 --pattern 指定且未显式设置 --model 时,CLI 会尝试读取环境变量 FABRIC_MODEL_<PATTERN>(模式名中的连字符替换为下划线并大写),例如:

export FABRIC_MODEL_DETECT_SILENT_VICTIMS="gpt-4o"

这一逻辑实现在 internal/cli/chat.go,便于将要求较高的审计类模式固定到更强的模型上,而无需每次手动指定。

3.4 模式在底层如何被加载

从源码看,Fabric 的模式加载链路是:CLI 传入模式名 → internal/tools/patterns_loader.go 负责从上游 Git 仓库下载并维护模式库(默认 data/patterns)→ internal/plugins/db/fsdb/patterns.go 按名称从 data/patterns/<名称>/system.md 读取提示词内容

值得注意的细节(见 patterns.go):

  • 查找顺序为自定义模式目录优先,同名自定义模式会覆盖主模式库;
  • 若传入的名字以 /\~. 开头,则被识别为文件路径而非模式名,会直接读取该文件作为提示词——这允许你把 detect_silent_victims 的 system.md 复制出来后用文件路径方式离线调用;
  • 提示词模板中的 {{input}} 占位符会被替换为管道输入的实际内容(applyInput/applyVariables 逻辑位于 patterns.go)。

也就是说,echo "..." | fabric -p detect_silent_victims 的本质是:把你输入的文本注入 system.md 末尾的 INPUT: 区域,连同整个"无声受害者检测器"的角色设定一起交给所选 LLM。

四、受害者可见性框架(Victim Visibility Framework)

模式的核心方法论是五类受害者的"扫描透镜",每一类都附有一组自我质询问题。完整继承自 system.md

类别 1:时间性受害者(未来)

  • 谁会在 5、10、50、100 年后被此事影响?
  • 成本是否被推迟给了未同意的人?
  • 该行为是否在消耗未来主体需要的资源?
  • 是否正在做出未来主体无法逆转的改变?

类别 2:权力受害者(无声)

  • 谁受影响,却缺乏反对所需的权力、平台或法律地位?
  • 是否有主体依赖决策者、因惧怕报复而不敢发声?
  • 儿童、动物或生态系统是否在无人代表的情况下被影响?
  • 如果每个受影响方都有平等的发言权,这个行动还会一样吗?

类别 3:信息受害者(不知情)

  • 谁被影响却毫不知情?
  • 伤害信息是否被隐瞒、模糊化或制造不可及?
  • 效应是否被延迟到难以建立因果关系?
  • 如果受影响方掌握全部信息,他们还会同意吗?

类别 4:弥散受害者(分布式)

  • 伤害是否摊薄到众多主体、每个单一个体都小到难以察觉?
  • 聚合伤害是否超过任何单个受害者所经历的?
  • 弥散是否是故意的(为逃避追责而设计)?
  • 如果把总伤害集中到单一主体身上,是否不可接受?

类别 5:结构性受害者(系统性)

  • 系统是否在正常运转的副作用中产生伤害?
  • 是否有人因结构而非任何单一行为而持续处于劣势?
  • 伤害是否自我强化(受害者变得更脆弱,进而产生更多受害)?
  • 能否重新设计结构,在无伤害的情况下产生同样的收益?

五、九步扫描流程(STEPS)

该模式要求按顺序执行以下九个步骤,从"看得见的"逐步推进到"看不见的":

  1. 识别行动或系统:正在被提出、实施或评估的是什么?
  2. 绘制直接利益相关方:谁被直接、可见地影响?
  3. 扫描时间性受害者:向前推演,未来谁承担成本或后果?他们能否同意?
  4. 扫描权力受害者:沿权力层级向下看,谁受影响却缺乏声音?谁依赖行动者、害怕提出异议?
  5. 扫描信息受害者:谁不知道自己被影响?无知是自然的还是被制造的?
  6. 扫描弥散受害者:聚合微小伤害,即使单份看似微不足道,总量是否可观?
  7. 扫描结构性受害者:看系统而非单次行动,正常运行是否持续产生输家?
  8. 应用反转测试(见下节)。
  9. 评估严重性:对每一类已识别的无声受害者,伤害有多严重?影响多少人?是否可逆?

六、反转测试(The Reversed Test)

模式的核心判据是一句被反复强调的提问:

"If every silent victim could speak with equal power, would they consent to this?" (如果每个无声受害者都能以平等的权力说话,他们会同意这件事吗?)

README 指出:这一个问题就能暴露大部分隐藏的伤害。当无法判断某个行动是否可接受时,把"沉默者"全部"唤醒"并赋予平等权力,再检验其同意意愿,是穿透五类受害者迷雾的捷径。

七、结构化输出规范(OUTPUT INSTRUCTIONS)

当模式运行时,要求 LLM 输出一份严格结构的审计报告,包含以下章节(完整继承自 system.md):

7.1 行动/系统分析(ACTION/SYSTEM ANALYZED)与可见利益相关方

  • ACTION/SYSTEM ANALYZED:所评估对象的简要描述;
  • VISIBLE STAKEHOLDERS:直接、明显受影响的人(即所有人都已考虑到的群体)。

7.2 无声受害者扫描(SILENT VICTIM SCAN)

对每个类别输出统一结构的字段:

  • Temporal Victims (Future)Found(是/否/可能)、Who(谁)、Harm(何种伤害、多严重)、Reversibility(可逆/部分可逆/不可逆);
  • Power Victims (Voiceless)FoundWhoHarmWhy silent(沉默原因:恐惧、依赖、法律地位、字面上的无发声能力);
  • Information Victims (Unaware)FoundWhoHarmIgnorance source(无知来源:自然复杂性 / 故意隐瞒 / 延迟效应);
  • Diffuse Victims (Distributed)FoundIndividual harm(可忽略/轻微/中等)、Aggregate harm(描述与规模)、Diffusion deliberate?(弥散是否刻意);
  • Structural Victims (Systemic)FoundWho(持续处于劣势者)、Mechanism(结构如何产生伤害)、Self-reinforcing?(是否自我强化)。

7.3 严重性汇总表与总体评估

模式要求将扫描结果汇总为一张结构化表格,并给出结论标签:

Category Found? Count/Scale Severity Reversible?
Temporal
Power
Information
Diffuse
Structural

总体评估必须在四档结论中择一:NO SILENT VICTIMS(无)/ POSSIBLE SILENT VICTIMS (investigate)(可能,需调查)/ PROBABLE SILENT VICTIMS(很可能)/ CONFIRMED SILENT VICTIMS(已确认)。

7.4 建议(RECOMMENDATIONS)

最后输出:要解决已识别的无声受害者,需要改变什么?他们的利益应如何被代表?

八、运行示例

system.md 提供了三个对照示例,帮助理解模式的判读边界:

示例 1:环境类

  • 行动:工厂向河流排放废料;
  • 可见方:工厂、员工、股东;
  • 无声方:下游社区(权力受害者)、未来世代(时间性受害者)、水生生态系统(无声)、被稀释污染影响的数百万人(弥散受害者)。

示例 2:数字类

  • 行动:用抓取的私人数据训练 AI;
  • 可见方:AI 公司、AI 用户;
  • 无声方:数据被抓取的人(信息受害者——大多数并不知情)、文化产出被商品化的社群(弥散受害者)、训练数据将塑造 AI 行为方式的未来人(时间性受害者)。

示例 3:无无声受害者

  • 行动:两个成年人在市场自愿交易货物;
  • 可见方:双方;
  • 扫描:无时间性伤害、无权力不对称、双方知情、无弥散效应、无结构性劣势;
  • 结论:NO SILENT VICTIMS——干净的交易。

九、使用边界与重要注意事项

模式本身对其适用边界有明确的自律条款(继承自 system.md 的 IMPORTANT NOTES):

  • 存在潜在无声受害者并不自动否定一个行动——它只意味着这些利益应当被考虑和代表;
  • 不应武器化该模式去给每一次互动都寻找假设性受害者。有些行动确实没有无声受害者——一个到处都能找出受害者的模式是无用的;
  • 当无法确定是否存在无声受害者时,潜在伤害的严重性与可逆性应决定预防措施的等级;
  • 该模式是可证伪的:如果它持续在不存在受害者的地方识别出受害者,或在确实存在的地方漏掉,就应当被修正。

十、总结:从提示词到可执行的审计工具

detect_silent_victims 的价值在于把"看不见的伤害"变成了一套可重复、可验证的检查清单:五类受害者透镜负责广撒网,九步流程保证扫描顺序的完备性,反转测试提供单一判据的穿透力,而结构化输出把结论压缩成一张可以直接用于决策的严重性表格。

在 Fabric 中,它是一个开箱即用的 -p 模式,底层依赖 internal/tools/patterns_loader.go 的模式库分发与 internal/plugins/db/fsdb/patterns.go 的模板注入机制——你只需要提供待审计的行动描述,剩下的五维扫描与报告生成全部由模式驱动 LLM 完成。正如其 README 的结论:"没有投诉"从来不是"没有受害者"的证据;而一个让所有沉默者开口的问题,就能让绝大多数隐性伤害无所遁形。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
898
5.82 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
921
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.8 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
596
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
519
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
391