Как Мила сделала: разборы и новости
Кто стоит за Милами и как присоединиться
Всё, чему вы научили Милу, — инструкции, умения, память, кроны, настройки — выгружается в один архив. Открытый код плюс этот архив — та же Мила на любой машине. Паролей и ключей в архиве нет. У каждой строки ниже — ссылка на код.
Новый сервер или свой ноутбук — Мила переезжает с вами.
Команда mila export собирает Милу в архив tar.gz. skills/mila-export:8-9
CLAUDE.md, конституция, память, дневник, ритуалы, кроны, знания и документы.
skills/mila-export:27 mila_export.py:183-185Умения ядра и свои, хуки, команды, settings.json без секретов, список плагинов с версиями.
skills/mila-export:28-29 mila_export.py:204-215manifest.json: формат, дата, версия ядра, каждый файл с контрольной суммой sha256, что не вошло и почему.
Памятка внутри архива: как поставить ядро, проверить архив и что ввести руками.
mila_export.py:260-287Файлы с секретными именами не берутся: .env, всё с token, key, secret, password в имени, .pem, папки secrets/ и .ssh/. mila_export.py:23-24 skills/mila-export:34
Остальное читает сканер — каждый файл. Нашёл похожее на ключ — экспорт останавливается и называет файл и строку. Сам ключ не печатает, архив не создаётся. mila_export.py:38-47 mila_export.py:301-305
--allow Мила ставит только по слову владельца, сама сканер не обходит. skills/mila-export:44В архиве Мила, а не чужие разговоры.
Транскрипты сессий и карточки чатов — только с ключом --with-history, и Мила предупреждает: там чужие данные.
Входящие сообщения людей и папки inbox и outbox в архив не идут, даже с историей.
mila_export.py:26 mila_export.py:229-230 test_export.sh:73В умениях и памяти бывают записи о клиентах и учениках. --no-people убирает папки students, clients, people и contacts.
Видео, фото и архивы — только с --with-media. Файлы больше 5 МБ не берутся.
На чистой машине: поставить ядро, проверить архив, разложить, затем mila doctor. skills/mila-export:49-52
Каждый файл сверяется с описью по sha256. Подменённый файл, лишний файл, путь наружу через .., ссылка вместо файла — отказ, ничего не пишется.
Файл уже есть и отличается — он остаётся, версия из архива ложится в mila-restore/<время>/conflicts/. --overwrite заменяет, старую копию кладёт в replaced/.
Показывает, что куда ляжет, и ничего не пишет.
mila_export.py:398-400 test_export.sh:95Токен бота, вход в Claude, плагин Telegram, ключи сервисов по именам, MCP-серверы, затем mila doctor.
«Сделай копию» — это данные владельца. Мила делает экспорт и сообщает путь, размер и число файлов. Архив никому, кроме владельца, не отправляет. Раз в месяц и перед обновлением ядра предлагает свежую копию. skills/mila-export:42-46
Архив по умолчанию ложится в ~/mila-backups с правами 600: читать его может только ваш пользователь. Это умение есть у каждой Милы: release.json записывает его в «гены» вместе с обновлением и запускателем mila. mila_export.py:316 mila_export.py:327 release.json:73-78 install/mila:268-274
$ mila export --dry-run $ mila export --out ~/mila-backups $ mila export verify <архив> $ mila restore <архив> --dry-run $ mila restore <архив> $ mila backup run --to user@host:<папка>
Это два разных инструмента. mila backup хранит то, что не восстановить, и умеет отправить копию на другую машину. install/mila:262-267 backup.py:18-22
Код лежит в git, модель — у поставщика. Памяти нет больше нигде: журнала входящих, карточек чатов, списка доступа, умений, журнала расходов. Backup хранит именно это.
docs/REFERENCE.md:364-367 backup.py:41-62Ключ внутри файла заменяется пометкой «секрет вырезан». После записи архив открывается заново и проверяется; остался секрет — архив удаляется.
backup.py:104-119 backup.py:320-354Копия на той же машине спасает от ошибки, но не от потери машины. --to отправляет архив по ssh и сверяет размер на той стороне.
Локально — 7 последних архивов, на другой машине — 30. Старые локальные удаляются только после удачной отправки.
backup.py:356-364 backup.py:419-431SKILL.md), по которым работает модель. skills/mila-export mila_export.py.env и secrets/ — их экспорт не берёт по имени. mila_export.py:23-24 mila_export.py:38-47mila backup. Команды восстановления у backup нет — только status, run и list. mila_export.py:229-230 backup.py:56-57 backup.py:18-22mila backup по расписанию не запускается: когда и куда класть копию, решают при установке. deploy/README.md:112-115 install/install.sh:130-131| Файл | Что делает |
|---|---|
| skills/mila-export | экспорт и восстановление, как поступает Мила |
| mila_export.py | архив, сканер секретов, сверка, восстановление |
| test_export.sh | 39 проверок в песочнице |
| install/mila | команды mila export, mila restore, mila backup |
| install/backup.py | копия на каждый день: секреты вырезаны, копия на другой машине |
| README.ru.md | Возроди свою Милу из архива |
| release.json | гены: что есть у каждой Милы |
| docs/REFERENCE.md | что стоит сохранять (на английском) |
Набор открыт: умения, хуки, инструменты и шаблоны. Запустите test_export.sh сами — каждый pull request читает человек и Мила Качество.
Факты на странице: github.com/shakhruz/mila (main, 688ebc2, v1.5.1), проверено 21.10.2026; test_export.sh — 39 из 39. Переписка в телефоне — иллюстрация. «Mila», «MILAGPT» и логотип — товарные знаки MILAGPT.