Безопасность и управление секретами
SILO спроектирован с философией "Безопасность прежде всего", гарантируя, что конфиденциальные данные, такие как API-ключи, никогда не попадут в логи, историю окружения или репозитории кода.
Многоуровневое управление секретами
Когда скилл вызывает require_secret("KEY_NAME"), фреймворк ищет секрет в следующем порядке:
- Переменные окружения: В первую очередь для CI/CD или продвинутых пользователей.
- Keychain ОС: Основное защищенное локальное хранилище. Ключи шифруются операционной системой.
- Интерактивная авторизация в браузере: Если ключ не найден и среда не является "headless", SILO открывает окно браузера с защищенной формой для ввода секрета.
Сохранение в Keychain
Как только секрет введен через браузер, SILO автоматически сохраняет его в Keychain вашей системы (используя библиотеку keyring). Это означает:
- Вы вводите API-ключ только один раз на одной машине.
- Секреты хранятся отдельно от файлов проекта.
- Секреты привязаны к конкретному
namespaceскилла.
Изоляция в песочнице (Sandbox)
Каждый инструмент скилла выполняется в изолированной среде, управляемой uv run.
- Отсутствие общего состояния: Скиллы не могут случайно вмешаться в память или переменные друг друга.
- Фиксация зависимостей: Скиллы используют инлайновые метаданные (PEP 723), чтобы всегда запускаться с правильными версиями библиотек.
Отслеживание и очистка секретов
SILO ведет файл meta для каждого скилла, чтобы отслеживать, какие секретные ключи он использовал. Когда вы запускаете silo remove <namespace>, фреймворк использует эти данные, чтобы полностью стереть связанные секреты из Keychain системы.
Режим Headless
Для продакшн-сред или при вызове другим ИИ-агентом вы можете включить режим Headless, установив SILO_HEADLESS=1. В этом режиме:
- Интерактивные запросы в браузере отключены.
- Если секрет отсутствует, скилл немедленно возвращает структурированную ошибку JSON вместо ожидания ввода.
Подтверждения (Human-in-the-Loop)
Некоторые действия (удаление базы данных, коммит кода, отправка письма) не должны выполняться ИИ полностью автономно.
SILO предоставляет флаг require_approval для инструментов: