English — SAFE.md.
Что это. Для дела нужен пароль, ключ API, логин сайта или банковская карта? Мила не просит их ни в чате, ни в почте — она просит одноразовую ссылку. Человек открывает её, вводит данные на странице, и они ложатся прямо в закрытый файл в доме Милы. Ни через чат, ни через её память они не проходят, и тот, кто выпустил ссылку, их тоже не видит.
Как выпустить ссылку
tools/seif/vault-link.sh <дом> <ПОЛЕ>[,<ПОЛЕ>…] [--name <файл>] [--to <telegram id>] [--ttl 30] [--lang ru|en|uz|zh]- Поля — заглавными:
OPENROUTER_API_KEY,SITE_LOGIN,SITE_PASSWORD,CARD_NUMBER,CARD_EXPIRY. - Одна ссылка — один раз, живёт 30 минут. Открытие (и превью Telegram) ссылку не тратит — тратит только «Сохранить».
- Язык страницы — язык хозяина, можно задать
--lang, переключить можно прямо на странице.
Куда ложится ключ
work/secrets/<файл>.envв доме Милы: папка 700, файл 600, хозяин — владелец дома. Прежние значения в файле сохраняются.- В журнале службы сейфа: кто, когда, какой дом, какой файл, какие поля — без значений.
- Миле приходит записка: «в сейфе появились такие поля».
Как Мила читает
- Только в момент дела и своим инструментом.
python3 skills/safe-link/scripts/safe_read.py <файл> --check ПОЛЕ— есть ли поле, без значения. В кодеread_safe("<файл>")["ПОЛЕ"]— значение уходит прямо в запрос сервиса. - В чате — только маска
****1234. - Файл с правами шире 600 — отказ: кто-то открыл сейф.
Когда дело закончено
seif.py forget <дом> <файл> <ПОЛЕ>[,<ПОЛЕ>…]стирает поля. В журнале — что и когда стёрто, без значений.
Чего нельзя
- Просить секрет в чате или в почте. Если человек всё равно прислал — Мила его не повторяет и просит сменить.
- Печатать, писать в журнал, пересылать значения; класть их в память, заметки, отчёты.
- Держать карту или паспорт дольше, чем нужно для дела.
Служба сейфа
seif.py serve --port 7693слушает только 127.0.0.1. Наружу её выводят через веб-сервер на/v/<токен>/(tools/seif/Caddyfile.snippet,tools/seif/seif.service).- Настройки — только окружением:
SEIF_BASE(адрес ссылок),SEIF_HOMES(папка домов Мил),SEIF_DIR,SEIF_UID.
Свой сейф — Мила на вашем компьютере
seif.py own <ПОЛЕ>[,<ПОЛЕ>…] --name <файл> — без службы и без администратора: Мила открывает страницу сейфа на 127.0.0.1 на одну ссылку, закрывает её, как только вы нажали «Сохранить» (или через 10 минут), ключ ложится в ~/work/secrets/<файл>.env. Ссылка открывается только на этом же компьютере — в сеть ничего не открывается.
Известное ограничение
У Милы в контейнере или на сервере без страницы сейфа положить ключ через страницу пока нельзя — она так и говорит. Что делать сейчас: ключ в чат не присылайте. В контейнере впишите его в переменную окружения при запуске — docker run -e OPENROUTER_API_KEY=… или поле переменных в панели хостинга. На ноутбуке — свой сейф (выше) или файл ~/work/secrets/openrouter.env со строкой OPENROUTER_API_KEY=… (без кавычек и пробелов) и правами 600 (chmod 600); так же — GROQ_API_KEY в groq.env. Мила видит такой ключ сразу (переменная важнее файла) и значение никому не показывает.