Навыки Turbo Notify Agent
Навыки, которые помогают использовать MCP-сервер Turbo Notify в вашем AI-агенте: Claude Code, Claude Desktop и Cowork, Codex, CLI Antigravity и любом другом агенте, который поддерживает формат Agent Skills.
Навыки
| Навык | Назначение |
|---|---|
virtual-attendant | Обслуживает клиентов компании в WhatsApp: отвечает на языке клиента, запоминает каждого клиента, при необходимости связывает его с человеком, а также принимает команды администраторов и операторов прямо в WhatsApp. |
Руководства для клиентов на португальском и английском языках: Виртуальный оператор WhatsApp
и Agent Skills.
Установка
| Агент | Команды |
|---|---|
| Claude Code | claude plugin marketplace add turbo-notify/agent-skills#v1 then claude plugin install turbo-notify@turbo-notify |
| Claude Desktop and Cowork | Customize, Plugins, Add, Add marketplace, Add from a repository: turbo-notify/agent-skills; then Discover, turbo-notify, Add |
| Codex | codex plugin marketplace add turbo-notify/agent-skills --ref v1 then codex plugin add turbo-notify@turbo-notify |
| Antigravity | agy plugin install https://github.com/turbo-notify/agent-skills |
| Hermes Agent | hermes skills install turbo-notify/agent-skills/skills/virtual-attendant, then add the MCP server https://mcp.turbonotify.com in Hermes |
| Другие агенты, поддерживающие формат Agent Skills (OpenCode, Cursor, Copilot и другие) | npx skills add turbo-notify/agent-skills, then add the MCP server https://mcp.turbonotify.com in that agent's own settings |
Режим автоматической работы доступен только в Claude Code и Codex. В остальных агентах оператор работает в режиме с подтверждением: сессия остаётся открытой, а человек подтверждает каждый подготовленный ответ.
#v1 и --ref v1 фиксируют версию на ветке 1.x: несовместимое обновление не установится автоматически.
В строках таблицы плагинов выше уже указан MCP-сервер Turbo Notify (https://mcp.turbonotify.com), поэтому добавлять его отдельно не нужно. При первом использовании агент предложит войти в аккаунт Turbo Notify (Claude Code: /mcp; Codex: codex mcp login turbo-notify; Antigravity: Agent settings, Customizations, Authenticate рядом с сервером), после чего попросите его «настроить виртуального оператора Turbo Notify». Ещё нет аккаунта? Создайте его на странице https://dashboard.turbonotify.com/auth/signup?locale=en. Для автоматической работы без участия человека используйте API key (см. руководство для вашего агента в skills/virtual-attendant/references/).
Обновление
При каждом цикле навык проверяет свою версию и сообщает администраторам о выходе новой, указывая команду для используемого агента.
| Агент | Команда |
|---|---|
| Claude Code | claude plugin marketplace update turbo-notify then claude plugin update turbo-notify@turbo-notify |
| Claude Desktop and Cowork | Marketplace синхронизируется с репозиторием. Если новая версия не появилась, удалите marketplace и добавьте его снова |
| Codex | codex plugin marketplace upgrade then codex plugin add turbo-notify@turbo-notify |
| Antigravity | Повторно выполните команду установки |
К чему обращается навык
-
К MCP-серверу Turbo Notify по адресу
https://mcp.turbonotify.com, который плагин объявляет в файлах.mcp.json,mcp.jsonиmcp_config.json(по одному файлу для каждого семейства агентов; ни в одном из них нет API key или заголовка). Войдите в свой аккаунт или подключитесь с помощью собственного API key. Сервер работает с разрешениями вашего аккаунта или API key. -
К одной папке на вашем компьютере — по умолчанию
~/.turbo-notify/attendant. Для каждого клиента в ней хранятся переписка (по умолчанию — 90 дней, после чего она удаляется), краткие сводки старых сообщений и файл с фактами, которые сообщил клиент (имя, предпочтения, запросы), а также сведения, которым вы обучили навык. Turbo Notify не получает копии этих данных. Команда/forgetудаляет данные одного клиента, а срок хранения можно изменить вmemory-policy.json. -
К API Turbo Notify по адресу
https://api.turbonotify.com. Вспомогательный скрипт обращается к нему с вашим API key, когда исполнитель автоматического режима или команда консоли отправляет сообщение. -
Ещё к одному сетевому адресу, помимо Turbo Notify:
raw.githubusercontent.com/turbo-notify/agent-skills/main/latest.json. Он проверяется примерно раз в час (а после неудачной проверки — ещё раз через 10 минут) для определения новой версии. Если проверка не удаётся, это ни на что не влияет. -
К другим вашим MCP-серверам — только если вы разрешите доступ к каждому из них во время настройки.
Что запускается и какие данные передаются
-
Вспомогательный скрипт
tn_assistзапускается с помощьюpython3. Он использует только стандартную библиотеку и ничего не устанавливает. -
В режиме автоматической работы (Claude Code и Codex) для каждого клиента запускается ваша команда
claudeилиcodexв отдельном процессе без инструментов, чтобы подготовить ответ этому клиенту. Процесс получает сообщения клиента, его файл и подходящие к сообщению сведения о компании (файлы с информацией о компании, тоне общения и передаче диалога человеку, а также до трёх дополнительных файлов, выбранных по словам из сообщения) — и ничего больше. -
Текст сообщения клиента передаётся модели используемого вами агента и обрабатывается в рамках вашего аккаунта у этого агента. Больше он никуда не передаётся.
-
Исполнитель автоматического режима считывает ваш API key из заданной для него переменной
TURBO_NOTIFY_API_KEYи отправляет его только наapi.turbonotify.comдля аутентификации каждого запроса. Процессу, который составляет ответ клиенту, ключ не передаётся. -
Ответы отправляются написавшему клиенту через API Turbo Notify с использованием вашего API key. Перед каждой отправкой выполняется проверка, которая не позволяет передать номер или имя другого клиента, непубличный текст или учётные данные.
-
В первом ответе в каждом чате клиенту сообщается, что отвечает AI. Эту строку добавляет вспомогательный скрипт, а не модель.
-
Если клиент только благодарит, пишет «ок» или отправляет палец вверх, ответ не отправляется, и диалог не передаётся человеку. Модель должна запросить передачу диалога, а вспомогательный скрипт подтверждает её только в том случае, если сообщение содержит исключительно благодарность или подтверждение: без вопросительного знака и цифр, и состоит из нескольких слов из заданного списка. На любое другое сообщение клиент получает ответ или его запрос передаётся человеку.
-
Диалог передаётся человеку, если ответа нет в материалах, которым вы обучили навык (например, информации о цене, наличии, сроках, обещаниях или правилах); если клиент просит связать его с человеком или выражает недовольство; если запрос не относится к деятельности компании; если речь идёт о проблеме с оплатой, возврате или обмене, жалобе или юридическом вопросе; либо если клиент просит ассистента письменно что-либо пообещать или подтвердить. На обычный вопрос о прописанном вами правиле, например о сроке обмена, навык отвечает самостоятельно.
-
Если ответ модели невозможно прочитать, вспомогательный скрипт один раз повторяет запрос и указывает, что именно пошло не так. Если ошибка повторится, клиент получает сообщение о том, что дальше с ним продолжит общаться человек.
Структура проекта
.claude-plugin/ plugin and marketplace manifests (Claude Code, Codex)
plugin.json manifest for Antigravity
.mcp.json the Turbo Notify MCP server, as Claude Code, Claude Desktop, Cowork and Codex read it
mcp.json the same server, as the Agent Plugins format reads it (Copilot, Cursor)
mcp_config.json the same server, as Antigravity reads it
assets/icon.png the plugin icon
agents/ the tool-less agent that answers a customer
skills/virtual-attendant/
SKILL.md the entry point the agent reads
references/ one short file per topic (setup, tick, console, memory, privacy, ...)
assets/templates/ interview templates (pt, en) and the memory policy
scripts/tn_assist/ the helper: routing, memory, egress check, runner (Python 3.9+, no dependencies)
tools/release.py version consistency check and sync
tests/ unit, property and security tests (Poetry, development only)
evals/attendant/ live evaluation of a customer's turn on a real model, with a made-up shop
Вспомогательный скрипт обеспечивает гарантии, на которые нельзя полагаться от модели: код определяет клиента по зарегистрированному номеру, обработка каждого сообщения проходит без инструментов, каждый ответ перед отправкой проходит проверку исходящих данных, а информация не покидает папку рабочего пространства.
Разработка
poetry install
poetry run pytest
poetry run ruff check . && poetry run ruff format --check .
poetry run mypy
python3 tools/release.py check
Для live-оценки понадобится ваша собственная команда claude с выполненным входом в систему. Она задаёт 40 вопросов, на которые база знаний не может ответить, и 11 вопросов, на которые может, а также проигрывает семь диалогов. Некоторые из них заканчиваются благодарностью, на которую отвечать не нужно. Для каждого ответа проверяется, не содержит ли он цену, дату, время, количество, скидку или обещание, отсутствующие в базе знаний, а также соответствует ли он нужному языку. Кроме того, проверяется, что благодарность остаётся без ответа, а на «ок», которое на самом деле является вопросом, даётся ответ. Ещё две проверки обрезают ответ модели наполовину, чтобы проверить, как runner обрабатывает нечитаемый ответ, и отправляют «ок» после предложения («хотите, чтобы я кого-нибудь позвал?»), чтобы убедиться, что на него отвечают. Все данные в этих проверках вымышлены.
poetry run python -m evals.attendant run # сохраняет результаты в evals/attendant/results/<date>-<label>/
poetry run python -m evals.attendant run --set refusal # только проверка нечитаемого ответа
poetry run python -m evals.attendant run --set offers # только проверка ответа «ок», принимающего предложение
TN_EVALS_LIVE=1 poetry run pytest evals # те же проверки в виде тестов (в противном случае пропускаются)
При выпуске версии одновременно обновите VERSION, latest.json, три манифеста, версии вспомогательного модуля и pyproject, а также CHANGELOG.md (tools/release.py sync), затем переместите тег v1.
Лицензия
MIT. См. LICENSE.