Agent Skills
返回列表
💻

企业微信NPC机器人全流程指南

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f12a44b7/self-dev-wecom-npc-skill。

技能介绍

企业微信的智能机器人走「长连接」模式时,不再有 Webhook 回调地址,客户端要自己维持 WebSocket、完成认证帧、处理心跳,并把消息转发给后端 NPC。团队常见的问题不是模型能力不足,而是链路太长:企微后台配置、CNB NPC 仓库、流水线触发、Node.js 长连接客户端、systemd 常驻,任何一环脱节都会表现为「消息收不到」或「认证失败」。这个技能把全流程拆成可核对的步骤,并提供可直接运行的模板。

它解决什么问题

  • 长连接模式的认证细节不直观:认证回复帧没有 cmd 字段,只能通过 req_id 前缀 auth_ 判断。
  • CNB 流水线配置位置错误会导致构建报 CONFIG_EVENT_EMPTY,但排查时容易先怀疑 Token。
  • NPC 输出混入 Runner、Usage、Skills 等元数据行,直接返回给用户会破坏角色人设。
  • 多机器人部署时,同一个 Bot ID 被多个进程连接会造成频繁断线和重连竞争。

技能如何工作

它按 7 步串起完整链路:企业微信后台创建智能机器人并选择「API 模式 / 长连接」,关闭「仅限创建者使用」;创建 CNB NPC 仓库;在 .cnb/settings.yml 里定义角色名、prompt、口头禅与格式要求;在 .cnb.yml 中把 api_trigger_npc 放在 $: 下触发 NPC;推送后查询构建状态与 Stage 日志;复制 templates/index.js 部署长连接客户端;用 systemd 模板常驻运行。

客户端负责订阅 aibot_subscribe,按 req_id 前缀区分认证、心跳 ping_ 与流式回复 stream_;收到 aibot_msg_callback 后携带运行时上下文调用 CNB NPC,再通过 aibot_respond_msg 的 stream 字段把回复分段写回企微。NPC 结果提取采用三层 fallback:标准匹配 Master[...][agent][N]、宽松过滤元数据行、尾部兜底,避免镜像格式变化导致无输出。

适用边界与注意点

  • 需要企业微信管理员权限、具备 repo-cnb-trigger:rw scope 的 CNB Token,以及 Node.js >= 18 的服务器。
  • 必须使用 wss://openws.work.weixin.qq.com,并保持每 30 秒发送心跳;pong 帧同样没有 cmd。
  • 若认证失败返回 errcode=853000,应先核对 Bot ID/Secret 与长连接模式,而不是立刻认定限流。
  • 密钥不要写进 service 文件,.env 权限应为 600;多机器人通过环境变量区分,并确保每个 Bot ID 只有一个进程。
  • 角色人设统一放在 settings.yml 的 prompt,不要在客户端里重复硬编码风格。

使用场景

  • 运维要在企业微信里加一个技术支持NPC,需配置长连接机器人并把用户问题转给CNB流水线处理。
  • 后端工程师要把企微机器人的WebSocket客户端部署到服务器,用systemd保持长连接并隔离密钥。
  • 角色策划要上线多个企微NPC,需要在CNB仓库中分别定义人设、口头禅和回复格式。
  • 排查机器人收不到消息时,需检查后台是否关闭「仅限创建者使用」并核对消息回调配置。

适合人员

  • 负责企业微信应用配置的管理员,想把机器人接入长连接并交给CNB NPC处理消息。
  • 写Node.js的后端工程师,需要维护WebSocket认证、心跳、流式回复和重连策略。
  • 构建平台或DevOps工程师,要用CNB流水线触发NPC并可靠提取构建日志中的agent输出。
  • 部署多机器人的SRE,需要按环境变量隔离多个Bot ID并用systemd保证单进程运行。