auto-sync: 2026-06-01 10:00:01
This commit is contained in:
10
MEMORY.md
10
MEMORY.md
@@ -148,6 +148,16 @@ docker exec fr24-tracks-fr24 grep "flight-summary" /app/fr24_worker.py
|
||||
|
||||
## Проекты
|
||||
|
||||
## Multi-Agent Orchestrator (enduro-trails)
|
||||
- **Документация:** `tasks/multi-agent/ORCHESTRATOR_DOCS.md`
|
||||
- **Расхождения с proposal:** `tasks/multi-agent/PROPOSAL_VS_REALITY.md`
|
||||
- **Host:** mva154 (82.22.50.71), container `orchestrator`, port 8500
|
||||
- **Pipeline:** analyst → architect → developer → reviewer → tester → deployer → done
|
||||
- **Deployer добавлен 01.06.2026:** merge PR → tag → deploy → healthcheck → smoke → rollback
|
||||
- **Единственный ручной шаг:** `:approved:` от Славы после analyst'а
|
||||
- **Фиксы 31.05.2026:** _monitor_agent PIPE streaming, check_reviewer_verdict, _ensure_pr, retry logic
|
||||
- **Фикс 01.06.2026:** deployer как агент (убран хардкод _auto_merge_pr)
|
||||
|
||||
## Claude CLI Proxy (настроен 14.05.2026)
|
||||
- **Документация:** `tasks/claude-cli-proxy/PROJECT.md`
|
||||
- **Корневая проблема (14.05):** HTTP_PROXY/HTTPS_PROXY перехватывали запросы к cli-proxy через Xray
|
||||
|
||||
171
tasks/multi-agent/ORCHESTRATOR_DOCS.md
Normal file
171
tasks/multi-agent/ORCHESTRATOR_DOCS.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# Документация: Orchestrator Multi-Agent Pipeline
|
||||
|
||||
## Статус: 2026-06-01 (актуально)
|
||||
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
Plane (Work Items) → Webhook → Orchestrator → Claude CLI agents → Gitea → Deploy
|
||||
```
|
||||
|
||||
**Orchestrator** — Python FastAPI приложение в Docker на mva154 (port 8500).
|
||||
Слушает webhooks от Plane и Gitea, управляет жизненным циклом задач.
|
||||
|
||||
---
|
||||
|
||||
## Конвейер (Pipeline)
|
||||
|
||||
```
|
||||
created → analysis → architecture → development → review → testing → deploy → done
|
||||
```
|
||||
|
||||
| Stage | Agent | QG (вход) | Что делает |
|
||||
|-------|-------|-----------|------------|
|
||||
| analysis | analyst | — | BRD, ТЗ, AC, Test Plan |
|
||||
| architecture | architect | check_analysis_approved (`:approved:` от Славы) | ADR, архитектурные решения |
|
||||
| development | developer | check_architecture_done (файлы ADR есть) | Код + тесты + PR |
|
||||
| review | reviewer | check_ci_green (Gitea CI status) | Code review → 12-review.md |
|
||||
| testing | tester | check_reviewer_verdict (APPROVED в 12-review.md) | Прогон тестов → 13-test-report.md |
|
||||
| deploy | deployer | check_tests_passed (PASS в 13-test-report.md) | Merge PR → tag → deploy → smoke |
|
||||
| done | — | — | Задача завершена |
|
||||
|
||||
---
|
||||
|
||||
## Агенты
|
||||
|
||||
### Конфигурация (AGENT_CONFIGS)
|
||||
|
||||
| Agent | Task file | System prompt | Model |
|
||||
|-------|-----------|---------------|-------|
|
||||
| analyst | `.task.md` | `.openclaw/agents/analyst.md` | claude-sonnet-4-6 |
|
||||
| architect | `.task-arch.md` | `.openclaw/agents/architect.md` | claude-sonnet-4-6 |
|
||||
| developer | `.task-dev.md` | `.openclaw/agents/developer.md` | claude-sonnet-4-6 |
|
||||
| reviewer | `.task-review.md` | `.openclaw/agents/reviewer.md` | claude-sonnet-4-6 |
|
||||
| tester | `.task-test.md` | `.openclaw/agents/tester.md` | claude-sonnet-4-6 |
|
||||
| deployer | `.task-deploy.md` | `.openclaw/agents/deployer.md` | claude-sonnet-4-6 |
|
||||
|
||||
### Deployer (добавлен 2026-06-01)
|
||||
|
||||
**Функции:**
|
||||
1. Merge PR через Gitea API
|
||||
2. Создать semver tag (patch increment)
|
||||
3. Deploy (git pull main на сервере)
|
||||
4. Healthcheck (до 60 сек, 12 попыток)
|
||||
5. Smoke test (ключевые endpoints)
|
||||
6. Rollback к предыдущему тегу при fail
|
||||
7. Записать `14-deploy-log.md` + обновить `CHANGELOG.md`
|
||||
|
||||
**Запрещено:** менять код, force push, деплоить без merge.
|
||||
|
||||
---
|
||||
|
||||
## Quality Gates
|
||||
|
||||
| QG | Функция | Что проверяет |
|
||||
|----|---------|---------------|
|
||||
| check_analysis_approved | `:approved:` в комментарии Plane от стейкхолдера | Человеческое подтверждение ТЗ |
|
||||
| check_architecture_done | Наличие ADR файлов в `docs/work-items/<id>/06-adr/` | Архитектура задокументирована |
|
||||
| check_ci_green | Gitea commit status API | CI pipeline зелёный |
|
||||
| check_reviewer_verdict | Парсинг `12-review.md` → APPROVED/REQUEST_CHANGES | Код прошёл ревью |
|
||||
| check_tests_passed | Парсинг `13-test-report.md` → PASS/FAIL | Тесты пройдены |
|
||||
|
||||
---
|
||||
|
||||
## Механизмы автономности
|
||||
|
||||
### Auto-advance
|
||||
После завершения агента (exit 0), `_monitor_agent` вызывает `_try_advance_stage`:
|
||||
1. Определяет текущий stage задачи
|
||||
2. Проверяет QG следующего stage
|
||||
3. Если QG green → advance stage → launch next agent
|
||||
4. Если QG red → stop (ждёт внешнего события)
|
||||
|
||||
### Auto-PR
|
||||
После developer push, `_ensure_pr()` автоматически создаёт PR в Gitea.
|
||||
|
||||
### Retry (developer)
|
||||
При `REQUEST_CHANGES` от reviewer'а — developer перезапускается (до 3 раз).
|
||||
|
||||
### Notifications
|
||||
Telegram уведомления на каждом переходе stage + при ошибках.
|
||||
|
||||
---
|
||||
|
||||
## Файловая структура
|
||||
|
||||
```
|
||||
/home/slin/repos/orchestrator/
|
||||
├── src/
|
||||
│ ├── main.py # FastAPI app
|
||||
│ ├── config.py # Settings (env vars)
|
||||
│ ├── db.py # SQLite (tasks, agent_runs)
|
||||
│ ├── stages.py # STAGE_TRANSITIONS
|
||||
│ ├── notifications.py # Telegram + Plane comments
|
||||
│ ├── plane_sync.py # Plane API integration
|
||||
│ ├── agents/
|
||||
│ │ ├── launcher.py # AgentLauncher (AGENT_CONFIGS, launch, monitor)
|
||||
│ │ └── __init__.py
|
||||
│ ├── webhooks/
|
||||
│ │ ├── gitea.py # Push, PR, CI status handlers
|
||||
│ │ ├── plane.py # Comment handlers (:approved:)
|
||||
│ │ └── __init__.py
|
||||
│ └── qg/
|
||||
│ ├── checks.py # QG check functions
|
||||
│ └── __init__.py
|
||||
├── docker-compose.yml
|
||||
├── Dockerfile
|
||||
└── requirements.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Инфраструктура
|
||||
|
||||
- **Host:** mva154 (82.22.50.71)
|
||||
- **Container:** `orchestrator` (port 8500)
|
||||
- **Gitea:** localhost:3000 (в docker network)
|
||||
- **Repos:** `/home/slin/repos/orchestrator`, `/repos/enduro-trails` (в контейнере)
|
||||
- **DB:** SQLite (`/app/data/orchestrator.db`)
|
||||
- **Logs:** `/app/data/logs/` (per-agent run logs)
|
||||
|
||||
---
|
||||
|
||||
## Единственная точка ручного вмешательства
|
||||
|
||||
**`:approved:` после analyst'а** — Слава подтверждает ТЗ в Plane.
|
||||
|
||||
Всё остальное — полностью автономно:
|
||||
- architect запускается автоматически после approve
|
||||
- developer → после architecture done
|
||||
- reviewer → после CI green
|
||||
- tester → после review approved
|
||||
- deployer → после tests passed
|
||||
- done → после deploy success
|
||||
|
||||
---
|
||||
|
||||
## Расхождения с Proposal v1
|
||||
|
||||
Полная таблица: `tasks/multi-agent/PROPOSAL_VS_REALITY.md`
|
||||
|
||||
Ключевые отличия от идеала:
|
||||
- Designer не реализован (skip для не-UI задач)
|
||||
- QG упрощены (проверка файлов, не lint-скрипты)
|
||||
- Один environment (test), нет prod
|
||||
- Нет budget tracking
|
||||
- Все агенты на Sonnet (proposal: Architect/Reviewer на Opus)
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
| Дата | Изменение |
|
||||
|------|-----------|
|
||||
| 2026-05-31 | Fix: `_monitor_agent` PIPE streaming (race condition) |
|
||||
| 2026-05-31 | Fix: `check_reviewer_verdict` вместо `check_review_approved` |
|
||||
| 2026-05-31 | Add: `_ensure_pr` (auto-PR after developer push) |
|
||||
| 2026-05-31 | Add: REQUEST_CHANGES retry logic (3 attempts) |
|
||||
| 2026-06-01 | Add: **deployer agent** (merge → tag → deploy → smoke → rollback) |
|
||||
| 2026-06-01 | Remove: `_auto_merge_pr` hardcode from `_try_advance_stage` |
|
||||
Reference in New Issue
Block a user