Channel 接入
Channel 把 Telegram 或飞书消息交给节点处理,再把节点的文本回复发回原会话。
| Channel | 状态 | 接入命令 |
|---|---|---|
| Telegram | 已支持 | anet channel add telegram <node> |
| 飞书 | preview 已支持 | anet channel add feishu <node> |
| 微信 | 尚未进入 CLI | 无 |
Telegram
1. 创建 Bot 并取得用户 ID
在 Telegram 中向 @BotFather 发送 /newbot,保存 Bot Token。
白名单使用 Telegram 的数字用户 ID。让每位允许访问的人给 @userinfobot 发送消息,并把返回的 ID 交给管理员。
2. 绑定已有节点
anet channel add telegram 指挥室 \
--bot-token 123456789:ABCdefGhIJKlmNoPQRsTUVwxyz \
--allow 123456789省略参数会进入交互输入。正确的白名单参数是 --allow,不是 --allow-user。
如果节点已经运行,新增配置不会热加载;请重启节点:
anet node stop 指挥室
anet node start 指挥室3. 检查配置
anet channel ls 指挥室
anet channel status 指挥室status 会显示节点实际读取的 access.json 路径、白名单与待处理配对记录。不要修改其他同名文件。
4. 使用与安全
直接给 Bot 发消息即可。节点输出普通文本,不需要调用 telegram_reply 等工具;这些工具不存在。agent-node 使用 Telegram getUpdates 长轮询接收消息,并把回复发回原 chat。图片会先下载到节点 inbox,再交给支持图片的 runtime。
- 白名单缺失、为空或格式错误时默认拒绝消息。
- 不要把 Bot Token 提交到 Git,也不要通过聊天消息修改访问权限。
- 多个运行中的节点不要共用同一个 Bot Token,否则会竞争同一条更新流。
- 修改 token 或白名单后必须重启节点。
排障
anet status
anet channel status 指挥室
tmux capture-pane -t 指挥室 -p | tail -80依次确认:节点在线、Bot Token 完整、发送者 ID 在 allowFrom 中、启动日志出现 Telegram polling。节点正处理其他任务时,新消息也可能需要等待。
当前没有 anet channel rm telegram。如需移除,停止节点后从 .anet/nodes/<node-id>/config.json 的 channels 数组删除 telegram,再删除 .anet/nodes/<node-id>/channels/telegram/ 并启动节点。
飞书
飞书是内置 Channel,支持私聊、群聊 @Bot、文本和图片。完整的应用创建、事件订阅与权限配置见 飞书接入指南。
最小命令:
anet channel add feishu 指挥室 \
--app-id cli_xxx \
--app-secret yyy \
--allow ou_xxx
# 群聊白名单
anet channel add feishu 指挥室 \
--app-id cli_xxx \
--app-secret yyy \
--allow-chat oc_xxx私聊和群聊白名单可分别维护;参数可以重复:
anet channel allow feishu 指挥室 --add-from ou_xxx --add-chat oc_xxx
anet channel allow feishu 指挥室 --rm-from ou_xxx --rm-chat oc_xxx修改后同样需要重启节点。
多 Channel
一个节点可以同时接收 CommHub、Telegram 和飞书消息:
anet node create 指挥室 --runtime claude-code-cli
anet channel add telegram 指挥室 --bot-token <token> --allow <user-id>
anet channel add feishu 指挥室 --app-id <id> --app-secret <secret> --allow <open-id>
anet node start 指挥室agent-node 会保留消息来源,并把回复路由回原平台。节点只需生成回复内容,不需要直接调用平台 API。
微信
anet channel add wechat 尚未发布,CommHub Server 也没有微信回复工具。不要把维护者自用的外部插件当作产品能力。需要微信支持时,请关注项目路线图或在 GitHub Discussions 提交需求。
延伸阅读
Agent 主动推送到桌面/网页客户端
send_desktop_message 是 Hub 的 MCP 工具(commhub-server@0.9.0-preview.36 起),让 agent 主动给某个登录用户的桌面端/网页端推消息——不需要用户先发任务,也不走节点收件箱。目标是用户身份(to_username 或 to_user_id),不是节点 alias。
send_desktop_message(
to_username = "alice", # 或 to_user_id,二选一必填
message = "构建完成,3 个包已发 preview", # 必填,≤10000 字
title = "发版完成", # 可选,≤200 字
severity = "success", # info(默认) / success / warning / error
kind = "agent_message", # 可选分类标签,默认 agent_message
)- 送达路径:写入审计日志 → 以
type=desktop_message的 SSE 事件实时推给该用户所有在线客户端。 - 目标用户必须在同一 network 内,否则返回
desktop_target_not_in_network。 - 与
send_task的区别:send_task面向节点(进对方收件箱、有任务生命周期);send_desktop_message面向人(即时通知,无任务状态)。