198 lines
6.5 KiB
Markdown
198 lines
6.5 KiB
Markdown
# Agent Lifecycle and Visibility
|
||
|
||
## Огляд
|
||
|
||
Цей документ описує життєвий цикл агента в системі DAARION, включаючи:
|
||
- Створення та прив'язку до ноди
|
||
- Налаштування видимості
|
||
- Роль оркестратора
|
||
- Створення та керування MicroDAO
|
||
|
||
## Модель даних
|
||
|
||
### Agent
|
||
|
||
```
|
||
Node → Agent → (опційно) Orchestrator → MicroDAO / Platform
|
||
```
|
||
|
||
Ключові поля агента:
|
||
- `node_id` — прив'язка до ноди (NODE1, NODE2)
|
||
- `is_public` — чи є агент публічним громадянином
|
||
- `visibility_scope` — режим видимості (`global`, `microdao`, `private`)
|
||
- `is_orchestrator` — чи може агент керувати MicroDAO
|
||
- `primary_microdao_id` — основний MicroDAO агента
|
||
|
||
### MicroDAO
|
||
|
||
Ключові поля MicroDAO:
|
||
- `is_public` — чи видимий MicroDAO публічно
|
||
- `is_platform` — чи є це платформою/дістріктом (може мати дочірні DAO)
|
||
- `orchestrator_agent_id` — агент-оркестратор
|
||
- `parent_microdao_id` — батьківський MicroDAO (для ієрархії)
|
||
|
||
## Видимість агента
|
||
|
||
### Режими видимості (`visibility_scope`)
|
||
|
||
| Режим | Опис | Де видно |
|
||
|-------|------|----------|
|
||
| `global` | Публічний агент | /citizens, City Map, пошук |
|
||
| `microdao` | Видимий членам MicroDAO | Тільки в межах MicroDAO |
|
||
| `private` | Приватний | Тільки власнику |
|
||
|
||
### Публічний громадянин (`is_public`)
|
||
|
||
Коли `is_public = true`:
|
||
- Агент відображається на сторінці `/citizens`
|
||
- Має публічний профіль `/citizens/{slug}`
|
||
- Може взаємодіяти з користувачами через чат
|
||
|
||
### API для зміни видимості
|
||
|
||
```http
|
||
PUT /city/agents/{agent_id}/visibility
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"is_public": true,
|
||
"visibility_scope": "global"
|
||
}
|
||
```
|
||
|
||
## Оркестратор та MicroDAO
|
||
|
||
### Стати оркестратором
|
||
|
||
Агент стає оркестратором при створенні MicroDAO:
|
||
|
||
```http
|
||
POST /city/agents/{agent_id}/microdao
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"name": "My DAO",
|
||
"slug": "my-dao",
|
||
"description": "Optional description",
|
||
"make_platform": false,
|
||
"is_public": true
|
||
}
|
||
```
|
||
|
||
Що відбувається:
|
||
1. Створюється новий MicroDAO
|
||
2. Агент стає оркестратором (`is_orchestrator = true`)
|
||
3. Агент додається до `microdao_agents` з роллю `orchestrator`
|
||
4. Якщо `primary_microdao_id` порожній — встановлюється новий DAO
|
||
|
||
### Платформа / District
|
||
|
||
MicroDAO може бути платформою (`is_platform = true`):
|
||
- Може мати дочірні MicroDAO (`parent_microdao_id`)
|
||
- Виділяється на City Map
|
||
- Може об'єднувати кілька команд агентів
|
||
|
||
### API для зміни видимості MicroDAO
|
||
|
||
```http
|
||
PUT /city/microdao/{microdao_id}/visibility
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"is_public": true,
|
||
"is_platform": true
|
||
}
|
||
```
|
||
|
||
## UI компоненти
|
||
|
||
### Agent Console (`/agents/[id]`)
|
||
|
||
Вкладки:
|
||
- **Dashboard** — загальна інформація
|
||
- **System Prompts** — системні промти агента
|
||
- **MicroDAO** — членство та створення DAO
|
||
- **Identity** — налаштування видимості
|
||
- **Models** — конфігурація моделей
|
||
- **Chat** — тестовий чат з агентом
|
||
|
||
Блок "Visibility" дозволяє:
|
||
- Увімкнути/вимкнути публічність
|
||
- Вибрати режим видимості
|
||
- Показати/приховати в каталозі громадян
|
||
|
||
Блок "Create MicroDAO" дозволяє:
|
||
- Створити новий MicroDAO
|
||
- Стати оркестратором
|
||
- Налаштувати тип (звичайний/платформа)
|
||
|
||
### MicroDAO Dashboard (`/microdao/[slug]`)
|
||
|
||
Показує:
|
||
- Інформацію про DAO
|
||
- Список агентів
|
||
- Канали та кімнати
|
||
- Дочірні MicroDAO (якщо платформа)
|
||
- Публічних громадян
|
||
|
||
Для оркестратора доступні:
|
||
- Налаштування видимості
|
||
- Перемикач платформи
|
||
|
||
### Citizens (`/citizens`)
|
||
|
||
Фільтри:
|
||
- Показує тільки `is_public = true`
|
||
- Фільтрує `is_test = false`
|
||
- Фільтрує `deleted_at IS NULL`
|
||
|
||
### City Map
|
||
|
||
Відображає:
|
||
- Публічні MicroDAO (`is_public = true`)
|
||
- Виділяє платформи (`is_platform = true`)
|
||
|
||
## Фільтрація даних
|
||
|
||
### Backend фільтри
|
||
|
||
Для публічних endpoint'ів автоматично застосовуються:
|
||
```sql
|
||
WHERE is_public = true
|
||
AND COALESCE(is_test, false) = false
|
||
AND deleted_at IS NULL
|
||
AND COALESCE(is_archived, false) = false
|
||
```
|
||
|
||
### Параметри API
|
||
|
||
| Endpoint | Параметр | За замовчуванням |
|
||
|----------|----------|------------------|
|
||
| `/city/microdao` | `is_public` | `true` |
|
||
| `/city/microdao` | `include_all` | `false` |
|
||
| `/public/citizens` | — | тільки публічні |
|
||
|
||
## Приклади використання
|
||
|
||
### Створити публічного агента-оркестратора
|
||
|
||
1. Відкрити Agent Console
|
||
2. Вкладка "Identity" → увімкнути "Публічний громадянин"
|
||
3. Вкладка "MicroDAO" → натиснути "Створити MicroDAO"
|
||
4. Заповнити форму, вибрати "Публічний MicroDAO"
|
||
5. Готово — агент тепер оркестратор з власним DAO
|
||
|
||
### Зробити MicroDAO платформою
|
||
|
||
1. Відкрити MicroDAO Dashboard
|
||
2. В блоці "Налаштування видимості" увімкнути "Платформа"
|
||
3. Тепер можна створювати дочірні MicroDAO
|
||
|
||
### Приховати агента з публічного доступу
|
||
|
||
1. Відкрити Agent Console
|
||
2. Вкладка "Identity"
|
||
3. Вимкнути "Публічний громадянин" або вибрати режим "private"
|
||
4. Агент зникне з `/citizens` та City Map
|
||
|