Aller au contenu principal

Canaux et voix

Anda peut rester cantonné au terminal, ou il peut rejoindre les canaux d'équipe. Les canaux réintègrent le contexte dans le même runtime et le même système de mémoire.

Canaux pris en charge

  • Telegram
  • WeChat
  • Discord
  • Lark / Feishu

La configuration des canaux se trouve sous la section channels de ~/.anda/config.yaml.

Utilisateurs multiples

Un seul démon peut servir plusieurs utilisateurs de confiance via le même agent Anda. Créez une clé d'utilisateur, puis définissez le champ user d'une entrée de canal sur cet identifiant. Si user est omis, le canal utilise l'identité du propriétaire local stockée dans le stockage sécurisé des informations d'identification du système opérationnel.

anda user create alice
anda user list

La commande enregistre la nouvelle clé publique sous la section principale users et stocke la clé privée correspondante dans le stockage d'informations d'identification chiffré local sous ~/.anda/credentials/. Le fichier d'informations d'identification contient une clé COSE chiffrée, dont la clé de chiffrement est dérivée du secret d'identité du démon local. Utilisez anda user export ci-dessous lorsque vous avez explicitement besoin d'un fichier de clé.

Sous Linux, si aucun fournisseur de Secret Service n'est disponible ou déverrouillé, Anda utilise par défaut des fichiers de clés privées de démon/propriétaire sous ~/.anda/keys/ et affiche/enregistre un avertissement. Les clés privées des utilisateurs de confiance restent chiffrées dans le stockage local d'informations d'identification tant que le secret d'identité du démon peut être chargé. Pour utiliser le Secret Service pour les identités de démon/propriétaire, démarrez et déverrouillez un fournisseur dans une session D-Bus utilisateur, par exemple gnome-keyring-daemon --start --components=secrets, assurez-vous que DBUS_SESSION_BUS_ADDRESS est défini pour le processus Anda, puis redémarrez Anda. Les utilisateurs de KDE peuvent déverrouiller KWallet à la place.

Pour exporter une clé privée d'identité existante vers un fichier, utilisez anda user export. L'identité peut être daemon, owner, default ou un identifiant d'utilisateur de confiance :

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

Conservez les fichiers de clé privée exportés hors du contrôle de code source et des dossiers partagés.

La configuration conserve cette structure :

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

Exemple Telegram

channels:
telegram:
- id: personal
user: alice
bot_token: "VOTRE_TELEGRAM_BOT_TOKEN"
username: "VOTRE_TELEGRAM_BOT_USERNAME"
allowed_users:
- "*"
mention_only: false

Exemple WeChat

channels:
wechat:
- id: personal
user: alice
# Laisser vide pour exécuter anda channel init wechat, scanner le code QR et obtenir un jeton.
bot_token: ""
username: anda-wechat
allowed_users:
- "*"

Exemple Discord

Discord utilise un jeton de bot et une connexion Gateway. Créez et installez le bot avant de modifier config.yaml :

  1. Ouvrez le Portail des développeurs Discord, puis créez ou ouvrez votre application.
  2. Sur la page Bot de l'application, copiez ou réinitialisez le jeton du bot. Activez également Message Content Intent sous Privileged Gateway Intents afin qu'Anda puisse lire le texte des messages standards.
  3. Sur la page Installation, assurez-vous que Guild Install inclut le scope bot. Sans le scope bot, l'application peut apparaître dans vos applications Discord mais pas en tant que bot membre du serveur.
  4. Accordez au bot au moins les autorisations View Channels, Send Messages et Read Message History. Ajoutez Attach Files si Anda doit envoyer des fichiers, et ajoutez Add Reactions lorsque ack_reactions: true est activé.
  5. Installez l'application sur votre serveur. Le bot doit apparaître dans la liste des membres du serveur après une installation sur le serveur.
channels:
discord:
- id: server
user: ops
bot_token: "VOTRE_DISCORD_BOT_TOKEN"
username: anda-discord
# Optionnel. Restreindre cette entrée à un seul serveur Discord.
guild_id: "VOTRE_DISCORD_GUILD_ID"
allowed_users:
- "VOTRE_DISCORD_USER_ID"
mention_only: true
ack_reactions: true

Seul bot_token est requis par la validation de la configuration. Pour une configuration plus sécurisée et exploitable, définissez allowed_users sur des identifiants d'utilisateurs Discord ; une liste allowed_users vide avec allow_external_users: false ignore les expéditeurs non autorisés. Utilisez allow_external_users: true uniquement lorsque des utilisateurs externes non approuvés doivent pouvoir communiquer avec Anda en tant qu'utilisateur externe $external_user.

Après avoir enregistré la configuration :

anda channel list
anda restart

Dans un canal de serveur, mentionnez le bot :

@anda-discord résumer ce fil

Dans un message privé (DM) avec le bot, envoyez un message normal sans le mentionner. Si le bot n'est pas visible, vérifiez que Guild Install inclut le scope bot et que le démon est en cours d'exécution.

Exemple Lark / Feishu

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

Contrôles de sécurité des canaux

  • allowed_users détermine qui peut déclencher Anda ; n'utilisez "*" que si un accès ouvert est acceptable.
  • user détermine quel expéditeur Anda approuvé possède les conversations, les ressources et la mémoire de cette entrée de canal.
  • Telegram et Discord nécessitent généralement un bot_token.
  • WeChat peut utiliser un jeton enregistré, ou une connexion QR lorsque bot_token est vide.
  • Lark / Feishu requiert app_id et app_secret ; les points de terminaison Feishu utilisent platform: feishu.
  • Les routes des canaux sont persistées afin que les réponses ultérieures puissent revenir au fil de discussion, salon ou contact d'origine.

Entrée vocale et lecture

La saisie vocale requiert transcription.enabled: true. Démarrez une session vocale avec :

anda voice --record-secs 8

Si vous souhaitez également qu'Anda lise la réponse, configurez tts.enabled: true. Pour une entrée micro et une sortie texte uniquement :

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

Les pièces jointes audio peuvent intégrer le contexte une fois la transcription activée, de sorte que les messages vocaux dans les canaux puissent faire partie du même fil de mémoire.