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>
177 lines
9.7 KiB
Markdown
177 lines
9.7 KiB
Markdown
# Отчёт о ёмкости сервера
|
||
|
||
**Хост:** OwlPrime (контейнеризованный Ubuntu 24.04)
|
||
**Дата измерений:** 2026-07-15
|
||
**Приложение:** OZON Tech Sorter Simulation → nginx `127.0.0.1:3100`, tunnel → https://arhipovdan.ru/
|
||
|
||
Легенда типов данных: **Измерено** = получено диагностикой на сервере; **Оценка** = вывод по мощности без полного бенчмарка нагрузки.
|
||
|
||
---
|
||
|
||
## 1. Точные характеристики сервера
|
||
|
||
| Ресурс | Фактическое значение | Тип |
|
||
| ------ | -------------------: | --- |
|
||
| CPU | Intel i5-9400F, 6 ядер, 2.9–4.1 GHz | Измерено |
|
||
| RAM | 15 GiB (≈13 GiB available) | Измерено |
|
||
| Swap | 15 GiB | Измерено |
|
||
| Диск | NVMe ~452 G, ~201 G свободно (~54% used) | Измерено |
|
||
| GPU | 2× NVIDIA GTX 1080 8 GB, driver 580.126.09, CUDA 13.0 | Измерено |
|
||
| GPU load | idle | Измерено |
|
||
| Load average | ~0.5–0.6 | Измерено |
|
||
| OS | Ubuntu 24.04 (containerized) | Измерено |
|
||
| Node (build env) | 20.20.2 | Измерено |
|
||
| Docker CLI в этой среде | отсутствует | Измерено |
|
||
| PM2 | отсутствует | Измерено |
|
||
| App listen | nginx 127.0.0.1:3100 | Измерено |
|
||
| Public | cloudflared → https://arhipovdan.ru/ | Измерено |
|
||
| Git repo | `/home/coder/arhipovdan/app` | Измерено |
|
||
|
||
---
|
||
|
||
## 2. Текущая нагрузка
|
||
|
||
| Показатель | Значение | Вывод |
|
||
| ---------- | -------: | ----- |
|
||
| Load avg | 0.5–0.6 при 6 cores | Большой запас CPU |
|
||
| GPU | idle | Можно зарезервировать под LLM/CV, но с осторожностью |
|
||
| Disk free | ~201 G | Достаточно для node_modules, dist, Playwright cache, артефактов агента |
|
||
| Swap | 15 GiB | Есть подушка, но swap thrash недопустим для демо |
|
||
|
||
**Оценка:** сервер сейчас в «лёгком» режиме (статика nginx + tunnel). Основная 3D-нагрузка — на **клиентском** WebGL, не на сервере.
|
||
|
||
---
|
||
|
||
## 3. Доступные ресурсы (безопасный остаток)
|
||
|
||
| Ресурс | Оценка свободного бюджета | Тип |
|
||
| ------ | ------------------------: | --- |
|
||
| CPU | 4–5 ядер можно отдавать фону при лимите 1 тяжёлого worker | Оценка |
|
||
| RAM | ~8–10 GiB «мягкий» бюджет до давления на swap | Оценка |
|
||
| VRAM (2×8 GB) | теоретически хватает на 7B quant; на практике тяжело и конкурирует | Оценка |
|
||
| Disk | десятки GB под кэши/отчёты без риска | Оценка |
|
||
|
||
---
|
||
|
||
## 4. Допустимые фоновые процессы
|
||
|
||
| Процесс | Допустимо 24/7? | Условия |
|
||
| ------- | --------------- | ------- |
|
||
| nginx + cloudflared (prod static) | Да | Без изменения без явного deploy |
|
||
| Vite preview :3101 (demo) | Краткосрочно | Не путать с prod :3100 |
|
||
| Vitest / build по запросу | Да | Последовательно, не параллельно с LLM |
|
||
| Playwright Chromium (1 worker) | Да, по расписанию | Не во время живого показа жюри |
|
||
| Agent MVP (verify-only) | Да, с лимитами | См. ниже |
|
||
| Локальная LLM 7B+ | Только эксперименты | Предпочтительно внешний API |
|
||
| CV training | Нет как 24/7 | Вынести на dedicated GPU / внешний |
|
||
| Server-side Three.js offscreen | Возможно, не нужно | Клиентский WebGL достаточен |
|
||
|
||
---
|
||
|
||
## 5. Возможность локальных моделей (LLM)
|
||
|
||
| Вариант | Вердикт | Комментарий |
|
||
| ------- | ------- | ----------- |
|
||
| Локальная 7B+ на 2×1080 | **Возможна технически, тяжело** | VRAM суммарно 16 GB; квантизация нужна; CPU/RAM конкурируют с Playwright |
|
||
| Внешний LLM API | **Рекомендуется** | Hybrid Variant C |
|
||
| Полностью локальный агент (Variant A) | Не рекомендуется на этом хосте | Риск OOM / деградации демо |
|
||
|
||
**Вывод:** локальный инференс — опциональный research-path; production-агент должен использовать **внешний API** с бюджетом.
|
||
|
||
---
|
||
|
||
## 6. Возможность Playwright / Chromium
|
||
|
||
| Критерий | Вердикт |
|
||
| -------- | ------- |
|
||
| CPU + RAM | Достаточно (**Измерено** ресурсы; **Оценка** нагрузки) |
|
||
| Параллелизм | **1 worker** |
|
||
| 24/7 непрерывный прогон | Нежелателен; лучше nightly / по событию |
|
||
| Конфликт с живой демо | Высокий — не запускать во время показа |
|
||
|
||
---
|
||
|
||
## 7. Возможность автономного агента
|
||
|
||
**Однозначный вывод: возможен с ограничениями.**
|
||
|
||
| Параметр | Лимит |
|
||
| -------- | ----- |
|
||
| Parallel workers | 1 |
|
||
| LLM | Hybrid (внешний API primary) |
|
||
| Auto merge to main | Запрещено |
|
||
| Auto production deploy | Запрещено |
|
||
| Режим MVP | verify-only (dry-run / run-once), без auto-patch |
|
||
| Kill switch | `agent/state/KILL` |
|
||
|
||
Подробности: `AI_AGENT_SAFETY_LIMITS.md`, `AUTONOMOUS_AI_AGENT_ARCHITECTURE.md`.
|
||
|
||
---
|
||
|
||
## 8. Рекомендуемые лимиты
|
||
|
||
| Лимит | Значение | Источник |
|
||
| ----- | -------: | -------- |
|
||
| maxParallelWorkers | 1 | Agent MVP + ёмкость |
|
||
| maxCycleMinutes | 25 | `agent/cli.mjs` LIMITS |
|
||
| maxChangedFiles | 12 | Agent LIMITS |
|
||
| maxDiffLines | 800 | Agent LIMITS |
|
||
| dailyLlmBudgetUsd | 5 | Agent LIMITS |
|
||
| Playwright workers | 1 | Capacity |
|
||
| CPU soft cap для агента | ≤50% одного ядра в idle-poll; burst на test/build | Оценка |
|
||
| RAM soft cap агент+Chromium | ≤4 GiB | Оценка |
|
||
| Запрет | merge main, prod deploy, чтение секретов в логи | Policy |
|
||
|
||
---
|
||
|
||
## 9. Режимы эксплуатации
|
||
|
||
| Режим | Что запущено | Параллелизм | Назначение |
|
||
| ----- | ------------ | ----------: | ---------- |
|
||
| Минимальный безопасный | nginx :3100 + tunnel | 0 background jobs | Стабильный публичный показ |
|
||
| Оптимальный | + редкие `agent dry-run`, nightly tests | 1 | Поддержание качества |
|
||
| Максимальный | + Playwright 1w + внешний LLM | 1 | Исследования (не во время демо) |
|
||
| Демонстрация | Только prod или preview; агент STOP | 0 | Живое жюри |
|
||
| Автономное AI-улучшение | Agent + external LLM, ветки feature/*, no deploy | 1 | Улучшения с human gate |
|
||
|
||
---
|
||
|
||
## 10. Сводная таблица ёмкости
|
||
|
||
| Ресурс | Фактическое значение | Текущая нагрузка | Безопасный лимит | Вывод |
|
||
| ------ | -------------------: | ---------------: | ---------------: | ----- |
|
||
| CPU 6c | i5-9400F | load ~0.5–0.6 | 1 тяжёлый worker | Запас есть |
|
||
| RAM 15 GiB | ≈13 available | низкая | ≤4 GiB агент+browser | OK |
|
||
| Swap 15 GiB | — | не давить | Избегать thrash | OK как подушка |
|
||
| Disk ~452G | ~201G free | 54% used | Оставить ≥50G free | OK |
|
||
| GPU 2×1080 | idle | 0% | Не для prod demo loop | LLM/CV опционально |
|
||
| Playwright | — | нет | 1 worker | Да |
|
||
| Agent 24/7 | — | MVP | с ограничениями | Да |
|
||
| Local LLM 7B+ | — | нет | эксперимент | Тяжело; лучше API |
|
||
| CV training | — | нет | external | Не на этом хосте 24/7 |
|
||
| Server 3D | — | нет | не требуется | Клиент WebGL |
|
||
|
||
---
|
||
|
||
## 11. Риски ёмкости
|
||
|
||
| Риск | Вероятность | Влияние | Митигация |
|
||
| ---- | ----------- | ------- | --------- |
|
||
| OOM при локальной LLM + Playwright | Средняя | Падение демо | Не совмещать; API LLM |
|
||
| Swap thrash во время показа | Низкая | Лаги tunnel/nginx | Режим «Демонстрация» = stop agent |
|
||
| Disk fill артефактами | Низкая | Сборка падает | Ротация `agent/reports`, screenshot dirs |
|
||
| Старый dist на :3100 | Высокая (процесс) | Жюри видит не то | Явный redeploy после merge |
|
||
| Нет docker CLI здесь | Факт | Сложнее ops | Документировать внешний deploy path |
|
||
|
||
---
|
||
|
||
## 12. Нужен ли дополнительный сервер?
|
||
|
||
| Вопрос | Ответ |
|
||
| ------ | ----- |
|
||
| Отдельный staging | Желателен при частом агенте; на текущем хосте можно эмулировать preview :3101 |
|
||
| Dedicated GPU server | Да, если цель — CV training / тяжёлый local LLM |
|
||
| Доп. сервер для static demo | Нет — текущий nginx достаточен |
|
||
|
||
**Итог:** для demo + ограниченного агента текущий сервер **достаточен**. Для тяжёлого ML — вынести.
|