Files
wiki/tasks/multi-agent/STATUS.md
2026-05-21 19:50:01 +03:00

259 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Статус проекта: Мультиагентная разработка ПО
**Дата обновления:** 2026-05-21 16:35 UTC
**Ревьюер:** Стрим
---
## Общая зрелость
| Фаза (из BRD) | Статус | Комментарий |
|----------------|--------|-------------|
| **Фаза 0: Инфраструктура** | ✅ Завершена | Всё установлено и работает |
| **Фаза 1: Ручной конвейер** | ✅ Завершена | ET-001 прошёл полный цикл |
| **Фаза 2: Orchestrator MVP** | ✅ Завершена (21.05) | QG реальные, автозапуск Claude CLI, 27 тестов |
| **Фаза 3: Webhooks + интеграция** | ✅ Завершена (21.05) | Gitea webhooks, Plane webhooks (HMAC), review QG fix |
| **Фаза 4: Полный конвейер** | ✅ Первый прогон (21.05) | ET-002 прошёл полный автоматический цикл! |
| **Фаза 5: Оптимизация** | 🟡 Частично | Баги найдены, часть исправлена |
---
## 🎉 MILESTONE: Первый полный автоматический прогон (21.05.2026)
**ET-002 "Чекбокс POI в попапе рельефа"** прошёл весь пайплайн автоматически:
```
analysis → architecture → development → review → testing → deploy → done ✅
```
| Стадия | Агент | Результат | Время |
|--------|-------|-----------|-------|
| architecture | Architect (Claude CLI, Opus) | ADR + infra-requirements | ~5 мин |
| development | Developer (Claude CLI, Sonnet) | feat commit + тесты | ~55 мин (docker build) |
| review | Reviewer (Claude CLI, Opus) | APPROVED (0 P0/P1) | ~3 мин |
| testing | Tester (Claude CLI, Sonnet) | PASS (pytest 14/14, JS 7/7) | ~5 мин |
| deploy | Merge PR #5 → main | Merged | — |
**Коммиты на ветке:**
```
c36ee9d test(ET-002): test report PASS - all tests green, ready to deploy
a4a0aab docs(ET-002): code review APPROVED - no P0/P1 findings
8c17a4f feat(web): add POI visibility checkbox to terrain popup
af579f7 docs(ET-002): add ADR-0001 and infra requirements for POI toggle
73c9dc4 docs(ET-002): status → approved
f1f4d5f docs(ET-002): BRD, ТЗ, AC, Test Plan
```
---
## Баги найденные при прогоне (21.05.2026)
| # | Баг | Статус | Фикс |
|---|-----|--------|------|
| 1 | `/repos` mounted as `:ro` — агенты не могут писать | ✅ Исправлен | Убрал `:ro` из docker-compose.yml |
| 2 | `check_review_approved` — "PR number not available" | ✅ Исправлен | Добавлен lookup PR по branch через Gitea API + fallback на file-based review |
| 3 | `git` не установлен в контейнере orchestrator | ⚠️ Workaround | Architect использует dulwich (pip), Developer — dulwich. Коммиты от root ломают permissions |
| 4 | `dismiss_stale_approvals` + duplicate CI statuses | ⚠️ Workaround | Временно отключил status check для merge, потом включил обратно |
| 5 | Launcher не привязывает `task_id` к agent_runs | 🔴 Не исправлен | Все runs имеют `task_id=NULL` |
| 6 | Orchestrator не автоматически продвигает stage после CI green | ⚠️ Частично | Нужен `:approved:` webhook для каждого перехода |
| 7 | `.git/objects` owned by root после коммитов агентов | ⚠️ Workaround | `chown -R slin:slin` вручную перед каждым коммитом |
| 8 | Developer застревает на `docker build` (~55 мин) | 🔴 Не исправлен | Для frontend-only фич docker build избыточен |
---
## Инфраструктура на mva154 (82.22.50.71)
### Контейнеры (docker ps на 21.05.2026)
| Контейнер | Образ | Статус | Порт |
|-----------|-------|--------|------|
| `orchestrator` | orchestrator-orchestrator (self-built) | Up | 127.0.0.1:8500 |
| `openclaw-gateway` | ghcr.io/openclaw/openclaw:latest | Up (healthy) | 127.0.0.1:18789 |
| `enduro-trails-app-1` | enduro-trails-app (self-built) | Up (**unhealthy**) | 0.0.0.0:5558 |
| `gitea` | gitea/gitea:latest | Up | 127.0.0.1:3000, 0.0.0.0:2222 |
| `claude-cli-proxy` | eceasy/cli-proxy-api:latest | Up | 127.0.0.1:8317 |
| `xray` | ghcr.io/xtls/xray-core:latest | Up | — |
| `plane-*` (8 контейнеров) | makeplane/* | Up (healthy) | 0.0.0.0:8091, 0.0.0.0:8443 |
### Установленное ПО на хосте
| Компонент | Версия | Путь |
|-----------|--------|------|
| Claude Code CLI | 2.1.142 | `/usr/bin/claude` (+ mount в orchestrator) |
| Node.js | v24.14.0 | — |
| Docker + Compose | — | — |
| Nginx | — | reverse proxy |
| Gitea Actions Runner | `act_runner` | `/home/slin/act_runner` (online, self-hosted) |
---
## Orchestrator — детальный статус
**Репо:** `/home/slin/repos/orchestrator/`
**Контейнер:** `orchestrator` (порт 8500, network_mode: host)
**Конфиг:** `.env`
### Архитектура
```
src/
├── main.py # FastAPI app
├── config.py # Settings from env
├── db.py # SQLite connection
├── stages.py # Stage machine (8 stages)
├── notifications.py # Structured logging
├── webhooks/
│ ├── plane.py # Plane webhook handler + QG orchestration
│ └── gitea.py # Gitea webhook handler (push, PR, CI status)
├── qg/
│ └── checks.py # 5 QG checks (filesystem + Gitea API)
└── agents/
└── launcher.py # Claude CLI launcher (subprocess.Popen)
```
### Stage Machine
```
created → analysis → architecture → development → review → testing → deploy → done
↑ QG: files ↑ QG: ADR ↑ QG: CI green ↑ QG: PR approved ↑ QG: test report
↑ Agent: — ↑ Agent: arch ↑ Agent: dev ↑ Agent: reviewer ↑ Agent: tester
```
### Данные в БД (на 21.05.2026)
- events: 40+
- tasks: 6 (ET-001..ET-004 + smoke tests)
- agent_runs: 8 (architect x4, developer x1, reviewer x1, tester x1)
### Docker-compose.yml
```yaml
services:
orchestrator:
build: .
container_name: orchestrator
restart: unless-stopped
network_mode: host
volumes:
- ./data:/app/data
- /home/slin/repos:/repos # ← БЕЗ :ro (исправлено 21.05)
- /var/run/docker.sock:/var/run/docker.sock
- /usr/lib/node_modules/@anthropic-ai/claude-code:/opt/claude-code:ro
- /usr/bin/node:/usr/bin/node:ro
- /home/slin/.claude:/home/slin/.claude
- /home/slin/.claude.json:/home/slin/.claude.json:ro
env_file: .env
environment:
- ORCH_REPOS_DIR=/repos
- ORCH_HOST_REPOS_DIR=/home/slin/repos
group_add:
- "999"
```
---
## Analyst agent (OpenClaw) — статус
| Параметр | Значение |
|----------|----------|
| ID | `analyst` |
| Модель | `vibecode/claude-sonnet-4.6` |
| Workspace | `/home/node/.openclaw/workspace-analyst/` |
| Telegram binding | ✅ account `analyst` (отдельный бот) |
| Статус | ✅ **Полностью зарегистрирован и работает** |
---
## Gitea — статус
| Параметр | Значение |
|----------|----------|
| URL | `https://git.mva154.duckdns.org` |
| Repos | `enduro-trails`, `orchestrator` |
| CI Runner | ✅ `mva154-runner` (online, self-hosted) |
| Branch protection | ✅ main: require 1 approval + CI green |
| Webhooks → Orchestrator | ✅ Работают (push, PR, status events) |
| Service accounts | `admin`, `claude-bot`, `stream` |
| claude-bot token | `38c6fa88...` (write:repository) |
---
## Plane — статус
| Параметр | Значение |
|----------|----------|
| URL | `https://plane.mva154.duckdns.org` |
| Workspace | `ag_proj` |
| Проект | "Enduro Trails" (identifier: ET) |
| Issues | ET-1 (POI checkbox) — Todo |
| Webhook → Orchestrator | ✅ Через PostgreSQL (HMAC-SHA256) |
### Что НЕ сделано в Plane
- ❌ Автоматическое обновление state из Orchestrator (F3-5, F3-6)
- ❌ Custom fields (qg_status, stage)
- ❌ Лейблы (stage:*, back-to:*, escalation:*)
- ❌ Шаблон Work Item
---
## Репозиторий enduro-trails
**Ветки:** main (актуальная с ET-001 + ET-002 merged)
### Work Items
| ID | Название | Статус |
|----|----------|--------|
| ET-001 | Исключить шлагбаумы и тротуары из OSRM | ✅ Done (ручной цикл) |
| ET-002 | Чекбокс POI в попапе рельефа | ✅ Done (автоматический цикл!) |
### Git history (main после merge)
```
Merge PR #5: feat(ET-002) POI visibility checkbox in terrain popup
832099c docs: restructure phases
f561c3b fix: switchMapStyle loads style as JSON
fdc9836 Merge PR #4: restore UI phase 5.4 + ET-001
```
---
## Следующие шаги (приоритет)
### Критические баги для фикса
1. **Установить git в контейнер orchestrator** — добавить в Dockerfile
2. **Фикс permissions** — агенты должны коммитить от user `slin` (не root)
3. **Привязать task_id к agent_runs** — launcher должен передавать task_id
4. **Автоматический CI → stage advance** — без ручного `:approved:` webhook
### Улучшения
5. **Plane sync** — Orchestrator пишет обратно в Plane (state, comments)
6. **Timeout для агентов** — убивать если > 30 мин
7. **Skip docker build для frontend-only** — определять scope по diff
8. **Notifications** — отправлять статус в Telegram при смене stage
---
## Доступ к mva154
**Из OpenClaw контейнера:**
```bash
/home/node/.openclaw/skills/installer/scripts/ssh_exec.sh --host mva154 --cmd "<command>"
```
- Тип: `ssh-direct`, Хост: `82.22.50.71:22`, User: `slin`
---
## Документация проекта
| Файл | Описание |
|------|----------|
| `tasks/multi-agent/BRD.md` | Полный BRD с архитектурой, QG, roadmap |
| `tasks/multi-agent/BACKLOG.md` | Бэклог + решения по Analyst |
| `tasks/multi-agent/STATUS.md` | **Этот файл** — актуальный статус |
| `tasks/multi-agent/DEV_TASK_ORCHESTRATOR_QG.md` | ТЗ: QG + автозапуск (выполнено) |
| `tasks/multi-agent/DEV_TASK_WEBHOOKS.md` | ТЗ: Webhooks (выполнено) |