Agent skills как формат донесения метода работы до ИИ-агента

Добавил вариант MCP с https://fpf.tools, устранил небольшое читерство в предыдущем тестировании скилла (SKILL.md был продублирован в AGENTS.md - так не делют).

Пять вариантов: что это, плюсы и минусы

none - пустая рабочая папка, «пол»

Тот же вопрос, тот же формат ответа, то же правило «отвечай только из материала», но материала нет.

Плюсы

  • Доказывает, что банк вопросов не решается из знаний модели: 0/12 на фактических семьях. Без этого замера все остальные цифры ничего не значат.
  • Самый дешёвый и быстрый (894 тыс. токенов за 17 клеток, медиана 17 с) — цена «ничего» для контроля.

Минусы

  • Это не способ доставки, а контрольная точка: практической пользы нет.
  • Для семейств fabrication и gate координаты не применимы по построению: нет материала — нет и отказа от него.

mono - монолит FPF-Spec.md + указатель из пяти строк

Один файл 15,4 МБ (3 273 747 токенов, 117 207 строк) и AGENTS.md из пяти строк: «используй ./FPF-Spec.md, он очень большой, ищи по нему, не читай целиком». Внешнего роутера нет.

Плюсы

  • Лучший результат: 17/17, фактические семьи 12/12.
  • Лучший баланс цена/результат среди всех носителей: 222 050 токенов на правильную клетку, медиана 4 вызова на клетку.
  • Внешний роутер не нужен: внутреннее оглавление файла (~250 КБ) работает как навигация. Монолит ни разу не читали целиком — 64 grep + 33 read_file за 17 клеток.
  • Ничего не надо ставить и синхронизировать: один файл в поставке, ноль чтений вне рабочей папки.
  • Работает офлайн, редакция заморожена и проверяема хешем.

Минусы

  • В поставке лежит файл на 3,27 млн токенов: обновлять его надо целиком и вручную.
  • Редакция стареет: свежие паттерны и DPF-сьюты не появятся, пока не подменишь файл.
  • Нет цитируемости: в ответе нет ни коммита, ни секции — проверить, откуда взято, можно только глазами.
  • Требует, чтобы агент умел искать по очень большому файлу: на слабой модели или без грепа это плечо деградирует.

skill - скилл fpf-core, установленный в окружении агента

SKILL.md + 398 файлов лежат как установленный скилл (~/.qwen/skills/fpf-core/), рабочая папка пуста, AGENTS.md — три строки ссылки. Проверено по журналу: 17 из 17 клеток вызвали инструмент skill и читали references/<ID>.md.

Плюсы

  • Механизм реальный, а не имитированный: скилл именно установлен, инструкция на него только ссылается.
  • Лучший результат на маршрутизации: 16/17, фактические семьи 12/12.
  • Роутер «ситуация → какие файлы грузить» работает: агент идёт по таблице, а не перебирает корпус.
  • В поставке 398 небольших файлов вместо одного монолита: паттерн обновляется точечно.

Минусы

  • Дороже монолита: 287 888 токенов на правильную клетку (+30 %), медиана 6 вызовов и 72 с против 4 вызовов и 24 с.
  • Требует отдельной загрузки скилла и поиска по его таблице; в тяжёлых клетках уходит в длинный перебор: G2 700 тыс. токенов, G1 395 тыс., F1 376 тыс.
  • Поставка сложнее: скилл надо установить в окружение (в прогоне — в HOME каждой клетки).
  • Роутер и references/ — ещё один формат, который надо держать в актуальном состоянии.

vibe - реальный проект vibevm с пакетом ai.lev/fpf-spec

Носитель уровня пакетного менеджера: AGENTS.md — сгенерированная boot-инструкция, которая велит прочитать STATIC.md (32 КБ) целиком, затем INDEX.md и всё, что тот перечисляет.

Плюсы

  • Корректность та же, что у остальных: 12/12 на фактических семьях, 15/15 оцениваемых клеток.
  • Версионирование и поставка на команду: пакет, зависимости, lock-файл — то, чего нет ни у монолита, ни у папки скилла.
  • Явный разрез «рабочий слой / источник»: теоретически дешевле читать (contract/ вместо source/), выигрыш измерим (24 442 против 77 139 токенов в одном чтении).

Минусы

  • Самый дорогой из файловых: 379 152 токена на правильную клетку, ×1,7 к монолиту, 44 % бюджета того прогона.
  • Boot-лейн заставляет читать файлы пакетно (105 read_file за 17 клеток против 33 у монолита), и всё прочитанное пересылается на каждом следующем запросе.
  • В дереве пакета мины: package.specmap.json — 1,86 млн токенов в одном чтении, corpus.json — 309 тыс., ENTRIES.md — 84 тыс.
  • Дисциплина boot-лейна на практике не соблюдается: STATIC.md читали 10 из 18 запусков.
  • Выигрыша в качестве нет, цена выше: смысл держать — версионирование и общая поставка, не удобство агента.

mcp - FPF Library по протоколу MCP (fpf.tools)

Публичный read-only сервис https://mcp.fpf.tools/mcp, 7 инструментов, без ключа. Рабочая папка пуста: корпус не доставляется вообще.

Плюсы

  • Единственный способ, где корпус не надо доставлять — агент приходит с пустой папкой, материал приходит по сети.
  • Всегда свежая редакция: сервис обновляется по пушам в ailev/FPF (за час наблюдения сменились три коммита).
  • Цитируемость: каждый ответ несёт коммит, путь, секцию, диапазон строк и снапшот — ответ проверяем, а не принимается на веру.
  • Корпус шире ядра: 856 паттернов, 40 публикаций (ядро + 33 DPF-фреймворка + гайды) — можно искать по всей библиотеке.
  • Только чтение и без ключа: нечего ставить, нечем испортить.

Минусы

  • Самый дорогой: 610 709 токенов на правильную клетку, ×2,7 к монолиту. С ростом бюджета дорожает нелинейно: аддендум при капе 28 — 874 тыс. токенов на клетку.
  • 10 запросов на клетку вместо 4; 8 % обращений отбито сервером (13 mcp_tool_error + 1 invalid_tool_params) — интерфейс инструментов приходится вписывать в инструкцию.
  • CLI режет вывод инструмента на 32 000 символов, поэтому агент дополнительно работает с собственными дампами: треть обращений — локальные (grep, shell, read_file, glob, write_file), 38 служебных чтений за прогон.
  • Редакцию нельзя заморозить: проверяемость есть, воспроизводимость — нет. В аддендуме каждая клетка читала материал двух разных коммитов, и страж по снапшоту это не поймал — поймал только разбор цитат.
  • Корректность на одну клетку ниже: 11/12. R4 — модель назвала соседа C.22.2 вместо C.22.PFR (с обоснованием, но карточка говорит обратное).
  • Ограничение «только ядро» self-enforcing не является: 11 из 17 клеток читали гайд USING-FPF.md вне ядра, несмотря на явный запрет в инструкции. Ограничение работает только как измеренная координата.
  • Зависимость от внешнего сервиса: лимиты неизвестны, сетевой сбой запросто превращается в «провал плеча».

Проходимость

семейство none mono skill vibe mcp
route 0/3 3/3 3/3 3/3 2/3
near_miss 0/3 3/3 3/3 3/3 3/3
section 0/6 6/6 6/6 6/6 6/6
fabrication н/п 3/3 3/3 3/3 2/3
gate н/п 2/2 1/2 нет данных 1/2
фактические семьи 0/12 12/12 12/12 12/12 11/12

Единственное семейство, где носители реально расходятся, — gate (умение отказаться от FPF там, где он избыточен): монолит 2/2, установленный скилл 1/2, у vibevm и MCP данных нет.

Цена

плечо всего токенов медиана на клетку запросов на клетку токенов на правильную клетку
none 893 940 48 688 3 —
mono 2 664 600 100 805 4 222 050
skill 3 454 653 131 964 6 287 888
vibe 4 549 827 270 967 8 379 152
mcp 6 717 803 385 748 10 610 709
1 лайк