消息平台
想在微信、Telegram 或工作群里使用 Anyy,先确认主模型能在 Dashboard/TUI 正常回答,并让同一 Profile 的 Gateway 保持运行。消息账号、配对授权和会话记录都归当前 Profile 管理。
先启动,再配置
anyy gateway start
anyy setup channel
第二条命令在交互终端中打开平台选择向导。选中平台后,填写它实际展示的字段,检查摘要并写入。向导需要从已运行的 Gateway 读取渠道目录;不要等到填写完成才启动服务。没有交互终端时,不带平台名的命令只输出目录。
anyy setup channel telegram 这一类带平台名的命令走非交互配置,需要配合 --set 和敏感输入参数;它不会打开 Telegram 专用问答向导。
Dashboard 的入口是 渠道 → 添加。普通账号表单主要填写平台标识和凭据;需要修改私聊、群聊策略时,使用上面的交互向导。微信已绑定账号另有发送者访问设置。
这个版本有哪些接入方式
| 平台 | 接收方式 |
|---|---|
| Telegram | Bot API 长轮询 |
| Discord | Bot Gateway |
| Slack | Socket Mode |
| Business Cloud API Webhook | |
| Facebook Messenger | Page Webhook |
| IMAP 收信、SMTP 发信,均使用 TLS | |
| SMS | Twilio Webhook 与 REST |
| 钉钉 | Stream 长连接 |
| 飞书 / Lark | 默认长连接;已有 Webhook 账号可更新 |
| 微信 | 扫码确认后长轮询 |
| QQ Bot | WebSocket Gateway |
| IRC | TLS 与 SASL |
| LINE | Messaging API Webhook |
可配置不等于已连接。v0.1.107 的目录开放了这些接入实现,但仍以账号的实际观测、诊断及用户自己的收发测试判断结果;Preview、能力声明或本地保存成功都不能代替真实账号验证。目录中的 unsupported 项目不能靠猜字段启用。
当前设置界面按平台处理一个账号:该平台已有账号时进入更新,不提供第二账号创建流程。
先决定谁能访问
平台支持的策略不同,向导只接受目录列出的值。常见私聊策略有 pairing、open、allowlist、disabled,群聊常见 mention、open、allowlist、disabled。
普通平台的策略选择在 CLI 向导;Dashboard/TUI 的凭据表单没有这些策略输入。名单编辑也有范围限制:当前微信已绑定账号的访问表单和 IRC 的 CLI 向导提供 allow_from;其它发送者/群组名单没有公开条目编辑输入,不要猜一个 --set allow_from=...。选择 allowlist 不会自动创建名单;没有匹配的已存条目时,发送者不会获准。支持配对的平台可先保留默认 pairing,不支持配对时不要把 open 当作仅自己可见。
有配对请求时,在 CLI 核对平台、账号与发送者后处理:
anyy channel pairing list
anyy channel pairing approve --request REQUEST_ID
anyy channel pairing reject --request REQUEST_ID
anyy channel pairing revoke --grant GRANT_ID --reason "access removed"
Dashboard 渠道页不是配对审批列表。配对授权只决定发送者能否进入助手;应核对真实身份,不能只看昵称。
需要输入一次性配对码时,使用隐藏输入:
anyy channel pairing approve --prompt-code --channel telegram --account personal
已知 ID 不在有界列表结果中时,可在对应 ID 操作后补 --channel 和 --account 选择账号;这不会绕过归属检查。
会话怎样延续
同一账号、对端和平台 Thread 路由上的后续消息可以复用已绑定的 Anyy Session。群聊是共享会话环境;不同平台、Profile、账号实例或 Thread 不能仅凭同一个昵称合并。
平台对回复上下文的表达不同。Slack/Discord 保留 Thread;WhatsApp 与 Email 当前还会把入站消息标识用于回复路由,因此不能承诺同一联系人发来的所有消息都落入同一个 Anyy Session。微信的回复 Context Token 由接入层管理,不需要用户抄写。
/new 会为当前路由创建新会话;/stop 中止当前执行,不会关闭整条渠道。命令回复发送失败不会撤销已经完成的本地动作,重发命令前先检查当前状态。
Webhook 平台先开监听
WhatsApp、Facebook、SMS、LINE 和飞书 Webhook 需要单独的入站 HTTP 监听。它默认关闭;在所选 Profile 的 config.yaml 中设置:
channel_webhooks:
enabled: true
listen: 127.0.0.1:8770
然后运行 anyy gateway restart。只执行 anyy channel reload 不会启动此前关闭的监听。将各平台文档中的 /channels/平台/账号/webhook 路径,通过 HTTPS 反向代理转发到这个监听,不能误指向 Dashboard 端口。保留原始请求体和平台验签所需 Header;Twilio 还需要准确的公开 URL 信息。
保存、投递与重试分别看
账号操作的 committed / no_op 只说明本地设置。用 Doctor 查看当前观测,修改账号后需要重新协调时可 Reload:
anyy channel doctor telegram
anyy channel reload
渠道支持发送确认,不代表某条消息已被阅读。没有平台确认时可能只有 sent_unconfirmed;平台接受也不等于收件人已读。新最终回复在尚未产生远端副作用且可安全重试时会保留待发;已部分发送或结果未知时,不自动整条重发。先查看平台记录和诊断,避免重复投递。Reload 不是重放旧会话历史的命令。
非交互配置与秘密
只改一个已配置好的 Telegram 账号策略,可使用:
anyy setup channel telegram --set dm_policy=pairing --set group_policy=mention
更新动作只有在字段允许时才保留已有凭据。首次创建需要提供必需凭据,例如通过文件描述符:
anyy setup channel CHANNEL --set INPUT=VALUE --sensitive-fd SECRET_INPUT=FD
FD 应为已打开的专用描述符(编号至少为 3)。普通值用 --set;秘密值不要放进命令参数。支持外部凭据位置的字段可用 --external-locator-fd。具体输入 ID 和可选值以当前向导为准,不直接修改 state.db 或添加猜测的 YAML 渠道字段。