198 lines
8.3 KiB
Markdown
198 lines
8.3 KiB
Markdown
# Онтология — Правила ведения
|
||
|
||
> Эти правила **обязательны** для всех агентов. Невыполнение = нарушение.
|
||
|
||
---
|
||
|
||
## 1. Когда использовать онтологию
|
||
|
||
**Обязательно** при:
|
||
- Работе с проектами (создание, обновление, закрытие)
|
||
- Работе с задачами (создание, изменение статуса, удаление)
|
||
- Распределении работ между агентами
|
||
- Проверке зависимостей между задачами
|
||
- Планировании новых активностей
|
||
|
||
**Онтология — единственный источник истины** о проектах и задачах. Не держать информацию в голове, в daily notes или в MEMORY.md — только в онтологии.
|
||
|
||
---
|
||
|
||
## 1.1 Строгая иерархия проекта и задачи
|
||
|
||
- **Task без Project не существует.**
|
||
- Каждый `Project` — это отдельный контейнер с собственной документацией.
|
||
- Каждая `Task` обязана принадлежать одному `Project`.
|
||
- Если работа не укладывается в существующий проект, сначала создаётся новый `Project`, затем задачи внутри него.
|
||
- У `Task` есть уникальный идентификатор и отдельная папка внутри папки проекта.
|
||
- У `Project` есть общая документация на уровне всей папки проекта.
|
||
- Человеческое имя объекта хранится в `name` / `title`; машинный `id` остаётся внутренним и не должен быть частью читаемого названия в документации и папках.
|
||
|
||
---
|
||
|
||
## 2. Правила записи ( Stream — curator)
|
||
|
||
### 2.1 Стрим — единственный writer
|
||
- Все изменения в онтологию вносит **только Стрим**
|
||
- Другие агенты (Dev, Legal, Feda) **не пишут напрямую**
|
||
- Запросы на изменения → `sessions_send` → Стрим → проверка → внесение
|
||
|
||
### 2.2 Изменения — только с подтверждения Славы
|
||
- Любое изменение (создание, удаление, обновление сущности) → **только после ОК Славы**
|
||
- Исключение: мелкие правки по типу "обновить статус на done" если Слава сам сказал
|
||
- Спорные вопросы → Слава решает
|
||
|
||
### 2.3 Принцип одного источника
|
||
- Информация о проекте/задаче должна быть **только в онтологии**
|
||
- Не дублировать в MEMORY.md, daily notes, TZ файлах
|
||
- Исключение: MEMORY.md содержит только **ссылки** на онтологию
|
||
|
||
---
|
||
|
||
## 3. Атрибуты сущностей
|
||
|
||
### Project
|
||
| Поле | Тип | Обязательно | Описание |
|
||
|------|-----|-------------|----------|
|
||
| `name` | string | ✅ | Человеческое название проекта |
|
||
| `status` | enum | ✅ | planning, active, paused, completed, archived |
|
||
| `folder` | string | ✅ | Папка проекта: `tasks/{project-slug}/` |
|
||
| `doc_path` | string | ✅ | Главный файл проекта, обычно `PROJECT.md` |
|
||
| `description` | string | — | Краткое описание |
|
||
| `start_date` | date | — | Дата старта |
|
||
| `end_date` | date | — | Дата окончания |
|
||
|
||
### Task
|
||
| Поле | Тип | Обязательно | Описание |
|
||
|------|-----|-------------|----------|
|
||
| `title` | string | ✅ | Человеческое название задачи |
|
||
| `project` | string | ✅ | ID проекта |
|
||
| `folder` | string | ✅ | Папка задачи внутри проекта |
|
||
| `doc_path` | string | ✅ | Главный файл задачи, обычно `TASK.md` |
|
||
| `assignee` | string | — | Исполнитель |
|
||
| `status` | enum | ✅ | open, in_progress, done, blocked, cancelled |
|
||
| `priority` | enum | — | high, medium, low, urgent |
|
||
| `description` | string | — | Детали задачи |
|
||
|
||
---
|
||
|
||
## 4. Жизненный цикл
|
||
|
||
### Создание проекта
|
||
1. Слава/агент предлагает → обсуждаем
|
||
2. Слава соглашается → Стрим создаёт в онтологии
|
||
3. Привязываем `folder` и `doc_path`
|
||
4. Создаём структуру `tasks/{project}/`
|
||
|
||
### Создание задачи
|
||
1. Предложение → описание → assignee → приоритет
|
||
2. Слава ОК → Стрим создаёт
|
||
3. Task привязывается к Project
|
||
4. Назначаем `folder` и `doc_path`
|
||
|
||
### Обновление статуса
|
||
1. Кто-то сообщает (Слава, агент, результат работы)
|
||
2. Стрим проверяет → обновляет в онтологии
|
||
3. Если задача done → проверяем есть ли зависимые
|
||
|
||
### Закрытие проекта
|
||
1. Все задачи done
|
||
2. Слава подтверждает → status → done
|
||
3. Description обновить с датой закрытия
|
||
|
||
---
|
||
|
||
## 5. Проверки (автоматически)
|
||
|
||
При каждом запросе涉及 проектов/задач:
|
||
- [ ] Данные взяты из онтологии
|
||
- [ ] Статусы актуальны
|
||
- [ ] Нет конфликтующих задач
|
||
- [ ] Assignee соответствует
|
||
|
||
При планировании:
|
||
- [ ] Проверены зависимости
|
||
- [ ] Нет блокирующих задач
|
||
- [ ] Учтены приоритеты
|
||
|
||
---
|
||
|
||
## 6. Недопустимо
|
||
|
||
- ❌ Создавать задачи минуя онтологию
|
||
- ❌ Держать важные данные только в MEMORY.md
|
||
- ❌ Изменять онтологию без ведома Славы
|
||
- ❌ Другим агентам писать напрямую
|
||
- ❌ Удалять сущности без подтверждения
|
||
|
||
---
|
||
|
||
## 7. Файлы онтологии
|
||
|
||
```
|
||
memory/ontology/
|
||
├── schema.yaml — схема типов и полей (обязательна валидация)
|
||
├── graph.jsonl — сами сущности и связи
|
||
└── RULES.md — этот файл
|
||
```
|
||
|
||
Ontology skill reference:
|
||
```
|
||
skills/ontology/references/schema.md
|
||
```
|
||
|
||
Ontology script:
|
||
```
|
||
skills/ontology/scripts/ontology.py
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Исключения
|
||
|
||
Всё что **не относится** к проектам/задачам — в MEMORY.md или daily notes:
|
||
- Личные заметки о Славе
|
||
- Пароли/ключи (только .env)
|
||
- Техническая документация (TZ, PROJECT.md)
|
||
- Архивные данные
|
||
|
||
---
|
||
|
||
## 9. Стандарт структуры папок
|
||
|
||
### Project
|
||
```text
|
||
tasks/<project-slug>/
|
||
├── PROJECT.md
|
||
├── docs/
|
||
├── journal/
|
||
├── assets/
|
||
├── meta/
|
||
└── TASKS/
|
||
├── backlog/
|
||
├── active/
|
||
├── blocked/
|
||
├── done/
|
||
└── archive/
|
||
```
|
||
|
||
### Task
|
||
```text
|
||
tasks/<project-slug>/TASKS/<status>/<task-id>/
|
||
├── TASK.md
|
||
├── context.md
|
||
├── report.md
|
||
└── attachments/
|
||
```
|
||
|
||
### Правило путей
|
||
- `Project.folder` — папка проекта, всегда читаемый slug.
|
||
- `Project.doc_path` — главный документ проекта.
|
||
- `Task.folder` — папка задачи внутри папки проекта, всегда читаемый slug.
|
||
- `Task.doc_path` — главный документ задачи.
|
||
- `Task` всегда связан с `Project` и живёт внутри его структуры.
|
||
- В именах папок и документов не использовать внутренние `id` как часть человекочитаемого названия; внутренний `id` хранится только в онтологии.
|
||
|
||
---
|
||
|
||
_Обновлено: 2026-04-09_
|