temporality
Изменить страницу↗
Инженерные документы

Реестр артефактов (Artifact Registry)

#1. Цель

Ввести артефакт как first-class ресурс Temporality: ссылочный документ (регламент о качестве кодирования, утверждённая инструкция, чек-лист безопасности, список одобренных библиотек), который навыки указывают в манифесте, но который никогда не попадает в промпт неявно — агент загружает его по требованию, когда задача совпала с условием применимости.

Ключевой принцип документа: содержимое артефакта раскрывается постепенно. Навык в системном промпте — это digest ≤1500 символов; SKILL.md целиком — по skill_inspect; связанный регламент целиком — по artifact_read. Третий уровень раскрытия закрывает класс задач «навык знает, что существует регламент, но не тащит его в каждый ран».

Второй принцип: реестр — это указатель + права, а не обязательно хранилище тела. Для builtin-провайдера документ лежит в Postgres, для внешних (СЭД, Confluence, S3) — у нас только ссылка и контракт доступа. Выбор бэкенда — конфигурация инсталляции, не код (тот же вывод, что у секретов, docs/secrets-management.md §10).


#2. Проблематика текущего состояния


#3. Основные понятия

#3.1. Artifact (артефакт)

Org-scoped ресурс (как секреты, навыки и агенты):

workspace_artifact
    id            TEXT PRIMARY KEY
    title         TEXT          -- человекочитаемое имя
    description   TEXT          -- КОГДА читать этот документ (условие применимости)
    provider      TEXT          -- builtin | url (будущее: s3, sed)
    external_ref  TEXT          -- ссылка во внешней системе (для не-builtin)
    content       TEXT          -- тело документа (builtin)
    content_hash  TEXT          -- sha256 тела, пересчитывается на записи
    size_bytes    BIGINT
    mime_type     TEXT          -- text/markdown по умолчанию
    org_unit_id   TEXT NULL REFERENCES org_unit(id)   -- NULL = вся инсталляция
    created_at / updated_at

description — важнейшее поле модели. Это не аннотация содержания, а условие применимости («читай перед ревью PR, если затронута криптография»). Именно по нему агент решает, грузить документ или нет; болванка «см. документ» здесь бесполезна так же, как бесполезный заголовок группы в прайминге.

#3.2. Artifact Reference (ссылка из навыка)

Поле манифеста skill.yaml:

artifacts:
  - id: coding-standard
    note: применимо к любому коду на Go в этом репозитории

Ссылка версионируется вместе с навыком (манифест иммутабен в рамках версии), а тело документа живёт своей жизнью: регламент обновляется независимо от процедуры. Воспроизводимость («на какой версии регламента основано решение») восстанавливается по content_hash в событиях чтения, а не хранением снапшотов в каждом навыке.

#3.3. Artifact Provider (провайдер хранилища)

#3.4. Прогрессивное раскрытие

digest навыка      "Artifacts: 2 reference docs (skill_inspect)"   — ~50 симв.
      ↓ skill_inspect
список артефактов  title + description (когда читать) + note       — ~200 симв./шт.
      ↓ artifact_read
тело документа     чанками по 32 КиБ + checksum                     — по требованию

#4. Принципы


#5. Модель доступа


#6. Инструменты агента

skill_inspect показывает разрешённый список артефактов навыка (title, description, note) — без отдельного вызова на каждый id.


#7. Аудит

Разделение то же, что у секретов: чтение — поток наблюдаемости, мутации — журнал доступа.


#8. API


#9. UI (фаза 2)


#10. Фазы реализации

#Фаза 1 — реестр builtin + тулы (закрывает основную боль)

Таблица + миграция; CRUD API с org-видимостью и RBAC; artifacts в манифесте навыка + строка в digest; разрешение ссылок в GET /skills/{id}; тулы artifact_search / artifact_read с чанками; событие artifact.read + подпись в трейсе; guard на удаление занятого. Управление — через API. Внешних зависимостей нет.

#Фаза 2 — UI и url-провайдер

Раздел UI и привязка в редакторе навыка; честный url-провайдер: прокси чтения через ядро (egress только у ядра, как у секретов), кэш с TTL, тегging «внешний документ недоступен».

#Фаза 3 — корпоративные хранилища и зрелость

Адаптеры S3 и СЭД/ECM (авторизация ядра, маппинг метаданных, выгрузка тела в builtin-кэш по требованию); версионирование содержимого (история tел + снапшоты для комплаенса); полнотекстовый/семантический поиск по содержимому. Предложения артефактов от агентов с человеческим apply и жизненный цикл (draft → review → approved) выделены в отдельный документ: docs/artifact-lifecycle.md.


#11. Критерии готовности

#Фаза 1

#Фаза 2

#Фаза 3


#12. Открытые вопросы


#13. Архитектурные ограничения