# Визуальные инструменты, которые LLM может вызвать
Инструменты Claude Code, которые LLM (ассистент) сама вызывает и которые визуально отображаются пользователю в терминале / IDE. Их можно явно попросить использовать в инструкциях.
> **Примечание о диаграммах:** точные скриншоты CLI в публичной документации почти не встречаются. ASCII-мокапы ниже — это реконструкция на основе описаний из документации Claude Code и поведения инструментов. Реальные рамки и цвета могут немного отличаться, но структура и расположение блоков соответствуют действительности.
## 1. AskUserQuestion
- **Что показывает:** диалог с 2–4 вариантами ответа (single/multi-select), у каждого варианта может быть описание и preview-мокап рядом.
- **Где появляется:** inline в conversation. Блокирует выполнение до ответа пользователя.
- **Как попросить:** «Используй AskUserQuestion с вариантами …».
```
┌─ Auth method ──────────────────────────────────────────────┐
│ Which authentication method should we use? │
│ │
│ > 1. OAuth 2.0 │
│ Industry standard, supports SSO providers │
│ 2. JWT tokens │
│ Stateless, easy to scale │
│ 3. Session cookies │
│ Simple, server-side state │
│ 4. Other │
│ │
│ ↑/↓ to navigate, Enter to select, Esc to cancel │
└─────────────────────────────────────────────────────────────┘
```
Для multi-select добавляется указание «select multiple» и пробел переключает галочки `[x]`.
## 2. ExitPlanMode
- **Что показывает:** окно с планом и кнопкой одобрения («Approve / Revise»).
- **Где появляется:** overlay внизу экрана. Блокирует дальнейшие действия до ответа.
- **Как попросить:** «Сначала войди в plan mode, составь план, потом вызови ExitPlanMode для моего одобрения».
```
╭─ Ready to code? ───────────────────────────────────────────╮
│ │
│ Here is Claude's plan: │
│ │
│ 1. Create migrations/ directory and init Alembic │
│ 2. Write initial schema migration │
│ 3. Update SQLAlchemy models with relations │
│ 4. Add seed data script in scripts/seed.py │
│ 5. Run tests end-to-end │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ ❯ 1. Yes, and auto-accept edits │
│ 2. Yes, and manually approve edits │
│ 3. No, keep planning │
│ │
╰─────────────────────────────────────────────────────────────╯
```
## 3. TaskCreate / TaskUpdate / TaskList
- **Что показывает:** live-список задач (todo) со статусами `pending` / `in_progress` / `completed`.
- **Где появляется:** inline в conversation, обновляется в реальном времени каждый раз, когда LLM меняет статус задачи.
- **Как попросить:** «Веди прогресс через TaskCreate/TaskUpdate, отмечай задачи completed по мере выполнения».
```
⏺ Update Todos
⎿ ☒ Generate migrations
☒ Update SQLAlchemy models
☐ Add seed data script ← in_progress
☐ Run integration tests
☐ Open pull request
```
Обозначения:
- `☒` — completed (зачёркнутый текст)
- `☐` со стрелкой «← in_progress» — текущая активная задача
- `☐` без пометки — pending
## 4. PushNotification
- **Что показывает:** системное desktop-уведомление (macOS Notification Center / Linux notify-send / Windows toast).
- **Где появляется:** ВНЕ терминала, в области уведомлений ОС. Также может приходить на мобильный через Remote Control.
- **Как попросить:** «Когда закончишь, вызови PushNotification с title и message».
```
╔══════════════════════════════════════╗
║ ▶ Claude Code now ✕ ║
╟──────────────────────────────────────╢
║ ║
║ Build finished ║
║ All tests passed (124/124) ║
║ ║
╚══════════════════════════════════════╝
↑ macOS-style toast в правом
верхнем углу экрана
```
## 5. Monitor
- **Что показывает:** live-стрим строк из фонового процесса. Каждая новая строка становится событием, на которое LLM реагирует немедленно.
- **Где появляется:** inline в conversation, как streaming-вывод.
- **Как попросить:** «Запусти Monitor на `tail -f app.log` и реагируй на ERROR».
```
⏺ Monitor(tail -f logs/app.log)
⎿ [10:45:23] webpack: compiling...
[10:45:28] ✓ Compiled successfully
[10:45:29] webpack: watching for changes...
[10:45:45] Starting test suite...
[10:45:52] ✗ FAIL auth.test.ts:45 Timeout
[10:45:52] ✗ FAIL api.test.ts:78 AssertionError
─────────────────────────────────────────────────
⚠ Pattern matched: "✗ FAIL" — interrupting Monitor
⏺ I see two test failures. Let me investigate auth.test.ts first…
```
LLM получает каждую строку как event и может прервать Monitor при срабатывании паттерна.
## 6. ScheduleWakeup (в /loop dynamic mode)
- **Что показывает:** в footer одна строка с временем следующего срабатывания и причиной (`reason`).
- **Где появляется:** в конце итерации `/loop`, до момента следующего пробуждения.
- **Как попросить:** используется автоматически в `/loop`, но можно сказать «запланируй пробуждение через 30 минут с причиной …».
```
─────────────────────────────────────────────────────────────
⏰ Loop sleeping for 20 min (watching CI run on PR #446)
Next wakeup: 2026-05-28 15:47:30
Press Esc to cancel the loop
─────────────────────────────────────────────────────────────
```
## 7. CronCreate / CronList / CronDelete
- **Что показывает:** inline подтверждение создания/удаления + табличный список активных cron-задач сессии.
- **Где появляется:** inline в conversation.
- **Как попросить:** «Создай cron для проверки каждые N минут».
```
⏺ CronCreate(*/5 * * * *, "check deploy status")
⎿ ✓ Scheduled: job-abc123
Next run: 2026-05-28 15:30:00
⏺ CronList()
⎿ ┌──────────┬──────────────┬────────────────────┬─────────┐
│ ID │ Schedule │ Prompt │ Status │
├──────────┼──────────────┼────────────────────┼─────────┤
│ abc123 │ */5 * * * * │ check deploy … │ active │
│ def456 │ 0 9 * * 1-5 │ review PRs … │ active │
│ ghi789 │ 0 0 * * * │ nightly cleanup │ active │
└──────────┴──────────────┴────────────────────┴─────────┘
3 active jobs (max 50 per session)
```
## 8. RemoteTrigger
- **Что показывает:** inline подтверждение создания routine на claude.ai + ссылка.
- **Где появляется:** inline в conversation. Сам routine виден в облачном UI на claude.ai/routines.
- **Как попросить:** обычно через `/schedule`, но можно напрямую.
```
⏺ RemoteTrigger(name="daily-pr-review", cron="0 9 * * *")
⎿ ✓ Routine created: daily-pr-review
Schedule: every day at 09:00
Runs on: Anthropic-managed infrastructure
Link: https://claude.ai/routines/daily-pr-review
Routine will run even when your machine is off.
```
## 9. EnterWorktree / ExitWorktree
- **Что показывает:** inline сообщение о переключении + индикатор worktree в statusline (если настроен).
- **Где появляется:** inline + footer.
- **Как попросить:** «Создай worktree для этой задачи через EnterWorktree».
```
⏺ EnterWorktree(name="feature-auth")
⎿ ✓ Entered worktree: feature-auth
Branch: claude/feature-auth
Path: .claude/worktrees/feature-auth
Base: main
─────────────────────────────────────────────────────────────
[Opus] 📁 feature-auth (worktree) git: claude/feature-auth
─────────────────────────────────────────────────────────────
↑
statusline в footer
⏺ ExitWorktree(action="keep")
⎿ ✓ Exited worktree, returned to: main
Worktree kept at: .claude/worktrees/feature-auth
```
## 10. Skill
- **Что показывает:** inline пометка «Using skill: /xxx» + выполнение содержимого skill в основном контексте.
- **Где появляется:** inline в conversation.
- **Как попросить:** «Вызови skill `xxx` через Skill tool».
```
⏺ Skill(code-review)
⎿ Using skill: code-review
Loading skill instructions…
⏺ Reviewing current diff against main…
• src/auth.ts (+45 / -12)
• src/api/routes.ts (+8 / -3)
• tests/auth.test.ts (+60 / -0)
⏺ Found 2 issues, 1 suggestion. Posting inline…
```
## Сводная таблица расположения UI
| Инструмент | Расположение | Блокирует ввод | Тип |
| -------------------- | ------------------ | -------------- | -------------- |
| AskUserQuestion | inline | да | диалог выбора |
| ExitPlanMode | overlay снизу | да | modal-окно |
| TaskCreate/Update | inline | нет | live-список |
| PushNotification | desktop OS | нет | toast |
| Monitor | inline streaming | нет | live-стрим |
| ScheduleWakeup | footer | нет | статус-строка |
| CronCreate/List | inline | нет | таблица |
| RemoteTrigger | inline | нет | подтверждение |
| EnterWorktree | inline + footer | нет | сообщение |
| Skill | inline | нет | выполнение |