{"_id":"@baize-ai/baize-wecom","name":"@baize-ai/baize-wecom","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@baize-ai/baize-wecom","version":"0.2.0","description":"WeCom (企业微信) communication channel for Baize agents - WebSocket bot mode","type":"module","main":"src/index.js","scripts":{"start":"node src/index.js","cli-auth":"node scripts/wecom-cli-auth.js","check:wecom-vendor":"node scripts/check-wecom-vendor.js","test":"node --test \"src/**/*.test.js\""},"homepage":"https://github.com/baize-ai/baize-wecom#readme","bugs":{"url":"https://github.com/baize-ai/baize-wecom/issues"},"repository":{"type":"git","url":"git+https://github.com/baize-ai/baize-wecom.git"},"keywords":["baize","wecom","wechat-work","agent","websocket","baize-channel"],"author":{"name":"Baize AI"},"license":"MIT","engines":{"node":">=20.0.0"},"dependencies":{"dotenv":"^16.4.5","qrcode":"^1.5.4","ws":"^8.21.3"},"wecomCli":{"package":"@wecom/cli","version":"1.1.0","skillsCommit":"1d9e74026455a85d8d10a917b4d453ed4b9a829e","unifiedCommit":"2620033fdb2721fb192ac06a6a0510987035d203"},"publishConfig":{"access":"public"},"_id":"@baize-ai/baize-wecom@0.2.0","gitHead":"ff464a1ced2818d72c8452d85cac24b09788c1ee","_nodeVersion":"24.8.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-vcoDnYsuAkAU7sQ8pW8Pt2KJ6tAAberKxx8LRYjxKJy/i8ea9tMuj7+ElRdV8zjhq/RmqrSa8nMHbMfhr7qWQg==","shasum":"a243d563f9c50cc16f35dbfe331cd37083da6650","tarball":"https://registry.npmjs.org/@baize-ai/baize-wecom/-/baize-wecom-0.2.0.tgz","fileCount":248,"unpackedSize":3171366,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDH1r8PQK4euXjrjqKQxx+y4reM+a+Y2V1humok6L4NTgIgO4T3xyMBl60ZJ3RgNcDoHOkwojPAuVo20tB4eRimE+I="}]},"_npmUser":{"name":"huyh.java","email":"huyh.java@gmail.com"},"directories":{},"maintainers":[{"name":"huyh.java","email":"huyh.java@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baize-wecom_0.2.0_1787492600767_0.5157729824715203"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T13:43:20.593Z","0.2.0":"2026-08-23T13:43:20.937Z","modified":"2026-08-23T13:43:21.179Z"},"maintainers":[{"name":"huyh.java","email":"huyh.java@gmail.com"}],"description":"WeCom (企业微信) communication channel for Baize agents - WebSocket bot mode","homepage":"https://github.com/baize-ai/baize-wecom#readme","keywords":["baize","wecom","wechat-work","agent","websocket","baize-channel"],"repository":{"type":"git","url":"git+https://github.com/baize-ai/baize-wecom.git"},"author":{"name":"Baize AI"},"bugs":{"url":"https://github.com/baize-ai/baize-wecom/issues"},"license":"MIT","readme":"<p align=\"center\">\n  <strong>baize-wecom</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/baize-ai\">Baize</a> AI Agent 的企业微信通讯组件\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/baize-ai/baize-wecom/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"></a>\n  <a href=\"https://nodejs.org\"><img src=\"https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg\" alt=\"Node.js\"></a>\n  <a href=\"https://work.weixin.qq.com\"><img src=\"https://img.shields.io/badge/WeCom-企业微信-07C160.svg\" alt=\"WeCom\"></a>\n</p>\n\n---\n\n## 功能特性\n\n- **WebSocket 长连接** -- 通过企业微信智能机器人 WebSocket 协议连接\n- **无需公网 IP** -- 出站 WebSocket 连接，无需回调 URL 或 SSL\n- **简单凭证** -- 仅需 Bot ID + Secret（2 个值，无需 corpSecret/token/AES key）\n- **消息类型** -- 支持文本、Markdown 发送；文本、图片、语音、视频、文件接收\n- **访问控制** -- 私聊策略(开放/白名单/仅主人)和群聊策略(按群配置)\n- **主人自动绑定** -- 第一个发送私聊消息的用户自动成为主人\n- **上下文追踪** -- 内存中的聊天记录用于上下文对话\n- **自动重连** -- 断线后指数退避 + 随机抖动重连\n- **C4 桥接** -- 标准 Baize 通讯桥接集成\n- **管理 CLI** -- 无需手动编辑 JSON 的配置管理\n- **热重载** -- 配置更改无需重启即可生效(大部分设置)\n- **官方办公 CLI** -- 固定安装官方 `wecom-cli`，并内置 14 个模块化 Skill\n  与 Unified 聚合路由，覆盖通讯录、文档、表格、日程、会议、待办、微盘、\n  邮件、消息和媒体能力\n\n## 环境要求\n\n- Node.js >= 20.0.0\n- 企业微信企业账号\n- 管理员权限（用于创建智能机器人）\n\n## 快速开始\n\n### 1. 安装\n\n```bash\n# 通过 Baize CLI\nbaize add wecom\n\n# 或手动安装\ngit clone https://github.com/baize-ai/baize-wecom.git ~/baize/.claude/skills/wecom\ncd ~/baize/.claude/skills/wecom\nnpm install\nnode hooks/post-install.js\n```\n\n### 2. 创建智能机器人\n\n1. 打开企业微信客户端 > 工作台 > 智能机器人 > 创建机器人\n2. 选择 **API模式创建**（需要管理员权限）\n3. 选择 **使用长连接**\n4. 复制 **Bot ID**（格式：`aibXXX`）和 **Secret**\n5. Secret 只显示一次 -- 立即保存\n\n### 3. 配置凭证\n\n添加到 `~/baize/.env`:\n\n```bash\nWECOM_BOT_ID=aibxxxxxxxxxxxxxxxx\nWECOM_BOT_SECRET=你的bot_secret\n```\n\n### 4. 启动服务\n\n```bash\npm2 start ecosystem.config.cjs\npm2 logs baize-wecom\n```\n\n### 5. 测试\n\n向企业微信机器人发送一条消息。第一个发送私聊消息的用户将成为主人。\n\n### 6. 授权办公能力\n\n通信长连接与办公 CLI 使用独立授权存储，但两者必须代表同一个已配置 Bot。\n首次办公请求必须从已绑定 owner 的企业微信私聊发起。Agent 会检查当前 CLI\nPrincipal；需要授权时，执行托管的同 Bot 授权：\n\n```bash\nnode scripts/wecom-cli-auth.js --check-channel-bot\nnode scripts/wecom-cli-auth.js --reuse-channel-bot \\\n  --endpoint '<原企业微信回复 endpoint>'\n```\n\nhelper 只通过 stdin/PTY 把现有消息 Bot 凭证交给官方 CLI，不进入 argv、子进程\n环境变量或日志。它会原子消费该 owner 私聊的一次性来源记录，校验 CLI Bot ID\n与消息 Bot ID 完全一致，然后自动重试原办公请求一次。整个过程不扫码、不创建\n额外 Bot；群聊或非 owner 请求必须转到 owner 私聊。\n\n组件不支持直接运行 `wecom-cli auth init`：它可能创建独立 Bot，而强制的同 Bot\n业务门禁会拒绝该 Principal。\n\n## 配置\n\n### 配置文件\n\n`~/baize/components/wecom/config.json`\n\n```json\n{\n  \"enabled\": true,\n  \"internal_port\": 4459,\n  \"owner\": { \"bound\": false, \"user_id\": \"\", \"name\": \"\" },\n  \"dmPolicy\": \"owner\",\n  \"dmAllowFrom\": [],\n  \"groupPolicy\": \"allowlist\",\n  \"groups\": {},\n  \"message\": { \"context_messages\": 10, \"welcome_text\": \"\" },\n  \"ws\": {\n    \"url\": \"wss://openws.work.weixin.qq.com\",\n    \"heartbeat_interval\": 30000,\n    \"reconnect_initial_delay\": 1000,\n    \"reconnect_max_delay\": 30000\n  }\n}\n```\n\n### 管理命令\n\n```bash\nADM=\"node ~/baize/.claude/skills/wecom/src/admin.js\"\n\n$ADM show                    # 显示完整配置\n$ADM show-owner              # 显示主人信息\n$ADM set-dm-policy owner     # 设置私聊策略\n$ADM list-dm-allow           # 查看私聊白名单\n$ADM add-dm-allow <user_id>  # 添加用户到白名单\n$ADM help                    # 显示所有命令\n```\n\n## 访问控制\n\n### 私聊策略\n\n| 策略 | 行为 |\n|------|------|\n| `owner` | 仅主人可私聊(默认,最严格) |\n| `allowlist` | 仅白名单用户可私聊 |\n| `open` | 任何人可私聊 |\n\n主人始终绕过所有访问检查。\n\n### 群聊策略\n\n| 策略 | 行为 |\n|------|------|\n| `disabled` | 丢弃所有群消息 |\n| `allowlist` | 仅已配置的群生效(默认) |\n| `open` | 响应所有群 |\n\n## 架构设计\n\n详见 [DESIGN.md](./DESIGN.md)。\n\n## 服务管理\n\n```bash\npm2 status baize-wecom     # 查看状态\npm2 logs baize-wecom       # 查看日志\npm2 restart baize-wecom    # 重启服务\npm2 stop baize-wecom       # 停止服务\n```\n\n## 许可证\n\n[MIT](./LICENSE)\n","readmeFilename":"README.zh-CN.md","_rev":"1-f659a037d53512195c4de93a759a6ea8"}