Wire live classifyItem into continuous playback, add jam/E-stop cases, presenter controls (seek/speed/hotkeys), quality modes, demo scripts, audit docs, and a verify-only autonomous agent CLI with hard safety limits. Co-authored-by: Cursor <cursoragent@cursor.com>
6.3 KiB
6.3 KiB
Лимиты безопасности AI-агента
Файл реализации лимитов: agent/cli.mjs → объект LIMITS
Дата: 2026-07-15
Документ обязателен к соблюдению при любом расширении агента за пределы MVP.
1. Однозначная политика
| Действие | Разрешено автоматически? |
|---|---|
| Читать репозиторий, запускать tests/build | Да |
Писать отчёты в agent/reports |
Да |
| Планировать задачи (dry-run) | Да |
| Патчить исходники (MVP) | Нет |
Merge в main/master |
Никогда |
| Deploy production (:3100 / tunnel) | Никогда |
Печать значений секретов / .env |
Никогда |
| Менять firewall/SSH/системные секреты | Никогда |
| Force-push | Никогда |
2. Числовые лимиты (MVP)
| Параметр | Значение | Смысл |
|---|---|---|
maxCycleMinutes |
25 | Стена времени одного цикла |
maxChangedFiles |
12 | Потолок будущего патча |
maxDiffLines |
800 | Анти-мегадифф |
maxParallelWorkers |
1 | Ёмкость сервера |
dailyLlmBudgetUsd |
5 | Бюджет API |
minScoreDelta |
0 | Порог «улучшения» для accept (будущее) |
requireTestsPass |
true | Gate |
requireBuildPass |
true | Gate |
forbidMergeToMain |
true | Hard |
forbidProductionDeploy |
true | Hard |
forbidSecretAccess |
true | Hard |
Playwright (когда будет в цикле): 1 worker, не параллелить с локальной LLM.
3. Kill switch
| Операция | Команда / файл |
|---|---|
| Остановить | node agent/cli.mjs stop → создаёт agent/state/KILL |
| Возобновить | node agent/cli.mjs resume → удаляет KILL |
| Пауза статуса | node agent/cli.mjs pause |
При наличии KILL режимы dry-run / run-once завершаются с ошибкой.
Перед живой демонстрацией: всегда stop.
4. Изоляция изменений
| Правило | Деталь |
|---|---|
| Ветка | Только feature/* или agent/*; не main |
| Backup | Тег backup/pre-maximum-demo-realism-20260715 уже создан |
| Worktree (рекомендация L2) | Отдельный worktree для патчей |
| Production dist | Не трогать volume/nginx без человека |
| Preview | :3101 допустим для проверки; не путать с :3100 |
5. Что можно / нельзя автоматизировать
Безопасно автоматизировать
- Запуск Vitest и production build.
- Генерация JSON-отчётов и scorecard.
- Обновление backlog приоритетов.
- Health-check URL (без секретов).
- Сбор метрик размеров
dist(без PII).
Только с проверкой человека
- Любой diff по
src/. - Изменение demo playlist / classifier thresholds.
- Включение shadows/effects (FPS).
- Зависимости
package.json. - Nginx/Docker/Compose манифесты.
- Создание PR (без auto-merge).
Никогда автоматически
- Merge в main.
- Deploy на https://arhipovdan.ru/ / :3100.
- Ротация credentials, правка
.env. git push --force.- Отключение или ослабление тестов «чтобы стало зелёным».
- Удаление backup-тегов.
- Запуск локальной LLM параллельно с демо-нагрузкой.
6. Журналирование и аудит
| Артефакт | Требование |
|---|---|
audit.jsonl |
Append-only; каждое start/stop/complete |
| Reports | Хранить hypothesis, decision, limits snapshot |
| Запрет | Значения login/password/url из .env |
При инциденте: приложить status.json + хвост audit.jsonl + latest.json без .env.
7. Ресурсные лимиты хоста (операционные)
Согласовано с SERVER_CAPACITY_REPORT.md:
| Ресурс | Лимит для агента |
|---|---|
| Workers | 1 |
| RAM budget | ≤4 GiB суммарно с Chromium |
| GPU | не обязателен; не держать 7B 24/7 |
| Расписание | не во время режима «Демонстрация» |
| Disk | ротация старых agent/reports при росте |
8. Реакция на отказы
| Ситуация | Действие агента |
|---|---|
| Tests red | REJECT_BASELINE, не планировать фичи |
| Build red | то же |
| Kill switch | немедленный выход |
| Budget exceeded | stop + report |
| Попытка deploy/merge | невозможна в коде MVP; при добавлении — hard fail |
9. Чеклист расширения Implementer (уровень 2)
Перед включением auto-patch обязательно:
- Отдельный git worktree.
- Проверка
forbidMergeToMainинтеграционными тестами агента. - Max files/diff enforced до
git commit. - Авто-PR без auto-merge.
- Visual QA optional flag, default off on demo days.
- Документированный human approver.
Пока пункты не выполнены — Implementer остаётся выключенным (текущее состояние).
10. Вывод
Безопасность агента важнее скорости итераций. На OwlPrime допустим только узкий, наблюдаемый, обратимый контур. MVP это соблюдает: verify-only + kill switch + запрет prod.