Skip to content

Latest commit

 

History

History
42 lines (29 loc) · 7.38 KB

File metadata and controls

42 lines (29 loc) · 7.38 KB

EN | RU

Границы приватности: облачный архитектор, локальные руки

Этот сетап обслуживают два AI с разным уровнем доверия:

  • Облачный копилот (Claude Code по SSH): проектирует архитектуру, пишет и ревьюит скиллы агента, чинит конфиги, дебажит хосты. Всё, что он читает, становится API-трафиком к третьей стороне, поэтому он считается недоверенным читателем.
  • Локальный агент (hermes-agent + локальная LLM на GB10): ведёт хозяйство - Telegram, умный дом, дашборды здоровья, семейные журналы. Инференс локальный, его контекст не покидает LAN, поэтому читать он может всё.

Асимметрия и есть весь дизайн: наставник учит агента работать, но никогда не читает данные, с которыми агент работает. Как бы вы ни относились к обращению облачных вендоров с данными, чистое решение - чтобы приватные байты вообще не попадали в облачный промпт.

Что облачный копилот никогда не читает

  • память и профили агента (MEMORY.md, memories/, sessions/, logs/) - это жизнь семьи в текстовом виде
  • переписки (Telegram)
  • config.yaml и .env - токены, ключи и даже URL (URL Home Assistant = геолокация)
  • состояние Home Assistant в любом виде: присутствие людей, списки устройств, метрики здоровья с носимых устройств
  • базы здоровья, журналы еды, семейные леджеры, папки с фото
  • коварные боковые каналы: каталог данных bot-API, где имена подкаталогов - ЭТО токены ботов; DEBUG-логи, дампящие auth-заголовки. Даже листинг каталога может быть утечкой.

Как это обеспечивается (а не просто обещается)

  1. Правила загружаются автоматически. Хук UserPromptSubmit распознаёт задачи, связанные с агентом, и вкачивает файл правил в сессию до начала работы. Модель обязана подтвердить это sha-штампованной строкой-маркером первой строкой вывода - человек видит два независимых сигнала (баннер хука + подтверждение модели), что правила активны. Правила, которые держатся на «не забыть», ломаются; хуки - нет.
  2. Только агрегаты в шелле. На любом файле, где могут быть персональные данные, разрешены только не печатающие строки команды: wc -l, grep -c, grep -ilE (только имена файлов), grep -oE (только совпавший токен), sha256sum. Никогда cat/head/tail/less, никогда печатающие строки grep/awk/sed. Имена и структура (ls, find) - можно; содержимое - нельзя.
  3. Запись конфига без чтения. Изменения конфига агента - через hermes config set KEY VALUE; проверка - grep -oE по ожидаемому токену. Файл конфига не открывается никогда - в нём секреты.
  4. Делегирование вместо доступа. Когда задаче правда нужны приватные данные, копилот формулирует точный вопрос, а локальный агент отвечает очищенным результатом: агрегаты, статусы, имена сущностей без значений. «Сработала ли автоматизация сегодня - да/нет» вместо дампа истории геолокации.
  5. Секреты живут в vault. vaultwarden + bw serve + маленький CLI secret на хосте агента; агент сам достаёт свои креды в рантайме. Копилот оперирует именами секретов, никогда значениями. На NAS конфиги рендерятся из env-файла в tmpfs - в docker-дереве нет секретов открытым текстом.
  6. Нарушения - громкие. Случайно прочитать приватное = инцидент: немедленно остановиться, доложить человеку, никакого тихого «доделаю». Зубы у правил выросли ровно из одного такого инцидента - геномная сессия слила в облачный контекст три значения генотипа через беспечные подглядывания head/awk. Итог: вечное правило «только агрегаты» для генотип-файлов и протокол инцидента выше.

Переносимая версия этих правил, из которой вычищены все имена хостов и продуктов - это собственный скилл копилота: skills/confidential-data-handling/.

Тот же паттерн за пределами агента

  • Геномный проект: копилот - только архитектор; пайплайны проектируются и ревьюятся абстрактно, значения генотипов не попадают в контекст (только wc -l, grep -c, чексуммы, bcftools stats).
  • База здоровья: схемы и число записей - можно, значения полей - нет.
  • Всё новое по умолчанию под запретом: если файл может быть приватным - считай, что он приватный.

Почему это работает

  • Наставнику нужна форма данных, а не данные: схемы, счётчики, коды возврата, тексты ошибок. Этого почти всегда достаточно, чтобы проектировать и дебажить.
  • Запрет по умолчанию лучше редактирования: не «прочитай и вычисти», а просто не читай.
  • Каждая сторона делает то, что умеет лучше всех: передовая модель проектирует, локальная - трогает.