Перейти к содержимому

Установите навык агента AFP в свой проект одной командой, затем позвольте агенту читать этот сайт как Markdown. Навык фиксирует то, что модель не может угадать сама: у AFP нет клиентского API, поэтому агент создаёт граф кампании, а не код; какие типы узлов холст может действительно добавить; и какие связи холст отклоняет. Каждая страница здесь также отдаётся как Markdown — добавьте .md к адресу любой страницы — и /llms.txt индексирует их все.

  • Агент, который загружает файлы инструкций из вашего проекта: директорию с навыками или файл правил, который он читает при запуске.
  • Кампания на холсте, в которой можно построить результат. Агент может описать граф; только холст может его сохранить. См. Построение кампании на холсте.

Скачайте навык с этого сайта в свой проект:

Окно терминала
mkdir -p .claude/skills/afp
curl -fsSL https://docs.afp.monster/skills/afp/SKILL.md -o .claude/skills/afp/SKILL.md

Этот путь — место, где Claude Code ищет навык проекта. Агент, который вместо этого читает единый файл правил или инструкций — так работают Cursor и большинство ассистентов в редакторах — берёт то же содержимое: скачайте его рядом с другими инструкциями агента и сошлитесь на него из файла, который загружает ваш инструмент при запуске.

Окно терминала
curl -fsSL https://docs.afp.monster/skills/afp/SKILL.md -o afp-skill.md

Закоммитьте файл, чтобы агент каждого участника работал по одним и тем же правилам. Поле version в начале файла фиксирует, какую поверхность AFP он описывает — скачайте заново, когда это значение изменится.

Навык содержит пять вещей: модель продукта, каждый тип узла, который холст может добавить, с его ключами настройки, правила связей, которые применяет холст, один полный граф как разобранный пример, и список типичных ошибок, которые модели делают про AFP.

Четыре поверхности, все сгенерированы из того же Markdown, что и сами страницы.

URLЧто содержитДля чего использовать
https://docs.afp.monster/llms.txtИндекс всех страниц с их описаниемЧтобы агент выбирал, что читать
https://docs.afp.monster/llms-full.txtПолный текст всех страниц в одном файлеЗагрузка всего продукта одним запросом
https://docs.afp.monster/llms-small.txtТот же текст со свёрнутыми пробеламиМеньшее контекстное окно
Любой URL страницы с добавленным .mdЭта страница в виде чистого MarkdownЧтение одной страницы без навигации

Правило .md действует для каждой страницы, так что агент может построить нужный адрес из текущего: /ru/reference/node-types становится /ru/reference/node-types.md.

Markdown-двойник содержит заголовок страницы, её описание и тело — без навигации, без боковой панели, без скриптов. Двойники отдаются как text/markdown, кросс-доменное чтение разрешено, и они помечены как не подлежащие индексации, чтобы никогда не конкурировать со страницами, которые отражают.

Добавьте к каждому адресу префикс https://docs.afp.monster.

СтраницаMarkdown-адрес
Начало работы/ru/start.md
Создание аккаунта/ru/start/create-your-account.md
Подключение страницы/ru/start/connect-a-page.md
Отправка первого автоответа/ru/start/first-auto-reply.md
Почему моя кампания не отвечает?/ru/start/troubleshooting.md
Построение кампании на холсте/ru/guides/build-a-campaign.md
Маршрутизация комментариев в ЛС/ru/guides/route-comments-to-dm.md
Тест и отладка кампании/ru/guides/test-and-debug-campaigns.md
Сопоставление комментариев со списками ключевых слов/ru/guides/keyword-lists.md
Сегментация контактов тегами/ru/guides/tags.md
Работа с контактами/ru/guides/contacts.md
Работа с перепиской во входящих/ru/guides/inbox.md
Модерация комментариев/ru/guides/comment-moderation.md
Массовое удаление комментариев клинером/ru/guides/cleaner.md
Управление подключёнными страницами/ru/guides/connected-pages.md
Управление профилями под одним аккаунтом/ru/guides/profiles-and-master-accounts.md
Тарифы и оплата/ru/guides/plans-and-billing.md
Заработок на партнёрской программе/ru/guides/referrals.md
Настройка уведомлений/ru/guides/notifications.md
Получение помощи/ru/guides/support-tickets.md
Использование AFP с ИИ-агентами для кода (эта страница)/ru/guides/ai-agent-skill.md
Типы узлов/ru/reference/node-types.md
События триггеров/ru/reference/trigger-events.md
Правила сопоставления ключевых слов/ru/reference/keyword-matching.md
Состояния выполнения/ru/reference/execution-states.md
Схема графа кампании/ru/reference/campaign-graph-schema.md
Поля контакта/ru/reference/contact-fields.md
Права доступа страницы и токены/ru/reference/page-permissions.md
Лимиты тарифа/ru/reference/plans-and-quotas.md
Жизненный цикл подписки/ru/reference/subscription-lifecycle.md
Каталог уведомлений/ru/reference/notifications.md
Глоссарий/ru/reference/glossary.md
Сравнение AFP с альтернативами/ru/compare.md
AFP против ManyChat/ru/compare/afp-vs-manychat.md
AFP против Chatfuel/ru/compare/afp-vs-chatfuel.md
AFP против встроенной автоматизации Meta/ru/compare/afp-vs-meta-automations.md
Журнал изменений/ru/changelog.md (скоро)

Агент без доступа к сети работает с теми же файлами офлайн: один раз загрузите /llms-full.txt и закоммитьте его рядом с навыком.

Какие паттерны графа кампании должен использовать агент?

Заголовок раздела «Какие паттерны графа кампании должен использовать агент?»

Три формы покрывают большинство того, что люди просят агента спроектировать. Каждая удовлетворяет правилам холста, так что её можно построить узел за узлом.

ПаттернПорядок узловКогда использовать
Ключевое слово в комментарии → ЛСtrigger_commentconditionreply_commentsend_dmstopПост просит людей прокомментировать слово, чтобы что-то получить
Ответ и квалификацияtrigger_dmconditionsend_dmconditionadd_tagsend_dmstopВходящее ЛС нуждается в ответе и одном уточняющем вопросе
Модерация и ответtrigger_commentconditionhide_comment на Match, reply_comment на No MatchНежелательные комментарии скрываются, а на всё остальное даётся публичный ответ

Агент, описывающий граф, должен называть тип и ключи настройки каждого узла и исходный выход каждой связи. Это те же имена, что использует сохранённый граф — связи несут from_node_id, to_node_id и output_index — так что описанный граф и сохранённый можно сравнить поле за полем. Полную форму даёт Схема графа кампании.

trigger_commentpost_scope allconditionkeyword_listreply_commentsend_dmstopstop Match, output 0 No Match, output 1

Публичный reply_comment перед send_dm сделан намеренно: он говорит комментатору проверить сообщения, а другие читатели видят, что страница отвечает. Установите match_type условия на keyword_list и укажите идентификатор сохранённого списка; совпадающие сообщения покидают выход 0, а всё остальное — выход 1.

trigger_dmconditionmatch_type anysend_dmзадаёт вопросconditionmatch_type containswait_for_replyadd_tagsend_dmstopsend_dmзапасной вариантstop output 0 Match, output 0 No Match, output 1

condition с установленным wait_for_reply паркует выполнение на этом узле, пока человек не ответит, и ответ затем сопоставляется так же, как первое сообщение — включая подпись кнопки, на которую он нажал. Обеим веткам нужны собственные хвостовые узлы, потому что узел принимает одну входящую связь, и две ветки не могут слиться.

condition с match_type: any совпадает со всем и имеет один выход: холст убирает его выход No Match и удаляет любую связь, что из него выходила. Агент, рисующий ветку No Match от условия any, описывает граф, который холст не сохранит.

trigger_commentconditionkeyword_listhide_commentstopreply_commentstop Match, output 0 No Match, output 1

Действиям с комментарием нужен комментарий, на который можно действовать, так что этот паттерн работает только под trigger_comment. Поместите нежелательные слова в список ключевых слов и скройте ветку Match, или установите reverse_keywords на условии, чтобы ветку Match вместо этого брало всё, что список не совпадает.

Чему должен удовлетворять каждый сгенерированный граф

Заголовок раздела «Чему должен удовлетворять каждый сгенерированный граф»
  1. Один триггер, и это единственный узел без входящей связи. У каждого другого узла она есть, иначе активация не пройдёт.
  2. Триггер подключается только к condition, и condition никогда не подключается к другому condition.
  3. Каждый узел принимает одну входящую связь, и каждый выходной разъём несёт одну исходящую связь.
  4. Никаких циклов. Выполнение, которое достигает узла, уже посещённого, завершается ошибкой цикла.
  5. Действия с комментарием недоступны, когда триггер — trigger_dm, а reply_comment и hide_comment отклоняются после delete_comment.
  6. На condition выход 0 — это Match, а выход 1 — No Match.

Схема графа кампании даёт точные имена полей и полный граф в JSON; Типы узлов даёт каждый ключ настройки, который может написать агент.

Что предполагают моделиЧто на самом деле делает AFPЧто вместо этого даёт навык модели
Есть REST API для создания кампанийКлиентского API нет. Кампании создаются на холсте и сохраняются из негоИнструкцию сказать это, а не писать запрос к придуманному эндпоинту
Триггер может идти прямо в send_dmТриггер подключается только к conditionПравила связей, где это названо самым частым невалидным графом
Можно использовать любой тип узла из рантаймаПанель настроек есть только у типов из палитры, поэтому настроить можно только ихСписок палитры, плюс имена типов, которые нельзя использовать никогда
Две ветки могут слиться обратно в один узелУзел принимает одну входящую связьПравило дублировать хвост вместо слияния
Ключевые слова вводятся прямо в условиеУсловие сопоставляет свой text, или ссылается по идентификатору на отдельно сохранённый список ключевых словЧетыре типа сопоставления и то, какой ключ читает каждый из них
Лимит кампаний или страниц в тарифе — фиксированное числоЛимиты берутся из тарифа аккаунтаИнструкцию никогда не называть число лимита
ЛС можно отправить кому угодно в любое времяПервое ЛС отвечает на событие, запустившее выполнение; более поздние сообщения достигают аккаунта человека, как только он ответилЗаметку о том, что действуют окна обмена сообщениями платформы, и AFP их не отменяет
Сохранение делает кампанию активной, а редактирование меняет выполнения в процессеСохранение записывает новую версию, а активация — отдельное действие; выполнение остаётся на версии, на которой оно началосьОба правила, рядом с моделью
Это конструктор чат-ботов, так что подходят “flow” и “bot”Словарь — это кампания, узел, условие, выполнениеЭтот словарь, используемый повсюду

Ещё два предположения навык не может исправить сам, потому что они проявляются только при запуске графа:

  • send_comment нуждается в собственном post_id. Он не откатывается к посту, на котором сработал триггер, и без него ничего не делает, когда выполнение доходит до него.
  • Один человек не может иметь два выполнения одной кампании одновременно. Пока его выполнение активно, второе совпадающее событие от него пропускается, так что дополнительное сообщение должно стоять за delay внутри того же графа, а не полагаться на второе событие от того же человека.

Как проверить граф, который дал мне агент?

Заголовок раздела «Как проверить граф, который дал мне агент?»
  1. Постройте его на холсте. Холст проверяет по ходу перетаскивания, так что граф, который нельзя построить, падает на первой плохой связи, а не после сохранения.
  2. Исправьте любой узел, который холст помечает. Кнопка Сохранить кампанию (Save campaign) остаётся недоступной, пока у узла есть ошибка настройки.
  3. Сохраните, затем запустите тестовое выполнение. Оно проходит по сохранённому графу и записывает, что сделал бы каждый узел, не отправляя сообщений никому, не трогая комментарий и не меняя теги контакта. См. Тест и отладка кампании.
  4. Включите кампанию только после того, как тестовый путь совпадёт с описанием агента.

Почему агент всё ещё выдаёт граф, который холст отклоняет?

Заголовок раздела «Почему агент всё ещё выдаёт граф, который холст отклоняет?»
СимптомПричинаИсправление
Агент пишет код, который отправляет запрос к эндпоинту AFPНавык не загружен в этой сессииУбедитесь, что файл там, где агент ищет инструкции, затем начните новую сессию
Граф подключает триггер прямо к действиюАгент проектирует по общим знаниям о чат-ботахПопросите его заново сформулировать правила связей перед тем, как снова предложить граф
Граф использует тип узла без панели настроекСписок узлов взят не из навыкаЗамените его: condition покрывает ветвление, delay покрывает ожидание
Агент называет число лимита кампаний или страницЛимиты — это настройка тарифа, а не фиксированные значенияУберите число и вместо него дайте ссылку на Лимиты тарифа
Две ветки заканчиваются в одном узлеСлияние хорошо смотрится на диаграмме, но холст его отклоняетПродублируйте хвостовые узлы на каждой ветке
Описанные поля не существуют в панели настроекНавык устарел относительно изменения поверхностиСкачайте файл заново и сравните поле version
Таблицы с сайта возвращаются искажёнными, или ничего не было загруженоАгент прочитал HTML-страницу, или у него нет доступа к сетиДайте ему адрес .md или /llms-full.txt, либо сохраните эти файлы в репозиторий рядом с навыком