mnemo_cards/ai_docs/agent/README.md
2025-11-21 00:28:55 +03:00

434 lines
18 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.

# AI Agent 24/7 Automation System
Автоматизированная система разработки с использованием AI агентов, которые работают круглосуточно над проектом mnemo_cards.
## Обзор
Система состоит из трех типов агентов:
1. **Planning Agent** - анализирует проект и создает список задач
2. **Development Agent** - читает задачи, пишет код, делает коммиты
3. **Test & Deploy** - тестирует изменения и деплоит на staging
## Архитектура
```
┌─────────────────────────────────────────────────────────────┐
│ GitHub/Forgejo Actions │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Planning │───▶│ Development │───▶│ Test/Deploy │ │
│ │ Agent │ │ Agent │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Cursor CLI (AI Provider) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
┌────────────────────────┐
│ Project Repository │
│ - mnemo_cards_web_v2 │
│ - mnemo_cards_backend │
│ - mnemo_cards_common │
└────────────────────────┘
```
## Компоненты
### 1. Task Management
Файлы состояния для каждого компонента:
```
ai_docs/agent/
├── web_v2/
│ ├── task_list.json # Список задач
│ └── agent_state.json # Состояние агента
├── backend/
│ ├── task_list.json
│ └── agent_state.json
├── common/
│ ├── task_list.json
│ └── agent_state.json
└── global_lock.json # Глобальная блокировка
```
### 2. Python Scripts
Оркестрация и управление агентами:
```
tools/agent/
├── config.py # Конфигурация
├── task_manager.py # Менеджер задач
├── cursor_cli_wrapper.py # Wrapper для Cursor CLI
├── agent_orchestrator.py # Главный оркестратор (development)
└── planning_agent.py # Planning агент
```
### 3. Prompts
Инструкции для агентов:
```
ai_docs/agent/prompts/
├── development_prompt.md # Инструкции для development агента
└── planning_prompt.md # Инструкции для planning агента
```
### 4. GitHub Actions Workflows
```
.github/workflows/
├── agent-planning.yml # Planning workflow
├── agent-development.yml # Development workflow
└── agent-test-deploy.yml # Test & Deploy workflow
```
## Быстрый старт
### 1. Настройка Forgejo Runner
```bash
# Установка Forgejo Runner
wget https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64
sudo mv forgejo-runner-3.3.0-linux-amd64 /usr/local/bin/forgejo-runner
sudo chmod +x /usr/local/bin/forgejo-runner
# Регистрация runner
# Получите registration token из Forgejo: Settings -> Actions -> Runners
sudo forgejo-runner register --no-interactive \
--instance https://your-forgejo-instance.com \
--token YOUR_REGISTRATION_TOKEN \
--name ai-agent-runner \
--labels ubuntu-latest:docker://node:16-bullseye
# Запуск runner (или через systemd)
sudo forgejo-runner daemon
```
### 2. Настройка Cursor CLI
```bash
# Установка Cursor CLI (на машине runner или автоматически в workflows)
curl https://cursor.com/install -fsS | bash
# Получение API ключа
# 1. Откройте Cursor
# 2. Settings -> Account -> API Keys
# 3. Create new API key
```
### 3. Настройка Secrets в Forgejo
Добавьте следующие secrets в настройках репозитория:
**Repository Settings -> Secrets and Variables -> Actions**
- `CURSOR_API_KEY` - API ключ от Cursor (обязательно)
- `FORGEJO_TOKEN` - Personal Access Token для Forgejo API (обязательно, scopes: repo, write:issue, write:workflow)
- `CURSOR_MODEL` - Модель AI (опционально, по умолчанию claude-3-5-sonnet-20241022)
- `MAX_ITERATIONS` - Максимум итераций (опционально, по умолчанию 10)
- `MAX_RETRIES` - Максимум попыток (опционально, по умолчанию 3)
### 3. Запуск Planning Agent
1. Перейдите в **Actions** в вашем репозитории
2. Выберите workflow **"AI Agent - Planning"**
3. Нажмите **"Run workflow"**
4. Выберите компонент (web_v2, backend, или common)
5. Нажмите **"Run workflow"**
Planning agent:
- Проанализирует текущее состояние проекта
- Создаст список задач в `ai_docs/agent/{component}/task_list.json`
- Создаст issue с summary
- Автоматически запустит Development Agent
### 4. Проверка настройки
Создайте тестовый workflow или проверьте:
```bash
# Проверьте что runner запущен
sudo systemctl status forgejo-runner
# Проверьте secrets через Forgejo UI
# Repository -> Settings -> Secrets and Variables -> Actions
# Проверьте что .github/workflows/ содержит файлы
ls -la .github/workflows/
```
### 5. Запуск Development Agent
Development agent запускается автоматически после Planning Agent, или можно запустить вручную:
1. Actions -> **"AI Agent - Development"**
2. Run workflow -> выбрать компонент
3. Agent начнет работу над задачами
**Примечание**: Убедитесь что Forgejo Runner запущен и online перед запуском workflows!
## Как это работает
### Planning Agent Workflow
1. **Анализ**: Читает `tasks.md`, `workflow_state.md`, текущий `task_list.json`
2. **Генерация**: Использует Cursor CLI для создания нового task list
3. **Валидация**: Проверяет корректность JSON и структуры задач
4. **Коммит**: Сохраняет task_list.json в репозиторий
5. **Запуск**: Триггерит Development Agent
### Development Agent Workflow
1. **Инициализация**: Загружает task list и agent state
2. **Выбор задачи**: Берет следующую pending задачу по приоритету
3. **Блокировка**: Проверяет, нужна ли глобальная блокировка
4. **Выполнение**:
- Использует Cursor CLI для написания кода
- Запускает линтер
- Запускает тесты
- Делает коммит с описанием изменений
5. **Обновление**: Обновляет статус задачи и agent state
6. **Повтор**: Берет следующую задачу или завершается
### Test & Deploy Workflow
1. **Триггер**: Автоматически запускается после коммитов
2. **Обнаружение**: Определяет, какие компоненты изменились
3. **Тестирование**:
- Запускает flutter/dart analyze
- Запускает тесты
- Собирает coverage
4. **Результат**:
- ✅ Если тесты прошли - готово к деплою
- ❌ Если тесты не прошли - создает issue
## Multi-Agent Support
Система поддерживает параллельную работу нескольких агентов:
```bash
# Агент 1: работает над web_v2
Actions -> Planning -> web_v2
└─> Development -> web_v2
# Агент 2: одновременно работает над backend
Actions -> Planning -> backend
└─> Development -> backend
```
### Координация агентов
- **Per-component locking**: Каждый агент блокирует только свой компонент
- **Global lock**: Если задача модифицирует `mnemo_cards_common`, берется глобальная блокировка
- **Conflict resolution**: Перед коммитом делается git pull --rebase
## Мониторинг и отладка
### Просмотр состояния агента
```bash
# Web v2
cat ai_docs/agent/web_v2/agent_state.json
# Backend
cat ai_docs/agent/backend/agent_state.json
```
### Просмотр текущих задач
```bash
# Web v2
cat ai_docs/agent/web_v2/task_list.json
# Backend
cat ai_docs/agent/backend/task_list.json
```
### Логи workflow
1. Actions -> выберите workflow run
2. Посмотрите логи каждого step
3. В summary будет краткий отчет
### Ручной запуск на локальной машине
```bash
# Установите переменные окружения
export CURSOR_API_KEY="your-key-here"
export PROJECT_ROOT="/path/to/mnemo_cards"
# Planning agent
python tools/agent/planning_agent.py web_v2
# Development agent
python tools/agent/agent_orchestrator.py web_v2
```
## Ограничения и safety
### Автоматические ограничения
- **Max iterations**: 10 итераций за один запуск
- **Timeout**: 6 часов на workflow run
- **Max retries**: 3 попытки на задачу
- **Stale lock**: Блокировка считается устаревшей через 2 часа
### Что агенты НЕ могут делать
❌ Удалять .git директорию
❌ Force push
❌ Модифицировать production secrets
❌ Деплоить на production (только staging)
❌ Удалять файлы без причины
### Безопасность
- Все коммиты проверяются через Test workflow
- Агенты не имеют доступа к production secrets
- Изменения можно ревьюить через Git history
- Можно откатить любой коммит
## Troubleshooting
### Агент не запускается
1. Проверьте, что `CURSOR_API_KEY` настроен в Secrets
2. Проверьте, что Cursor CLI установлен (в логах workflow)
3. Проверьте, что task_list.json существует и валиден
### Тесты не проходят
1. Агент попробует исправить 3 раза
2. После 3 попыток создается issue
3. Агент переходит к следующей задаче
### Агент "завис"
1. Agent state показывает "in_progress" более 2 часов
2. Запустите новый workflow - он сбросит состояние
3. Или вручную отредактируйте agent_state.json
### Конфликты коммитов
1. Агент делает `git pull --rebase` перед коммитом
2. Если конфликт - задача помечается skipped
3. Planning agent переназначит задачу позже
## Best Practices
### Для человека-разработчика
1. ✅ Обновляйте `tasks.md` с новыми фичами
2. ✅ Ревьюите коммиты от агентов
3. ✅ Запускайте Planning Agent раз в неделю
4.Не редактируйте task_list.json вручную (используйте tasks.md)
5.Не коммитьте в те же файлы, над которыми работает агент
### Для Planning Agent
- Создавайте задачи на 2-8 часов работы
- Разбивайте большие фичи на подзадачи
- Указывайте четкие acceptance criteria
- Правильно выставляйте dependencies
### Для Development Agent
- Всегда пишите тесты
- Следуйте существующим паттернам кода
- Не оставляйте TODOs
- Делайте атомарные коммиты
## Примеры использования
### Сценарий 1: Добавление новой фичи
1. Добавьте описание фичи в `mnemo_cards_web_v2/tasks.md`
2. Запустите Planning Agent для web_v2
3. Planning Agent создаст задачи
4. Development Agent автоматически начнет работу
5. Мониторьте прогресс в Actions
6. Ревьюйте коммиты от агента
### Сценарий 2: Исправление багов
1. Создайте issue с описанием бага
2. Запустите Planning Agent
3. Planning Agent добавит задачу в task list
4. Development Agent исправит баг
5. Test workflow проверит, что баг исправлен
### Сценарий 3: Рефакторинг
1. Опишите план рефакторинга в tasks.md
2. Запустите Planning Agent
3. Agent создаст задачи для рефакторинга
4. Development Agent выполнит рефакторинг поэтапно
5. Все тесты должны продолжать проходить
## Особенности Forgejo
### Отличия от GitHub Actions
1. **API endpoints**: Используется Forgejo API вместо GitHub API
2. **Actions**: Некоторые GitHub Actions могут не работать, используются альтернативы
3. **Secrets**: Настраиваются через Forgejo UI (Settings -> Secrets and Variables -> Actions)
4. **Runner**: Требует установки и настройки Forgejo Runner
5. **Workflows**: Синтаксис совместим, но используется `.github/workflows/` (не `.forgejo/workflows/`)
### Forgejo API для триггера workflows
```bash
# Trigger Planning Agent
curl -X POST \
"https://your-forgejo.com/api/v1/repos/user/repo/actions/workflows/agent-planning.yml/dispatches" \
-H "Authorization: token YOUR_FORGEJO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ref":"master","inputs":{"component":"web_v2"}}'
# Trigger Development Agent
curl -X POST \
"https://your-forgejo.com/api/v1/repos/user/repo/actions/workflows/agent-development.yml/dispatches" \
-H "Authorization: token YOUR_FORGEJO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ref":"master","inputs":{"component":"web_v2"}}'
```
### Создание Issues через API
```bash
# Create issue
curl -X POST \
"https://your-forgejo.com/api/v1/repos/user/repo/issues" \
-H "Authorization: token YOUR_FORGEJO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Issue title","body":"Issue body","labels":["ai-agent"]}'
```
## Дополнительная информация
- [Конфигурация](./CONFIGURATION.md) - детальная настройка системы для Forgejo
- [Forgejo Actions Docs](https://forgejo.org/docs/latest/user/actions/) - документация Forgejo Actions
- [Cursor CLI Docs](https://cursor.com/docs/cli/headless) - документация Cursor CLI
- [Development Prompt](./prompts/development_prompt.md) - инструкции для разработки
- [Planning Prompt](./prompts/planning_prompt.md) - инструкции для планирования
## Контакты и поддержка
При проблемах:
1. Проверьте логи в Actions
2. Посмотрите agent_state.json
3. Создайте issue с тегом `ai-agent`
---
**Версия:** 1.0
**Дата:** 2025-11-20
**Powered by:** Cursor CLI + Claude Sonnet 4.5