第三步 · 外挂蒸馏:把别人的思维模型或领域知识变成可调用的决策接口
完整 SOP:从书籍/播客/访谈中蒸馏出结构化外挂——人物思维或领域知识都适用。含冲突检测、持续喂养和两个实战案例(Elon + 跑步教练)。
问题
用户已经有自己的 Axiom(通过自蒸馏建立的底层决策约束),但 Axiom 有盲区——它只能覆盖用户亲身经历过的场景。
两种典型盲区:
- 决策模式盲区:面对”把不可能拆成可能”这类问题,自己的 Axiom 没有对应框架
- 领域知识盲区:备战马拉松,买了两本圣经级跑步书,700 页记不住,AI 又只会给泛泛建议
根因:个人经验是有限的。需要一种机制,把别人的思维模型或领域专业知识变成可调用的”外挂”。
核心概念
外挂的定义
外挂 = 从目标素材中蒸馏出的结构化知识模型,
以文件形式存在,Agent 按需加载,用于生成独立于用户 Axiom 的专业判断。
两种外挂,同一套方法
| 类型 | 蒸馏什么 | 提取视角 | 案例 |
|---|---|---|---|
| 人物外挂 | 一个人的思维方式 | ”他怎么想、怎么决策” | Elon Musk |
| 领域外挂 | 一个领域的专业知识 | ”教练/顾问怎么操作” | 跑步训练 |
核心流程完全一样:切分→并行提取→合并→筛选→接入。区别只在提取 prompt 不同。
外挂 vs Axiom
Axiom:你自己的底层约束,最高优先级,冲突时 Axiom 赢。
外挂:别人的思维或领域知识,参考优先级,冲突时标注边界,由人类决定。
前提条件
prerequisites:
- 用户已完成自蒸馏(有 SOUL.md / AGENTS.md 中的 Axiom)
- 有明确的互补需求("我缺什么"而非"我崇拜谁")
- 有足量素材(书/文章/播客/访谈,≥5万字)
方法:外挂蒸馏四步法
Step 1 · 选目标 + 设计提取视角
选目标的原则:互补而非崇拜。
selection_criteria:
- question: "我的 Axiom 在哪个维度没有覆盖?"
- question: "谁/哪本书在这个维度最强?"
- question: "素材是否足够结构化?"
提取视角是整个流程最关键的一步——视角错了,后面全白干。
人物外挂和领域外挂的提取维度完全不同:
人物外挂维度(以 Elon 为例):
dimensions:
- worldview: "这个人相信什么?底层假设是什么?"
- toolkit: "他用什么工具/框架做决策?"
- decision_model: "面对X情况,他会怎么选?"
- language_style: "他怎么表达?语气/节奏/用词?"
- anti_patterns: "他明确反对什么?"
- application_boundary: "什么场景该调用?什么场景不该?"
领域外挂维度(以跑步教练为例):
prompt: |
你是一个跑步教练知识提取器。
从"未来要当一个跑者的专属教练"的角度,
提取所有可执行的教练知识。
dimensions:
- diagnosis: "怎么评估用户当前水平"
- prescription: "具体怎么做(保留所有数字)"
- calibration: "根据实际数据怎么动态调整" # ← 核心差异化
- correction: "常见错误怎么纠正"
- scenarios: "特定场景的操作流程(比赛日/恶劣天气/伤病)"
- nutrition: "配套知识(饮食、补给、恢复)"
关键区分:
- 人物外挂问的是”他怎么想”
- 领域外挂问的是”教练怎么操作”
- 领域外挂的核心差异化是校准规则(根据数据动态调整)——任何 AI 都能给通用建议,“根据你的具体数据调整”才是专家外挂的价值
领域外挂的额外原则:
key_decisions:
- "全量提取,不按用户水平过滤"
reason: "外挂是完整知识库,使用时再做 if/then 匹配"
- "多源标注来源"
format: "[丹] 来自丹尼尔斯 / [马] 来自马拉松宝典 / [丹+马] 两本都提到"
reason: "两本书观点冲突时可溯源判断"
Step 2 · 蒸馏:用并行流水线处理
方法与「并行蒸馏」SOP 完全一致,核心流程:
素材预处理(按章节/主题切分)
→ 分批并行蒸馏(每批3-5篇,每波≤8个 sub-agent)
→ 频次加权合并
→ 总精炼压缩
实测数据:
| 案例 | 素材 | 切分 | 并行 | 耗时 |
|---|---|---|---|---|
| Elon 外挂 | 《The Book of Elon》62章/40万字 | 13批 | 3波 | ~20分钟 |
| 跑步教练外挂 | 2本书/36.9万字 | 11块 | 11个 sub-agent | ~25分钟 |
| Elon 播客增量 | 1期/~2万字 | 1批 | 1个 | ~3分钟 |
模型降级策略(跑步教练踩坑经验):
fallback:
primary: "主力模型(Sonnet/Opus)"
secondary: "备用模型(GLM-5)"
trigger: "主力模型限额耗尽(503 错误)"
lesson: "大批量并行任务必须预留备用模型"
Step 3 · 筛选:和用户 Axiom 对齐
蒸馏完的原始外挂通常过胖,需要一轮”手术”。
人物外挂用三层筛选:
filters:
- name: "共振检测"
rule: "外挂条目与用户 Axiom 方向一致 → 保留"
example: "Elon'第一性原理' ↔ 用户'A1 把手弄脏' → [共振]"
- name: "冲突检测"
rule: "外挂条目与用户 Axiom 矛盾 → 保留但标注边界"
example: "Elon'睡工厂地板' ↔ 用户'A5 健康是前提' → [冲突]"
- name: "可执行检测"
rule: "能写成'当X时,用Y方法'?不能 → 降级为风格参考"
筛选效果:Elon 外挂原始版 → 筛选后瘦了约 50%。
领域外挂的筛选更简单:主要做去重和冲突标注。
dedup_rules:
- "同一知识点被多块重复提取 → 合并为一条,标注所有来源"
- "两本书观点冲突 → 保留两个版本并标注,使用时由 Agent 根据具体情况判断"
Step 4 · 接入:Agent 按需加载
外挂文件存为 perspectives/<name>.md,Agent 按需加载。
integration:
trigger:
- explicit: "用户说'用 Elon 的视角看看' 或 '查一下跑步教练怎么说'"
- implicit: "Agent 识别到当前问题落在用户 Axiom 盲区"
behavior:
- load: "读取对应外挂文件"
- generate: "用外挂框架生成专业判断"
- present: "与用户 Axiom 判断并列展示(人物外挂)/ 直接给出建议(领域外挂)"
- decide: "人类做最终决定"
rules:
- "外挂判断永远不自动覆盖 Axiom 判断"
- "冲突时明确标注"
- "用户未确认前,外挂建议不执行"
领域外挂的使用模式:
example:
input: |
今天跑了 12 公里,平均心率 158,配速 5:45,
后半程吃力,膝盖外侧微微不适。
agent_behavior:
1. "查诊断规则 → 评估状态"
2. "查校准规则 → 判断是否调整计划"
3. "查应变规则 → 评估膝盖问题"
4. "综合给出可执行建议"
output: |
心率偏高 8%,说明今天偏疲劳。
建议周四间歇跑改为 50 分钟 E 跑,配速 6:20-6:50。
膝盖外侧可能是髂胫束,跑后做泡沫轴拉伸。
外挂文件结构
人物外挂:
# <人物名>
## 人物 / ## 世界观 / ## 工具箱 / ## 决策模型
## 何时调用 / ## 与用户 Axiom 的共振/冲突 / ## 素材索引
领域外挂:
# <领域>专家外挂
## 来源(书籍列表)
## 诊断规则 / ## 处方规则 / ## 校准规则(核心)
## 纠错规则 / ## 场景规则 / ## 营养/辅助 / ## 应变规则
## 各细分专项 / ## 附录(速查表)
持续喂养机制
外挂不是一次写完的死文件。新素材出现时:
feeding_protocol:
trigger: "用户提供新素材(播客/文章/访谈/新版书籍)"
process:
1. "用并行蒸馏处理新素材"
2. "提取增量洞察(和已有外挂做 diff)"
3. "增量洞察通过筛选"
4. "写入外挂对应章节,标注来源和日期"
example:
source: "播客《跨国串门儿计划》#470"
increments:
- "'魔音'概念 → 写入组织/管理章节"
- "'一的力量' → 写入组织/管理章节"
time: "~5分钟"
反哺检测
蒸馏别人的最大价值不是外挂本身,而是暴露用户 Axiom 的盲区。
feedback_loop:
after_distillation:
- "扫描外挂中的所有维度"
- "检查:用户 Axiom 中是否有对应项?"
- "无对应项 = 潜在盲区 → 提议用户补充新 Axiom"
example:
dimension: "质疑需求——所有需求都应被视为建议"
user_axiom: "无对应项"
proposal: "建议新增:接到任务先问'该不该做',再问'怎么做'"
踩坑记录
| 坑 | 表现 | 解法 |
|---|---|---|
| 模型限额(跑步案例) | 前7个任务OK,后3个503 | 预留备用模型 |
| 超时(跑步案例) | 300s不够,内容密 | 加到600s;文件边处理边写入 |
| PDF质量差(跑步案例) | 排版残留污染提取 | prompt加”忽略页眉页脚”;优先epub |
| 过度内化(Elon案例) | AI在所有场景催速度 | 三层筛选+冲突标注 |
| 金句当原则(Elon案例) | 不可执行内容稀释工具箱 | ”能约束下一步行为”是硬标准 |
| 提取阶段过滤(跑步案例) | 只提”初级适用”导致不完整 | 全量提取,使用时匹配 |
常见错误
| 错误 | 后果 | 修正 |
|---|---|---|
| 选崇拜而非互补 | 外挂和 Axiom 高度重叠 | 先明确缺什么 |
| 用”总结”视角而非”角色”视角 | 产出是读书笔记不是操作手册 | 明确角色+维度 |
| 不设计校准维度(领域外挂) | 只能给通用建议 | 校准规则是核心 |
| 不标注来源(多书) | 冲突时无法溯源 | 每条加[来源]前缀 |
| 不做冲突检测(人物外挂) | 外挂和Axiom打架 | 三层筛选必须跑 |
| 写完不喂养 | 外挂逐渐过时 | 新素材即触发增量更新 |
| 外挂自动覆盖 Axiom | 判断被劫持 | 冲突时 Axiom 永远优先 |
权限边界
⚠️ 关键约束:
- 外挂判断永远不自动执行,必须经人类确认
- 与用户 Axiom 冲突时,Axiom 优先级更高
- Agent 可以建议调用哪个外挂,但不能自行切换
- 领域外挂不替代专业人士(尤其医学/法律)
- 用户数据属于隐私,不外泄
- 外挂的新增/修改需记录到 memory
相关资源
- 前置方法:第一步 · 自蒸馏 SOP
- 前置方法:第二步 · 并行蒸馏 SOP
- 人类版叙事:三部曲(三):我蒸馏了马斯克,做了一个外挂大脑