Карта владения кодовой базой

Hermes — большой репозиторий, и почти любой вклад затрагивает ровно одну подсистему. На этой странице каждая подсистема сопоставлена с исходными каталогами и документом, с которого стоит начать перед внесением изменений. Используйте её, чтобы найти нужный стартовый документ, правильное место для изменения и каталог с тестами (тесты зеркалируют структуру исходников: код в tools/ тестируется в tests/tools/, плагины — в tests/plugins/<type>/, и так далее).

ПодсистемаИсходные каталогиТочка входа в документацию
Ядро агента (цикл, транспорты, сжатие)agent/, run_agent.pyЦикл агента, Сжатие и кэширование контекста
Сборка промптаagent/prompt_builder.py, agent/system_prompt.pyСборка промпта
Провайдеры моделей и транспортыagent/transports/, plugins/model-providers/, hermes_cli/models.pyДобавление провайдеров, Плагины провайдеров моделей, Среда выполнения провайдера
Встроенные инструментыtools/Добавление инструментов, Среда выполнения инструментов
Шлюз сообщенийgateway/, plugins/platforms/Внутреннее устройство шлюза, Добавление адаптеров платформ
CLIhermes_cli/Расширение CLI
Система плагиновplugins/Разработка плагина Hermes
Навыки (встроенные и опциональные)skills/, optional-skills/Создание навыков
Cron / отложенные задачиcron/Внутреннее устройство cron
Хранилище сессийhermes_state.py, hermes_state_*.pyХранилище сессий
Стек браузераtools/browser_tool.py, tools/browser_supervisor.py, tools/browser_cdp_tool.pyBrowser Supervisor
Egress-файрволagent/proxy_sources/iron_proxy.pyВнутреннее устройство egress
ACP (интеграция с IDE)acp_adapter/Внутреннее устройство ACP
Десктопное приложениеapps/desktop/SDK плагинов десктопа, Разработка UI для worktree
TUIui-tui/, tui_gateway/Разработка UI для worktree
Сайт документацииwebsite/Как внести вклад
Тестыtests/, tests-js/Как внести вклад → Перед отправкой

Из этой карты вытекает несколько правил:

  • Изменения должны оставаться внутри своей подсистемы. Если плагину нужно править файлы ядра — это признак неудачного дизайна: вместо этого расширьте общий интерфейс плагинов (см. критерии приёма вклада в AGENTS.md репозитория).
  • Для каждого изменённого каталога исходников запускайте зеркальный каталог тестов. Изменение в plugins/platforms/telegram/ требует зелёного tests/plugins/platforms/, а не только того тестового файла, который пришёл на ум в первую очередь.
  • Когда затронуты две подсистемы, изменение принадлежит более узкой. Правку лучше сделать в адаптере или плагине, чем в ядре агента: ядро — это узкое горлышко, и за каждое добавление в нём приходится платить при каждом обращении к API.
перевод и редактура:

обновлено

⌕ ESC