docs/AGENT-PLAN.md

3.9 KiB
Raw Blame History

AGENT-PLAN.md — План работ: Агенты + Трекер

Фаза 1: Конфиг агента (agent.json → минимум)

1.1 Разделение конфигов

  • agent.json — только подключение: token, tracker_url
  • config.json — внутренняя конфигурация LLM: api_key, model, provider, prompt (override)
  • Picogent resolveConfig() — читает оба файла, мержит
  • Убрать дублирующиеся поля (name, slug, capabilities) из agent.json

1.2 Трекер: расширить auth_ok

  • WS auth_ok возвращает полный AgentConfig: name, slug, capabilities, model, prompt, chat_listen, task_listen, max_concurrent_tasks
  • Picogent мержит remote config с локальными override-ами (config.json приоритетнее)

1.3 Горячее обновление конфига

  • Новый WS event config_updated — трекер → агент при изменении через UI
  • Picogent обрабатывает event, обновляет runtime config без рестарта

1.4 Systemd template для мульти-агент

  • picogent@.service — шаблонный unit: ExecStart=node ... /opt/agents/%i/
  • systemctl start picogent@coder, systemctl start picogent@reviewer

Фаза 2: Память агента (ТРЕБУЕТ РЕСЕРЧ)

Вопросы для исследования

  • Per-project vs shared memory? — стоит ли разделять память по проектам? Агент работает на нескольких проектах — смешивать или изолировать?
  • Структура памяти — как организовать memory/:
    • memory/global/ — общие знания, уроки
    • memory/projects/{slug}/ — контекст конкретного проекта
    • memory/sessions/ — автокомпакция сессий
  • Загрузка контекста — как агент выбирает какую память загружать? По текущему проекту? По задаче? Всю?
  • Размер контекста — лимиты на bootstrap context (сейчас 15K chars). Как масштабировать при росте памяти?
  • Компакция — автоматическая очистка старой памяти? Суммаризация?
  • Shared knowledge — если два агента работают на одном проекте, должны ли они видеть память друг друга?

Возможные решения

  • Вариант A: Flat memory — всё в memory/, агент сам разбирается (текущее)
  • Вариант B: Per-project dirs — memory/projects/{slug}/, загружается по контексту задачи
  • Вариант C: Semantic search — агент ищет по памяти через embeddings (тяжёлое решение)
  • Вариант D: Project files as memory — документы проекта на трекере = общая память команды

Фаза 3: UUID-based workspace (отложено)

  • Workspace именуется по member.id (UUID) вместо slug
  • Симлинки agents/coder → agents/{uuid} для удобства
  • Переименование slug не ломает workspace

Решения (принятые)

Решение Дата
agent.json = token + tracker_url, config.json = LLM config 2026-02-25
Трекер = source of truth для routing/orchestration 2026-02-25
Агент не раскрывает api_key трекеру 2026-02-25
Directory mode для мульти-агент (уже работает) 2026-02-25