Перейти к основному содержимому

Каналы связи и голос

Anda может работать не только в вашем терминале, но и подключаться к общим корпоративным или личным каналам связи. Интеграция с каналами позволяет объединять контекст из различных источников в единой локальной среде и системе памяти.

Поддерживаемые каналы мессенджеров

  • Telegram
  • WeChat
  • 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:

  1. Откройте Портал разработчиков Discord, создайте или выберите приложение.
  2. В разделе Bot скопируйте токен бота (или выполните Reset Token). Обязательно включите опцию Message Content Intent в подразделе Privileged Gateway Intents, чтобы Anda могла читать текст входящих сообщений.
  3. В разделе Installation добавьте права bot в область установки Guild Install. Без этой области бот не сможет быть добавлен на сервер в качестве участника.
  4. Предоставьте боту права: View Channels, Send Messages и Read Message History. Добавьте Attach Files для отправки файлов и Add Reactions при использовании параметра ack_reactions: true.
  5. Установите приложение на ваш сервер. Бот должен появиться в списке участников сервера.
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

После включения транскрипции любые прикрепленные к сообщениям аудиофайлы также будут автоматически переводиться в текст и добавляться в контекст разговора.