Files
APAW/README.md
¨NW¨ 573d9a641e fix(security): add rstrip('/') to get_target_repo for trailing-slash URLs
The regex r'[:/]([^/]+/[^/]+?)(?:\.git)?$' fails on URLs with trailing slashes
like 'https://git.softuniq.eu/UniqueSoft/APAW/' because the final '/' breaks
the pattern. Added .rstrip('/') in Python and sed 's:/*' in Bash to all
get_target_repo() implementations across 11 files.
2026-04-19 12:17:53 +01:00

406 lines
16 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.
# APAW — Automatic Programmers Agent Workflow
**Self-Improving Agent Pipeline** — автономная система из 30+ специализированных ИИ-агентов с автоматической эволюцией промптов, мониторингом выполнения и модульной архитектурой.
Поддерживаемые стеки: **PHP/Laravel/Symfony/WordPress**, **Next.js**, **Vue/Nuxt**, **React**, **Python/Django/FastAPI**, **Go**, **Flutter**, **Node.js/Express**.
---
## Архитектура
```
APAW/
├── .kilo/ # KiloCode конфигурация
│ ├── agents/ # 30 агентов (YAML frontmatter)
│ ├── commands/ # Workflow команды (/pipeline, /laravel, /nextjs, /vue, etc.)
│ ├── rules/ # Правила кодирования (атомарные задачи, модульность, токены)
│ ├── skills/ # Специализированные навыки (PHP, Go, Node, Docker, Gitea)
│ ├── shared/ # Общие модули (gitea-api, gitea-auth, gitea-commenting, self-evolution)
│ ├── logs/ # Логи выполнения агентов и fitness-метрики
│ ├── capability-index.yaml # Индекс возможностей и маршрутизация
│ ├── gitea.jsonc # Структура конфигурации Gitea (credentials из env)
│ ├── kilo.jsonc # Конфигурация primary агентов
│ └── KILO_SPEC.md # Спецификация агентов
├── agent-evolution/ # Dashboard эволюции агентов
│ ├── index.standalone.html # Standalone dashboard
│ ├── scripts/ # Scripts синхронизации
│ ├── data/ # История изменений
│ └── docker-compose.yml # Docker запуск
├── scripts/ # Utility scripts
│ └── agent-stats.ts # Статистика выполнения агентов
├── AGENTS.md # Справка по агентам
├── STRUCTURE.md # Структура проекта
└── README.md # Этот документ
```
---
## Быстрый старт
### Использование с KiloCode
```bash
# Клонировать репозиторий
git clone https://git.softuniq.eu/UniqueSoft/APAW.git
# Скопировать конфигурацию в проект
cp -r APAW/.kilo /your-project/
```
KiloCode автоматически обнаружит `.kilo/` и загрузит всех агентов.
### Запуск Dashboard эволюции
```bash
# Standalone (без Docker)
bun run sync:evolution
open agent-evolution/index.standalone.html
# Или через Docker
cd agent-evolution
docker-compose up -d
# Dashboard доступен на http://localhost:3001
```
### Мониторинг агентов
```bash
# Статистика выполнения за 30 дней
bun run agent:stats
# За последнюю неделю
bun run agent:stats:week
# По конкретному проекту
bun run agent:stats --project UniqueSoft/my-shop
```
---
## Команда агентов (30+)
### Планирование и Анализ
| Агент | Модель | Назначение |
|-------|--------|------------|
| `@orchestrator` | GLM-5 | Главный диспетчер, маршрутизация задач |
| `@requirement-refiner` | GLM-5 | Идеи → User Stories |
| `@history-miner` | Nemotron-3-Super | Поиск дублей в git |
| `@system-analyst` | GLM-5 | Схемы БД, API контракты |
| `@planner` | Nemotron-3-Super | Декомпозиция задач (CoT/ToT) |
| `@capability-analyst` | GLM-5 | Gap analysis |
### Разработка
| Агент | Модель | Назначение |
|-------|--------|------------|
| `@lead-developer` | Qwen3-Coder 480B | Основной код по TDD |
| `@frontend-developer` | Qwen3-Coder 480B | UI компоненты |
| `@backend-developer` | Qwen3-Coder 480B | Node.js/Express APIs |
| `@php-developer` | Qwen3-Coder 480B | PHP/Laravel/Symfony/WordPress |
| `@python-developer` | Qwen3-Coder 480B | Python/Django/FastAPI |
| `@go-developer` | Qwen3-Coder 480B | Go/Gin/Echo APIs |
| `@flutter-developer` | Qwen3-Coder 480B | Flutter mobile apps |
| `@devops-engineer` | Nemotron-3-Super | Docker, K8s, CI/CD |
### Качество
| Агент | Модель | Назначение |
|-------|--------|------------|
| `@sdet-engineer` | Qwen3-Coder 480B | TDD Red Phase |
| `@code-skeptic` | MiniMax-m2.5 | Adversarial ревью |
| `@the-fixer` | MiniMax-m2.5 | Исправление багов |
| `@performance-engineer` | Nemotron-3-Super | N+1, утечки памяти |
| `@security-auditor` | Nemotron-3-Super | OWASP Top 10, CVE |
### Релиз и Метрики
| Агент | Модель | Назначение |
|-------|--------|------------|
| `@release-manager` | GLM-5 | Git Flow, SemVer |
| `@evaluator` | GLM-5 | Оценка агентов 1-10 |
| `@pipeline-judge` | GLM-5 | Объективный fitness score |
| `@prompt-optimizer` | GLM-5 | Улучшение промптов |
| `@product-owner` | GLM-5 | Управление Issues |
### Когнитивное усиление
| Агент | Паттерн | Назначение |
|-------|---------|------------|
| `@reflector` | Reflexion | Анализ ошибок |
| `@memory-manager` | Memory Arch | Управление контекстом |
---
## Pipeline Workflow
```
[Issue в целевом проекте]
[@requirement-refiner] → User Story + Acceptance Criteria
[@history-miner] → Проверка дублей
[@system-analyst] → Схемы БД, API контракты
[@sdet-engineer] → TDD Red Phase (тесты падают)
[@lead-developer] / [@php-developer] → TDD Green Phase
[@code-skeptic] → Adversarial review
↓ (fail) ↓ (pass)
[@the-fixer] [@performance-engineer]
↓ ↓
─────────────────→ [@security-auditor]
[@release-manager]
[@evaluator] → Score 1-10
↓ (score ≥ 7)
[@pipeline-judge] → Fitness 0.0-1.0
fitness ≥ 0.85 → COMPLETED
fitness < 0.85 → [@prompt-optimizer] → evolving
```
---
## Критические правила
### Целевой проект (НЕ APAW!)
**Issues создаются в целевом проекте, а НЕ в APAW.** APAW — фреймворк агентов, а не проект по умолчанию.
```bash
# Автоопределение проекта из git remote
TARGET_REPO=$(git remote get-url origin | sed 's:/*$::' | sed -E 's|.*[:/]([^/]+/[^/]+?)(\.git)?$|\1|')
```
### Атомарные задачи (1 действие = 1 задача)
Каждый вызов агента решает ровно ОДНУ атомарную задачу:
- ❌ "Реализуй весь бэкенд интернет-магазина"
- ✅ "Создай модель Product с миграцией"
- ✅ "Добавь POST /api/products endpoint"
### Модульный код
- Максимум 100 строк на файл
- Максимум 30 строк на функцию
- Фичи организованы как независимые модули
- Коммуникация между модулями — только через events/interfaces
### Бюджет токенов
| Размер задачи | Макс. токенов | Пример |
|-------------|-------------|---------|
| Tiny | 2,000 | Исправить опечатку |
| Small | 5,000 | Модель + миграция |
| Medium | 10,000 | API endpoint + тест |
| Large | 20,000 | Сервис с 3 методами |
---
## Конфигурация
### Models (kilo.jsonc)
Primary агенты для UI:
- `orchestrator` — GLM-5 (главный диспетчер)
- `code` — Qwen3-Coder 480B (быстрый код)
- `ask` — GLM-5 (вопросы по коду)
- `plan` — Nemotron-3-Super (планирование)
- `debug` — GLM-5 (диагностика)
Subagent модели определены в `.md` файлах агентов.
### Capability Index (capability-index.yaml)
Карта возможностей для маршрутизации:
- `code_writing``lead-developer`
- `code_review``code-skeptic`
- `test_writing``sdet-engineer`
- `php_web_development``php-developer`
- `laravel_development``php-developer`
- `wordpress_development``php-developer`
- `python_web_development``python-developer`
- `django_development``python-developer`
- `fastapi_development``python-developer`
- `nextjs_development``frontend-developer`
- `vue_nuxt_development``frontend-developer`
- `security``security-auditor`
- и т.д.
---
## Эволюция агентов
Система автоматически отслеживает:
- Изменения моделей
- Оценки производительности
- Fitness score (объективные метрики)
- Рекомендации по улучшению
- Логи выполнения каждого агента
```bash
# Синхронизировать данные
bun run sync:evolution
# Открыть dashboard
bun run evolution:open
# Статистика агентов
bun run agent:stats
```
---
## Skills System
Навыки в `.kilo/skills/`:
### PHP
- `php-laravel-patterns` — Laravel routing, Eloquent, middleware, queues
- `php-symfony-patterns` — Symfony controllers, services, Doctrine
- `php-wordpress-patterns` — WordPress plugins, themes, REST API
- `php-security` — OWASP, CSRF, XSS, SQL injection
- `php-testing` — PHPUnit, Pest, Dusk
- `php-modular-architecture` — Modules, packages, service separation
### Frontend (Next.js / Vue / React)
- `nextjs-patterns` — Next.js 14+ App Router, Server Components, Server Actions, Auth.js
- `vue-nuxt-patterns` — Vue 3 / Nuxt 3 Composition API, Pinia, Nitro, SSR
- `react-patterns` — React 18+ hooks, Context, TanStack Query, React Hook Form
### Python
- `python-django-patterns` — Django models, DRF, services, repositories
- `python-fastapi-patterns` — FastAPI async, Pydantic, SQLAlchemy, dependencies
### Инфраструктура
- `gitea-workflow` — Gitea интеграция (автодетекция проекта)
- `gitea-commenting` — Автоматические комментарии
- `agent-logging` — Логирование выполнения агентов
### Docker / БД
- `docker-compose`, `docker-swarm`, `docker-security`, `docker-monitoring`
- `postgresql-patterns`, `sqlite-patterns`, `clickhouse-patterns`
### Go / Node
- `go-web-patterns`, `go-middleware`, `go-testing`, `go-security`
- `nodejs-express-patterns`, `nodejs-auth-jwt`, `nodejs-security-owasp`
### Тестирование / Анализ
- `web-testing`, `visual-testing`, `playwright`
- `research-cycle`, `planning-patterns`, `task-analysis`
- `quality-controller`, `scoped-labels`
---
## Workflow Commands
| Команда | Назначение |
|---------|------------|
| `/pipeline <issue>` | Полный пайплайн для issue |
| `/laravel` | Laravel приложение |
| `/wordpress` | WordPress сайт/плагин |
| `/feature` | Разработка фичи |
| `/commerce` | E-commerce сайт |
| `/booking` | Бронирование |
| `/blog` | Блог |
| `/hotfix` | Срочное исправление |
| `/status <issue>` | Статус пайплайна |
| `/evolve` | Цикл эволюции |
| `/plan` | Планирование задач |
| `/debug` | Диагностика багов |
| `/ask` | Вопросы по коду |
| `/code` | Быстрый код |
| `/research` | Исследование |
---
## Gitea аутентификация
Все Gitea API вызовы используют централизованную аутентификацию через `.kilo/shared/gitea-auth.md`. **Никогда не хардкодьте credentials в коде.**
### Порядок резолва
1. **`GITEA_TOKEN`** env var → используется напрямую (предпочтительно)
2. **`GITEA_USER` + `GITEA_PASS`** → создание временного токена через Basic Auth
3. **`.env` файл** → чтение переменных из .env
4. **Ошибка `ValueError`** → если credentials отсутствуют (не silent fail)
### Конфигурация
| Переменная | Обязательна | Описание |
|------------|-------------|----------|
| `GITEA_API_URL` | Нет | API URL (default: `https://git.softuniq.eu/api/v1`) |
| `GITEA_TOKEN` | Предпочтительно | API токен |
| `GITEA_USER` | Fallback | Username для Basic Auth |
| `GITEA_PASS` | Fallback | Password для Basic Auth |
| `GITEA_TARGET_REPO` | Нет | Переопределение проекта |
### .env шаблон
```bash
# .env (НИКОГДА не коммитьте этот файл!)
GITEA_API_URL=https://git.softuniq.eu/api/v1
GITEA_TOKEN=your-api-token-here
# GITEA_USER=your-username
# GITEA_PASS=your-password
# GITEA_TARGET_REPO=Owner/RepoName
```
См. `.kilo/gitea.jsonc` — структура конфигурации, `.kilo/shared/gitea-auth.md` — функции аутентификации.
---
## Мониторинг выполнения
Каждый вызов агента логируется в `.kilo/logs/agent-executions.jsonl`:
```jsonl
{"ts":"2026-04-18T14:00:00Z","agent":"php-developer","issue":42,"project":"UniqueSoft/my-shop","task":"Create Product model","subtask_type":"model_creation","duration_ms":45000,"tokens_used":8500,"status":"success","files":["app/Models/Product.php"],"score":8,"next_agent":"code-skeptic"}
```
```bash
# Статистика агентов
bun run agent:stats
# За неделю
bun run agent:stats:week
# По проекту
bun run agent:stats:project --project UniqueSoft/my-shop
```
---
## Технический стек
| Layer | Technology |
|-------|------------|
| Runtime | TypeScript / Node.js / Bun |
| Agent Runtime | KiloCode VS Code Extension |
| Version Control | Gitea + Git Flow |
| Languages | TypeScript / PHP / Python / Go / Dart |
| Testing | TDD (Red-Green-Refactor), PHPUnit, Pest |
| Containerization | Docker / Docker Compose |
---
## Статус проекта
✅ Production Ready
✅ 30 агентов
✅ Self-improving pipeline с fitness scoring
✅ Gitea интеграция с автодетекцией проекта
✅ Agent Evolution Dashboard
✅ Мониторинг выполнения агентов
✅ PHP/Laravel/Symfony/WordPress поддержка
✅ Next.js / Vue/Nuxt / React поддержка
✅ Python/Django/FastAPI поддержка
✅ Атомарные задачи и модульная архитектура
---
*APAW (Automatic Programmers Agent Workflow) — 2026*