# Миграция Гермес → Simbiot Скрипт: `scripts/migrate_hermes.py` (t-261001124130). Переносит память, историю диалогов и настройки агента с харнеса Гермес (Nous Research) на Simbiot, чтобы после установки Simbiot агент отвечал с учётом прежних знаний. ## Что читает из каталога Гермеса (`~/.hermes` или `~hermes_user/.hermes`) | Источник | Данные | Куда в Simbiot | |---|---|---| | `memories/MEMORY.md` | §-факты памяти | `OUT/memory/MEMORY.md`, RAG, `policy.identity` | | `memories/USER.md` | профиль пользователя | `OUT/memory/USER.md`, RAG, `policy.identity` | | `SOUL.md` | персона агента | `OUT/identity.md`, `policy.identity` | | `state.db` (sessions/messages, active) | история диалогов | `OUT/history/*.md` + индекс, RAG | | `config.yaml` | настройки | `OUT/config-hermes.yaml` (секреты → ``), маппинг `model` → `SIMBIOT_MODEL` в отчёте | | `cron/jobs.json` | фоновые джобы | `OUT/cron-map.json` (эквиваленты: задачи на доске / systemd timer) | ## Запуск ```bash # dry-run (по умолчанию): только карта источников и превью, ничего не пишет python3 scripts/migrate_hermes.py --hermes /home/hermes/.hermes # apply + запись персона/памяти в стор ЭТОГО инстанса Simbiot + RAG-индексация: python3 scripts/migrate_hermes.py --hermes /home/hermes/.hermes --apply \ --harness-dir /root/simbiot-harness --rag-db /root/rag/rag.db ``` Опции: `--out DIR` (пакет, дефолт `hermes-migration/` в репо), `--rag-py`/`--rag-script` (вендор RAG: `/root/rag-venv/bin/python` + `/root/rag/rag.py`), `--rag-db PATH` (если не задан — RAG-шаг пропускается). ## Что происходит при `--apply` 1. `OUT/identity.md` — персона+память; в стор целевого инстанса пишется `PolicyChanged` с `policy_hermes_marker` (sha-хеш текста) — **идемпотентно**: повторный прогон со тем же текстом — `skip-duplicate`. 2. `OUT/history/*.md` — последние ≤40 сессий с реальным диалогом (≥2 сообщений, active=1; крон-сессии только в остаток после живых чатов), кап 40 сообщений/сессия, 150 всего; секреты (`sk-…`, `agt_…`, `:<токен>`, `ghp_…`) замаскированы. 3. RAG-индексация: `.md`-файлы пакета → целевая база (вендор дедупит по sha). 4. `OUT/report.json` — полный отчёт: counts, mapping, events, rag, errors. `.env` целевого инстанса не трогается скриптом: `ROUTER_KEY`/`SIMBIOT_AGENT_NAME` и портал-канал (`/etc/coop-reporter.env`: `PORTAL_URL` + `AGENT_TOKEN` agt_…) настраиваются при установке (scripts/install.sh, визард). ## Реальный кейс: агент Рита (22.10.2026, 22:19 UTC) Хост `hermes-rita` (2.28.125.152), источник `/home/hermes/.hermes` (135МБ state.db, 936 сессий, 11276 сообщений), портальная БД: agents.id=42 переведён `harness_type='simbiot'`, `portal_channel=1`, agt-токен репортера выпущен, router-ключ Риты из `router_keys` записан в её `.env`. Результат: 31 файл проиндексирован в RAG (/root/rag/rag.db, 0 ошибок), `PolicyChanged applied` (marker `policy-hermes-6c9beed932`, identity 5910 символов). E2E-проверка: сообщение в канал портала → мин-тик Риты забрал, ответ содержит факты ИЗ ПЕРЕНЕСЁННОЙ памяти (видеостек OpenMontage, Edge-TTS ru-RU-DmitryNeural) — агент отвечает с учётом истории. ## Ограничения / follow-up - 10 cron-джобов Гермеса перенесены как карта (`cron-map.json`), не как живые таймеры: включать селективно (watchdog-пинги и протухшие пуллы не переносить) — задача на доске (follow-up t-… по кронам Риты). - Полная история (все 936 сессий остаётся в `state.db` Гермеса) не копируется — только активное диалоговое ядро; исходник сохраняется нетронутым. - TG-бот нового агента подключается кнопкой на портале (`/set-tg-bot`) — флоу тот же, что для остальных агентов Simbiot. 03.10.2026 — дополнение: SIMBIOT_TG_TOKEN Риты перенесён из её Hermes-.env (bot @rita_a_bot), её simbiot-harness active.