Generated by: Planning Agent Timestamp: 2025-11-21T01:00:47.221578+00:00 Component: backend |
||
|---|---|---|
| .. | ||
| backend | ||
| common | ||
| prompts | ||
| web_v2 | ||
| CONFIGURATION.md | ||
| FORGEJO_SETUP.md | ||
| global_lock.json | ||
| QUICKSTART.md | ||
| README.md | ||
AI Agent 24/7 Automation System
Автоматизированная система разработки с использованием AI агентов, которые работают круглосуточно над проектом mnemo_cards.
Обзор
Система состоит из трех типов агентов:
- Planning Agent - анализирует проект и создает список задач
- Development Agent - читает задачи, пишет код, делает коммиты
- 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
# Установка 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
# Установка 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
- Перейдите в Actions в вашем репозитории
- Выберите workflow "AI Agent - Planning"
- Нажмите "Run workflow"
- Выберите компонент (web_v2, backend, или common)
- Нажмите "Run workflow"
Planning agent:
- Проанализирует текущее состояние проекта
- Создаст список задач в
ai_docs/agent/{component}/task_list.json - Создаст issue с summary
- Автоматически запустит Development Agent
4. Проверка настройки
Создайте тестовый workflow или проверьте:
# Проверьте что 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, или можно запустить вручную:
- Actions -> "AI Agent - Development"
- Run workflow -> выбрать компонент
- Agent начнет работу над задачами
Примечание: Убедитесь что Forgejo Runner запущен и online перед запуском workflows!
Как это работает
Planning Agent Workflow
- Анализ: Читает
tasks.md,workflow_state.md, текущийtask_list.json - Генерация: Использует Cursor CLI для создания нового task list
- Валидация: Проверяет корректность JSON и структуры задач
- Коммит: Сохраняет task_list.json в репозиторий
- Запуск: Триггерит Development Agent
Development Agent Workflow
- Инициализация: Загружает task list и agent state
- Выбор задачи: Берет следующую pending задачу по приоритету
- Блокировка: Проверяет, нужна ли глобальная блокировка
- Выполнение:
- Использует Cursor CLI для написания кода
- Запускает линтер
- Запускает тесты
- Делает коммит с описанием изменений
- Обновление: Обновляет статус задачи и agent state
- Повтор: Берет следующую задачу или завершается
Test & Deploy Workflow
- Триггер: Автоматически запускается после коммитов
- Обнаружение: Определяет, какие компоненты изменились
- Тестирование:
- Запускает flutter/dart analyze
- Запускает тесты
- Собирает coverage
- Результат:
- ✅ Если тесты прошли - готово к деплою
- ❌ Если тесты не прошли - создает issue
Multi-Agent Support
Система поддерживает параллельную работу нескольких агентов:
# Агент 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
Мониторинг и отладка
Просмотр состояния агента
# Web v2
cat ai_docs/agent/web_v2/agent_state.json
# Backend
cat ai_docs/agent/backend/agent_state.json
Просмотр текущих задач
# Web v2
cat ai_docs/agent/web_v2/task_list.json
# Backend
cat ai_docs/agent/backend/task_list.json
Логи workflow
- Actions -> выберите workflow run
- Посмотрите логи каждого step
- В summary будет краткий отчет
Ручной запуск на локальной машине
# Установите переменные окружения
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
Агент не запускается
- Проверьте, что
CURSOR_API_KEYнастроен в Secrets - Проверьте, что Cursor CLI установлен (в логах workflow)
- Проверьте, что task_list.json существует и валиден
Тесты не проходят
- Агент попробует исправить 3 раза
- После 3 попыток создается issue
- Агент переходит к следующей задаче
Агент "завис"
- Agent state показывает "in_progress" более 2 часов
- Запустите новый workflow - он сбросит состояние
- Или вручную отредактируйте agent_state.json
Конфликты коммитов
- Агент делает
git pull --rebaseперед коммитом - Если конфликт - задача помечается skipped
- Planning agent переназначит задачу позже
Best Practices
Для человека-разработчика
- ✅ Обновляйте
tasks.mdс новыми фичами - ✅ Ревьюите коммиты от агентов
- ✅ Запускайте Planning Agent раз в неделю
- ❌ Не редактируйте task_list.json вручную (используйте tasks.md)
- ❌ Не коммитьте в те же файлы, над которыми работает агент
Для Planning Agent
- Создавайте задачи на 2-8 часов работы
- Разбивайте большие фичи на подзадачи
- Указывайте четкие acceptance criteria
- Правильно выставляйте dependencies
Для Development Agent
- Всегда пишите тесты
- Следуйте существующим паттернам кода
- Не оставляйте TODOs
- Делайте атомарные коммиты
Примеры использования
Сценарий 1: Добавление новой фичи
- Добавьте описание фичи в
mnemo_cards_web_v2/tasks.md - Запустите Planning Agent для web_v2
- Planning Agent создаст задачи
- Development Agent автоматически начнет работу
- Мониторьте прогресс в Actions
- Ревьюйте коммиты от агента
Сценарий 2: Исправление багов
- Создайте issue с описанием бага
- Запустите Planning Agent
- Planning Agent добавит задачу в task list
- Development Agent исправит баг
- Test workflow проверит, что баг исправлен
Сценарий 3: Рефакторинг
- Опишите план рефакторинга в tasks.md
- Запустите Planning Agent
- Agent создаст задачи для рефакторинга
- Development Agent выполнит рефакторинг поэтапно
- Все тесты должны продолжать проходить
Особенности Forgejo
Отличия от GitHub Actions
- API endpoints: Используется Forgejo API вместо GitHub API
- Actions: Некоторые GitHub Actions могут не работать, используются альтернативы
- Secrets: Настраиваются через Forgejo UI (Settings -> Secrets and Variables -> Actions)
- Runner: Требует установки и настройки Forgejo Runner
- Workflows: Синтаксис совместим, но используется
.github/workflows/(не.forgejo/workflows/)
Forgejo API для триггера workflows
# 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
# 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"]}'
Дополнительная информация
- Конфигурация - детальная настройка системы для Forgejo
- Forgejo Actions Docs - документация Forgejo Actions
- Cursor CLI Docs - документация Cursor CLI
- Development Prompt - инструкции для разработки
- Planning Prompt - инструкции для планирования
Контакты и поддержка
При проблемах:
- Проверьте логи в Actions
- Посмотрите agent_state.json
- Создайте issue с тегом
ai-agent
Версия: 1.0
Дата: 2025-11-20
Powered by: Cursor CLI + Claude Sonnet 4.5