commit 8b266946dbb7d20aef9740e8a5d61ad0a20fd3cb Author: estorozhenko Date: Sun Sep 6 13:50:45 2026 +0000 Initial commit: Hermes skill hermes-mixed-model-delegation diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..d86d3fc --- /dev/null +++ b/SKILL.md @@ -0,0 +1,64 @@ +--- +name: hermes-mixed-model-delegation +description: "Настройка смешанной модели: главный агент на облачном LLM, подзадачи (delegate_task) на локальной модели через Ollama." +version: 1.0.0 +author: Agent +--- + +# Hermes Mixed Model Delegation + +## Когда использовать + +Когда главный агент использует мощную облачную модель (DeepSeek, Claude, GPT), а подзадачи (код, анализ, проверка) можно отдать локальной модели через Ollama. Это экономит API-затраты на подзадачи и использует локальную модель для изолированных заданий. + +## Конфигурация + +В `~/.hermes/config.yaml`: + +```yaml +# Основная модель — облачная +model: + default: deepseek/deepseek-v4-flash + provider: custom # или openai, openrouter, anthropic + base_url: https://polza.ai/api/v1 + api_key: <ключ> + context_length: 131072 + +# Delegation — локальная модель через Ollama +delegation: + model: qwen3:8b # любая модель из ollama pull + provider: openai # Ollama совместим с OpenAI API + base_url: http://localhost:11434/v1 + api_key: ollama # произвольный non-empty string + max_iterations: 50 + child_timeout_seconds: 600 + max_concurrent_children: 3 +``` + +## Важные моменты + +- **Delegation нельзя менять через `/model`** — настройки delegation читаются при старте сессии. +- **После изменения delegation config → `/reset`** (новая сессия). +- **Ollama должна быть доступна** — проверка: `curl http://localhost:11434/api/tags` +- **Модель должна быть загружена** — `ollama pull qwen3:8b` +- **context_length в main model** можно ставить по максимуму провайдера (DeepSeek v4 Flash → 1M токенов), фактический лимит сессии Hermes настраивается отдельно через `compression.threshold` и не жжёт токены пока не заполнится. + +## Проверка что работает + +После `/reset`: + +``` +delegate_task( + goal="Напиши 'Работает!' одним словом. Назови свою модель.", + context="Тестовый запуск." +) +``` + +В результате `model` в ответе subagent должна показать локальную модель, а не основную. + +## Pitfalls + +- **Если delegation.model пуст ('')** — subagent использует ту же модель что и main (бесполезно при mixed). Убедись что поля заполнены. +- **Ollama в Docker** — порт localhost:11434 должен быть доступен из хоста (`docker run -p 11434:11434 ...`). +- **GGUF context limit** — у Qwen3 8B моделей в GGUF жёсткий лимит ~40K токенов, num_ctx в Modelfile не расширяет его. +- **Таймаут при последовательных файловых операциях** — если делегированная задача включает несколько шагов (rm -rf десятков папок + rsync + архивация), subagent может не уложиться в `child_timeout_seconds` (600s по умолчанию). Разбивай на мелкие задачи: по одной папке на делегацию, по 5-10 писем на архивацию. Лучше 3 быстрых делегации, чем одна, которая упадёт по таймауту на 599-й секунде. \ No newline at end of file