8.8 KiB
Executable File
План: вывод Zulip из эксплуатации (decommission)
Создан: 2026-09-29
Цель
Снести Zulip-стек на Mac (Colima Docker), сохранив историю переписки. Транспорт Hermes уже переехал на Mattermost — Zulip держится только ради истории.
Состояние
| Этап | Статус |
|---|---|
| 1. Выгрузка истории в SQLite | ✅ сделано 2026-09-29 |
| 2. Верификация целостности | ✅ сделано |
| 3. Правка ссылок на Zulip DB в скиллах/SOUL | ✅ сделано 2026-09-29 |
| 4. Снос стека | ⛔ не начато — ждёт команды Alex |
Артефакт этапа 1: ~/Documents/zulip_message_history.sqlite (81.9 MB на диске, 134 734 сообщения)
→ инструкция по поиску в tech/zulip-message-history
Артефакт этапа 3: скилл message-history-search + 21 переписанный файл
→ см. §«Этап 3 — что сделано» ниже
ℹ️ Параллельная задача 2026-09-29 (ЗАКРЫТА): «отключи автогенерацию скиллов» —
разбор механизма фонового review (skills.creation_nudge_interval, review.allowed_toolsets)
в tech/hermes-self-improvement-review, §«Как ВЫКЛЮЧИТЬ».
Внесено: creation_nudge_interval: 15 → 0 в ~/.hermes/hermes-whale/config.yaml,
коммит d2e1586. Вариант «+ убрать skills из review.allowed_toolsets» Alex не выбрал —
память продолжает обновляться фоновым review. На этап 4 (снос) не влияет.
Решение: формат истории
Рассматривались три варианта:
| Вариант | Плюсы | Минусы | Итог |
|---|---|---|---|
pg_dump (custom format) |
полный бэкап, восстановим одной командой | нечитаем без psql; тянет за собой весь Postgres | ❌ отклонён |
| Экспорт в markdown-файлы по тредам | читаемо в Obsidian, grep-абельно | 197 файлов, ломает структуру при правках, нет поиска по тексту | ❌ отклонён |
| SQLite + FTS5 | один файл, структура тредов через FK, полнотекстовый поиск | нужен sqlite3 CLI |
✅ выбран |
Явное указание Alex: «никаких вложений и меты. только история переписки».
Поэтому pg_dump, volume zulip_zulip-data, аплоады и аватары в выгрузку не попали.
Этап 3 — что сделано (2026-09-29)
Изначально предлагались варианты A/B/C (переименовать скилл vs переписать тело). Alex решил иначе — жёстче: снести 3 zulip-скилла целиком, из USER.md удалить, в SOUL и остальных скиллах переписать.
Снесено (3 скилла)
| Скилл | Роль | Поглощён в |
|---|---|---|
zulip-db-forensics |
запросы к Zulip Postgres, forensic-разбор | message-history-search |
zulip-thread-handoff |
перехват треда у другого агента | message-history-search |
zulip-bot-routing |
архитектура роутера + диагностика ботов | message-history-search |
Удаление через skill_manage(action='delete', absorbed_into='message-history-search').
Создано (1 скилл)
~/.hermes/skills/note-taking/message-history-search/SKILL.md — 7 744 б.
Схема, 5 готовых запросов, синтаксис FTS5, лимит покрытия, питфоллы.
Переписано (21 файл)
| Файл | Что заменено |
|---|---|
~/.hermes/SOUL.md |
RULE 5 — ссылка на zulip-db-forensics → SQLite + message-history-search |
~/.hermes/hermes-whale/SOUL.md |
блок про Zulip DB → путь к SQLite + запрос |
hermes-whale/memories/USER.md |
«ищи в базе → Zulip psql» → «→ sqlite3 … СРАЗУ» |
project-progress-audit |
4 места: related_skills, Source 2, pitfalls |
eagle-dashboard |
восстановление треда после --replace |
systematic-debugging |
«та же проблема» → поиск в архиве |
claude-cli-proxy-diagnostics (+ ref) |
3 psql → sender из messages |
executor-autonomous-tick |
запрос истории executor'а |
vault-profile-onboarding |
Step 4 — восстановление из истории |
claude-design |
«Check Zulip DB» → архив |
personal-os-daily-brief, media-stack-reconciliation-audit, htpc-steam-shortcuts, truenas-administration/references/zfs-panic-recovery, .archive/truenas-zfs-panic-recovery, remote-host-administration |
related_skills + ссылки |
systematic-debugging/references/postgres-fk-cascade-data-loss |
«читай с конца» → архив |
🔴 Питфолл: ~/.hermes/SOUL.md ≠ ~/.hermes/hermes-whale/SOUL.md
skills/ — это симлинк (hermes-whale/skills → ~/.hermes/skills), поэтому правка скилла
видна по обоим путям. А SOUL.md — два разных файла:
| Путь | Размер | Дата |
|---|---|---|
~/.hermes/SOUL.md |
9 732 б | 17 мая — RULE 5, «Core Rules» |
~/.hermes/hermes-whale/SOUL.md |
8 244 б | правится этой сессией — ADHD-секция |
Правка только одного оставила бы RULE 5 битым. Всегда править оба.
Проверка: ls -la — если размеры/даты разные, файлы независимы.
Оставлено как есть (осознанно)
docker-balda-service/references/balda-env-recovery.md и zulip-router-rules.md —
там psql читает живые API-ключи ботов, это не история. Добавлена шапка-предупреждение
о декоммишене, запросы не тронуты. Если Zulip снесут — файлы придётся переписать.
Бэкап
~/.hermes/hermes-whale/backups/20260929-zulip-to-sqlite/ — 464 K, 51 файл
(SOUL.md, USER.md, 3 снесённых скилла целиком, все правимые скиллы).
Шаг 4 — снос (выполнять ПОСЛЕ шага 3)
cd ~/Developer/zulip
docker compose down
docker volume rm zulip_zulip-data zulip_zulip-pgdata zulip_zulip-rabbitmq zulip_zulip-redis
docker rmi zulip/docker-zulip:11.6-0
🔴 Порядок важен: сначала зависимости
zulip-router(~/Developer/zulip-router/, порт 8090) — поллит Zulip Events API. Снести/остановить до Zulip, иначе словит restart-loop на мёртвом API.- Hermes
platforms: zulipв~/.hermes/config.yaml— уже не используется (транспорт Mattermost), но платформа в конфиге останется висеть. Убрать или выключить. - Bot-роутинг (Валера/Клавдий/Eagle/Кит webhook
host.docker.internal:8644-8645) — уходит вместе с Zulip. Balda-боты остаются без транспорта.
Что освободится
| Ресурс | Объём |
|---|---|
Образ zulip/docker-zulip:11.6-0 |
3.84 GB |
Volume zulip_zulip-pgdata |
503 MB (на диске) |
Volume zulip_zulip-data |
38.1 MB |
| Контейнеры (5 шт) | ~260 MB |
Проверка перед сносом (обязательно)
sqlite3 ~/Documents/zulip_message_history.sqlite "PRAGMA integrity_check;"→okcount(*)изmessages= 134 734- FTS-запрос по известному слову возвращает результаты
- Файл продублирован вне Mac (Time Machine / Kraken / NAS) — не сделано, Alex не подтвердил необходимость
Связанные документы
- tech/zulip-message-history — SQLite с историей и инструкция по поиску
- projects/zulip-router — архитектура роутера, конфиг ботов
- tech/hermes-whale-mattermost-transport — текущий транспорт Hermes
- tech/docker-mac-disk-issues — контекст: почему Zulip тормозил