Каналы связи и голос
Anda может работать не только в вашем терминале, но и подключаться к общим корпоративным или личным каналам связи. Интеграция с каналами позволяет объединять контекст из различных источников в единой локальной среде и системе памяти.
Поддерживаемые каналы мессенджеров
- Telegram
- Discord
- Lark / Feishu
Параметры интеграции настраиваются в блоке channels конфигурационного файла ~/.anda/config.yaml.
Поддержка нескольких пользователей
Один локальный демон Anda может безопасно обслуживать запросы нескольких доверенных пользователей. Создайте ключ пользователя, а затем укажите его ID в параметре user соответствующей настройки канала. Если параметр user опущен, для аутентификации будет использоваться локальный ключ владельца (owner), хранящийся по умолчанию в безопасном системном хранилище ключей ОС.
anda user create alice
anda user list
Эта команда генерирует новую пару ключей, прописывая публичный ключ в секцию users файла конфигурации, а приватный ключ сохраняет в локальное зашифрованное хранилище учетных данных в ~/.anda/credentials/. Файл учетных данных содержит зашифрованный COSE-ключ, ключ шифрования для которого является производным от секрета локального демона. Если вам явно требуется сохранить ключ в виде файла, воспользуйтесь командой anda user export ниже.
На Linux при отсутствии Secret Service Anda сохраняет приватные ключи демона/владельца в виде файлов в каталоге ~/.anda/keys/ и выводит предупреждение. Приватные ключи доверенных пользователей остаются зашифрованными в локальном хранилище учетных данных до тех пор, пока может быть загружен секрет демона. Для работы с Secret Service для учетных записей демона/владельца запустите и разблокируйте провайдера в пользовательской D-Bus сессии (например, gnome-keyring-daemon --start --components=secrets), убедитесь, что переменная DBUS_SESSION_BUS_ADDRESS доступна для процесса Anda, после чего перезапустите Anda. Пользователи KDE могут аналогично разблокировать KWallet.
Для экспорта приватного ключа в файл выполните команду anda user export. В качестве экспортируемой учетной записи можно указать daemon, owner, default или ID конкретного созданного пользователя:
anda user export daemon --key-path ./anda-daemon.key
anda user export owner --key-path ./anda-owner.key
anda user export alice --key-path ./alice.key
Храните экспортированные файлы ключей в надежном месте. Ни в коем случае не коммитьте их в git-репозитории и не размещайте в общих папках.
Секция пользователей в конфигурационном файле выглядит следующим образом:
users:
- id: alice
pubkey: "ALICE_ED25519_PUBLIC_KEY"
- id: ops
pubkey: "OPS_ED25519_PUBLIC_KEY"
Пример интеграции с Telegram
channels:
telegram:
- id: personal
user: alice
bot_token: "ВАШ_TELEGRAM_BOT_TOKEN"
username: "ВАШ_TELEGRAM_BOT_USERNAME"
allowed_users:
- "*"
mention_only: false
Пример интеграции с WeChat
channels:
wechat:
- id: personal
user: alice
# Оставьте поле пустым, затем выполните команду 'anda channel init wechat', отсканируйте QR-код и получите токен.
bot_token: ""
username: anda-wechat
allowed_users:
- "*"
Пример интеграции с Discord
Интеграция с Discord использует токен бота и подключение через Discord Gateway. Перед редактированием файла конфигурации настройте бота на стороне Discord:
- Откройте Портал разработчиков Discord, создайте или выберите приложение.
- В разделе Bot скопируйте токен бота (или выполните Reset Token). Обязательно включите опцию Message Content Intent в подразделе Privileged Gateway Intents, чтобы Anda могла читать текст входящих сообщений.
- В разделе Installation добавьте права
botв область установки Guild Install. Без этой области бот не сможет быть добавлен на сервер в качестве участника. - Предоставьте боту права:
View Channels,Send MessagesиRead Message History. ДобавьтеAttach Filesдля отправки файлов иAdd Reactionsпри использовании параметраack_reactions: true. - Установите приложение на ваш сервер. Бот должен появиться в списке участников сервера.
channels:
discord:
- id: server
user: ops
bot_token: "ВАШ_DISCORD_BOT_TOKEN"
username: anda-discord
# Необязательный параметр. Привязка интеграции к конкретному серверу Discord.
guild_id: "ВАШ_DISCORD_GUILD_ID"
allowed_users:
- "ВАШ_DISCORD_USER_ID"
mention_only: true
ack_reactions: true
Для прохождения валидации настроек обязательным является только параметр bot_token. В целях безопасности рекомендуется явно заполнять список allowed_users ID ваших доверенных пользователей Discord; если этот список пуст, а параметр allow_external_users имеет значение false (по умолчанию), Anda будет игнорировать сообщения от посторонних. Активируйте allow_external_users: true только если вы хотите, чтобы сторонние пользователи могли общаться с Anda в ограниченном режиме как $external_user.
После сохранения настроек выполните:
anda channel list
anda restart
Для обращения к боту в текстовом канале сервера упомяните его:
@anda-discord сделай краткое содержание этой переписки
В личных сообщениях (DM) с ботом пишите сообщения напрямую без упоминания. Если бот не отвечает, проверьте, имеет ли он область bot в правах установки, и запущен ли локальный демон.
Пример интеграции с Lark / Feishu
channels:
lark:
- id: work
user: ops
app_id: "cli_xxx"
app_secret: "ВАШ_APP_SECRET"
platform: feishu
receive_mode: websocket
mention_only: true
Безопасность каналов связи
- Список
allowed_usersопределяет круг лиц, имеющих доступ к агенту; используйте значение"*"с осторожностью. - Параметр
userопределяет, от чьего имени Anda выполняет команды в данном канале и к чьей памяти Brain имеет доступ. - Для интеграции с Telegram и Discord обязателен
bot_token. - Для WeChat токен генерируется автоматически при первом входе по QR-коду, если поле
bot_tokenоставлено пустым. - Для Lark / Feishu требуются
app_idиapp_secret; для Feishu обязательно указывайтеplatform: feishu. - Маршруты сообщений сохраняются в базе данных, что гарантирует отправку ответов Anda именно в тот тред, группу или контакт, откуда поступил запрос.
Голосовой ввод и озвучивание ответов
Для голосового ввода необходимо активировать параметр transcription.enabled: true. Начать запись голоса можно командой:
anda voice --record-secs 8
Если вы хотите, чтобы Anda также озвучивала свои ответы, активируйте параметр tts.enabled: true. Если требуется только голосовой ввод с выводом ответов текстом в терминал:
anda voice --record-secs 8 --no-playback
После включения транскрипции любые прикрепленные к сообщениям аудиофайлы также будут автоматически переводиться в текст и добавляться в контекст разговора.