Fabric 行为预测 Pattern 实战指南:用心理画像预测个体对挑战的行为反应(predict_person_actions)
【免费下载链接】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
本文以 predict_person_actions 系统提示词 为主线,讲解如何在 Fabric 框架中让 AI 扮演"心理画像分析师",基于个体的心理特质画像与一个具体挑战情境,系统化地推演该个体最可能的行为反应。读完本文,你将掌握该 Pattern 的输入格式(Psychodata + Challenge 双区块)、冲突特质加权推理逻辑、标准输出结构,以及一条可直接复制运行的 CLI 调用路径。
一、Pattern 是什么:一个用于"预判人的反应"的系统提示词
Fabric 是一个"用 AI 增强人类"的开源框架,其核心资产是data/patterns/目录下数以百计的可复用提示词 Pattern(每个 Pattern 是一个以目录组织的system.md,可选的user.md与之为伴)。pattern_explanations.md 中对它的定位是一句话:
predict_person_actions:Predicts behavioral responses based on psychological profiles and challenges.(基于心理画像与挑战情境预测行为反应。)
与面向"总结、提取、改写"的大多数 Pattern 不同,predict_person_actions面向的是人类行为的推断推理:它要求模型把自己定位为"专家级心理分析师",输入是一段包含"心理画像(Psychodata)"与"挑战情境(Challenge)"的混合文本流,输出则是对该个体在特定情境下最可能行为表现的结构化预测——包括其优势、弱点与可能结局。
该 Pattern 的典型使用场景包括但不限于(作为提示词能力的合理延伸,读者可自行裁剪):
- 产品与用户体验设计:预判特定性格画像的用户在摩擦点上的流失或投诉行为;
- 谈判、销售与客户成功:评估关键人物在压力情境下的应对姿态;
- 写作与叙事:为虚构角色建立行为可信度(相邻的 create_story_about_people_interaction 即面向角色故事);
- 人力资源与管理:从画像维度推演员工在变革或冲突中的可能反应,辅助沟通预案设计。
注意:本 Pattern 是"证据边界内的推断工具",其原始文本明确规定"仅基于提供的信息进行分析"(Base your analysis strictly on the information provided),因此它不是算命,而是把心理画像中每一条特质与挑战要求逐一对照的推理流程。
二、Pattern 的结构拆解:IDENTITY → STEPS → OUTPUT → EXAMPLE
predict_person_actions/system.md全文只有 37 行,但包含四个清晰的组成区块,它们共同约束了模型的角色、推理路径与汇报格式。下面逐块拆解。
2.1 IDENTITY AND PURPOSE:角色设定
系统提示词要求模型以如下身份工作:
You are an expert psychological analyst AI. Your task is to assess and predict how an individual is likely to respond to a specific challenge based on their psychological profile and a challenge which will both be provided in a single text stream.
要点有二:
- 专家心理分析师身份——给模型框定了专业语气与知识调用范围;
- 输入是单一文本流——心理画像与挑战描述会出现在同一段文本里,靠固定标头(Header)区分,模型不能要求用户分两次输入。
2.2 STEPS:强制性的推理链路
STEPS 定义了四步推理流程,这是整个 Pattern 的"方法学核心":
- 解析输入:输入文本被划分为两节——位于
***Psychodata***标头之下的心理画像,以及位于***Challenge***标头之下的挑战情境描述。(原文特意强调:两个区块由 Challenge 标头分隔,该标头即挑战描述开始的信号。) - 画像与情境双审:从画像中提取关键特质、倾向与心理标记(key traits, tendencies, and psychological markers),并分析挑战情境的性质与要求(nature and demands)。
- 逐特质交互评估:系统性地评估画像中"每一条心理特质"如何与该情境的具体要求与整体性质相互作用。
- 冲突加权与整体收敛:当特质与特质之间、或特质与情境之间存在矛盾时,冷静权衡"哪一方占主导、最终决定反应走向";并同时考察冲突本身的微妙效应——它是抑制反应,还是反讽地放大反应强度?是否会因张力或防御机制(defense mechanism)催生第三种行为?最后,把所有特质与冲突当作一个整体(即心理结构 the psychological structure)来审视,据此修正预测结论。
这段 STEPS 的本质是:拒绝单变量预测。它强迫模型先做"特质 × 情境"的笛卡尔式交互分析,再做"冲突特质间"的权重仲裁,最后升维到整体人格结构的收敛判断——避免模型只抓住最显眼的一条特质就下结论。
2.3 OUTPUT:标准化的五段式汇报
Pattern 要求输出五个部分(原文缩进中的编号顺序即推荐顺序):
- 画像摘要(bullet points)——个体心理画像的简要概括;
- 挑战/情境摘要(句子形式)——本次情境是什么;
- 逐步评估(step-by-step)——心理特质如何与该挑战的具体要求交互;
- 行为预测——个体最可能如何反应或表现,包含潜在优势(strengths)、脆弱点(vulnerabilities)与可能结局(likely outcomes);
- 建议(如适用)——帮助个体获得更好结果的策略。
另外还有一条贯穿全篇的纪律性约束:
Base your analysis strictly on the information provided. If important information is missing or ambiguous, note the limitations in your assessment.(仅基于所给信息进行分析;若关键信息缺失或含糊,须在评估中指出局限。)
这条约束把输出限制在"可依据输入辩护的推断"范围内,是防止模型臆测的关键护栏。
2.4 EXAMPLE:内嵌示例(附残缺说明)
Pattern 末尾附带了一个用户侧示例骨架,展示输入格式的"长相":
***Psychodata*** The subject is a 27 year old male. - He has poor impulse control and low level of patience. He lacks the ability to focus and/or commit to sustained challenges requiring effort. - He is ego driven to the point of narcissim, every criticism is a threat to his self esteem. - In his wors ← 原文在此处截断 ***challenge*** While standing in line for the cashier in a grocery store, a rude customer cuts in line in front of the subject.需要如实指出:仓库中该 EXAMPLE 的第三行心理特质("In his wors...")在 system.md 中处于截断状态,并非完整文本。这提示我们——示例本身就是可验证的:一个"低冲动控制、低耐心、自恋型自我驱动"的 27 岁男性,在超市排队被人插队。读者可以用这个场景自行测试模型的输出,检验它是否会给出"情绪爆发/当面冲突/事后懊悔"等合乎画像的推断链。
三、输入规范:如何构造一段可被正确解析的输入
整个 Pattern 对输入格式的依赖度极高——它没有使用传统的"自由粘贴任意文字"方式,而是要求两块数据用固定标头隔开。为保证模型能稳定区分"画像"与"情境",构造输入时请遵循以下模板:
***Psychodata*** <画像主体>:年龄、性别/身份等基本盘(如有) - 特质 1(具体、可观察、最好含强度修饰) - 特质 2 - …… ***Challenge*** <情境描述>:谁、在哪里、发生了什么、对个体提出了什么要求或威胁构造时的实操建议:
- 标头必须使用
***...***加粗星号包裹(如***Psychodata***与***Challenge***),与 Pattern 内部识别规则一致;EXAMPLE 中小写***challenge***亦可被接受,但正式使用时建议与 STEPS 声明的大小写保持一致,减少解析歧义。 - 画像用无序列表逐条列出,每条尽量带"强度/频度"修饰(如 always / usually / under stress),因为后面的冲突加权需要可比较的强度信息。
- 情境描述写清"对该个体的具体要求或威胁":被冒犯、被拒绝、被要求长时间专注、被置于公开评价之下……不同类型的需求会激活不同特质。
- 关键信息缺失时不必硬补:Pattern 本身允许模型在评估中标注信息局限,因此宁可少写也不要用编造的细节污染画像。
四、底层原理:Fabric 如何把一个 system.md 变成可运行的推理任务
要真正"用起来",有必要了解 Fabric 把system.md组装进一次对话的机制,相关实现集中在内置数据库插件中。
4.1 Pattern 的目录结构与加载规则
- 每个 Pattern 是一个子目录,如 data/patterns/predict_person_actions/,其内容就是
system.md; - 在 internal/plugins/db/fsdb/db.go 中,Pattern 目录内的系统提示文件名被固定为
system.md(SystemPatternFile: "system.md"); - 按名字加载时,internal/plugins/db/fsdb/patterns.go 会拼接
patternDir = filepath.Join(o.Dir, name, o.SystemPatternFile),即data/patterns/predict_person_actions/system.md会被整体读入; - 该加载器同时支持把
source当作文件系统路径(以/、\、~、.开头)直接从任意.md文件加载 Pattern(见 patterns.go)——也就是说,如果你想在别处维护一个"心理预测"专用提示词副本,也可以直接-p ./my_predict.md引用。
4.2 {{input}} 占位与自动追加
Fabric 的用户输入通过{{input}}占位符注入 Pattern。predict_person_actions/system.md本身不含{{input}},此时 patterns.go 的ensureInput逻辑会自动把{{input}}追加到 Pattern 末尾——因此你在终端传入的整块"Psychodata + Challenge"文本会被无缝接在系统提示之后,构成完整请求。
4.3 Pattern 的获取与更新
data/patterns本身是框架的默认 Pattern 目录(该常量定义在 internal/tools/patterns_loader.go 的DefaultPatternsGitRepoFolder = "data/patterns")。用户可通过fabric -U/--updatepatterns触发下载/更新流程,加载器会克隆官方 Pattern 仓库、校验目录内实际 Pattern 数量,并在成功落地后生成标记文件(详见 internal/tools/patterns_loader.go)。
五、实战:完整可运行的预测会话
5.1 准备输入文件
把下面的完整输入保存为subject.txt(注意画像给足"可触发冲突"的信息密度):
***Psychodata*** The subject is a 34 year old senior engineer, team lead. - He is highly conscientious and detail-oriented, rarely misses deadlines, and feels personally responsible for team output. - He avoids interpersonal conflict: he never confronts colleagues directly and rephrases feedback to soften it. - Under public criticism he becomes visibly anxious, over-apologizes, but afterwards holds grudges and reduces collaboration. - He strongly identifies with his professional reputation as "the reliable one". ***Challenge*** During a sprint demo in front of the whole company, the product manager publicly blames him for a delivery delay that was actually caused by the PM's own late requirement changes. The PM asks him, in front of everyone, to explain why he failed.5.2 执行命令
# 把输入文本经 stdin 交给 predict_person_actions Pattern cat subject.txt | fabric -p predict_person_actions # 先不真正调用模型,仅预览最终会发送的组装提示词 cat subject.txt | fabric -p predict_person_actions --dry-run # 查看该 Pattern 的完整原文(离线可用) fabric --readpattern predict_person_actions对应的命令参数均可在 internal/cli/flags.go 中找到定义:-p, --pattern(选择 Pattern)、--dry-run(预览不发送)、--readpattern(打印指定 Pattern 内容)、-l, --listpatterns(列出全部可用 Pattern)。若需要更严格约束输出随机性,可追加-e/--seed;若希望降低创造性、逼近"基线保守推断",可调低默认-t/--temperature(默认 0.7)。
5.3 期望输出结构(对照检查清单)
调用后,合格的输出应能对号入座地覆盖以下五块内容,可用作验收清单:
| 输出区块 | 应包含的关键要素 |
|---|---|
| 心理画像摘要 | 逐条 bullet 还原高尽责、冲突回避、公开批评焦虑、名誉认同 |
| 挑战摘要 | 1~3 句话陈述"公开场合被不公正指责并被迫当众解释" |
| 逐步交互评估 | 每条特质 × 情境的推演(如"尽责→把延迟归因于己→当众自责") |
| 行为预测 | 同时给优势(当场不爆发、姿态职业)、脆弱点(过度道歉、事后记恨、协作收缩)与可能结局 |
| 建议 | 例如:私下复盘澄清事实、把"当众解释"转化为"书面时间线沟通"、练习非防御性话术 |
若某条关键信息缺失(例如画像没写情绪强度),Pattern 会要求模型在输出中显式标注该局限,这也是判断模型是否忠实遵循提示词的一个可测试信号。
六、方法论纵深:冲突特质的"权重仲裁"为何是本 Pattern 的精华
多数朴素提示词只会让模型"根据性格推测行为",而本 Pattern 的特殊之处在于 STEPS 第三步与第四步对冲突处理的显式要求,值得单独展开理解:
- 双向冲突仲裁:当同一人格内同时存在"想争辩的自尊"与"怕冲突的回避"时,模型须判断谁更占主导、谁决定最终行为;
- 冲突本身的二阶效应:模型必须追问——这场内在张力是会"抑制"某个特质的外显(压抑),还是"反常地放大"反应强度(反弹式爆发),亦或通过某种防御机制(合理化、外归因、躯体化、攻击性幽默等)衍生出第三个行为通道;
- 结构级收敛:逐个特质、逐个冲突推完后,再升维把人格当作一个相互作用的系统(如"高尽责 × 冲突回避 × 名誉认同"组合形成的可预测行为模式),修正局部推断可能产生的偏差。
这套"局部交互 → 冲突仲裁 → 系统收敛"的三级推理,正是该 Pattern 能被复用于产品决策、谈判预案、角色塑造等场景的根本原因——它产出的不是直觉式一句话,而是可追溯、可质疑、可修正的推断链。
七、使用边界与注意事项
- 推断 ≠ 事实:模型产出是基于文本画像的模式外推,不是诊断结论。凡涉及真实个体的高利害决策(招聘、风控、人际仲裁),应仅将输出作为假设生成器,而非判定依据。
- 画像质量决定上限:输入画像越具体、越带强度与触发条件信息,冲突仲裁越有据可依;空泛画像会触发 Pattern 自带的"标注信息局限"行为。
- 可配合变量与策略使用:Fabric 支持
-v传变量对 Pattern 内{{变量}}做替换,也支持--strategy套用推理策略(如 Cot/ToT,见 data/strategies)。当问题足够复杂时,为 Predict 追加"思维链可见"的策略可进一步提升推理可审性。 - 原始文本存在拼写瑕疵:system.md 中保留了若干原文的拼写/编号笔误(如"seperated""paradocixcally"及残缺的示例)。使用该 Pattern 不必改动仓库文件——它们不影响模型对指令意图的理解,此说明仅为如实交代源文档状态。
八、相关资源索引
- 本文主文档:predict_person_actions/system.md
- Pattern 加载与注入机制:internal/plugins/db/fsdb/patterns.go、internal/plugins/db/fsdb/db.go
- Pattern 目录默认路径与下载更新:internal/tools/patterns_loader.go
- 命令行参数定义(
-p、--dry-run、--readpattern等):internal/cli/flags.go - 全局 Pattern 速查与自动提取文案:data/patterns/pattern_explanations.md、scripts/pattern_descriptions/pattern_extracts.json
若要复现与验证,推荐先从--readpattern predict_person_actions通读原文,再以第三节的模板构造一段输入、配合--dry-run预览组装效果,最后正式运行对比"模型是否真的覆盖了五段式输出与优势/脆弱点/结局三要素"。
【免费下载链接】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),仅供参考