# Задачи для агента (/ru/docs/wa/recipes)

Используйте эту страницу, если вы хотите, чтобы ваш AI-агент (например, Claude Code, Codex, Cursor или Gemini CLI) выполнял регулярную работу с вашим WhatsApp: утреннюю сводку, отчет по чату, кто что должен, на что вы не ответили. Каждый рецепт дает вам запрос на копирование, команды, которые может выполнять агент, и пишет ли он что-нибудь в WhatsApp. В конце концов, вы можете запускать агент по расписанию, с ограничениями, которые он не может обойти.

Условия на этой странице:

* **Агент** — программа искусственного интеллекта, которая выполняет за вас команды на вашем компьютере.
* **Skill** — файл, который сообщает агенту, как использовать `wa`. `wa skill install`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-skill-install "Справочник команды: wa skill install") помещает его туда, где его ищет агент.
* **Клиент MCP** — приложение ИИ без терминала, например Claude Desktop. Он достигает `wa` через сервер MCP.
  `wa personal mcp` вместо запуска команд.
* **Безголовый режим** — агент принимает один запрос, выполняет его и выходит без разговора. Claude Код называет это
  режим `-p`; Кодекс называет его `codex exec`.
* **cron** — планировщик, встроенный в Linux и macOS. Он запускает команду в установленное время.

## Что делают рецепты [#что-делают-рецепты]

Каждый приведенный ниже рецепт считывает локальное хранилище, которую `wa personal serve` сохраняет с вашего телефона. Чтения никогда не подключаются к WhatsApp, поэтому они выполняются рядом с `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve").

| Рецепт | Пишет в WhatsApp | Соответствует графику |
| --- | --- | --- |
| [Утреннее резюме](#morning-summary) | нет | да |
| [Еженедельный отчет по чату](#weekly-report-on-a-chat) | нет | да |
| [Кто что должен](#who-owes-what) | нет | да |
| [На что вы не ответили](#what-you-have-not-answered) | нет | да |
| [Найдите то, что было сказано](#find-something-that-was-said) | нет | да |
| [Проект ответа](#draft-a-reply) | только после твоего «да» | нет |

## Однажды, сначала [#однажды-сначала]

1. Установите `wa` и свяжите его: см. [установка](/llms.mdx/docs/ru/wa/installation/content.md) и [связывание](/llms.mdx/docs/ru/wa/sessions/content.md).
2. Оставьте локальное хранилище заполненной: `wa personal server install`, затем `wa personal server start`. `wa personal server status` говорит, работает ли он.
3. Дайте агенту навык:

   ```sh
   wa skill install
   ```

   Навык находится в папках Claude Code (`~/.claude/skills/whatsapp-cli/`) и Codex и Gemini CLI (`~/.agents/skills/whatsapp-cli/`). `wa skill show`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-skill-show "Справочник команды: wa skill show") печатает тот же текст, если ваш агент хранит навыки где-то еще.
4. Сохраните приведенные ниже запросы в файлы, например в `~/wa-recipes/`. Команды расписания читают запрос из файла.

Клиенту MCP не нужны навыки. Подключите сервер MCP (`wa personal mcp config` распечатает запись его настроек); см. [сервер MCP](/llms.mdx/docs/ru/wa/mcp/content.md).

## Что может делать агент [#что-может-делать-агент]

Агент по расписанию работает без вас, поэтому лимиты ставьте в настройках, а не в запросе. Агент может неправильно прочитать фразу «ничего не отправлять». Он не может обойти настройку, которую нельзя изменить.

**Ограничить возможности запуска агента.** Это настройка агента. Например, Claude Code в режиме `-p` выполняет только команды из `--allowedTools`. Если в списке нет `wa personal messages send`, агент не сможет его вызвать:

```sh
claude -p "$(cat ~/wa-recipes/morning.md)" --allowedTools "Bash(wa personal inbox:*)"
```

**Ограничьте возможности профиля.** Это работает для каждого агента:

```sh
wa personal config set permissions.messages readonly
wa personal config set permissions.reactions readonly
wa personal config set permissions.polls readonly
wa personal config set permissions.chats readonly
wa personal config show                     # check the permissions in force
wa personal config set sends_per_hour 5     # or: at most five sends an hour
wa personal recipients add 100000000000001@lid   # and only to the chats on this list
```

`readonly` на одном ресурсе не распространяется на остальные: `messages`[↗](/llms.mdx/docs/ru/wa/commands-personal/content.md#wa-messages "Справочник команды: wa messages") сам по себе позволяет агенту реагировать или отмечать чат как прочитанный. `recipients add`[↗](/llms.mdx/docs/ru/wa/commands-personal/content.md#wa-recipients-add "Справочник команды: wa recipients add") просматривает чат в WhatsApp и подключается; пока `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve") работает, он работает внутри `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve") при его подключении. `permissions` также ограничивает ваши собственные команды, пока вы не измените их обратно: `wa personal config unset permissions.messages`. Чтобы ограничить только агента, дайте ему собственный профиль. Все попытки отправки, включая отклоненные, записываются в `wa personal sends list`. См. [разрешения](/llms.mdx/docs/ru/wa/permissions/content.md).

**Никогда массово и никогда незнакомцам.** WhatsApp блокирует учетные записи, которые отправляют сообщения множеству людей одновременно или на номера, которые им никогда не писали. Ни один рецепт здесь не отправляется сам по себе.

**Чтение ничего не дает.** Ни одна команда в рецептах ниже не отмечает прочитанное: никто не увидит, что агент открыл чат. Только `chats mark-read`[↗](/llms.mdx/docs/ru/wa/commands-personal/content.md#wa-chats-mark-read "Справочник команды: wa chats mark-read") отправляет уведомление о прочтении.

## Работа по расписанию [#работа-по-расписанию]

* **Запланированные задачи Claude Desktop.** Задача запускается на вашем компьютере, поэтому у нее есть `wa` и ваш хранилище. См. [Запланированные задачи Claudeа](https://code.claude.com/docs/en/desktop-scheduled-tasks).

* **cron и `claude -p`.** Приложение не требуется, на любом компьютере, который включен в данный момент:

  ```cron
  30 8 * * * claude -p "$(cat ~/wa-recipes/morning.md)" --allowedTools "Bash(wa personal inbox:*)" >> ~/wa-recipes/morning.log 2>&1
  ```

  cron запускает задания с почти пустой средой. Если узел создан из nvm, fnm или Volta, его нет в cron `PATH`, и задание завершается с ошибкой `node: not found`, код выхода 127. Поместите папку `which node` вверху `crontab -e`:

  ```cron
  PATH=/home/you/.nvm/versions/node/v24.0.0/bin:/usr/local/bin:/usr/bin:/bin
  ```

  Запустите первое задание вручную и прочитайте журнал. См. [Безголовый режим Claudeа](https://code.claude.com/docs/en/headless).

* **cron и `codex exec`.** То же самое для Кодекса. Его песочница по умолчанию закрывает записи файлов, а `wa` записывает свои записи выполнения и сохраненную точку `--new`:

  ```cron
  30 8 * * * codex exec --sandbox danger-full-access "$(cat ~/wa-recipes/morning.md)" >> ~/wa-recipes/morning.log 2>&1
  ```

* **Внутри открытого сеанса Claude Code**: `/loop` или «Напомни мне в 15:00». Это работает, пока сессия открыта.

Облачные процедуры Claudeа не подходят: они запускаются на другом компьютере, где нет ни `wa`, ни вашего хранилища.

## Утренний обзор [#утренний-обзор]

Меняет данные в WhatsApp: **нет**. Разрешить: `Bash(wa personal inbox:*)`.

> Запустите `wa personal inbox --new --json`. Группируйте сообщения по чату. Для каждого чата одна строка: кто и что пишет
> хочу. Поставьте на первое место то, что требует ответа сегодня.

`--new` показывает каждое сообщение один раз. `wa` запоминает, где он остановился в каждом чате, и следующий запуск начинается там.

### С каких пор это "новое" [#с-каких-пор-это-новое]

* `wa personal inbox` — непрочитанные сообщения других людей.
* `wa personal inbox --new` — с момента последнего запуска `--new`. Только `wa` знает эту точку; никто больше этого не видит.
* `wa personal inbox 'date>2d'` — последние два дня; сохраненная точка остается там, где она была.

Никто из них не отмечает ничего прочитанным. `kind:dialog` поддерживает индивидуальные чаты, `kind:group` группы.

## Еженедельный отчет по чату [#еженедельный-отчет-по-чату]

Пишет в WhatsApp: **нет**. Разрешить: `Bash(wa personal messages list:*)`.

> Читайте последние 7 дней группы `120363000000000001@g.us`:
> `wa personal messages list 120363000000000001@g.us "date>7d" --limit 200 --json`. Если в ответе есть `page.next`
> шаг, следуй за ним. Напишите отчет: что решено, кто, что и когда взял на себя, какие вопросы еще открыты.
> Укажите каждому пункту дату и автора.

В хранилище хранится то, что телефон отправил, когда подключился `wa`, и то, что `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve") получил с тех пор. Более старой версии нет, пока `wa personal messages sync 120363000000000001@g.us` не запросит ее у телефона ([старая история](/llms.mdx/docs/ru/wa/archive/content.md#older-history-from-your-phone)).

## Кто что должен [#кто-что-должен]

Пишет в WhatsApp: **нет**. Разрешить: `Bash(wa personal review:*)`, `Bash(wa personal messages context:*)`, `Bash(wa personal search messages:*)`.

> Запуск `wa personal review --new --json` (первый раз, последние 3 дня; затем с последнего `--new`, по баллу за каждый
> чат). Разложите его на три списка: что я должен, чего жду от других, что требует уточнения. Дайте каждому баллу
> это чат, дата и идентификаторы сообщений, на которых он основан. Если в ответе написано `"complete": false`, скажите мне, чего не хватает.

`review`[↗](/llms.mdx/docs/ru/wa/commands-personal/content.md#wa-review "Справочник команды: wa review") и `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve") также хранят список задач: `wa personal tasks list state:open` показывает, что вас ждет ([группы](/llms.mdx/docs/ru/wa/groups/content.md#what-waits-on-you)).

## Что ты не ответил [#что-ты-не-ответил]

Пишет в WhatsApp: **нет**. Разрешить: `Bash(wa personal review:*)`.

> Запустите `wa personal review 'date>7d' --unanswered --json`. Показать вопросы, на которые никто не ответил: кто задавал, в каких
> чат, и как давно.

## Найдите то, что было сказано [#найдите-то-что-было-сказано]

Пишет в WhatsApp: **нет**. Разрешить: `Bash(wa personal search messages:*)`, `Bash(wa personal messages context:*)`.

> Найдите «счет-фактуру» с помощью `wa personal search messages invoice --json`. Для каждого попадания читайте
> `wa personal messages context <locator> --json` и скажи мне, кто что сказал и когда.

Поиск читает только локальное хранилище. См. [поиск](/llms.mdx/docs/ru/wa/search/content.md).

## Составьте ответ [#составьте-ответ]

Пишет в WhatsApp: **только после вашего да**. Это для разговора с агентом, а не для расписания.> Прочитайте последние 20 сообщений чата `100000000000001@lid` и предложите ответ на свой последний вопрос. Не

> отправь — покажи мне текст.

Как только вы согласитесь, агент отправит его: `wa personal messages send 100000000000001@lid "…"`. Пока работает `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve"), отправка осуществляется через соединение `serve`[↗](/llms.mdx/docs/ru/wa/commands-setup/content.md#wa-serve "Справочник команды: wa serve") ([одно соединение на устройство](/llms.mdx/docs/ru/wa/sessions/content.md#one-connection-per-device)); там он не может спрашивать, поэтому на уровне разрешений `ask` ему нужен `--yes`. Клиент MCP спрашивает вас перед каждой записью, если вы не оставите в нем `wa_write` неутвержденным.
