Суть
Формат решает то, что авторы называют проблемой сборки контекста: определения метрик, схемы таблиц, регламенты и описания API лежат в несовместимых системах — каталогах метаданных с закрытыми API, вики, комментариях к коду, — и каждый, кто строит агента, собирает этот контекст заново и по-своему.
Ответ намеренно скромный: не сервис и не индекс, а соглашение о раскладке файлов. Bundle переносится тарболом, git-репозиторием или монтированием каталога; читается любым редактором и рендерится на GitHub без инструментов.
Что в frontmatter
Обязателен type — вид понятия, и набор видов не фиксирован: производитель заводит свои, потребитель обязан лишь распознать само поле. Рекомендованы title, description, resource (канонический URI) и tags.
Версия 0.2 добавила три семейства полей, отвечающих за качество знания:
| Семейство | Поля | Что описывает |
|---|---|---|
| Происхождение | sources с author, usage_count за usage_window, last_modified |
из чего понятие выведено |
| Доверие | generated: {by, at}, verified списком событий |
кто и когда произвёл и кто подтвердил |
| Жизненный цикл | status (draft / stable / deprecated), stale_after |
когда содержимое считать устаревшим |
Формат записывает сигналы, а не оценки. Достоверность выводится из сигналов, а не проставляется числом — та же позиция, к которой пришла Source Independence с другой стороны: счёт подтверждений это верхняя граница, а не измерение, и классифицировать надо до подсчёта.
Уровни доверия выводятся автоматически из наличия подтверждений: не подтверждено → подтверждено машиной → просмотрено человеком. Личность актора пишется по конвенции: <производитель>/<версия> для агента, human:<id> для человека, process:<id> для автоматики. Префикс human: обязателен — иначе человеческое подтверждение неотличимо от машинного.
Зарезервированные файлы и связи
index.md — перечень содержимого каталога, чтобы навигация шла постепенно и не требовала загружать bundle целиком в контекст. log.md — хронология изменений. Оба необязательны.
Связи — обычные markdown-ссылки в двух формах: абсолютной от корня bundle (/путь/понятие.md, рекомендуется как устойчивая) и относительной. Тип связи не выражается: ссылка означает только «связано», а чем именно — следует из окружающего текста.
Правило соответствия важнее самой схемы
Формально соответствующий bundle обязан немного: разбираемый YAML в каждом нерезервированном .md, непустой type, соблюдение структуры зарезервированных файлов, если они есть.
Гораздо важнее вторая половина правила — потребитель не имеет права отвергать bundle из-за отсутствующих необязательных полей, незнакомых типов, нераспознанных ключей frontmatter, битых ссылок или отсутствующего индекса. Это то, что делает формат пригодным для постепенного внедрения: свои поля добавляются без риска, а неполный bundle остаётся читаемым.
Attested Computation — отдельный вид понятия
Тип Attested Computation несёт санкционированный способ вычисления: runtime (bigquery, dbt, python), parameters как типизированные дыры, которые агент заполняет, computation — тело или путь, executor — как запускать и какой формат квитанции ждать, attester — детерминированный код, проверяющий, что прогон соответствовал описанию.
Смысл разделения: verified подтверждает определение, аттестация подтверждает конкретный прогон. Для агента это разница между «формула метрики согласована» и «вот это число посчитано именно ею».
Чем отличается от MCP
Оба открытые, оба про то, чтобы дать агенту контекст, и на этом сходство кончается.
| MCP | OKF | |
|---|---|---|
| Что это | протокол | формат файлов |
| Когда работает | во время выполнения | во время чтения каталога |
| Что даёт | инструменты, ресурсы, промпты через сервер | понятия и их происхождение |
| Что нужно поднять | сервер | ничего |
Они не конкурируют и складываются естественно: bundle описывает, что организация знает, MCP-сервер даёт доступ к тому, что она умеет делать.
Развилка: внутрь хранилища или на границе экспорта
Формат можно принять двумя способами, и выбор зависит от того, чем является ваше хранилище.
Внутрь — если знание изначально машинное и авторов много: тогда общая схема окупается сразу, а редактор всё равно не главный потребитель.
Только на экспорте — если у хранилища есть своя авторская эргономика, которую формат ломает. Самый частый случай — вики на Obsidian: там связи пишутся двойными квадратными скобками и резолвятся по имени файла, а не по пути, на этом стоят граф, переименования и обратные ссылки, а OKF требует markdown-ссылок. Переход на них платится каждый день ради выгоды, нужной в момент публикации. Тогда преобразование делается на выходе, механически, по таблице соответствия имени и пути.
Второй довод в пользу границы — возраст спецификации. v0.1 вышла 12 июня 2026, v0.2 уже переименовала timestamp в generated и перенесла цитаты из тела в sources; авторы прямо называют это отправной точкой, а не законченным стандартом. При изменении схемы на границе правится один преобразователь, а внутри — все файлы разом.
Что стоит взять независимо от принятия формата
verified как событие, а не дата. Голая дата теряет, кто и как подтвердил, — а именно это отличает прочтение первоисточника от пересказа (Source Independence). Список событий с актором сохраняет разницу.
stale_after вместо общего порога устаревания. Горизонт разный: цены моделей протухают за месяц, баллы бенчмарков за полгода. Явная дата в самом понятии точнее, чем единый порог в скрипте проверки.
Связано с
- MCP — второй открытый стандарт про контекст агента, но на уровне протокола, а не файлов
- Agent Memory — bundle как форма долговременного знания, лежащего вне модели
- Source Independence — независимо полученный тот же вывод: достоверность выводится из сигналов, а не считается по количеству
- RAG — bundle как корпус, поверх которого строится поиск
- Context Compaction — постепенная навигация через
index.mdвместо загрузки каталога целиком