@dingxiang-me/openclaw-wechat 1.7.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.en.md +379 -11
  3. package/README.md +620 -12
  4. package/docs/channels/wecom.md +181 -3
  5. package/openclaw.plugin.json +148 -5
  6. package/package.json +9 -5
  7. package/src/core/delivery-router.js +2 -0
  8. package/src/core/stream-manager.js +13 -2
  9. package/src/core.js +96 -6
  10. package/src/wecom/account-config-core.js +2 -0
  11. package/src/wecom/account-config.js +12 -3
  12. package/src/wecom/agent-context.js +7 -1
  13. package/src/wecom/agent-dispatch-executor.js +13 -1
  14. package/src/wecom/agent-dispatch-fallback.js +23 -0
  15. package/src/wecom/agent-inbound-dispatch.js +1 -1
  16. package/src/wecom/agent-inbound-processor.js +33 -2
  17. package/src/wecom/agent-late-reply-runtime.js +31 -1
  18. package/src/wecom/agent-runtime-context.js +3 -0
  19. package/src/wecom/agent-webhook-handler.js +5 -0
  20. package/src/wecom/api-client-core.js +1 -1
  21. package/src/wecom/bot-context.js +7 -1
  22. package/src/wecom/bot-dispatch-fallback.js +34 -3
  23. package/src/wecom/bot-dispatch-handlers.js +47 -4
  24. package/src/wecom/bot-inbound-dispatch-runtime.js +10 -0
  25. package/src/wecom/bot-inbound-executor-helpers.js +11 -4
  26. package/src/wecom/bot-inbound-executor.js +34 -0
  27. package/src/wecom/bot-long-connection-manager.js +971 -0
  28. package/src/wecom/bot-reply-runtime.js +36 -6
  29. package/src/wecom/bot-runtime-context.js +3 -0
  30. package/src/wecom/bot-state-store.js +4 -5
  31. package/src/wecom/bot-webhook-dispatch.js +5 -0
  32. package/src/wecom/bot-webhook-handler.js +5 -0
  33. package/src/wecom/callback-health-diagnostics.js +86 -0
  34. package/src/wecom/channel-config-schema.js +242 -0
  35. package/src/wecom/channel-plugin.js +162 -4
  36. package/src/wecom/channel-status-state.js +150 -0
  37. package/src/wecom/command-handlers.js +6 -0
  38. package/src/wecom/command-status-text.js +32 -3
  39. package/src/wecom/doc-client.js +537 -0
  40. package/src/wecom/doc-schema.js +380 -0
  41. package/src/wecom/doc-tool.js +833 -0
  42. package/src/wecom/outbound-active-stream.js +17 -10
  43. package/src/wecom/outbound-delivery.js +49 -0
  44. package/src/wecom/plugin-account-policy-services.js +4 -1
  45. package/src/wecom/plugin-composition.js +2 -0
  46. package/src/wecom/plugin-constants.js +1 -1
  47. package/src/wecom/plugin-delivery-inbound-services.js +4 -0
  48. package/src/wecom/plugin-processing-deps.js +5 -0
  49. package/src/wecom/plugin-route-runtime-deps.js +2 -0
  50. package/src/wecom/plugin-services.js +37 -0
  51. package/src/wecom/register-runtime.js +20 -1
  52. package/src/wecom/request-parsers.js +1 -0
  53. package/src/wecom/route-registration.js +4 -1
  54. package/src/wecom/session-reset.js +168 -0
  55. package/src/wecom/text-format.js +22 -5
  56. package/src/wecom/text-inbound-scheduler.js +1 -1
  57. package/src/wecom/thinking-parser.js +74 -0
  58. package/src/wecom/voice-transcription-process.js +80 -8
  59. package/src/wecom/voice-transcription.js +11 -0
package/CHANGELOG.md CHANGED
@@ -4,7 +4,155 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.0.0] - 2026-03-13
8
+
9
+ ### Changed
10
+ - 统一仓库、插件清单和运行时内置版本号到 `2.0.0`,避免安装后状态页仍显示旧版本
11
+ - WeCom Bot 回包兜底链路默认改为开启,默认顺序保持 `long_connection -> active_stream -> response_url -> webhook_bot -> agent_push`
12
+ - `wecom:selfcheck` / `wecom:bot:selfcheck` 现在会检查 `plugins.installs.openclaw-wechat` 版本,发现仍停留在 `1.7.x` 一类旧包时直接提示升级
13
+
14
+ ### Fixed
15
+ - 修复 Agent XML 解析时自动数值化导致前导零丢失的问题
16
+ - 修复本地 npm 包、`openclaw.plugin.json` 与运行时常量版本不一致的问题
17
+ - 改进本地语音转写错误信息,命令缺失时会明确提示检查的命令列表和 PATH
18
+
19
+ ## [1.9.9] - 2026-03-09
20
+
21
+ ### Changed
22
+ - WeCom `/reset`、`/new`、`/clear` 不再依赖 OpenClaw 核心的“重置后再起一个模型启动回合”流程;插件现在会直接在本地完成会话重置并立即回复确认文本
23
+ - WeCom Agent / Bot 入站上下文中的 `SenderId` 统一归一化为小写,和 `SessionKey`、动态路由、会话存储的大小写口径保持一致
24
+
25
+ ### Fixed
26
+ - 修复企业微信里发送 `/reset`、`/new`、`/clear` 时仍继续进入普通消息分发,最终落成 `late reply watcher timed out after 180000ms` 的问题
27
+ - 修复 `/new`、`/clear` 虽然已转换为 `/reset`,但没有真正清理当前 WeCom 会话状态的问题
28
+ - 修复历史会话 origin / delivery 字段中 `DingXiang` 与 `dingxiang` 混用导致的 WeCom 会话身份不一致问题
29
+
30
+ ## [1.9.8] - 2026-03-08
31
+
32
+ ### Added
33
+ - 新增 `corpId + corpSecret` 级别的 Access Token 缓存隔离回归测试,覆盖“同一企业、多个应用 Secret”场景
34
+ - 新增 WeCom 命令上下文字段回归测试,确保插件会把 `/reset` 一类原生命令交给 OpenClaw 核心而不是当普通文本继续跑模型
35
+ - 新增 partial reply 收尾回归测试,覆盖“已经输出部分内容,但最终 reply 缺失/超时”的 Agent 与 Bot 路径
36
+ - FAQ / 故障排查补充“`curl 200` 但企业微信后台仍提示 `openapi回调地址请求不通过`”说明,明确不建议把 `trycloudflare.com` 这类临时域名当正式 Agent 回调地址
37
+
38
+ ### Changed
39
+ - Agent / Bot 入站上下文现在会在命令已通过插件侧校验时补齐 `BodyForCommands`、`CommandAuthorized`、`CommandSource=text`,让 OpenClaw 核心原生命令链路可正确识别 `/reset`
40
+ - README / 渠道文档补充企业微信后台 URL 验证失败的诊断口径,并把稳定公网域名作为正式建议
41
+
42
+ ### Fixed
43
+ - 修复同一 `corpId` 下多个不同 `corpSecret` 复用 token cache 可能导致串 token、触发 `301002` 的问题
44
+ - 修复 `/reset`(以及兼容别名 `/new`、`/clear`)在插件里被识别但没有进入 OpenClaw 原生命令处理链路的问题
45
+ - 修复 Agent partial 已输出但最终 reply 缺失时仍继续等待/超时的问题;现在会直接收口当前可见内容,不再追加误导性的超时提示
46
+ - 修复 Bot 已输出 block 内容但最终 reply 超时时仍回落为纯 timeout 文案的问题;现在会优先把当前可见内容作为最终结果交付
47
+
48
+ ## [1.9.7] - 2026-03-08
49
+
50
+ ### Added
51
+ - 新增企业微信智能机器人长连接(WebSocket)支持:内置 `aibot_subscribe`、`aibot_msg_callback`、`aibot_respond_msg` 接入,不再依赖公网 Bot 回调地址
52
+ - 新增 `bot.longConnection` / `accounts.<id>.bot.longConnection` 配置 schema、Control UI 中文字段说明与敏感字段标记
53
+ - 新增长连接管理器与回归测试,覆盖订阅、消息推送、占位回包与最终流式回包
54
+ - 新增长连接认证探针 `npm run wecom:bot:longconn:probe`,可验证握手、鉴权与心跳确认
55
+ - 在 5 分钟极速上手(中英文)增加 Agent 模式 Trusted IP 注意项,明确“能收消息但不回复”的常见根因之一
56
+ - 新增 `docs/iteration-plan-1.9.6.md`,沉淀本次补丁目标、验收标准与下一迭代建议
57
+
58
+ ### Changed
59
+ - Bot 回包链路新增 `long_connection` 层,默认兜底顺序调整为 `long_connection -> active_stream -> response_url -> webhook_bot -> agent_push`
60
+ - 长连接默认地址改为官方入口 `wss://openws.work.weixin.qq.com`,并兼容旧地址配置自动迁移
61
+ - 长连接运行时切换为 `ws`,对齐企业微信官方 SDK 实现
62
+ - 长连接会话中的 block 输出现在直接推送到企业微信,不再只保存在本地 stream 状态
63
+ - 渠道状态现在可识别长连接在线状态,Bot-only + longConnection 配置会被视为有效 Bot 账户
64
+ - 故障排查与 FAQ(中英文)补充 Trusted IP 场景,覆盖“日志看似正常但无回复”路径
65
+ - 更新 `docs/compare-sunnoy-gap.md` 为当前阶段差距快照,标注已追平项与后续建议项
66
+
67
+ ### Fixed
68
+ - 修复长连接会话错误落入 `active_stream` 本地成功路径时可能“本地结束但用户无感知”的问题
69
+ - 修复旧版长连接协议地址、命令字和 Node 内置 WebSocket 导致的 `1006` 握手失败问题
70
+
71
+ ## [1.9.5] - 2026-03-08
72
+
73
+ ### Added
74
+ - 新增 Bot `thinking_content` 支持:当模型输出包含 `<think>` / `<thinking>` / `<thought>` 标签时,插件会自动拆分正文与思考内容,并通过企业微信 Bot 原生 `thinking_content` 字段展示折叠思考区
75
+ - 新增 `thinking-parser` 与回归测试,覆盖闭合标签、未闭合标签和代码块内标签忽略
76
+
77
+ ### Changed
78
+ - Bot block/final 流式状态现在会把思考内容单独写入流状态,不再和可见正文混在一起
79
+ - Bot stream refresh 现在会把 `thinking_content` 一并返回给企业微信客户端
80
+ - Bot block-fallback 在只有思考内容时也能保留思考区,不会直接丢失
81
+
82
+ ### Fixed
83
+ - 修复 Bot 流式输出中 `<think>` 标签内容被直接混入正文的问题
84
+
85
+ ## [1.9.4] - 2026-03-08
86
+
87
+ ### Added
88
+ - 新增 `wecom:callback:matrix`,可一次检查公网 Agent/Bot 回调以及可选 legacy alias,并直接给出 `route-not-found` / `html-fallback` / `gateway-auth` / `redirect-auth` / `gateway-unreachable`
89
+ - 新增公网回调矩阵脚本测试,覆盖全绿链路与常见反代故障分类
90
+
91
+ ### Changed
92
+ - `wecom:remote:e2e` 现在会先执行公网回调矩阵检查,再继续账号自检与 Agent/Bot E2E
93
+ - `wecom:e2e:scenario` 新增 `callback-matrix` 场景,可单独做公网回调联调
94
+ - Agent/Bot 自检脚本统一复用同一套回调健康诊断 helper,减少升级后判断口径漂移
95
+
96
+ ## [1.9.3] - 2026-03-08
97
+
98
+ ### Added
99
+ - 新增公网回调 / Gateway Auth 运维文档:补充反向代理、Cloudflare Tunnel、认证豁免与 `curl` 期望返回值
100
+ - 新增 Webhook / Heartbeat 运维手册:补充命名 webhook 配置、`openclaw message send` / `openclaw agent --deliver` 用法,以及 OpenClaw `agents.defaults.heartbeat -> target: "wecom" -> to: "webhook:<name>"` 配置示例
101
+ - 新增本地链路级回归测试:覆盖 Bot mixed 多图入站到内容构建,以及 Agent 两条加密文本回调经过防抖合并后只触发一次处理
102
+
103
+ ### Changed
104
+ - `wecom:selfcheck`、`wecom:agent:selfcheck`、`wecom:bot:selfcheck` 增强公网回调诊断,显式识别 `gateway-auth` / `redirect-auth`
105
+ - README(中英文)与渠道文档补充公网回调、反代认证与 Heartbeat 运维说明
106
+
107
+ ## [1.9.2] - 2026-03-08
108
+
109
+ ### Added
110
+ - `wecom:agent:selfcheck` 新增 `--all-accounts`,可逐账号执行 Agent URL 验证与加密 POST 体检,输出统一多账号报告
111
+ - 新增 Agent 自检回归测试,覆盖多账号发现与 `--url + --all-accounts` 冲突校验
112
+
113
+ ### Changed
114
+ - README(中英文)与渠道文档补充 Agent 多账号 E2E 自检命令,文档不再只展示单账号写法
115
+
116
+ ## [1.9.1] - 2026-03-08
117
+
118
+ ### Fixed
119
+ - 修复多账号 Agent 会话隔离:默认账号继续使用 `wecom:<userid>`,非默认账号改为 `wecom:<accountId>:<userid>`,避免不同企业微信账号串到同一会话
120
+ - 修复 `wecom:selfcheck -- --all-accounts` 与运行时配置解析不一致的问题,统一支持 `channels.wecom.accounts.<id>`、`accounts.<id>.agent` 与 legacy inline 多账号写法
121
+ - 修复运行时默认账号回退:显式账号缺失时优先回退到 `channels.wecom.defaultAccount`,再回退到 `default` / 第一个可用账号
122
+ - 修复 Agent / webhook 兼容性边界:Agent webhook 非法方法返回更明确,Bot 非法请求体返回稳定 `400`
123
+
124
+ ### Added
125
+ - 新增多账号回归测试,覆盖会话 key 生成、`selfcheck` 多账号发现、legacy inline 账号识别与 webhook 边界行为
126
+ - README(中英文)新增配置文件路径职责、OpenClaw `bindings` 账号级路由示例和多账号排障说明
127
+
128
+ ## [1.9.0] - 2026-03-08
129
+
130
+ ### Added
131
+ - 重大更新:内置 `wecom_doc` 文档工具套件,支持文档/表格/收集表的一整套操作,不需要额外安装第二个插件
132
+ - 新增文档基础动作:`create`、`rename`、`get_info`、`share`、`get_auth`、`delete`
133
+ - 新增文档权限动作:`grant_access`、`add_collaborators`、`set_join_rule`、`set_member_auth`、`set_safety_setting`
134
+ - 新增文档诊断动作:`diagnose_auth`,可直接输出企业内/企业外访问、查看成员、协作者与请求人角色判断
135
+ - 新增分享链接诊断动作:`validate_share_link`,可从 guest 视角校验 `blankpage`、`scode`、路径资源 ID 与外部可访问性
136
+ - 新增收集表动作:`create_collect`、`modify_collect`、`get_form_info`、`get_form_answer`、`get_form_statistic`
137
+ - 新增表格属性动作:`get_sheet_properties`
138
+ - 新增创建后自动授权:在企业微信会话里调用 `create` 时,默认把当前请求人自动加入协作者
139
+ - 新增高层权限输入:创建文档时即可直接传 `viewers` / `collaborators`
140
+ - 新增文档工具测试覆盖:文档 API client、工具注册、权限诊断、分享链接诊断、账号路由、自动授权、manifest/schema
141
+
142
+ ### Changed
143
+ - `create` / `share` / `get_auth` / `diagnose_auth` 结果现在会明确返回真实 `docId`,减少把分享链接路径误当 `docId` 的误用
144
+ - README 与 WeCom 渠道文档大幅补充文档工具说明、权限诊断说明、分享链接诊断说明和使用示例
145
+
146
+ ### Fixed
147
+ - 修复 WeCom 文本格式化误伤 URL 下划线的问题:`markdownToWecomText` 现在会保留链接中的 `_`
148
+
149
+ ## [1.8.0] - 2026-03-06
150
+
7
151
  ### Added
152
+ - 重大更新:支持 WeCom 后台可视化配置(Control UI 可直接编辑 `channels.wecom`)
153
+ - 新增 WeCom 渠道配置 schema 暴露能力,后台配置页可稳定识别并渲染 WeCom 表单
154
+ - 新增 WeCom 配置项中文化 UI hints(含敏感字段标记与常用字段说明)
155
+ - 新增 WeCom 入站活动状态缓存,用于渠道状态中的 `lastInbound` 可视化展示
8
156
  - 新增 Bot 卡片回包能力:`channels.wecom.bot.card`(支持 `markdown` / `template_card`)
9
157
  - 新增卡片回包分层开关:`bot.card.responseUrlEnabled`、`bot.card.webhookBotEnabled`
10
158
  - 新增 `outbound-bot-card` 模块与回归测试,统一卡片 payload 构建与长度截断
@@ -42,6 +190,9 @@ All notable changes to this project will be documented in this file.
42
190
  - 新增 Bot 自检本地回调健康诊断:可识别 `html-fallback/route-not-found/gateway-unreachable` 并输出修复提示
43
191
 
44
192
  ### Changed
193
+ - 渠道状态展示增强:`Connected` 默认按 `running && configured` 计算,不再长期显示 `n/a`
194
+ - 账号展示增强:默认账户显示名统一为“默认账号”,避免 UI 中仅显示 `default`
195
+ - Agent/Bot webhook 入站链路统一写入活动时间戳,`Last inbound` 展示准确性提升
45
196
  - Bot 回包链路增强:当无媒体且卡片开启时,`response_url` / `webhook_bot` 优先发送卡片并自动降级文本
46
197
  - 多账号默认回调路径自动分配:
47
198
  - Agent:非 default 账户缺省为 `/wecom/<accountId>/callback`