Плагины
Ядро узкое: расширения — отдельные программы и файлы, а не загружаемые модули. Ничего не пересобирается, ничего не ставится внутрь ядра. Три контракта:
| что | как подключается | страница |
|---|---|---|
| долгая память | программа memory в tools_dir, протокол recall/retain/flush | Долгая память |
| скиллы | каталог skills/<имя>/SKILL.md с front-matter | Скиллы |
| свои инструменты | бинарь в tools_dir + --help + необязательный schema.json | Свои инструменты |
Что расширением не является
- Поверхности (TUI, веб-клиент, десктоп, Telegram) — части продукта, а не плагины.
- Провайдер модели — конфиг:
[providers.<имя>]сbase_url,model,key_envиbody_patchдля квирков. Нового кода не требует. - Инстанс (
soul.md,user.md,memory.md, тикеты) — данные, а не расширение. В публикуемый репозиторий они не попадают.
Как ядро узнаёт о расширении
Инструменты — при запуске: реестр обходит tools_dir, у каждого бинаря спрашивает --help (первая строка — суть, вторая — usage) и берёт schema.json, если он есть. Скиллы — при каждой сборке промпта: в префикс уезжает только оглавление из front-matter. Память — по argv-контракту: нет бинаря или enabled = false — канала просто нет, и это не ошибка хода.