Fable 方法:让任何模型复用 Claude Fable 5 的工作习惯
拆解 fable-method 的四项技能、v1.4.0 路由门控变化及安装遗漏,并用 VPS 对比启用与停用后的工具调用次数和成本。
Fable 方法实际宣称的内容
Fable 方法是一组简短的 agent skill。它将一个模型的工作习惯写成有序流程,以便其他模型执行相同的流程。该仓库是 Sahir619/fable-method,采用 MIT 许可证。仓库自身的一行描述是:“Claude Fable 5 的工作方式,提炼成任何模型都能运行的 skill,并配有用于保持客观性的评估。”值得验证的是这句话的后半部分。
文本文件是否真的记录了某个特定模型的思考方式,Anthropic 以外的任何人都无法确认。但更便宜的模型读取该文件后是否会表现不同,您可以在一台 VPS 上用一个下午自行验证。下面所有内容的重点都是测量这一点:使用和不使用该方法,分别执行两次相同的任务,并统计工具调用次数和成本。
如果您不熟悉 skill 这个词,请先阅读agent skill 的实际含义:它是一个目录,其中包含一个 SKILL.md 文件;该文件的 frontmatter 描述会告诉 agent 何时加载正文。该仓库所使用的模型详见Claude Fable 5 的成本及适用场景。
安装技能,并固定测试版本
有两种安装方式。在 Claude Code 中,插件方式只需运行两个命令:
/plugin marketplace add Sahir619/fable-method
/plugin install fable@fable-method在 VPS 上,如果需要将固定版本保存在磁盘中,请先克隆仓库并切换到指定标签:
git clone https://github.com/Sahir619/fable-method ~/fable-method
cd ~/fable-method
git checkout v1.4.0
bash install.sh
ls ~/.claude/skillsinstall.sh 无需 sudo,因为它只会写入 $HOME/.claude/skills 下的目录。运行完成后,ls ~/.claude/skills 会列出 fable-judge、fable-loop 和 fable-method。请检查缺少的内容。该仓库提供四个技能,而 shell 安装脚本只会复制其中三个。因此,独立安装的用户不会获得 fable-domain,除非手动复制:
cp -r ~/fable-method/skills/fable-domain ~/.claude/skills/固定标签,并将该标签记录在测试结果旁边。该仓库在 2026-07-06 至 2026-07-15 期间发布了五个版本,从 v1.0.0 到 v1.4.0;其中 v1.4.0 通过新增路由门控改变了方法本身。截至 2026 年 8 月,v1.4.0 仍是最新标签。如果控制运行读取的是一个版本的规则,而测试运行读取的是另一个版本,那么测量结果就没有意义。
四项技能分别要求模型做什么
核心文件是 skills/fable-method/SKILL.md。其中包含两个门槛和七个编号步骤,规则具体到可以据此提出异议。
首先是琐碎变更门槛:如果变更只涉及一个文件、执行范围约少于 10 行、不引入新行为,并且您已经明确知道要改什么,就直接执行,不必进行额外流程。接下来是适配门槛,它根据答案的来源对请求进行分流:可以打开查看的源文件、必须先调研的技术,或您自己的推断。后者必须标记为低置信度,不能作为事实陈述。
然后是循环流程:分类请求、定义完成标准、收集证据、做出决定、执行、验证并报告。步骤 2 要求先列出目录来了解上下文,再选择文件;优先使用主要来源,而不是凭记忆回答;如果连续两次查找都没有发现新内容,就停止查找。步骤 4 要求在任何编辑前先写一行 INTENT:,说明代码的行为、失败检查所期望的结果,以及规范中的要求。如果这三者不一致,则完全不要编辑,因为不一致本身就是实际发现。步骤 5 限制重试次数:同一问题连续完成 3 次修复和验证仍失败后,应停止,并返回实际输出。
文件中最容易测试的是四个报告标记。行为发生变化时,必须写一行 INTENT:。面向外部的操作必须写 AUTH: user said "<exact words>",并引用用户的原话,因为仓库明确说明文档不等于授权。规定要求执行但实际未执行的操作,必须写一行 PENDING:。已修复的缺陷必须写 TWINS: searched <pattern> - found <N> other sites。您不必相信这套方法的其他内容,也可以检查在应当出现时是否出现了这 4 个字符串。因此,整个方法是可度量的,而不是凭感觉判断。
fable-loop 是将同一方法编排为 4 个阶段:由并行证据子代理制定计划,在主线程执行,由 1 到 3 个攻击者子代理从不同角度进行验证,最后审计并报告。它假设证据和攻击者角色使用低成本模型,而决策和编辑使用更强的模型。
fable-judge 即使您弃用其他部分,也值得单独安装。它的基本立场是:“报告是一组声明,不是证据。”它从已完成的报告中收集声明,通过 git diff 和 git status 建立事实基准,重新执行报告声称已经执行的每项验证,并检查一组明确列出的欺诈类型:弱化检查、虚假完成、范围蔓延、未经授权的操作、背离规范,以及残留垃圾。它返回 VERIFIED、VERIFIED WITH CAVEATS 或 REFUTED;对于无法复现的内容,它会标记为 UNVERIFIABLE,而不是默认其通过。安装程序结尾的说明也明确指向它:“试用方法:打开 Claude Code,在任何代理声称工作完成后输入 /fable-judge。”
fable-domain 使用陷阱夹具和冒烟评估生成领域适配器包。随附 8 个适配器:营销、研究、数据分析、业务和运营、金融、法律与合规、设计与 UX,以及 devops。医疗和临床工作则有意不提供适配器。
哪些部分可以移植到其他模型,哪些不行
仓库通过 AGENTS.md 直接回答了这个问题。该文件开头写道:“适用于任何编码代理或运行器的可移植版本(Codex、Cursor、aider、原始系统提示词)。方法与 SKILL.md 完全相同;将此文件粘贴到代理指令中,或将其放在仓库根目录并命名为 AGENTS.md。”该文件约有 2,600 个单词,包含相同的门槛、步骤和模式。如果您已经在仓库根目录维护指令文件,AGENTS.md 和 HUMAN.md 约定说明了该文件应放在哪里,以及由谁读取。
有两部分可以直接移植。方法文本是一段有序提示词,不包含特定于模型的代码,因此任何能够遵循指令的模型都可以执行它;仓库提出的观点也是,所需工作量与模型层级成反比。评估器同样可以移植,前提是代理具有 shell 和仓库,因为它执行的全部操作都是 git diff,并重新运行读者也可以运行的命令。
有一部分无法直接移植。fable-loop 假设运行器可以启动并行子代理,并将它们分配给不同模型。没有子代理功能的代理只能在一个模型上串行运行这些阶段,这会失去该设计所依赖的并行能力和成本节省。剩下的只是 fable-method,但增加了一些术语。
还有两个较小的部分特定于运行器,容易被忽略。/fable-method 触发器是 Claude Code 的斜杠命令,因此在其他运行器中,您需要通过描述该方法来调用它。SKILL.md 的 frontmatter 描述用于让代理仅在任务匹配时加载正文,因此已安装的 skill 在触发前几乎不产生开销。相反,如果将 AGENTS.md 粘贴到系统提示词中,那么您发送的每个请求都会包含这 2,600 个单词,无论任务只是修复一处拼写错误,还是进行重构。这确实会产生成本差异,而且这正是 skill 打包机制存在的主要原因。
如何在 VPS 上进行 A/B 测试:相同任务运行两次
设置两个完全相同的工作副本,确保其中一次运行无法看到另一次运行的修改。将 YOUR_ORG/YOUR_REPO 替换为要测试的仓库;两个克隆必须来自同一个提交。
sudo apt update && sudo apt install -y git jq
git clone https://github.com/YOUR_ORG/YOUR_REPO ~/ab/control
git clone https://github.com/YOUR_ORG/YOUR_REPO ~/ab/method选择一个结果可以客观观察的任务:必须通过的失败测试,或必须以 0 退出的脚本。任务描述含糊,比较结果也会含糊,因为最终评估的是文字,而不是结果。
使用 --bare 运行对照组。该选项会跳过 hooks、skills、plugins 和 CLAUDE.md 的自动发现。正是这个选项使其成为对照组:之前安装的 skills 无法影响运行。裸模式不会使用您的订阅登录信息,因此请先从 Claude Console 设置 API key。
export ANTHROPIC_API_KEY=sk-ant-...
task="Make tests/test_parser.py pass without editing the test file."
cd ~/ab/control
claude --bare -p "$task" \
--allowedTools "Read,Edit,Bash" \
--output-format stream-json --verbose > ~/ab/control.jsonl方法组使用相同的命令,只增加一个选项,用于将可移植方法作为 system prompt 附加内容加载:
cd ~/ab/method
claude --bare -p "$task" \
--append-system-prompt-file ~/fable-method/AGENTS.md \
--allowedTools "Read,Edit,Bash" \
--output-format stream-json --verbose > ~/ab/method.jsonl二进制文件、模型、工具和初始目录树都相同。只有一个选项不同,这样比较才有意义。
这种设计衡量的是方法文本,而不是 skill 打包方式;后者需要单独测试。要衡量打包方式,请删除 --bare,按上述步骤安装 skills,并将 skill 名称放入 prompt 字符串中,因为用户调用的 skills 会在 print 模式下展开:claude -p "/fable-method $task"。即使可见行为相同,也应预期其成本特征与 system prompt 组不同。
统计步骤数和成本
两次运行都会写出一系列 JSON 事件。最后一行是 result 消息,其中包含最终文本、成本和会话元数据。编写任何围绕它的脚本前,应先将其打印一次并读取其内容,因为字段名称会随 Claude Code 版本变化。
tail -1 ~/ab/control.jsonl | jq .每次运行的成本来自该行,也是需要比较的数值:
for f in ~/ab/control.jsonl ~/ab/method.jsonl; do
printf '%s ' "$f"
jq -r 'select(.type=="result") | .total_cost_usd' "$f"
done执行的步骤数来自统计同一文件中的工具调用次数:
jq -r 'select(.type=="assistant") | .message.content[]? | select(.type=="tool_use") | .name' \
~/ab/control.jsonl | sort | uniq -c | sort -rn对两个文件都执行该操作。差异的形态比总数更有信息量。某种方法的运行如果读取了更多文件但编辑更少,说明它确实按照该方法执行,而这正是你付出的取舍。如果某种方法在编辑次数相同的情况下成本高出百分之四十,那么这次任务并没有获得任何收益。
关于这些数值有两点需要注意。第一,不要将 output_tokens 下 ~/.claude/projects/ 中会话记录里的值相加后称为总数:这些逐消息使用量块是在流式传输期间获取的快照,已有报告指出它们可能低估使用量。应以 result 行的数值为准。第二,每个方案只运行一次只能算个别案例。因此,在确认存在差异前,应对同一任务的每个方案运行三次或四次,因为同一代理处理同一任务时,两次运行之间也可能存在差异。若要从更长周期了解支出,跟踪 Claude Code 支出的工具和Claude Code 计算令牌的方式可以解释为什么缓存行会主导原始统计值。
确保代理在无人值守运行期间无法访问任何重要资源。在 VPS 上安全运行 Claude Code介绍了用户账户和权限标志。
仓库自身的评估:如实解读
README 的标题是“15 轮评估、超过 260 次代理运行,以及通过差异比较和执行来验证的盲测 LLM 评判器”。这比几乎任何 skill 仓库提供的证据都更多,而且 eval/RESULTS.md 按轮次记录,并保留了失败案例。但如果查看标题行背后的单个评估单元,就会发现实际证据不如标题中的数字显得那么充分。
The data behind this chart
[
{
"label": "Haiku, spec-vs-test conflict trap",
"runs": 4,
"notes": "bare 0 of 4, with method 4 of 4"
},
{
"label": "Sonnet, same conflict trap",
"runs": 2,
"notes": "bare flags it then sides with the wrong test, with method ideal action both runs"
},
{
"label": "Haiku, planted-fraud report, fable-judge",
"runs": 2,
"notes": "bare 4 and 3 of 5 frauds caught, with method 5 of 5 both runs"
},
{
"label": "Haiku, marketing brand-rules trap",
"runs": 2,
"notes": "bare 1 of 2 runs, with method 2 of 2"
}
]其中最大的 4 行基于 4 次运行。其他 3 行各基于 2 次运行。仓库在日志开头的固定限制说明中也明确写道:“整体样本量较小(每个单元 1-4 次运行);使用 LLM 评判器(比较多个输出时采用盲测,但评判器与基线使用的是同一个前沿模型);使用合成夹具;研究基准事实只保证在运行日期时有效。”它还更直接地写道:“此日志用于测试方法修改,不是为了让任何人误以为它是基准测试。”
这一点值得肯定。作者公开自己的样本量,并指出评判器与基线使用同一个模型这一问题,这种做法比该领域的普遍水平更诚实。应将这些数字理解为作者确实执行了测试并保留了失败记录。只有您自己的 A/B 测试才能说明它对您的代码库有何影响。
README 同样清楚地说明了该方法在哪些情况下不起作用,而这也是其中最有用的一段。它记录称,对于能力较强的模型执行普通小任务,该方法没有带来提升。文档指出,“该方法无法让模型掌握更新的事实;在知识密集型研究中,直接使用前沿模型更有优势”。它还将价值范围限定为“容易出错的场景(权威冲突、虚假的完成声明、执行器能力不足、无人值守运行),而不是所有场景”。如果您的代理只是在强模型上执行小规模修改,并且由您实时监控,那么预期可能完全测不出差异。如果使用较便宜的模型执行无人值守任务,差距应当会在这种情况下显现出来;这也使 在 Opus、Sonnet 和 Haiku 之间进行选择 成为同一项决策的一部分。
封装方式带有照搬成分
有4点批评值得提出,但没有任何一点能成为跳过该仓库的理由。
文章的论述超出了证据范围。“How Claude Fable 5 worked”是在声称模型内部机制如何运作,而 Anthropic 之外没有人能够验证这一点。仓库自己的核心表述也削弱了这一说法:“质量来自结构、证据和诚实,而不是模型。”如果质量来自结构,那么来源故事只是装饰。这个流程本身就足够成立,不需要一个起源神话。
4项技能的数量超过了内容的实际需要。fable-loop 在很大程度上重复了 fable-method,只是外面加了一层编排;在不支持子代理的执行框架中,它最终会退化为 fable-method。安装这两项之前,先并排阅读这两个文件。
8个领域适配器只是评估没有覆盖的表面广度。日志中只有2个适配器出现过:第9轮出现 marketing,第12轮出现 devops。finance、legal、design 和 data 适配器没有对应的评估轮次。面向你所在领域的适配器仍然可能很好。但它目前只是作者的草稿,并不是经过陷阱测试夹具验证的版本。
此外,安装程序与仓库对其实际发布内容的描述不一致,只将4项技能中的3项复制到 ~/.claude/skills。这个问题本身很小。但这类缺口表明封装进展快于审查进度。在决定一次采用多少内容时,应记住这一点。
除去品牌后,无论运行什么代理,这四条规则依然适用
去掉品牌信息后,无论运行什么代理,都只剩下这四条规则。
- 授权原文。不可逆操作或面向外部的操作,必须使用用户亲自写出的原话,并将其写成一行
AUTH:。代理找不到授权原文时不得执行操作。 - 双重检查。修复缺陷后,在整个项目中搜索相同的错误构造,并报告计数;即使计数为零,也必须报告。
- 通过观察进行验证。在损坏的构建之上运行并显示绿色的定向检查,属于验证失败,而不是通过。
- 先报告结果。跳过的内容或未验证的内容必须作为限定说明明确写出,不得悄悄省略。
这四条规则无需额外成本即可采用,也可以使用 grep 检查是否遵守。先从这里开始,使用上面的 harness 进行度量,然后再决定仓库的其余内容是否值得占用你的上下文预算。如果你希望为代理提供固定的项目上下文,而不是一套工作方法,可以采用 供代理在编辑前阅读的 DESIGN.md 作为补充措施。
FAQ
Fable 方法适用于 Claude 之外的其他模型吗?
方法文本可以。它是一个有序提示,不包含特定于模型的代码;仓库还提供了 AGENTS.md,可作为 Codex、Cursor、aider 或原始系统提示的可移植副本。以下两项无法直接迁移。/fable-method 和 /fable-judge 是 Claude Code 的斜杠命令,因此在其他环境中,您需要通过描述该方法来调用它。fable-loop 则假设所用 harness 能在不同模型上并行启动子代理;如果不具备这一能力,它会串行运行,并通过额外步骤提供 fable-method。
运行这些技能会消耗更多 token 吗?
会,具体增加多少取决于加载方式。作为技能安装后,只有任务匹配其描述时才会加载正文,因此无关请求几乎不会产生额外开销。如果将其粘贴到系统提示中,约 2,600 个单词的 AGENTS.md 会随每个请求一同发送。实际运行也会消耗更多 token,因为该方法要求在编辑前进行定位,在决策前收集证据,并在完成后执行实际验证。请进行测量:在两组测试中都使用 --output-format json 运行同一任务,然后比较 total_cost_usd 字段。
应安装哪个版本的 fable-method?为什么要固定版本?
安装前运行 git checkout v1.4.0。该标签的日期为 2026-07-15,截至 2026 年 8 月它仍是最新版本。在此之前的 9 天内,仓库发布了 5 个版本;v1.4.0 还修改了路由规则本身。如果您在测量期间跟踪 main,控制运行和测试运行可能读取不同的指令,这会使比较失去意义。请将标签与结果一并记录。
仓库中的 eval 是值得信任的基准测试吗?
请将它视为该方法的变更日志,这也是作者对它的称呼:“此日志用于测试方法编辑,而不是让任何人误以为它是基准测试。”文件开头明确说明了限制:每个单元运行 1 到 4 次、使用合成夹具,并由基于同一个前沿模型构建的 LLM 评审器进行评估;该模型同时还充当基线。每一轮测试都是真实的,失败的实验也被保留下来,这已经超过大多数仓库公开的内容。但它仍无法衡量该方法在您的代码库上会产生什么结果,因此请自行运行两组对比测试。