SSD Nodes Learn 🎉 VPS від $5.50/міс
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-08-13

Метод Fable: навички агента для будь-якої моделі

Розберіть репозиторій fable-method: призначення кожного файлу, що переноситься на інші моделі та як порівняти результати на одному VPS.

Що насправді стверджує метод Fable

Метод Fable — це невеликий набір навичок агента, у якому робочі звички однієї моделі записано як упорядковану процедуру. Інша модель може виконати ту саму процедуру. Репозиторій Sahir619/fable-method поширюється за ліцензією MIT. Його власний однорядковий опис: «як працювала Claude Fable 5, зведено до навичок, які може виконувати будь-яка модель, із eval, що забезпечує об’єктивну перевірку». Саме другу частину цього твердження варто перевірити.

Ніхто за межами Anthropic не може перевірити, чи справді текстовий файл відтворює спосіб мислення конкретної моделі. Натомість ви можете самостійно перевірити, чи поводиться дешевша модель інакше після читання цього текстового файлу. Для цього достатньо одного VPS і кількох годин. Саме це вимірюється далі: одне й те саме завдання виконується двічі — з методом і без нього, а кількість викликів інструментів і вартість порівнюються.

Якщо слово «skill» вам незнайоме, почніть із матеріалу що таке навичка агента: це каталог із файлом SKILL.md, опис у frontmatter якого повідомляє агенту, коли завантажувати його вміст. Модель, на честь якої названо репозиторій, описано в матеріалі скільки коштує Claude Fable 5 і для чого він підходить.

Встановіть skills і зафіксуйте версію, яку тестуєте

Є два способи встановлення. У Claude Code спосіб через plugin складається з двох команд:

/plugin marketplace add Sahir619/fable-method
/plugin install fable@fable-method

На VPS, де потрібна зафіксована копія на диску, спочатку клонуйте репозиторій і переключіться на потрібний tag:

git clone https://github.com/Sahir619/fable-method ~/fable-method
cd ~/fable-method
git checkout v1.4.0
bash install.sh
ls ~/.claude/skills

install.sh не потребує sudo, оскільки записує дані лише в $HOME/.claude/skills. Після виконання ls ~/.claude/skills перелічує fable-judge, fable-loop і fable-method. Зверніть увагу на те, чого немає. Репозиторій містить чотири skills, а shell installer копіює три, тому окремий користувач не отримує fable-domain, якщо не скопіює його вручну:

cp -r ~/fable-method/skills/fable-domain ~/.claude/skills/

Зафіксуйте tag і запишіть його поруч із отриманими результатами. У цьому репозиторії опубліковано п’ять releases у період із 2026-07-06 до 2026-07-15: від v1.0.0 до v1.4.0. У v1.4.0 змінено сам метод, оскільки додано новий routing gate. Станом на August 2026 v1.4.0 залишається найновішим tag. Якщо контрольний запуск читає одну версію правил, а тестовий — іншу, ви нічого не виміряли.

Що кожна з чотирьох навичок вказує моделі робити

Ключовим файлом є skills/fable-method/SKILL.md. Він містить два шлюзи та сім пронумерованих кроків. Його правила достатньо конкретні, щоб їх можна було перевіряти й оскаржувати.

Спочатку діє шлюз тривіальності: якщо зміна стосується одного файла, займає приблизно до 10 рядків, не додає нової поведінки, а ви вже точно знаєте, що потрібно змінити, дійте безпосередньо й без зайвих процедур. Окрема навичка побудована саме на цьому принципі: Ponytail спрямовує агента до найменшої зміни, яка працює. Її основне правило достатньо коротке, щоб додати його до власних інструкцій без встановлення додаткових компонентів. Далі діє шлюз відповідності. Він визначає напрямок залежно від того, де міститься відповідь: у доступних для перегляду джерелах, у техніці, яку спочатку потрібно дослідити, або у власному висновку. Власний висновок потрібно позначати як такий, що має низьку впевненість, а не подавати як факт. Середня гілка працює лише тоді, коли агент справді має доступ до вебу. На заблокованому VPS для цього потрібно надати йому окремий пошуковий бекенд, наприклад self-hosted екземпляр SearXNG, доступний як JSON search tool.

Далі виконується цикл: класифікувати запит, визначити критерії завершення, зібрати докази, ухвалити рішення, виконати дію, перевірити результат і прозвітувати. Крок 2 вимагає спочатку зорієнтуватися, вивівши список каталогу, і лише потім вибирати файли. Також потрібно надавати перевагу первинним джерелам, а не покладатися на пам’ять, і зупинитися після двох послідовних пошуків, які не дали нової інформації. Крок 4 вимагає перед будь-яким редагуванням записати рядок INTENT:. У ньому потрібно вказати, що робить код, чого очікує перевірка, яка завершується помилкою, і що визначає специфікація. Якщо ці три положення не узгоджуються, редагувати файл не можна, оскільки саме розбіжність є фактичним результатом дослідження. Крок 5 обмежує кількість повторних спроб: після трьох невдалих циклів виправлення й перевірки тієї самої проблеми потрібно зупинитися та повернути фактичний вивід.

Найлегше перевірити чотири токени звіту у цьому файлі. Зміна поведінки вимагає рядка INTENT:. Зовнішня дія вимагає AUTH: user said "<exact words>" із цитуванням користувача, оскільки репозиторій прямо зазначає, що документація не є дозволом. Приписана, але не виконана дія вимагає рядка PENDING:. Виправлений дефект вимагає TWINS: searched <pattern> - found <N> other sites. Щоб перевірити ці чотири рядки, не потрібно довіряти всій методиці: достатньо визначити, чи з’являються вони тоді, коли це потрібно. Саме тому весь підхід можна вимірювати, а не оцінювати за загальним враженням.

fable-loop — це та сама методика, організована у чотири етапи: планування з паралельними субагентами для збору доказів, виконання в основному потоці, перевірка одним–трьома субагентами-атакерами, кожен з окремою перспективою, а потім аудит і звітування. Передбачається використання недорогих моделей для ролей збору доказів та атакерів і потужнішої моделі для ухвалення рішень і редагування.

fable-judge — це компонент, який варто встановити, навіть якщо від решти ви відмовитеся. Його принцип такий: «звіт — це набір тверджень, а не докази». Він збирає твердження із завершеного звіту, встановлює фактичний стан на основі git diff і git status, повторно виконує кожну перевірку, про яку йдеться у звіті, і шукає порушення з іменованого списку: послаблені перевірки, неправдиве повідомлення про завершення, вихід за межі області, несанкціоновану дію, порушення специфікації та залишкові непотрібні зміни. Він повертає VERIFIED, VERIFIED WITH CAVEATS або REFUTED, а все, що не вдається відтворити, позначає як UNVERIFIABLE, не припускаючи, що перевірка пройдена. Власний фінальний рядок інсталятора прямо вказує на це: «Спробуйте: відкрийте Claude Code і введіть /fable-judge після того, як будь-який агент заявить про завершення роботи».

fable-domain генерує пакети адаптерів для доменів із тестовими фікстурами для типових пасток і smoke-тестами оцінювання. Доступні вісім адаптерів: marketing, research, data analysis, business and ops, finance, legal and compliance, design and UX та devops. Для медичної та клінічної роботи адаптер навмисно не надається.

Які частини можна перенести до іншої моделі, а які — ні

Репозиторій прямо відповідає на це за допомогою AGENTS.md. Він починається так: «Portable version for any coding agent or harness (Codex, Cursor, aider, a raw system prompt). Identical method to SKILL.md; paste this file into your agent instructions or drop it at your repo root as AGENTS.md.» Обсяг файлу — приблизно 2,600 слів. У ньому збережено ті самі етапи перевірки, кроки та режими. Якщо ви вже зберігаєте файли інструкцій у корені репозиторію, угода щодо AGENTS.md і HUMAN.md визначає, куди помістити цей файл і хто його читає.

Дві частини переносяться без змін. Текст методу — це впорядкований prompt без коду, специфічного для певної моделі. Тому його може виконувати будь-яка модель, яка дотримується інструкцій. Теза репозиторію полягає в тому, що обсяг додаткової роботи обернено пропорційний рівню моделі. Judge також переноситься, якщо agent має доступ до shell і репозиторію, оскільки всі його дії зводяться до git diff і повторного виконання команд, які читач також може виконати.

Одна частина переноситься не повністю. fable-loop передбачає, що harness може запускати паралельні subagents і спрямовувати їх до різних моделей. Agent без subagents виконує ці етапи послідовно на одній моделі. Це усуває паралельність і економію коштів, які були підставою для такого дизайну. У результаті залишається fable-method із додатковою термінологією.

Ще дві невеликі частини залежать від harness, і їх легко не помітити. Тригер /fable-method — це slash command для Claude Code. В іншому harness метод потрібно запускати, описавши його словами. Опис у frontmatter SKILL.md дає змогу agent завантажувати основний текст лише тоді, коли він відповідає завданню. Тому встановлений skill майже не створює витрат, доки його не активовано. Якщо вставити AGENTS.md у system prompt, ці 2,600 слів будуть присутні в кожному запиті, який ви надсилаєте, незалежно від того, чи це виправлення однієї помилки в рядку, чи рефакторинг. Це суттєва різниця у витратах і головна причина, навіщо взагалі існує пакування skill.

Як порівняти це на VPS: те саме завдання двічі

Налаштуйте дві ідентичні робочі копії, щоб жоден запуск не бачив змін іншого. Замініть 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 не можуть вплинути на нього. Bare mode не використовує дані для входу через підписку, тому спочатку задайте API key з Claude Console.

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

Той самий binary, та сама model, ті самі tools, те саме початкове дерево. Відрізняється лише одна опція. Інакше порівняння не матиме сенсу.

Таке порівняння вимірює текст методу. Воно не вимірює пакування skill, оскільки це окреме питання. Щоб виміряти пакування, приберіть --bare, встановіть skills, як описано вище, і вкажіть назву skill у рядку prompt, оскільки skills, викликані користувачем, розгортаються в print mode: 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 пояснюють, чому рядки кешу переважають у необроблених підрахунках.

Переконайтеся, що під час роботи без нагляду агент не має доступу до важливих для вас ресурсів. У матеріалі безпечний запуск Claude Code на VPS описано обліковий запис користувача та прапорці дозволів.

Власна оцінка репозиторію: чесне прочитання

Заголовок README звучить так: «П’ятнадцять раундів оцінювання, понад 260 запусків агентів, сліпі судді на базі LLM, які перевіряють результат за допомогою порівняння відмінностей і виконання». Це більше доказів, ніж надає майже будь-який репозиторій навичок, а eval/RESULTS.md описано раунд за раундом, із включеними невдалими результатами. Однак після перегляду окремих комірок за рядками заголовка стає зрозуміло, що цей матеріал менш масштабний, ніж випливає з числа в заголовку.

ChartRuns per cell behind the repo's headline eval rows, v1.4.0
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 запусках. Кожен із трьох інших містить по 2 запусків. Сам репозиторій прямо зазначає це в постійних обмеженнях на початку журналу: «Малі вибірки всюди (1-4 запуски на комірку), судді на базі LLM (сліпі, коли порівнюються кілька результатів, але побудовані на тій самій frontier-моделі, яка використовується як baseline), синтетичні фікстури, еталонні дані для дослідження актуальні лише станом на дату запуску». І ще пряміше: «Цей журнал потрібен для тестування змін методу, а не для того, щоб хтось помилково сприйняв його за benchmark».

Це варто відзначити. Автор, який публікує власний n і називає проблемою те, що його суддя побудований на тій самій моделі, яка використовується як baseline, демонструє більшу чесність, ніж це зазвичай буває в цій категорії. Сприймайте ці числа як доказ того, що автор справді запускав тести й зберігав невдалі результати. Лише власне A/B-тестування покаже, що відбувається у вашій кодовій базі.

У README так само чітко зазначено, де метод не дає жодного ефекту, і саме цей абзац є найкориснішим. Для звичайних невеликих завдань на потужних моделях приросту не зафіксовано. У ньому сказано, що «метод не може зробити факти моделі актуальнішими; у дослідженнях, де потрібні великі обсяги знань, bare frontier виграє». Також зазначено, що цінність проявляється у «пастках (конфліктах авторитетних джерел, хибних твердженнях про завершення, слабких виконавцях, запусках без нагляду), а не всюди». Якщо ваш агент виконує невеликі зміни на потужній моделі під вашим наглядом, не очікуйте жодного вимірюваного ефекту. Якщо ж дешевша модель працює без нагляду, саме там має проявитися різниця, а отже вибір між Opus, Sonnet і Haiku є частиною того самого рішення.

Коли пакування перетворюється на cargo cult

Є чотири обґрунтовані зауваження, але жодне з них не є причиною пропускати цей репозиторій.

Формулювання виходять за межі наявних доказів. «Як працювала Claude Fable 5» — це твердження про внутрішню будову моделі, яке ніхто за межами Anthropic не може перевірити. Власне основне твердження репозиторію це спростовує: «Якість визначається структурою, доказами та чесністю, а не моделлю». Якщо якість визначається структурою, історія походження є лише декорацією. Процедура функціонує самостійно й не потребує міфу про походження.

Чотири навички — це більше поверхневої оболонки, ніж потрібно цьому вмісту. fable-loop повторює значну частину fable-method, додаючи оркестрацію, а в середовищі без subagent він зводиться до fable-method. Перш ніж інсталювати обидві, прочитайте ці два файли поруч.

Вісім domain adapter — це широта, яку eval не охоплює. У журналі десь згадано лише два з восьми: marketing у раунді 9 і devops у раунді 12. Адаптери finance, legal, design і data постачаються без жодного раунду за ними. Адаптер для вашої галузі все одно може бути якісним. Однак це авторський варіант, а не рішення, яке перевірку пройшло на тестовому прикладі-пастці.

Інсталятор не узгоджується з репозиторієм щодо того, що саме він постачає: він копіює три з чотирьох навичок у ~/.claude/skills. Це невелика проблема. Водночас такий розрив показує, що пакування розвивалося швидше, ніж його хтось перевіряв. Про це варто пам’ятати, визначаючи, яку частину цього рішення впроваджувати одразу.

Що варто зберегти, якщо більше нічого не зберігати

Відкиньте брендинг, і чотири правила залишаться самодостатніми незалежно від того, якого агента ви запускаєте.

  • Цитата з авторизацією. Незворотна дія або дія, що впливає на зовнішні системи, потребує власних слів користувача, записаних як рядок AUTH:. Агент, який не може знайти цитату, не виконує дію.
  • Подвійна перевірка. Після виправлення дефекту знайдіть увесь проєкт на наявність тієї самої помилкової конструкції та повідомте кількість збігів, навіть якщо вона дорівнює нулю.
  • Перевірка спостереженням. Цільова перевірка з успішним результатом, виконана поверх зламаної збірки, означає невдалу перевірку, а не успішну.
  • Звітність, орієнтована на результат, із зазначенням пропущених або неперевірених пунктів як застереження, а не їхнім непомітним вилученням.

Ці чотири правила нічого не коштують для впровадження, а відповідність їм можна перевіряти за допомогою grep. Почніть із цього, виміряйте результат за допомогою наведеного вище harness, а потім вирішіть, чи заслуговує решта репозиторію на свою частку вашого контекстного бюджету. Якщо ви хочете надати агенту постійний контекст про проєкт, а не робочий метод, файл DESIGN.md, який агенти читають перед редагуванням, буде доповненням.

FAQ

Чи працює метод Fable з моделями, відмінними від Claude?

Текст методу працює. Це впорядкований prompt без коду, специфічного для певної моделі, а репозиторій містить AGENTS.md як переносну копію для Codex, Cursor, aider або звичайного system prompt. Дві речі не переносяться. Тригери /fable-method і /fable-judge є slash-командами Claude Code, тому в інших середовищах метод потрібно викликати, описавши його. А fable-loop передбачає harness, який може запускати паралельні subagents на різних моделях; без цього метод виконується послідовно й дає fable-method із додатковими кроками.

Чи потребує запуск цих skills більше токенів?

Так. Обсяг залежить від способу їх завантаження. Якщо встановити їх як skills, тіло завантажується лише тоді, коли опис відповідає завданню, тому сторонній запит майже не збільшує витрати. Якщо вставити їх у system prompt, приблизно 2,600 слів AGENTS.md передаються з кожним запитом. Сам запуск також потребує більше токенів, оскільки метод вимагає спочатку зорієнтуватися, потім зібрати докази перед прийняттям рішення, а після цього виконати фактичну перевірку. Виміряйте це: запустіть те саме завдання з --output-format json в обох варіантах і порівняйте поле total_cost_usd.

Яку версію fable-method потрібно встановити і навіщо її фіксувати?

Перед встановленням виконайте git checkout v1.4.0. Цей tag датований 2026-07-15 і станом на August 2026 залишався найновішим. Протягом попередніх дев’яти днів репозиторій опублікував п’ять релізів, а v1.4.0 змінив самі правила маршрутизації. Якщо під час вимірювання використовувати main, контрольний і тестовий запуски можуть прочитати різні інструкції, що зробить порівняння непридатним. Запишіть tag разом із результатами.

Чи є eval у репозиторії benchmark, якому можна довіряти?

Розглядайте його як журнал змін методу — саме так його називає автор: "This log exists so method edits are tested, not so anyone mistakes it for a benchmark." На початку файлу зазначено обмеження: від 1 до 4 запусків на комірку, синтетичні фікстури та LLM-судді, побудовані на тій самій frontier model, яка також використовується як baseline. Раунди є реальними, а невдалі експерименти збережено, що вже більше, ніж публікує більшість репозиторіїв. Проте це не вимірювання того, що станеться у вашій codebase, тому самостійно виконайте двостороннє порівняння.