Свои пресеты типов
У ваших блокнотов свой словарь типов заметок (ADR, Runbook, Incident…)
Пресет — это YAML-файл с набором типов. Блокнот при создании выбирает пресет (--preset) и получает его типы.
Встроенный пресет один: core (Project, Decision, Playbook, Term). Его нельзя переопределить.
В репозитории в presets/ лежат три пресета: dev-project,
personal-finance и agent-retros.
Это примеры, а не стандарт. Формат базы знаний вы выбираете сами: возьмите пресет как есть, поправьте его,
напишите свой с нуля или попросите агента придумать формат под вашу задачу.
1. Создайте каталог и укажите его в конфиге
# config.yaml
presets_dir: ./presets
Каталог читается при каждом обращении, перезапускать сервер не нужно. Подхватываются файлы *.yaml / *.yml.
2. Опишите пресет
presets/ops.yaml:
name: ops # необязательно: по умолчанию имя файла без расширения
description: Эксплуатация: инциденты, runbook-и, решения
types:
- name: Incident
description: Разбор инцидента: хронология, причина, действия
dir: incidents # подкаталог; по умолчанию имя типа во множественном числе (slug)
fields: [description, tags, sources, stale_after, severity]
required: [severity] # поля, без которых запись отклоняется
stale_after: 365d
- name: Runbook
description: Пошаговая инструкция для дежурного
dir: runbooks
fields: [description, tags, sources, stale_after]
stale_after: 90d
- name: Decision
description: Принятое решение и рассмотренные альтернативы
description пресета — это ответ на вопрос «для чего он подходит». Агент видит его в инструменте presets_list
и по нему выбирает пресет для notebook_create, поэтому пишите в нём, для каких блокнотов пресет годится и
для каких нет («Подходит для … Не для …»). Без описания агент увидит только имя и типы.
Допустимые формы записи types: список имён (- Decision), список словарей (как выше) или словарь
Имя: {…}. Поля required и stale_after можно вынести во вложенный template:.
Правила:
- у типа обязательно описание (для блокнотов, созданных с
types:напрямую); - имена типов и каталоги в пресете не должны совпадать (два типа в одном каталоге — ошибка);
- в блокноте не больше 12 типов;
stale_after— срок вида90d; если он некорректен, пресет пропускается целиком, в лог идёт предупреждение;- битый или пустой YAML тоже пропускается, остальные пресеты остаются доступными.
3. Создайте блокнот из пресета
uv run okf-notebooks notebook create runbooks \
--description "Эксплуатационные заметки: инциденты, runbook-и и решения по продакшену" \
--scope "Устойчивые знания об эксплуатации; не писать черновики разборов" \
--preset ops
Агент через MCP делает то же: смотрит доступные пресеты через presets_list, затем notebook_create с preset: "ops" (при политике proposal создание пойдёт
в очередь на одобрение — см. жизненный цикл).
Описание — 40–300 символов, scope обязателен: по нему агент выбирает блокнот.
Попросите агента придумать формат
Писать типы самому не обязательно. Расскажите агенту, что хотите хранить и как будете этим пользоваться, и попросите предложить формат, например:
Хочу блокнот для чтения: книги, заметки по главам, цитаты и идеи, к которым хочу вернуться. Предложи типы заметок с полями и обязательными полями, покажи мне, потом подай заявку на блокнот.
Агент смотрит существующие пресеты через presets_list и вызывает notebook_create со своими types (до 12) и
rationale. При политике proposal по умолчанию заявка ждёт вас: её показывает okf-notebooks notebook pending,
предложенные типы лежат в _proposed/<slug>/.okf/notebook.yaml, а вы одобряете или отклоняете её (жизненный цикл). Позже агент может запросить ещё один тип
через notebook_type_define. Если формат прижился и нужен для других блокнотов, сохраните его файлом пресета.
Типы без пресета
Одноразовый набор типов можно передать файлом (--preset и --types-file вместе не указываются):
uv run okf-notebooks notebook create demo --description "…" --scope "…" --types-file types.yaml
types.yaml — список типов в том же формате, что и в пресете.
Что происходит с блокнотом при изменении пресета
В notebook.yaml блокнота сохраняются имена типов и ссылка на пресет. Описание, поля и stale_after,
которые блокнот не задал сам, подтягиваются из пресета при чтении. Правка пресета меняет эти значения
в уже созданных блокнотах; набор типов блокнота она не меняет. Добавление и переименование типов в
существующем блокноте — через notebook_type_define и okf-notebooks type ….