我不再向 Claude Fable 5 发送提示词,而是直接雇佣了它

@gippp69
英语2天前 · 2026年7月13日
137K
116
3
30
150

TL;DR

通过将 Claude Fable 5 视为一名受管理的员工,彻底改变你的 AI 交互方式。本框架利用多模型切换和自动化护栏,确保高质量、高性价比的自主工作成果。

你不可能通过逐条发送指令来管理一个员工。你要给他们一份合同、一个试用期,以及一种衡量他们是否还值得这份薪水的方式。Fable 5 也需要同样的对待。

问题是这样的。Fable 5 可以连续运行数小时而无需你干预,自主启动自己的子 Agent,并在一个晚上完成积压一周的工作。同时,它每个 token 都要花真金白银,只要你把范围留得开放,它就会超额交付,而且它捍卫一个错误答案的能力比大多数人类捍卫正确答案还要强。

如果不加管理,它就是一种产生自信胡说八道的昂贵方式。但如果签了合同,它就是你每天花几美元就能得到的、最接近全职员工的东西。

这就是那份合同。不是理论,而是实际的文件,按你编写的顺序,围绕一个真实的部署构建:我已经在巴黎的一台 VPS 上通过 pm2 运行的监控机器人。认证流程和计费表不是我的攻击面。RPC 密钥、钱包地址和实时区块链交易才是。下面的系统就是为此构建的,而不是为通用的 SaaS 仓库。

五个部分,每个部分交付一个文件。总设置时间:不到两小时。

设置

bash
1claude CLI (Claude Code) 配有 Fable 5 访问权限 # 使用额度,有上限
2llm CLI + OpenRouter 密钥 # 用于廉价模型
3jq、git、pm2、cron
4一台已经运行着机器人的 VPS

你最终得到的是:

text
1agent-contract/
2 CONTRACT.md # 第 1 部分:雇佣条款
3 ops/
4 shift.sh # 第 3 部分:每日轮班
5 dispatcher.md # 路由提示,仅限 Fable
6 intake.md # 廉价读取器,先读取日志
7 worker.md # 廉价模型,负责打字
8 reviewer.md # 新的 Fable,检查工作
9 boundaries.md # 第 2 部分:它可以和不可以接触的内容
10 guardrails/signoff.sh # 第 2 部分:确定性的通过/不通过
11 personnel/
12 trust.tsv # 第 4 部分:谁赢得了自主权
13 standing-checks/ # 第 4 部分:必须保持为真的事情
14 incidents/
15 log.tsv # 第 5 部分:什么坏了以及何时
16 runbook.md # 第 5 部分:如何处理
17 Makefile

在开始之前,有一条值得引用的规则,因为它为之后的一切定下了基调:

给自己作业打分的 Agent,就是给自己加薪的 Agent。

这个系统中没有任何东西会检查自己的工作。一次也没有。

第 1 部分:合同 (CONTRACT.md)

员工合同不是一堆建议,而是数字、硬性停止点和无论员工是否同意都会执行的条款。用同样的方式写这个文件。没有“请”或“尽量”。模型会优化绕开软性语言,就像实习生优化绕开从不检查的经理一样。

markdown
1# CONTRACT.md
2
3## 硬性停止点(无例外,无需问两次)
4- 未经批准,绝不触碰钱包密钥、.env 文件或 RPC 凭据。
5- 未通过签收,绝不向正在运行的机器人进程推送更改(pm2 restart)。
6- 单次提交的更改行数超过 150 行时,必须先询问。
7- 绝不要仅凭自己对输出的理解就声称任务完成。
8 完成意味着签收脚本返回了 0。其他任何东西都不算数。
9- 绝不要发明 API 端点、合约地址或配置值。
10 如果仓库中没有,停下来并询问。
11- 绝不要添加新的依赖项。在 ops/shift-log.md 中记录并停止。
12- 绝不要编辑或删除测试、告警阈值或监控条件,以使某些东西通过。
13 那不是修复,而是欺诈。
14- 在轮班内绝不要以“高”以上的努力度运行。“极高”只用于你手动触发的单次审查,绝不能用于自动化循环。
15- 绝不要在响应中叙述或解释你的内部推理。这看起来很有帮助,但在 Fable 5 上,它反而可能触发拒绝分类器。
16
17## 工作路由(谁做什么,最便宜且能胜任的胜出)
18| 模型 | 每任务成本 | 野心 | 判断力 | 品味 |
19|--------------------|------------|------|--------|------|
20| claude-fable-5 ||| 10 | 10 |
21| claude-opus-4-8 ||| 8 | 9 |
22| claude-sonnet-5 ||| 7 | 7 |
23| 廉价开源 Worker | 最低 | 最高 | 5 | 4 |
24
251. 决定下一步做什么、审查 diff、打破平局 -> Fable 5,只读,高努力度。
262. 读取原始日志、转储或任何超过 50k token 的内容 -> 廉价 Worker。
27 绝不使用 Fable。那相当于用总监的费率去读一张电子表格。
283. 任何用户或链直接交互的内容 -> 在发布前需要品味评分 8 或以上。
294. 其他所有内容 -> sonnet-5,中等努力度,失败时升级一级。
30
31## 定义
32- “判断力” = 能否在无人监督的情况下处理桌上最困难的任务
33- “完成” = 签收脚本退出码为 0,句号
34- “小” = 更改行数少于 50 行
35- “清理” = 行为逐位相同,前后签收均为绿色
36
37## 唯一算数的“完成”定义
38- 每个任务在开始工作前都有一个机器可检查的终点线。
39- 一个既没有看到计划也没有看到草稿的评审者来检查。
40- guardrails/signoff.sh 拥有最终投票权。不是评审者,而是脚本。
41- 如果 Worker 和评审者连续两次意见不一致,则交给人类。
42 没有第三次意见,没有平局打破模型。

换成你自己的数字。任何你 80% 的时间都会放过并仍然称之为“完成”的东西,都需要附上一个数字或一个“绝不”,否则就删掉它。

第 2 部分:边界和签收

没有对允许接触的内容进行背景调查,也没有经理在发布前签收,员工合同就毫无意义。两个文件。

ops/boundaries.md:

markdown
1## 可以独立完成
2在分支上起草修复;更新 shift-log.md;重启*非生产*测试实例;标记过时的数据源
3
4## 需要我的签名
5wallet/、.env*、config/rpc.json 下的任何内容;任何超过 300 行的 diff;对正在运行的 pm2 进程的任何更改;任何发送交易的操作
6
7## 立即唤醒我
8评审者两次未能通过相同的修复;路由器提供了与请求不同的模型;每日支出超出限额;常规检查变红;任何要求提供私钥的行为

ops/guardrails/signoff.sh(编辑命令以匹配你的机器人):

bash
1#!/usr/bin/env bash
2set -e
3npm run typecheck --if-present
4npm test --if-present
5pm2 describe "$BOT_NAME" | grep -q "status.*online" || exit 1

在系统中任何其他东西上线之前,手动运行一次。如果它在你当前的设置上不能干净地通过,那才是真正的第一个任务。所有下游都假设这个脚本说的是真话。

第 3 部分:轮班

这是成败的关键计算。让 Fable 5 全程打字,一次完整的会话很快就会花掉真金白银,如果让它写几个小时,就是四位数。而让 Fable 5 做决策,同时用廉价模型打字,则完全是另一笔账单——大约 15-20% 的 token 成本,却得到了 100% 的判断力。

所以轮班有四个雇员,而不是一个:

  1. 一个近乎免费的模型读取过夜日志和 pm2 输出。只说“安静”或“可操作”。仅此而已。
  2. Fable 5,只读,决定唯一最高价值的事情并写下工作指令。它不碰代码。
  3. 一个廉价的 Worker 模型在一个隔离的分支上执行工作指令。
  4. 一个全新的 Fable 5 实例,只看规格和 diff,投票通过或不通过。

第 2 部分中的确定性脚本每次都投出打破平局的一票。

Gipp 🦅 - inline image

ops/shift.sh:

bash
1#!/usr/bin/env bash
2set -euo pipefail
3cd "$(dirname "$0")"
4DAILY_BUDGET="${DAILY_BUDGET_USD:-5}"
5INTAKE_MODEL="${INTAKE_MODEL:-openrouter/deepseek/deepseek-v4-flash}"
6WORKER_MODEL="${WORKER_MODEL:-openrouter/moonshotai/kimi-k2.6}"
7
8# 1. 输入,几分钱
9pm2 logs --lines 100 --nostream | llm -m "$INTAKE_MODEL" -s "$(cat intake.md)" \
10 >> shift-log.md
11grep -q "status: actionable" shift-log.md || { echo "安静轮班"; exit 0; }
12
13# 2. 调度,Fable,极高,只读,决策并停止
14claude -p "$(cat dispatcher.md)
15LOG: $(cat shift-log.md)
16TRUST: $(cat personnel/trust.tsv)
17BOUNDARIES: $(cat boundaries.md)" \
18 --model claude-fable-5 --effort xhigh --allowedTools "Read" \
19 --output-format json > /tmp/order.json
20
21SERVED=$(jq -r '.modelUsage | keys[0] // "claude-fable-5"' /tmp/order.json)
22[[ "$SERVED" != *fable* ]] && { echo "被重新路由,丢弃这次运行" >> shift-log.md; exit 2; }
23
24jq -r '.result' /tmp/order.json > work-order.json
25ACTION=$(jq -r .action work-order.json)
26[[ "$ACTION" == "stop" ]] && exit 0
27[[ "$ACTION" == "queue" ]] && { echo "已排队等待签名" >> shift-log.md; exit 0; }
28
29# 3. 执行,廉价 Worker,隔离分支
30BR="shift-$(date +%s)"
31git worktree add "../$BR" -b "$BR" >/dev/null
32( cd "../$BR" && llm -m "$WORKER_MODEL" -s "$(cat "$OLDPWD/worker.md")" \
33 "$(cat "$OLDPWD/work-order.json")" > shift-notes.md )
34
35# 4. 审查,全新的 Fable,仅看规格和 diff,其他不管
36VERDICT=$(claude -p "$(cat reviewer.md)
37SPEC: $(jq -r .spec work-order.json)
38DIFF: $(cd "../$BR" && git diff)" \
39 --model claude-fable-5 --effort high --allowedTools "" \
40 --output-format json | jq -r .result)
41
42# 5. 唯一能发布东西的投票
43if [[ "$VERDICT" == PASS* ]] && ( cd "../$BR" && "$OLDPWD/guardrails/signoff.sh" ); then
44 echo "通过,根据信任等级已发布或排队" >> shift-log.md
45else
46 echo "失败: $BR 保留等待审查" >> shift-log.md
47fi

由 Fable 做出的决策和由 Fable 打出的一行代码是两种不同的价格标签。只为决策支付更高的价格。

第 4 部分:人事档案

信任不是公司范围的设置,而是每项任务赢得的,就像你不会在第一天就把生产密钥交给新员工,无论他们的作品集看起来多好一样。

personnel/trust.tsv 按名称追踪每个重复性任务:运行次数、通过次数、当前等级。

  • 观察:运行次数少于 10 次,或通过率低于 90%。仅限草稿,无例外。
  • 试用:运行次数 10-19 次,通过率 90% 以上。每次都需要你的签名。
  • 通过:运行次数 20 次以上,通过率 95% 以上。无需你即可发布。
Gipp 🦅 - inline image

一个通过的任务出错不会得到警告,而是直接降回试用,并打印到 stderr,你的 cron 会邮件通知你。自动降级是唯一真正有效的降级。

人事档案的另一半是 personnel/standing-checks/。每个完成的任务都会在这里毕业,成为一个必须永远返回 true 的命令,每天检查一次:

markdown
1# personnel/standing-checks/bankr-claim-monitor.md
2predicate: pm2 describe bankr-claim-monitor | grep -q "status.*online" && \
3 sqlite3 claims.db "select count(*) from claims where ts > strftime('%s','now','-1 day')" | grep -qv "^0$"
4last-verified: 2026-07-08
5on-violation: 唤醒我,不要盲目自动重启

一个只验证过一次的任务并没有完成,它只是一个带时间戳的假设。

通过 cron 每天运行检查。失败的谓词意味着曾经为真的事情不再为真,而且没有这个文件,没人会注意到。

第 5 部分:事件报告

这是原始操作手册跳过的一节,但一旦系统在流动真实资金的基础设施上运行,这一节才是真正重要的。每个 Agent 系统最终都会做一些你不希望它做的事情。问题在于你是从干净的日志中发现,还是从干涸的钱包中发现。

ops/incidents/runbook.md:

markdown
1| 信号 | 含义 | 操作
2|----------------------------------|---------------------------------------|--------
3| exit 2 (被重新路由) | 不同的模型服务了请求 | 丢弃输出,绝不基于它构建,第二天重试
4| stop_reason: refusal | 安全分类器拒绝,HTTP 200 | 不是错误,检查日志;如果某个任务反复被拒绝,那么该任务很可能触及了不该碰的东西
5| 签收连续两次失败,相同的修复 | Worker 和评审者无法达成一致 | 移交给人工审查,不要自动重试第三次
6| 常规检查变红 | 已经完成的事情不再为真 | 检查上次验证日期,比较自那以后发布的 diff,不要自动回滚
7| 每日支出超出限额 | 预算超支 | 停止轮班,读取 shift-log.md,找出哪个阶段膨胀了
8| 任务触及 wallets/.env/rpc | 边界违反尝试 | 硬停止,如果 boundaries.md 被遵守,这绝不应该发生;任何出现都视为系统本身的 bug

将所有这些都记录到 incidents/log.tsv 中,并带时间戳,无论你是否对其采取了行动。目标不是零事件,而是没有你太晚才知道的事件。

每周一次,做一次堆肥处理:阅读事件日志、信任文件中的降级,以及任何排队超过 3 天且未被签名的东西。最多提取三个提案:一个 CONTRACT.md 的新硬性停止点、一个职位描述的修复,或者一个你遗漏的常规检查。你需要手动签署所有三个。系统可以提议自己的下一条规则,但永远不能自己写一条。

试用期时间表

三个检查点,而不是三十天的保姆式监督:

Gipp 🦅 - inline image

检查点 1. 每天手动运行一次轮班,持续一周。阅读每一行。当连续三次轮班都按你本来会的方式路由时,毕业。

检查点 2. Cron 接管轮班。你一边喝咖啡,一边审查队列,而不是自己运行。当两个重复性任务跨越 20 次运行记录时,毕业。

检查点 3. 你表现最好的任务无人值守地发布。当它连续运行一周且你零干预时,毕业。

规则摘要

  • 合同是一个数字或一个“绝不”。任何更软的东西都会被优化绕过。
  • 调度者做决策,Worker 打字。两者都不检查自己的工作。
  • Fable 的判断力值得这个价格,但 Fable 的打字通常不值。
  • 信任是按任务定的,不是公司范围的,降级是自动且响亮的。
  • 完成的任务如果不再检查,就不是完成,而是带日期的猜测。
  • 边界存在一个你十秒就能读完的文件里,而不是你的记忆里。
  • 事件日志的存在是为了让你从报告中发现问题,而不是从余额中发现问题。
  • 绝不要在你没有要求的模型输出上构建。
  • 每周一次,系统可以提议一条新规则。但你仍然是签署它的人。

模型从来不是难点。围绕它构建一个在无人监督时仍能保持诚实的东西,那才是真正的工作。这就是对于机器人舰队而不是代码库来说,它看起来的样子。

从 guardrails/signoff.sh 开始。手动运行一次轮班。为你最近发布的机器人写一条常规检查。第一次它抓住你原本确信没问题的东西时,剩下的就不再是可选的了。

关注 @GipArcAI 获取更多这样的分解,在 X 上找我: https://x.com/gippp69

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章