Saltar al contenido principal

Canales y Voz

Anda puede limitarse a la terminal, o puede unirse a los canales de comunicación de su equipo. Los canales permiten integrar el contexto de diversas fuentes en el mismo runtime y sistema de memoria.

Canales compatibles

  • Telegram
  • WeChat
  • Discord
  • Lark / Feishu

La configuración de los canales se encuentra bajo la sección channels en ~/.anda/config.yaml.

Múltiples usuarios

Un único daemon puede dar servicio a varios usuarios de confianza a través del mismo agente de Anda. Cree una clave de usuario y luego configure el campo user de una entrada de canal con ese ID. Si se omite user, el canal utiliza la identidad del propietario local almacenada en el almacén de credenciales seguro del sistema operativo.

anda user create alice
anda user list

El comando escribe la nueva clave pública bajo la sección superior users y almacena la clave privada correspondiente en el almacén de credenciales cifrado local bajo ~/.anda/credentials/. El archivo de credenciales contiene una clave COSE cifrada, cuya clave de cifrado se deriva del secreto de identidad del daemon local. Utilice el comando anda user export que se describe a continuación si necesita explícitamente un archivo de clave.

En Linux, si no hay un proveedor de Secret Service disponible o desbloqueado, Anda recurre a archivos de clave privada de daemon/propietario bajo ~/.anda/keys/ y muestra/registra una advertencia. Las claves privadas de los usuarios de confianza permanecen cifradas en el almacén de credenciales local mientras se pueda cargar el secreto de identidad del daemon. Para utilizar Secret Service para las identidades de daemon/propietario, inicie y desbloquee un proveedor en una sesión D-Bus de usuario, por ejemplo gnome-keyring-daemon --start --components=secrets, asegúrese de que DBUS_SESSION_BUS_ADDRESS esté configurado para el proceso de Anda y luego reinicie Anda. Los usuarios de KDE pueden desbloquear KWallet en su lugar.

Para exportar una clave privada de identidad existente a un archivo, utilice anda user export. La identidad puede ser daemon, owner, default o el ID de un usuario de confianza:

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

Mantenga los archivos de clave privada exportados fuera del control de versiones y de las carpetas compartidas.

La configuración mantiene esta estructura:

users:
- id: alice
pubkey: "ALICE_ED25519_PUBLIC_KEY"
- id: ops
pubkey: "OPS_ED25519_PUBLIC_KEY"

Ejemplo de Telegram

channels:
telegram:
- id: personal
user: alice
bot_token: "TU_TELEGRAM_BOT_TOKEN"
username: "TU_TELEGRAM_BOT_USERNAME"
allowed_users:
- "*"
mention_only: false

Ejemplo de WeChat

channels:
wechat:
- id: personal
user: alice
# Dejar vacío para ejecutar anda channel init wechat, escanear el código QR y obtener un token.
bot_token: ""
username: anda-wechat
allowed_users:
- "*"

Ejemplo de Discord

Discord utiliza un token de bot y una conexión Gateway. Cree e instale el bot antes de editar config.yaml:

  1. Abra el Portal de desarrolladores de Discord, luego cree o seleccione su aplicación.
  2. En la página Bot de la aplicación, copie o restablezca el token del bot. Active también la opción Message Content Intent bajo Privileged Gateway Intents para que Anda pueda leer el texto de los mensajes normales.
  3. En la página Installation, asegúrese de que Guild Install incluya el alcance bot. Sin el alcance bot, la aplicación puede aparecer en sus aplicaciones de Discord pero no como un bot miembro de un servidor.
  4. Conceda al bot al menos los permisos View Channels, Send Messages y Read Message History. Añada Attach Files si Anda debe enviar archivos, y añada Add Reactions cuando ack_reactions: true esté activado.
  5. Instale la aplicación en su servidor. El bot debería aparecer en la lista de miembros del servidor después de la instalación.
channels:
discord:
- id: server
user: ops
bot_token: "TU_DISCORD_BOT_TOKEN"
username: anda-discord
# Opcional. Restringir esta entrada a un servidor de Discord específico.
guild_id: "TU_DISCORD_GUILD_ID"
allowed_users:
- "TU_DISCORD_USER_ID"
mention_only: true
ack_reactions: true

Solo el campo bot_token es requerido por la validación de configuración. Para una configuración útil y más segura, configure allowed_users con IDs de usuario de Discord; una lista allowed_users vacía con allow_external_users: false ignorará a los remitentes que no estén en la lista de permitidos. Utilice allow_external_users: true únicamente si desea permitir que usuarios externos no confiables se comuniquen con Anda como $external_user.

Después de guardar la configuración:

anda channel list
anda restart

Mencione al bot en un canal del servidor:

@anda-discord resumir este hilo

En un mensaje directo (DM) con el bot, envíe un mensaje normal sin mencionarlo. Si el bot no está visible, compruebe que Guild Install incluya el alcance bot y que el daemon esté en ejecución.

Ejemplo de Lark / Feishu

channels:
lark:
- id: work
user: ops
app_id: "cli_xxx"
app_secret: "TU_APP_SECRET"
platform: feishu
receive_mode: websocket
mention_only: true

Verificaciones de seguridad del canal

  • allowed_users determina quién puede activar a Anda; utilice "*" únicamente si es aceptable el acceso abierto.
  • user determina qué remitente de Anda confiable posee las conversaciones, los recursos y la memoria para esta entrada de canal.
  • Telegram y Discord suelen requerir bot_token.
  • WeChat puede utilizar un token guardado, o inicio de sesión por QR cuando bot_token esté vacío.
  • Lark / Feishu requiere app_id y app_secret; los endpoints de Feishu utilizan platform: feishu.
  • Las rutas del canal se persisten de modo que las respuestas posteriores puedan volver al hilo, sala o contacto original.

Entrada de voz y reproducción

La entrada de voz requiere que transcription.enabled: true esté configurado. Inicie una sesión de voz con:

anda voice --record-secs 8

Si además desea que Anda reproduzca la respuesta, configure tts.enabled: true. Si solo desea entrada por micrófono y salida por texto:

anda voice --record-secs 8 --no-playback

Los archivos de audio adjuntos pueden ingresar al contexto una vez activada la transcripción, permitiendo que los mensajes de voz en los canales pasen a formar parte del mismo hilo de memoria.