Token governance for Claude Code: the top model directs, execution goes to the cheapest adequate means. Routing kernel, hook-enforced pre-budget, telemetry, statusline with plan quotas.
🎬 fable-director
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**Keeps Claude Code from spending your quota on work the top model didn't need
to do.** It makes your agent declare what a job should cost before it delegates,
routes the cheap parts to cheap executors, and blocks the turn when spend runs
away — with quality as a constraint, never part of the trade.
**The honest price:** the always-on checks are a premium on small work — **~5%
to ~20%** on quick one-off tasks (shape-dependent, N small), and up to **+47%**
on easy self-contained bug fixes (measured on SWE-bench, where the discipline
had nothing to protect). If your work is mostly small and easy, this plugin is
not for you.
What's new
| | [![What leaves the machine carries placeholders, not people: values stay in a local map, the model sees [PERSONA_1] [TEL_1] [CF_1] [IBAN_1], restore puts every value back byte-exact.](assets/readme/card8-anonymizer.png)](#anonymizer-placeholders-not-people) |
|---|---|
| **1.42 — video and audio** at zero Claude tokens: contact sheets, local transcription, timed scripts, free tier for the long clips. Read more ↓ | **1.44 — anonymizer**: pseudonymise what leaves the machine, byte-exact restore, Italian pack with check digits, exports by column. Phase A, a CLI, off by default; the hook into the external routes comes next. Read more ↓ |
Quickstart
One command on Claude Code 2.1.292 or newer: it adds the marketplace if it is
not there yet. On an older Claude Code, two commands:
Then two one-off steps:
1. Copy fable-director/playbook-template.md to ~/.claude/delega-playbook.md
— the playbook lives outside the plugin so updates never touch it.
2. Restart Claude Code once: the first session writes the statusline into settings.json by itself (/fable-director:statusline --remove turns it off).
From the first session the plugin **enables its own auto-update** (announced
in-session, reversible: set "autoUpdate": false under
extraKnownMarketplaces.fsorrentino in settings.json, and that choice is
respected forever). No-CLI alternative and zip migration:
**ONBOARDING.md**. Manual hook merge and edge cases:
**INSTALL.md**.
What you get
- **Same cost, better result on the jobs that eat your quota** — on big reading
jobs tokens are neutral and quality is consistently higher (N=6/5); ~20% fewer
tokens on repetitive mechanical work.
- **Your agent can't quietly overspend or write where you didn't allow** — it
declares an estimate and a write perimeter before delegating; a hook blocks
the turn at 3× the estimate and denies writes outside the paths (your
never_write patterns always). You find out while it happens, not when the
limit hits.
- **The job you run every week stops costing you** — repeatable work is promoted
to a script; from the second run it's close to free.
- **Bulk work leaves your Claude quota, sensitive work never leaves your
machine** — non-code batches and verification can run on free external
models; mark a task restricted and those routes refuse to run,
deterministically.
- **A long session ends on your terms, not at the wall** — when a task closes
and the context is getting heavy, the agent asks whether to write a two-page
handoff and start fresh; the next session reads it at startup instead of
re-paying the whole context (a cold reopen measured 296k tokens).
What a governed job looks like: you ask for the 240 reviews to be classified;
the agent declares a price (budget-open, ~60k tokens, one canary first),
delegates the batch to a cheap pinned executor, checks the canary before the
rest, and the Stop hook warns at 2× and blocks the turn at 3× until a
post-mortem is written. A small quick task skips all of this.
How much does it save?
**The honest one-sentence answer:** it doesn't save tokens on every task — it
makes spend predictable, verified and disciplined; on read-heavy loads the
tokens are neutral and the quality is higher, and the real savings come from
the jobs it scripts or routes off your quota.
Measured by running the **same tasks with and without the plugin**, several
times each, counting real tokens and real dollars: