Архитектура исполнителей
Как Apothem проецирует единую группу возможностей делегированных исполнителей на семнадцать сред программирования с расходящимися поверхностями хуков и форматами правил.
Это страница технической спецификации для разработчиков. Она использует внутреннюю лексику Apothem — классы адаптеров, материализаторы, манифест распространения, сходимость по соглашениям соседних элементов — без смягчения для широкой аудитории.
Apothem читает один общий профиль (~/.config/apothem/profile.yaml) и
материализует конфигурацию, нативную для среды, для семнадцати зарегистрированных
адаптеров. Среды не разделяют общую модель возможностей делегированных исполнителей: одни предоставляют
хуки перед вызовом инструмента, другие исполняют правила из плоских файлов .md,
третьи встраивают каждое правило в единый файл инструкций, а некоторые рендерят
конфигурацию на основе профиля во время установки. Эта страница описывает это
расхождение и дисциплину, которую Apothem применяет поверх него.
Матрица возможностей делегированных исполнителей по средам
Приведённая ниже матрица охватывает все семнадцать сред. Колонки: поверхность хука PreToolUse, которую предоставляет каждая среда, формат, который Apothem использует для активации правил, класс адаптера (см. Классы адаптеров) и рендерит ли адаптер нативную конфигурацию через материализатор.
| Среда | Поверхность хука PreToolUse | Формат активации правил | Класс адаптера | Материализатор |
|---|---|---|---|---|
| antigravity | Нативная поверхность хуков существует; только вспомогательный материал Apothem | GEMINI.md плюс правила плагина Antigravity CLI | Класс I | нет |
| claude-code | Нативные PreToolUse / PostToolUse / Stop / SessionStart | Плоские правила .md в rules/ | Класс II-A | нет (шаблоны настроек вендора) |
| codebuddy | Нет | Файл проектных правил .codebuddy/rules/apothem-rules.md | Класс I | нет |
| codex | Нативные хуки жизненного цикла hooks.json | AGENTS.md плюс вспомогательные правила, на которые ссылаются установленные навыки | Класс I | нет |
| cursor | Нет | Правила рабочей области .mdc (фронтматтер MDC: description / globs / alwaysApply) | Класс I | нет |
| gemini-cli | Нет | Правила, встроенные в единый GEMINI.md | Класс I | нет |
| github-copilot | Нет (расширение IDE, нет хуков вызова инструментов) | Правила в .github/copilot-instructions.md | Класс I | нет |
| glm | Нет (бэкенд модели; нет поверхности инструментов исполнителя) | .apothem/providers/glm.toml конфигурация провайдера бэкенда (нет группы правил) | Класс I | нет |
| hermes | Только вспомогательный материал | config.yaml плюс внешний каталог навыков | Класс II-B | config.yaml |
| kimi-code | Нет | AGENTS.md плюс вспомогательные правила в .kimi-code/.apothem/support/ | Класс I | нет |
| kiro | Нет (хуки исполнителей Kiro вне области адаптера) | Управляющий файл .kiro/steering/apothem-rules.md | Класс I | нет |
| open-claw | Только вспомогательный материал | openclaw.json плюс дополнительный каталог навыков | Класс II-B | openclaw.json |
| opencode | Только вспомогательный материал | JSON, отрендеренный из профиля, плюс нативные команды, навыки и исполнители | Класс II-B | opencode.json |
| qwen-code | Нативные PreToolUse / Stop / SessionStart | QWEN.md плюс нативные команды, навыки и исполнители | Класс II-B | settings.json / QWEN.md |
| trae | Нет | Файл проектных правил .trae/rules/apothem-rules.md | Класс I | нет |
| windsurf | Нет | Правила в .devin/rules/ | Класс I | нет |
| zed | Нет | Плоский файл .rules в корне проекта | Класс I | нет |
Примечания к матрице:
- claude-code — эталонный адаптер. Он несёт нативные хуки PreToolUse,
PostToolUse, Stop и SessionStart и поставляет шаблоны настроек вендора. Он
намеренно не управляет
CLAUDE.md— этот файл является территорией, принадлежащей оператору. - codex устанавливает нативные хуки жизненного цикла через
hooks.json, преобразует исполнителей в TOML, оборачивает запросы команд как навыки Codex и оставляетconfig.tomlво владении оператора. - antigravity сохраняет
~/.gemini/GEMINI.mdв качестве глобального якоря контекста и устанавливает плагин Apothem в~/.gemini/antigravity-cli/plugins/apothem/. Файлы хуков сохраняются как вспомогательный материал, пока адаптер не возьмёт на себя трансляцию схемы хуков Antigravity. - cursor активирует правила через файлы
.mdc, несущие фронтматтер MDC вендора (description,globs,alwaysApply); адаптер не пишет одиночный файл.cursorrules. - windsurf использует
.devin/rules/; адаптер не пишет одиночный файл.windsurfrules. - hermes и open-claw рендерят нативные файлы конфигурации и подключают вспомогательные каталоги навыков Apothem через документированную настройку каталога навыков каждой среды. Неподдерживаемые общие группы остаются в поддеревьях поддержки, принадлежащих Apothem.
- qwen-code рендерит документированные ключи
settings.jsonдля контекста и диспетчеризации хуков, затем использует нативные для Qwen каталоги команд, навыков и исполнителей.
Дисциплина межсредовой оркестрации
Apothem применяет сходимость по соглашениям соседних элементов: один и тот же
вызываемый оператором рабочий процесс проецируется в нативную идиому каждой среды,
а не принудительно приводится к одному общему формату. Правило, которое активируется
как плоский файл .md под claude-code, становится правилом рабочей области .mdc
под cursor, встроенным разделом GEMINI.md под gemini-cli и конкатенированной
ссылкой в QWEN.md под qwen-code плюс нативными каталогами обнаружения — то же
намерение, диалект каждой среды.
Каноническая эталонная группа находится по адресу:
src/apothem/{rules,commands,skills,agents,output-styles,hooks,conformity,statuslines}/Каждый адаптер распространяет подмножество этой группы. Подмножество для каждой среды
объявлено в src/apothem/lib/propagation-manifest.yaml; манифест является единым
источником истины о том, какие артефакты достигают какой среды и в какой форме.
Адаптер никогда не изобретает артефакты вне манифеста, а манифест никогда не
назначает артефакт среде, у которой нет поверхности для его размещения.
Объяснение классов адаптеров
Apothem сортирует адаптеры на три класса по тому, как они транслируют общий профиль в нативный для среды вывод.
- Класс I — прямое распространение. Адаптер копирует канонические эталонные артефакты (подмножество, объявленное в манифесте) напрямую в место конфигурации среды без шага рендеринга. Материализатора нет. antigravity, codebuddy, codex, cursor, gemini-cli, github-copilot, glm, kimi-code, kiro, trae, windsurf и zed относятся к Классу I.
- Класс II-A — прямое распространение + шаблоны настроек, привязанные к вендору. Адаптер выполняет прямое распространение артефактов и дополнительно управляет специфичными для вендора шаблонами настроек, привязанными к схеме вендора. claude-code относится к Классу II-A.
- Класс II-B — материализатор единой поверхности, рендеримой из профиля. Адаптер рендерит общий профиль в единую нативную поверхность конфигурации через материализатор. hermes, open-claw, opencode и qwen-code относятся к Классу II-B.
Поведение во время материализации
Различие классов проявляется во время материализации — когда оператор запускает CLI против среды:
apothem install --harness <H>распространяет подмножество манифеста для<H>и для адаптеров Класса II-A / II-B рендерит нативную для среды конфигурацию.apothem verify --harness <H>проверяет установленную конфигурацию против того, что произвёл бы текущий профиль, и сообщает о расхождении.apothem doctorсообщает статус по средам для каждого зарегистрированного адаптера — установлено / отсутствует / расхождение.
См. справочник по CLI для полных поверхностей команд.
Таксономия расхождений
Семнадцать сред расходятся по трём осям. Каждое различие между средами в матрице сводится к одной из них.
| Ось | Диапазон, наблюдаемый среди семнадцати сред |
|---|---|
| Поверхность хуков | Нативные многособытийные (claude-code, codex, qwen-code) → только вспомогательный материал хуков (antigravity, gemini-cli, hermes, open-claw, opencode) → нет (codebuddy, cursor, github-copilot, glm, kimi-code, kiro, trae, windsurf, zed) |
| Формат активации правил | Плоский .md (claude-code) → правила плагина (antigravity) → рабочая область .mdc (cursor) → правила каталога (codebuddy, trae, windsurf) → управляющий файл (kiro) → плоский файл в корне проекта (zed) → единый встроенный файл (codex, gemini-cli, github-copilot, kimi-code) → вспомогательный материал, на который ссылается конфигурация (hermes, open-claw, opencode, qwen-code) → конфигурация провайдера бэкенда (glm) |
| Класс адаптера | Класс I прямое распространение → Класс II-A прямое распространение + настройки вендора → Класс II-B единая поверхность, рендеримая из профиля |
Задача Apothem — удерживать одно согласованное намерение оператора постоянным, пока эти три оси варьируются от среды к среде. Манифест распространения и контракт класса адаптера — два механизма, которые сохраняют это намерение стабильным поверх расхождения.
Возобновляемое планирование
Как Apothem выносит рабочее состояние в локальный для проекта набор .apothem/plans/ (`.plans/` остаётся поддерживаемым резервным вариантом для обратной совместимости), чтобы долгая работа переживала границы сессии, учётной записи и машины.
Последовательность аудиторской проверки
Последовательность из одиннадцати команд аудита, которая проверяет Apothem перед выпуском.