OpenClaw插件开发实测:Channel 插件接入消息平台的关键点
Channel 插件接入消息平台,真正麻烦的地方常常不是“能不能发一条消息”,而是这条消息有没有被识别成正确账号、正确联系人、正确线程。OpenClaw插件开发做到 Channel 这一层,要把平台差异收进插件内部,让 Gateway 看到稳定的会话和路由信息。

账号配置要能被 inspect 读懂
Channel 插件通常要从配置里解析 token、accountId、允许联系人、DM 策略等信息。resolveAccount 不能只在 happy path 返回对象,缺 token 时要给出明确错误;inspectAccount 要能回答 enabled、configured、tokenStatus 这类状态。这样前端或 CLI 检查时,不用等真实消息进来才知道账号没配好。
判断账号层是否过关,看三类证据:配置区存在对应 channel key,状态探测显示 token 可用,运行时能列出目标账号。账号都不稳定,后面的 pairing、threading、outbound 都会出现假问题。
DM 安全别交给平台默认值
消息平台的私聊入口往往最容易被误用。Channel 插件应明确 DM policy 和 allowFrom 的解析逻辑,默认策略宁可偏保守。配对流程也要能把“谁发起、发给谁、验证码是否匹配”留在可检查状态里。这样新联系人发消息时,系统不是沉默丢弃,而是能给出待配对或拒绝的原因。
allowlist 命中时,消息应进入既定会话。
配对模式下,验证码发送和确认要有可追踪记录。
未授权联系人不应触发 agent 处理。
这里的证据不适合只看平台聊天窗口。更可靠的是 Gateway 会话元数据、Channel 状态输出和插件日志。聊天窗口只能证明消息发过,不能证明路由被系统接受。
线程回复决定体验是否稳定
很多平台有 reply、thread、group、mention 之类的语义。插件要把这些平台规则转换成 OpenClaw 能保存的 route metadata。回发时,如果缺 recipient、accountId 或 threadId,就会出现“入站正常,回复丢失”的现象。排查时别先怀疑模型输出,先看会话里是否保存了足够的回发坐标。
outbound 的 sendText、sendMedia 最好返回 messageId 或平台侧结果。没有返回证据,调用端只能知道函数执行过,无法判断平台是否接收。遇到群聊或线程场景,建议分别做三组 proof:私聊发入、线程内回复、附件或长文本回发。
消息适配要少暴露平台细节
Channel 插件的价值,是把平台细节挡在插件边界内。agent 不该知道某个平台的 webhook 字段名,也不该处理平台特有的附件结构。插件应完成文本提取、附件映射、联系人标识、线程关系和 typing 信号转换。出错时,日志里保留平台响应码、目标 id、插件 accountId,避免记录完整 token 或敏感正文。
我会把接入验收定成一个闭环:状态探测可读,未授权 DM 被拦住,配对联系人能进入会话,回复能回到原线程,失败时能通过日志定位到账号、路由或平台响应。少一个环节,先别把它当成可交付 Channel 插件。