xiantong 文档

WhatsApp

通过 QR 配对将 WhatsApp 连接到 xiantong,支持 self-chat 与附件

通过 QR 配对将 WhatsApp 连接到 xiantong,支持 self-chat 模式、Baileys worker 架构与附件。

非官方集成。 WhatsApp 适配器使用 Baileys,它是社区维护的 WhatsApp Web 客户端实现,并非官方 WhatsApp Business API。请主要用于个人自动化,并自行评估平台限流或会话失效风险。

WhatsApp 集成使用与 WhatsApp Web 相同的 QR 码配对流程,并在 子进程 worker 中运行,以隔离 Baileys 的全局状态。

配对账号#

  1. 打开 设置 → 消息,点击 WhatsApp 卡片上的 连接
  2. 在弹窗中扫描 QR 码:手机打开 WhatsApp → 设置 → 已关联设备 → 关联设备
  3. 等待连接。对话框会显示 Connected as <your-name>。Baileys 会话保存在:
~/.xiantong/workspaces/{workspaceId}/messaging/whatsapp-session/

请保留此目录;删除它会强制重新配对。

无需第二部手机。 默认启用 self-chat 模式,您可以给自己的 WhatsApp 账号发消息来驱动 xiantong。

第一次对话#

Self-chat(推荐)#

  1. 在 WhatsApp 中打开与自己的聊天。
  2. 发送 /new
  3. worker 会识别来自自己的消息,创建会话并绑定聊天。Agent 回复会带有 🤖 前缀,方便与您自己的消息区分。
  4. 正常聊天即可。请不要移除回复中的 🤖 前缀,因为它也用于避免 worker 把自己的回复再次当作输入。

第二部手机或联系人#

  1. 让联系人向配对的号码发送 /new
  2. worker 创建并绑定新会话。
  3. 后续该联系人的消息会驱动绑定会话,直到发送 /unbind

Self-chat 模式#

启用后(默认),您从同一 WhatsApp 账号的其他设备给自己的 JID发送的消息,会被视为入站消息并路由到绑定会话。

行为作用
回复前缀worker 发给自己的所有出站消息会带 🤖 前缀,用于过滤自身回声,避免无限循环
已发送 ID 跟踪worker 会跟踪自己发送的消息 ID,把相关回复作为上下文处理
LID 支持WhatsApp 新的 long-ID 联系人格式会在映射到当前账号时识别为“自己”

如只想由单独联系人驱动会话,可在 设置 → 消息 → WhatsApp 中关闭 self-chat。

附件#

支持照片、文档、语音、视频和音频。单个附件上限为 20 MB。文件会作为带原始 MIME 类型的 FileAttachment 进入会话。

审批通道#

WhatsApp 绑定的 approvalChannel 始终为 app。当会话处于 请求编辑 模式且 Agent 请求执行敏感命令时,审批提示只会显示在桌面应用中,而不会在 WhatsApp 中以内联方式完成。

计划提交#

当 Agent 在 探索模式 下通过 SubmitPlan 提交计划时,WhatsApp 用户会收到文本提示:

📝 A plan is ready for review. Open the desktop app to inspect and approve it.

目前不能从 WhatsApp 直接接受或拒绝计划;审批需要在桌面应用中完成。

架构概览#

WhatsApp 适配器较特殊,因为 Baileys 持有大量全局状态,并预期自己是进程中的唯一实例。为避免影响主进程,xiantong 在独立 worker 中运行它:

Electron 主进程 <── NDJSON over stdio ──> messaging-whatsapp-worker
 messaging-gateway Baileys 事件循环
  • worker 以 Electron 内置 Node 运行。
  • 通信使用 newline-delimited JSON over stdio。
  • worker 退出时,主进程会在超时时间内尽量清空待发送队列。

故障排除#

QR 码显示但一直无法连接#

确认手机在线、WhatsApp 已更新。必要时从菜单中断开连接并重新配对。

“Disconnect” 与 “Forget Device”#

当前菜单文案为 Disconnect。它会清除本地 Baileys 会话,下次连接时需要重新配对。

手机能看到 Agent 回复,但桌面 WhatsApp 看不到#

WhatsApp 多设备同步可能有延迟。打开手机 WhatsApp 等待 10–15 秒,或从手机发送一条消息触发同步。

退出应用时丢失待发送消息#

worker 退出时会尝试清空待发送队列。强制结束应用可能丢失正在发送中的 Agent 回复,但 WhatsApp 侧已持久化的入站消息不会丢失。

Self-chat 未识别#

确认 self-chat 已启用。如账号刚迁移到 LID,旧绑定可能仍引用旧 JID,请解绑后重新绑定。

无法从 WhatsApp 接受计划#

这是当前设计限制。请在桌面应用中打开并批准计划。