6.8 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
Отсутствующие возможности (opportunity)
Алекс предложил сделать стабильный слой конфигурируемым через файлы так же, как memory_prompt.md:
- Вынести каждый хардкод-блок (hermes help, task completion, memory guidance, session search, skills guidance и т.д.) в отдельный
.mdфайл - Добавить
prompt_overridesсекцию в config.yaml, где указывать пути к файлам - Если файла нет — fallback на хардкод
Связанные файлы Hermes Agent:
agent/system_prompt.py— сборка system prompt, управляющая логикаagent/prompt_builder.py— константы и функции загрузкиagent/agent_init.py— чтение конфига и проброс
Текущие ограничения
- webhook не имеет platform hint → может быть полезно добавить
- Всё хардкоженое в
prompt_builder.pyнельзя переопределить без редактирования кода - Нет
.hermes.md/AGENTS.mdв/Users/admin/— контекстный слой пуст