Files
obsidian-vault/personal/plans/hermes-whale-system-prompt.md
T

6.8 KiB
Raw Blame History

Состав 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 #78: Т.к. модель 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()):

  1. .hermes.md / HERMES.md (walk to git root)
  2. AGENTS.md / agents.md (cwd only)
  3. CLAUDE.md / claude.md (cwd only)
  4. .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/ — контекстный слой пуст