docs/AGENT-PLAN.md

84 lines
4.4 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.

# 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)
```
agents/{slug}/
AGENT.md # инструкции (статичные)
memory/
agent.md # личные уроки, стиль (грузится ВСЕГДА)
projects/
{slug}/
context.md # архитектура, решения (грузится per-task)
recent.md # последние действия (rolling window, ~20 записей)
```
### Загрузка контекста
1. Task приходит с `project_slug`
2. Bootstrap: `AGENT.md` + `memory/agent.md` + `memory/projects/{slug}/context.md` + `recent.md`
3. Итого ~7K chars вместо 15K (экономия ~50%)
4. Кросс-проектная инфа — on-demand через MCP-тулзы, НЕ в bootstrap
### Компакция
- После завершения задачи: LLM суммаризирует сессию → 3-5 строк → append `recent.md`
- `recent.md`: rolling window, последние ~20 записей, старые вытесняются
- Weekly: LLM ревьюит `recent.md` → обновляет `context.md` (long-term)
- Сырые JSONL сессии: удалять через 7 дней (суммаризация уже произошла)
### Кросс-проектный доступ
- Агент = **member** в своём проекте, **viewer** в связанных
- Viewer = read-only (list_tasks, list_project_files через REST)
- Viewer НЕ получает WS push-события (экономия токенов)
- Три уровня контроля: AGENT.md → MCP-тулзы → API (403)
### Shared knowledge
- Project docs (README, ARCHITECTURE) = shared, живут в трекере/репо
- Personal memory = agent-only, не шарится между агентами
- Координация — через project docs или чат, не через чужую память
---
## Фаза 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 |
| Per-project память: agent.md (always) + projects/{slug}/ (per-task) | 2026-02-25 |
| Viewer-роль: read-only доступ к чужим проектам | 2026-02-25 |
| Viewer без WS push — только REST pull | 2026-02-25 |
| Shared knowledge через project docs, не через чужую память | 2026-02-25 |