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

11 KiB
Raw Blame History

Статус проекта: Мультиагентная разработка ПО

Дата обновления: 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

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

Улучшения

  1. Plane sync — Orchestrator пишет обратно в Plane (state, comments)
  2. Timeout для агентов — убивать если > 30 мин
  3. Skip docker build для frontend-only — определять scope по diff
  4. Notifications — отправлять статус в Telegram при смене stage

Доступ к mva154

Из OpenClaw контейнера:

/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 (выполнено)