7.4 KiB
Состав system prompt Hermes Whale
Дата анализа: 2026-06-24 Версия: Текущее состояние на момент разговора
System prompt собирается в agent/system_prompt.py (Hermes Agent) из трёх слоёв: stable, context, volatile.
Полный состав
СТАБИЛЬНЫЙ СЛОЙ (stable) — кешируется на всю сессию
Этот слой не меняется между поворотами. Всё, кроме SOUL.md, захардкожено в agent/prompt_builder.py.
| # | Блок | Источник | Описание |
|---|---|---|---|
| 1 | SOUL.md | ~/.hermes/hermes-whale/SOUL.md |
Кастомная идентичность: «Кит (Whale) — Alex's personal agent». Правила: Obsidian MCP, jq, backup before edit, plan first, stop on стоп. |
| 2 | Hermes Agent help guidance | prompt_builder.py: HERMES_AGENT_HELP_GUIDANCE |
docs.hermes-agent.nousresearch.com — source of truth |
| 3 | Task completion guidance | prompt_builder.py: TASK_COMPLETION_GUIDANCE |
«Finishing the job» — доводить до конца, не фабриковать |
| 4 | Memory guidance | prompt_builder.py: MEMORY_GUIDANCE |
Как сохранять memory (declarative facts, не task progress) |
| 5 | Session search guidance | prompt_builder.py: SESSION_SEARCH_GUIDANCE |
session_search для кросс-сессионного контекста |
| 6 | Skills guidance | prompt_builder.py: SKILLS_GUIDANCE |
Сохранять сложные подходы как skills, патчить устаревшие |
| 7 | Tool-use enforcement | prompt_builder.py: TOOL_USE_ENFORCEMENT_GUIDANCE |
Ты ДОЛЖЕН вызывать инструменты, не описывать планы |
| 8 | Execution discipline | prompt_builder.py: OPENAI_MODEL_EXECUTION_GUIDANCE |
Расширенные правила: tool persistence, prerequisite checks, verification |
| 9 | Skills prompt | prompt_builder.py: build_skills_system_prompt() |
Список всех доступных skills (автогенерируется) |
| 10 | Environment hints | prompt_builder.py: build_environment_hints() |
macOS, home dir, cwd |
| 11 | Active profile hint | system_prompt.py runtime |
«default» + guard не лезть в чужие профили |
| 12 | Platform hints | prompt_builder.py: PLATFORM_HINTS |
webhook нет в словаре → пусто |
Note #7–8: Т.к. модель deepseek-chat попадает под TOOL_USE_ENFORCEMENT_MODELS = ("gpt", "codex", "gemini", "gemma", "grok", "glm", "qwen", "deepseek"), то enforcement применяется. DeepSeek НЕ входит в OpenAI-специфичную часть (GPT/Codex/Grok), поэтому блок OPENAI_MODEL_EXECUTION_GUIDANCE не вставляется — только TOOL_USE_ENFORCEMENT_GUIDANCE.
КОНТЕКСТНЫЙ СЛОЙ (context) — зависит от cwd
| # | Блок | Что приходит |
|---|---|---|
| 13 | AGENTS.md / CLAUDE.md / .cursorrules / .hermes.md | Из TERMINAL_CWD. В этой сессии TERMINAL_CWD=/Users/admin — файлов нет → пусто |
| 14 | system_message | Caller-supplied. Webhook не передаёт → пусто |
Поиск контекстных файлов (функция build_context_files_prompt()):
.hermes.md/HERMES.md(walk to git root)AGENTS.md/agents.md(cwd only)CLAUDE.md/claude.md(cwd only).cursorrules+.cursor/rules/*.mdc(cwd only) — Первый найденный wins, только один проект-контекст загружается.
SOUL.md из HERMES_HOME независим и не участвует в этой очереди — он загружается отдельно через load_soul_md().
ВОЛАТИЛЬНЫЙ СЛОЙ (volatile) — пересобирается каждый раз
| # | Блок | Источник | Описание |
|---|---|---|---|
| 15 | MEMORY | memories/threads/<gateway_session_key>/MEMORY.md |
Thread-scoped memory (включено конфигом) |
| 16 | USER profile | memories/USER.md |
Глобальный профиль пользователя |
| 17 | Memory instruction | ~/.hermes/hermes-whale/review/memory_prompt.md |
Кастомная инструкция что запоминать |
| 18 | Timestamp/model/provider | Runtime | Дата старта, Model, Provider |
Ключевые файлы
SOUL.md
- Путь:
~/.hermes/hermes-whale/SOUL.md(HERMES_HOME/SOUL.md) - Полностью заменяет
DEFAULT_AGENT_IDENTITY - Правила: Obsidian MCP first, jq, backup before edit, plan first, stop on стоп
- Загружается
load_soul_md()вagent/prompt_builder.py
memory_prompt.md
- Путь:
~/.hermes/hermes-whale/review/memory_prompt.md - Конфиг:
memory.prompt_pathв config.yaml - Загружается в
agent/agent_init.py, вставляется в volatile слой
config.yaml (Whale)
- Путь:
~/.hermes/hermes-whale/config.yaml - Релевантные секции:
memory: thread_scoped: true prompt_path: ~/.hermes/hermes-whale/review/memory_prompt.md - Webhook route:
whaleна порту 8645, deliver в zulip - Webhook платформа не имеет platform hint в
PLATFORM_HINTS
Реализовано: prompt_overrides (2026-09-15)
Возможность, описанная здесь ранее как opportunity, реализована. Стабильный слой
теперь конфигурируемый: каждый хардкод-блок вынесен в .md файл, маппинг — в
agent.prompt_overrides. Если файла нет — fallback на хардкод.
Полное описание реализации: hermes-agent-improvements → секция «Вынос хардкода промптов в файлы».
Кратко:
agent/system_prompt.py— функция_load_prompt_block(agent, block_name, default), 7 констант заменены на её вызовыagent/agent_init.py— чтениеagent.prompt_overridesиз конфига вagent._prompt_overrides~/.hermes/hermes-whale/config.yaml— секцияagent.prompt_overrides(7 путей)~/.hermes/hermes-whale/review/— 7 файлов блоков +memory_prompt.md,skill_prompt.md
Итого вместо хардкода (см. таблицу stable-слоя выше) блоки #2–#8 читаются из файлов.
Осталось в коде: DEFAULT_AGENT_IDENTITY (fallback), GOOGLE_MODEL_OPERATIONAL_GUIDANCE,
COMPUTER_USE_GUIDANCE, KANBAN_GUIDANCE, PLATFORM_HINTS.
Коммиты: hermes-agent 207a1de16, ~/.hermes 7fd200c.
Осталось: перезапуск webhook — правки вступят в силу.
Текущие ограничения
- webhook не имеет platform hint → может быть полезно добавить
- Google-specific и kanban-блоки остаются хардкодом (неактуальны для Whale)
- Нет
.hermes.md/AGENTS.mdв/Users/admin/— контекстный слой пуст