openclaw-weixin 3.1.2 → 3.1.5

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.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,37 @@
6
6
 
7
7
  ## [未发布]
8
8
 
9
+ ## [3.1.5] - 2026-08-16
10
+
11
+ ### 变更
12
+
13
+ - **Node.js 兼容范围:** 发布包现在声明支持 Node.js `>=22.22.3`,包括 Node.js 24 和
14
+ 26;CI 新增当前 Node.js 26 兼容性验证。
15
+
16
+ ### 修复
17
+
18
+ - **OpenClaw beta 配置兼容:** 插件入口和 channel 注册现在共用宿主提供的 JSON Schema
19
+ 边界,不再导入已移除的 `openclaw/plugin-sdk/zod`;该 schema 覆盖文档中的
20
+ `botAgent`、进度消息和字符串/数字路由标签,使插件可在新版宿主加载且不会携带第二份
21
+ Zod。
22
+
23
+ ## [3.1.4] - 2026-08-12
24
+
25
+ ### 修复
26
+
27
+ - **发布版本缺口:** npmjs 和 GitHub Packages 不再要求仓库中间版本已发布;流程仍会检查
28
+ 当前精确目标、要求 `latest` 低于待发布版本、在不可逆边界前重新检查远端状态,并对非
29
+ 404 查询错误显式失败。
30
+
31
+ ## [3.1.3] - 2026-08-12
32
+
33
+ ### 修复
34
+
35
+ - **发布流程可靠性:** npmjs、ClawHub 和 GitHub Packages 现在从已验证的 release tag
36
+ 并行发布,并以成功的发布响应完成各自任务,避免 npm registry 的即时可见性延迟使已成功的
37
+ 发布失败;GitHub Release 在三个包目标完成后收尾。ClawHub OIDC 可信发布不再覆盖包
38
+ owner。
39
+
9
40
  ## [3.1.2] - 2026-08-12
10
41
 
11
42
  ### 变更
package/CHANGELOG_EN.md CHANGED
@@ -6,6 +6,41 @@ This project follows the [Keep a Changelog](https://keepachangelog.com/) format.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.1.5] - 2026-08-16
10
+
11
+ ### Changed
12
+
13
+ - **Node.js compatibility range:** the published package now declares support
14
+ for Node.js `>=22.22.3`, including Node.js 24 and 26; CI adds compatibility
15
+ coverage for the current Node.js 26 runtime.
16
+
17
+ ### Fixed
18
+
19
+ - **OpenClaw beta config compatibility:** the plugin entry and channel
20
+ registration now share the host's JSON Schema boundary instead of the removed
21
+ `openclaw/plugin-sdk/zod` export. The schema covers the documented `botAgent`,
22
+ progress-message setting, and string or numeric route tags, allowing the plugin
23
+ to load on newer hosts without shipping a second Zod copy.
24
+
25
+ ## [3.1.4] - 2026-08-12
26
+
27
+ ### Fixed
28
+
29
+ - **Release version gaps:** npmjs and GitHub Packages no longer require
30
+ intermediate repository versions to be published. The workflows still check
31
+ the exact target, require `latest` to be lower than the release, recheck remote
32
+ state before irreversible boundaries, and fail explicit non-404 lookup errors.
33
+
34
+ ## [3.1.3] - 2026-08-12
35
+
36
+ ### Fixed
37
+
38
+ - **Release workflow reliability:** npmjs, ClawHub, and GitHub Packages now
39
+ publish in parallel from the validated release tag and complete from successful
40
+ publish responses, avoiding a false failure when npm registry propagation
41
+ lags; GitHub Release finalizes after all three package targets complete.
42
+ ClawHub OIDC trusted publishing no longer overrides the package owner.
43
+
9
44
  ## [3.1.2] - 2026-08-12
10
45
 
11
46
  ### Changed
package/README.md CHANGED
@@ -4,46 +4,52 @@
4
4
  [English](https://openclaw-weixin.newfuture.cc/en/) · [在线文档](https://openclaw-weixin.newfuture.cc/)
5
5
  <!-- docs-site:repo-only:end -->
6
6
 
7
- <p class="product-tagline">把 OpenClaw 接入微信</p>
7
+ **把 OpenClaw 接入微信**
8
8
 
9
- <p class="product-summary">
10
- 这是 <a href="https://github.com/Tencent/openclaw-weixin">Tencent/openclaw-weixin</a>
11
- 的社区维护发行版,提供 npm 与 ClawHub 两个发布入口。
12
- </p>
9
+ 社区维护的 OpenClaw 微信渠道插件,提供 npm 与 ClawHub 两个安装源。
10
+ 本插件需要 OpenClaw `>=2026.6.1`。
13
11
 
14
- <h2 id="connect-wechat">选择一种安装方式</h2>
12
+ <a id="connect-wechat"></a>
15
13
 
16
- <p class="choice-lead"><strong>推荐复制提示词,也可以直接运行命令。</strong>
17
- 提示词让 OpenClaw 优先使用 npm、失败时回退 ClawHub,并完成安装与连接检查;直接命令只安装或替换插件。</p>
14
+ ## 选择一种安装方式
18
15
 
19
- <div class="install-choice">
20
- <a href="#agent-install"><strong>复制提示词</strong><span>npm 优先,ClawHub 兜底</span></a>
21
- <span class="choice-or" aria-hidden="true">或</span>
22
- <a href="#direct-install"><strong>运行命令</strong><span>自己选择 npm 或 ClawHub</span></a>
23
- </div>
16
+ [**复制提示词**](#agent-install) **或** [**运行命令**](#direct-install)
24
17
 
25
18
  <!-- registry-prompt:start -->
26
- <h3 id="agent-install">让 OpenClaw 自动完成安装</h3>
19
+ <a id="agent-install"></a>
27
20
 
28
- <p class="prompt-lead">把下面这段话粘贴到 OpenClaw 聊天框并发送:</p>
21
+ ### 让 OpenClaw 自动完成安装
22
+
23
+ 把下面这段话粘贴到 OpenClaw 聊天框并发送:
29
24
 
30
25
  ```text
31
26
  请为当前 OpenClaw 安装或原位替换微信插件,并检查微信连接。优先安装 npm 的 `npm:openclaw-weixin`;仅当 npm 来源明确不可用时,改用 ClawHub 的 `clawhub:openclaw-wechat`,全程只安装一个。
32
-
33
27
  请遵循 OpenClaw 的安装策略,对所用来源执行同一 `openclaw-weixin` 插件 ID 的原位替换(对应 `--force`),并保留现有配置和登录数据;请使用 OpenClaw 插件安装流程,而不是普通的 `npm install`。安装后确认插件已加载并探测微信 Channel;未登录时提示扫码。最后简要报告来源和结果;失败时说明原因。
34
28
  ```
35
29
  <!-- registry-prompt:end -->
36
30
 
37
- <h3 id="direct-install">直接运行命令</h3>
31
+ <a id="direct-install"></a>
32
+
33
+ ### 直接运行命令
34
+
35
+ > [!WARNING]
36
+ > **替换腾讯版时不要先卸载。** 两个社区发布源都保留插件 ID、Channel ID、配置和
37
+ > 登录状态。`--force` 不会绕过 OpenClaw 的安装策略或内置依赖拒绝列表;OpenClaw
38
+ > 会自动轮换配置备份。
39
+
40
+ `--force` 允许覆盖相同插件 ID 的现有安装。
41
+
42
+ | 安装来源 | 包名 |
43
+ | --- | --- |
44
+ | npm | [`openclaw-weixin`](https://www.npmjs.com/package/openclaw-weixin) |
45
+ | ClawHub | [`openclaw-wechat`](https://clawhub.ai/newfuture/plugins/openclaw-wechat) |
38
46
 
39
47
  <!-- registry-source:npm:start -->
40
- <h4 id="npm-source">npm:<code>openclaw-weixin</code></h4>
48
+ <a id="npm-source"></a>
41
49
 
42
- <p class="source-note"><strong>npm 页面、GitHub README 和文档站默认使用此来源。</strong>
43
- <code>--force</code> 表示你已审阅并明确选择该 npm 来源,同时允许覆盖相同插件 ID
44
- 的现有安装。</p>
50
+ #### npm:`openclaw-weixin`
45
51
 
46
- <h5 id="npm-cli-install">npm 命令</h5>
52
+ <a id="npm-cli-install"></a>
47
53
 
48
54
  ```bash
49
55
  openclaw plugins install npm:openclaw-weixin --force
@@ -51,51 +57,22 @@ openclaw plugins install npm:openclaw-weixin --force
51
57
  <!-- registry-source:npm:end -->
52
58
 
53
59
  <!-- registry-source:clawhub:start -->
54
- <h4 id="clawhub-source">ClawHub:<code>openclaw-wechat</code></h4>
60
+ <a id="clawhub-source"></a>
61
+
62
+ #### ClawHub:`openclaw-wechat`
55
63
 
56
- <p class="source-note"><strong>ClawHub 包页面默认使用此来源。</strong>
57
- 页面顶部不带 <code>--force</code> 的命令适合没有现有微信插件的全新安装;下面保留
58
- <code>--force</code>,使同一条命令也能原位替换占用 <code>openclaw-weixin</code>
59
- 插件 ID 的腾讯版或 npm 版。</p>
64
+ 下面的命令也可原位替换占用 `openclaw-weixin` 插件 ID 的腾讯版或 npm 版。
60
65
 
61
- <h5 id="clawhub-cli-install">ClawHub 命令</h5>
66
+ <a id="clawhub-cli-install"></a>
62
67
 
63
68
  ```bash
64
69
  openclaw plugins install clawhub:openclaw-wechat --force
65
70
  ```
66
71
  <!-- registry-source:clawhub:end -->
67
72
 
68
- <p class="replacement-note"><strong>替换腾讯版时不要先卸载。</strong>
69
- 两个社区发布源都保留插件 ID、Channel ID、配置和登录状态。
70
- <code>--force</code> 不会绕过 OpenClaw 的安装策略或内置依赖拒绝列表;OpenClaw
71
- 会自动轮换配置备份。</p>
72
-
73
- ## 两个社区入口
74
-
75
- | 安装来源 | 包名 |
76
- | --- | --- |
77
- | npm | `openclaw-weixin` |
78
- | ClawHub | `openclaw-wechat` |
79
-
80
- 本项目是 [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin) 的
81
- 社区维护发行版;腾讯官方 npm 包是 `@tencent-weixin/openclaw-weixin`。社区版的包名和
82
- 发布渠道不同,但沿用 `openclaw-weixin` 插件、Channel 和状态 ID,因此可以原位替换并
83
- 保留现有配置与登录状态。
84
-
85
- **两个社区入口任选一个即可,不要同时安装。**本插件需要 OpenClaw `>=2026.6.1`,并遵循
86
- 以下 Node.js 范围:`>=22.22.3 <23`、`>=24.15.0 <25` 或 `>=25.9.0`。
87
-
88
- 当前能力包括微信私聊、文本与媒体收发、扫码登录和多账号;插件没有声明群聊能力。
89
-
90
- > **名称兼容:** `openclaw-wechat` 是 ClawHub 包名及 channel 兼容别名,
91
- > `openclaw-weixin` 仍是规范 plugin/channel ID。在 OpenClaw 2026.7.1 及以上版本,
92
- > 可以使用 `--channel openclaw-wechat` 选择同一 channel;较早的受支持宿主仍需使用
93
- > `openclaw-weixin`。插件启停命令、配置和状态路径始终使用 `openclaw-weixin`,并且不要
94
- > 同时安装两个发行包。
95
-
96
- <p class="install-done"><strong>如果当前 OpenClaw 已有微信登录状态,安装后通常只需确认连接。</strong>
97
- 全新安装需要展开完整检查并扫码绑定;安装报错、未自动恢复连接或需要确认目标账号时,
98
- 也在此检查。</p>
73
+ > [!TIP]
74
+ > **如果当前 OpenClaw 已有微信登录状态,安装后通常只需确认连接。** 全新安装需要
75
+ > 展开完整检查并扫码绑定;安装报错、未自动恢复连接或需要确认目标账号时,也在此检查。
99
76
 
100
77
  <details id="verify-connection" class="full-check">
101
78
  <summary>完整检查、扫码与恢复</summary>
@@ -106,11 +83,9 @@ openclaw plugins install clawhub:openclaw-wechat --force
106
83
 
107
84
  ```bash
108
85
  openclaw --version
109
- node --version
110
86
  ```
111
87
 
112
- 需要 OpenClaw `>=2026.6.1` 以及上文列出的 Node.js 范围。若版本过低或 Nix 模式禁止
113
- 安装,请不要卸载现有插件;按
88
+ 需要 OpenClaw `>=2026.6.1`。若版本过低或 Nix 模式禁止安装,请不要卸载现有插件;按
114
89
  [安装限制与故障排查](https://openclaw-weixin.newfuture.cc/guide.html#安装限制)处理。
115
90
 
116
91
  ### 安装后没有自动连接
@@ -123,14 +98,11 @@ openclaw plugins list
123
98
  openclaw channels status --probe
124
99
  ```
125
100
 
126
- <div class="connection-criteria">
127
- <strong>满足以下条件即表示连接成功</strong>
128
- <ul>
129
- <li><code>openclaw plugins list</code> 显示插件已启用,并且没有加载错误。</li>
130
- <li><code>openclaw channels status --probe</code> 对目标微信账号探测成功。</li>
131
- <li>使用多账号时,探测结果对应你准备使用的别名或账号 ID。</li>
132
- </ul>
133
- </div>
101
+ **满足以下条件即表示连接成功:**
102
+
103
+ - `openclaw plugins list` 显示插件已启用,并且没有加载错误。
104
+ - `openclaw channels status --probe` 对目标微信账号探测成功。
105
+ - 使用多账号时,探测结果对应你准备使用的别名或账号 ID。
134
106
 
135
107
  | 检查结果 | 下一步 |
136
108
  | --- | --- |
@@ -139,7 +111,9 @@ openclaw channels status --probe
139
111
  | 账号显示未登录 | 继续下面的扫码绑定 |
140
112
  | Channel 显示 `OK` 但未连接 | 按[连接故障排查](https://openclaw-weixin.newfuture.cc/guide.html#channel-显示-ok-但未连接)重载实际运行单元 |
141
113
 
142
- <h3 id="bind-account">状态显示未登录</h3>
114
+ <a id="bind-account"></a>
115
+
116
+ ### 状态显示未登录
143
117
 
144
118
  仅在探测显示目标账号未登录时执行:
145
119
 
@@ -192,9 +166,24 @@ openclaw channels login --channel openclaw-weixin --account nezha
192
166
 
193
167
  </details>
194
168
 
169
+ ## 主动与定时发送
170
+
171
+ 微信后端要求每条出站消息携带由该收件人入站消息下发的账号级 context token。插件收到
172
+ 消息后会按账号保存该 token:
173
+
174
+ - 尚未收到该收件人的消息或 token 缺失时,插件会拒绝发送消息,不会返回本地“成功”
175
+ 结果。
176
+ - 已保存的 token 仍可能失效;长时间无交互后发送失败时,请让收件人先向对应 bot
177
+ 发送一条消息以刷新 token,再重试。
178
+
179
+ 多账号部署的定时任务应同时显式设置 `delivery.to` 和 `delivery.accountId`。未指定
180
+ `accountId` 时,只有恰好能从账号级上下文选出一个账号才会发送;缺失或歧义都会失败。
181
+ context token 属于敏感数据,不要跨账号复制或写入任务配置。
182
+
195
183
  ## 文档与支持
196
184
 
197
- - [详细指南](https://openclaw-weixin.newfuture.cc/guide.html):安装行为、BotAgent、卸载和故障排查
185
+ - [详细指南](https://openclaw-weixin.newfuture.cc/guide.html):安装行为、可选配置、主动发送限制、卸载和故障排查
186
+ - [社区版与腾讯版](https://openclaw-weixin.newfuture.cc/distributions.html)
198
187
  - [后端 API 协议](https://openclaw-weixin.newfuture.cc/backend-api.html)
199
188
  - [架构说明](https://openclaw-weixin.newfuture.cc/architecture.html)
200
189
  - [变更日志](https://openclaw-weixin.newfuture.cc/changelog.html)
package/README_EN.md CHANGED
@@ -4,49 +4,55 @@
4
4
  [简体中文](https://openclaw-weixin.newfuture.cc/) · [Documentation site](https://openclaw-weixin.newfuture.cc/en/)
5
5
  <!-- docs-site:repo-only:end -->
6
6
 
7
- <p class="product-tagline">Bring OpenClaw into WeChat</p>
7
+ **Bring OpenClaw into WeChat**
8
8
 
9
- <p class="product-summary">
10
- This community-maintained distribution of
11
- <a href="https://github.com/Tencent/openclaw-weixin">Tencent/openclaw-weixin</a>
12
- is available from both npm and ClawHub.
13
- </p>
9
+ A community-maintained OpenClaw WeChat channel plugin available from npm and
10
+ ClawHub.
11
+ This plugin requires OpenClaw `>=2026.6.1`.
14
12
 
15
- <h2 id="connect-wechat">Choose an installation method</h2>
13
+ <a id="connect-wechat"></a>
16
14
 
17
- <p class="choice-lead"><strong>Copy the prompt, or run a command directly.</strong>
18
- The prompt tries ClawHub first, falls back to npm, and completes installation
19
- and connection checks; direct commands only install or replace the plugin.</p>
15
+ ## Choose an installation method
20
16
 
21
- <div class="install-choice">
22
- <a href="#agent-install"><strong>Copy the prompt</strong><span>ClawHub first, npm fallback</span></a>
23
- <span class="choice-or" aria-hidden="true">or</span>
24
- <a href="#direct-install"><strong>Run a command</strong><span>Choose npm or ClawHub yourself</span></a>
25
- </div>
17
+ [**Copy the prompt**](#agent-install) **or** [**Run a command**](#direct-install)
26
18
 
27
19
  <!-- registry-prompt:start -->
28
- <h3 id="agent-install">Let OpenClaw complete the installation</h3>
20
+ <a id="agent-install"></a>
29
21
 
30
- <p class="prompt-lead">Paste this prompt into an OpenClaw chat and send it:</p>
22
+ ### Let OpenClaw complete the installation
23
+
24
+ Paste this prompt into an OpenClaw chat and send it:
31
25
 
32
26
  ```text
33
27
  Install or replace the WeChat plugin in place for this OpenClaw instance and check its connection. Install from ClawHub `clawhub:openclaw-wechat` first; only if the ClawHub source is explicitly unavailable, fall back to npm `npm:openclaw-weixin`, and install only one.
34
-
35
28
  Follow OpenClaw's install policy and use in-place replacement for an existing installation with the same `openclaw-weixin` plugin ID (the `--force` behavior), preserving configuration and login data. Use the OpenClaw plugin installation flow rather than plain `npm install`. After installation, verify that the plugin is loaded and probe the WeChat channel; prompt for QR login if needed. Briefly report the source and result, or explain the failure.
36
29
  ```
37
30
  <!-- registry-prompt:end -->
38
31
 
39
- <h3 id="direct-install">Run a command directly</h3>
32
+ <a id="direct-install"></a>
33
+
34
+ ### Run a command directly
35
+
36
+ > [!WARNING]
37
+ > **Do not uninstall Tencent's package first when replacing it.** Both community
38
+ > sources preserve the plugin id, channel id, configuration, and login state.
39
+ > `--force` does not bypass OpenClaw's install policy or built-in dependency
40
+ > denylist. OpenClaw rotates configuration backups automatically.
41
+
42
+ `--force` allows replacement of an existing installation with the same plugin
43
+ id.
44
+
45
+ | Source | Package name |
46
+ | --- | --- |
47
+ | npm | [`openclaw-weixin`](https://www.npmjs.com/package/openclaw-weixin) |
48
+ | ClawHub | [`openclaw-wechat`](https://clawhub.ai/newfuture/plugins/openclaw-wechat) |
40
49
 
41
50
  <!-- registry-source:npm:start -->
42
- <h4 id="npm-source">npm: <code>openclaw-weixin</code></h4>
51
+ <a id="npm-source"></a>
43
52
 
44
- <p class="source-note"><strong>The npm page, GitHub README, and documentation site
45
- default to this source.</strong> <code>--force</code> confirms that you reviewed and
46
- selected this npm source and allows replacement of an existing installation with
47
- the same plugin id.</p>
53
+ #### npm: `openclaw-weixin`
48
54
 
49
- <h5 id="npm-cli-install">npm command</h5>
55
+ <a id="npm-cli-install"></a>
50
56
 
51
57
  ```bash
52
58
  openclaw plugins install npm:openclaw-weixin --force
@@ -54,61 +60,26 @@ openclaw plugins install npm:openclaw-weixin --force
54
60
  <!-- registry-source:npm:end -->
55
61
 
56
62
  <!-- registry-source:clawhub:start -->
57
- <h4 id="clawhub-source">ClawHub: <code>openclaw-wechat</code></h4>
63
+ <a id="clawhub-source"></a>
58
64
 
59
- <p class="source-note"><strong>The ClawHub package page defaults to this source.</strong>
60
- The banner command without <code>--force</code> is suitable for a fresh install
61
- with no existing WeChat plugin. The command below keeps <code>--force</code> so it
62
- can also replace a Tencent or npm installation that owns the
63
- <code>openclaw-weixin</code> plugin id.</p>
65
+ #### ClawHub: `openclaw-wechat`
64
66
 
65
- <h5 id="clawhub-cli-install">ClawHub command</h5>
67
+ The command can also replace a Tencent or npm installation that owns the
68
+ `openclaw-weixin` plugin id.
69
+
70
+ <a id="clawhub-cli-install"></a>
66
71
 
67
72
  ```bash
68
73
  openclaw plugins install clawhub:openclaw-wechat --force
69
74
  ```
70
75
  <!-- registry-source:clawhub:end -->
71
76
 
72
- <p class="replacement-note"><strong>Do not uninstall Tencent's package first when
73
- replacing it.</strong> Both community sources preserve the plugin id, channel id,
74
- configuration, and login state. <code>--force</code> does not bypass OpenClaw's
75
- install policy or built-in dependency denylist. OpenClaw rotates configuration
76
- backups automatically.</p>
77
-
78
- ## Community package sources
79
-
80
- | Source | Package name |
81
- | --- | --- |
82
- | npm | `openclaw-weixin` |
83
- | ClawHub | `openclaw-wechat` |
84
-
85
- This project is a community-maintained distribution of
86
- [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin); Tencent's
87
- official npm package is `@tencent-weixin/openclaw-weixin`. The community package
88
- names and registries differ, but they keep the `openclaw-weixin` plugin, channel,
89
- and state ID, allowing in-place replacement without losing existing configuration
90
- or login state.
91
-
92
- **Choose one community source; do not install both.** The plugin requires OpenClaw
93
- `>=2026.6.1` and one of these Node.js ranges: `>=22.22.3 <23`,
94
- `>=24.15.0 <25`, or `>=25.9.0`.
95
-
96
- Current capabilities include direct chats, text and media transfer, QR login,
97
- and multiple accounts. The plugin does not advertise group-chat support.
98
-
99
- > **Name compatibility:** `openclaw-wechat` is the ClawHub package name and
100
- > channel compatibility alias; `openclaw-weixin` remains the canonical
101
- > plugin/channel ID. On OpenClaw 2026.7.1 and later,
102
- > `--channel openclaw-wechat` selects the same channel; earlier supported hosts
103
- > must continue to use `openclaw-weixin`. Plugin enable/disable commands, config,
104
- > and state paths always use `openclaw-weixin`. Do not install both
105
- > distributions at once.
106
-
107
- <p class="install-done"><strong>If this OpenClaw instance already has a WeChat login,
108
- you usually only need to confirm the connection after installation.</strong> For a
109
- new installation, open the full check and scan the QR code. Use it as well when
110
- installation fails, the connection does not return automatically, or you need to
111
- confirm the intended account.</p>
77
+ > [!TIP]
78
+ > **If this OpenClaw instance already has a WeChat login, you usually only need
79
+ > to confirm the connection after installation.** For a new installation, open
80
+ > the full check and scan the QR code. Use it as well when installation fails,
81
+ > the connection does not return automatically, or you need to confirm the
82
+ > intended account.
112
83
 
113
84
  <details id="verify-connection" class="full-check">
114
85
  <summary>Full check, QR login, and recovery</summary>
@@ -119,12 +90,10 @@ Check only when installation reports an incompatible version:
119
90
 
120
91
  ```bash
121
92
  openclaw --version
122
- node --version
123
93
  ```
124
94
 
125
- The plugin requires OpenClaw `>=2026.6.1` and one of the Node.js ranges listed
126
- above. If either version is too old or Nix mode disables installation, do not
127
- uninstall the existing plugin. Follow the
95
+ The plugin requires OpenClaw `>=2026.6.1`. If the host is too old or Nix mode
96
+ disables installation, do not uninstall the existing plugin. Follow the
128
97
  [installation limitations and troubleshooting](https://openclaw-weixin.newfuture.cc/en/guide.html#limitations).
129
98
 
130
99
  ### The connection does not return after installation
@@ -138,14 +107,12 @@ openclaw plugins list
138
107
  openclaw channels status --probe
139
108
  ```
140
109
 
141
- <div class="connection-criteria">
142
- <strong>You are connected when all of these are true</strong>
143
- <ul>
144
- <li><code>openclaw plugins list</code> shows the plugin enabled with no load error.</li>
145
- <li><code>openclaw channels status --probe</code> succeeds for the intended WeChat account.</li>
146
- <li>With multiple accounts, the result belongs to the alias or account ID you intend to use.</li>
147
- </ul>
148
- </div>
110
+ **You are connected when all of these are true:**
111
+
112
+ - `openclaw plugins list` shows the plugin enabled with no load error.
113
+ - `openclaw channels status --probe` succeeds for the intended WeChat account.
114
+ - With multiple accounts, the result belongs to the alias or account ID you
115
+ intend to use.
149
116
 
150
117
  | Result | Next action |
151
118
  | --- | --- |
@@ -154,7 +121,9 @@ openclaw channels status --probe
154
121
  | Account is not logged in | Continue to QR login below |
155
122
  | Channel shows `OK` but does not connect | Follow [connection troubleshooting](https://openclaw-weixin.newfuture.cc/en/guide.html#channel-shows-ok-but-doesn-t-connect) to reload the actual runtime |
156
123
 
157
- <h3 id="bind-account">The status reports no login</h3>
124
+ <a id="bind-account"></a>
125
+
126
+ ### The status reports no login
158
127
 
159
128
  Run this only when the probe reports that the intended account is not logged in:
160
129
 
@@ -212,9 +181,28 @@ files from `~/.openclaw/openclaw-weixin/`.
212
181
 
213
182
  </details>
214
183
 
184
+ ## Proactive and scheduled sends
185
+
186
+ The WeChat backend requires every outbound message to carry an account-scoped
187
+ context token issued by an inbound message from that recipient. The plugin
188
+ stores the token under the receiving account:
189
+
190
+ - If the recipient has not messaged the bot or the token is missing, the plugin
191
+ refuses delivery instead of returning a local success result.
192
+ - A stored token can still become stale. If a send fails after a long idle
193
+ period, ask the recipient to message the corresponding bot once to refresh
194
+ the token, then retry.
195
+
196
+ Scheduled jobs in multi-account deployments should explicitly set both
197
+ `delivery.to` and `delivery.accountId`. Without `accountId`, delivery proceeds
198
+ only when account-scoped context selects exactly one account; missing or
199
+ ambiguous context fails. Context tokens are sensitive: never copy them between
200
+ accounts or put them in job configuration.
201
+
215
202
  ## Documentation and support
216
203
 
217
- - [Detailed guide](https://openclaw-weixin.newfuture.cc/en/guide.html): install behavior, BotAgent, uninstall, and troubleshooting
204
+ - [Detailed guide](https://openclaw-weixin.newfuture.cc/en/guide.html): install behavior, optional settings, proactive-send constraints, uninstall, and troubleshooting
205
+ - [Community and Tencent distributions](https://openclaw-weixin.newfuture.cc/en/distributions.html)
218
206
  - [Backend API protocol](https://openclaw-weixin.newfuture.cc/en/backend-api.html)
219
207
  - [Architecture](https://openclaw-weixin.newfuture.cc/en/architecture.html)
220
208
  - [Changelog](https://openclaw-weixin.newfuture.cc/en/changelog.html)
package/dist/index.js CHANGED
@@ -1,12 +1,11 @@
1
- import { buildChannelConfigSchema } from "openclaw/plugin-sdk/channel-config-schema";
2
1
  import { weixinPlugin } from "./src/channel.js";
3
2
  import { assertHostCompatibility } from "./src/compat.js";
4
- import { WeixinConfigSchema } from "./src/config/config-schema.js";
3
+ import { WeixinChannelConfigSchema } from "./src/config/config-schema.js";
5
4
  export default {
6
5
  id: "openclaw-weixin",
7
6
  name: "WeChat",
8
7
  description: "Community-maintained WeChat (Weixin) channel plugin for OpenClaw using the iLink bot API.",
9
- configSchema: buildChannelConfigSchema(WeixinConfigSchema),
8
+ configSchema: WeixinChannelConfigSchema,
10
9
  register(api) {
11
10
  // Fail-fast: reject incompatible host versions before any side-effects.
12
11
  assertHostCompatibility(api.runtime?.version);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAGrF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,eAAe;IACb,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,2FAA2F;IACxG,YAAY,EAAE,wBAAwB,CAAC,kBAAkB,CAAC;IAC1D,QAAQ,CAAC,GAAsB;QAC7B,wEAAwE;QACxE,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9C,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,eAAe;IACb,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,2FAA2F;IACxG,YAAY,EAAE,yBAAyB;IACvC,QAAQ,CAAC,GAAsB;QAC7B,wEAAwE;QACxE,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9C,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;CACF,CAAC"}
@@ -5,6 +5,7 @@ import { assertSessionActive } from "./api/session-guard.js";
5
5
  import { DEFAULT_BASE_URL, listWeixinAccountIds, loadWeixinAccount, migrateBoundAccountToAlias, persistWeixinLoginAccounts, resolvePrimaryAccountId, resolveWeixinAccount, triggerWeixinChannelReload, } from "./auth/accounts.js";
6
6
  import { DEFAULT_ILINK_BOT_TYPE, displayQRCode, startWeixinLoginWithQr, waitForWeixinLogin } from "./auth/login-qr.js";
7
7
  import { downloadRemoteImageToTemp } from "./cdn/upload.js";
8
+ import { WeixinChannelConfigSchema } from "./config/config-schema.js";
8
9
  import { appendWeixinExecApprovalQuickReplies, splitWeixinExecApprovalOtherOptions, } from "./messaging/approval-quick-replies.js";
9
10
  import { clearContextTokensForAccount, findAccountIdsByContextToken, getContextToken, restoreContextTokens, } from "./messaging/inbound.js";
10
11
  // Lazy-imported inside startAccount to avoid pulling in the monitor -> process-message ->
@@ -124,19 +125,7 @@ export const weixinPlugin = {
124
125
  blurb: "getUpdates long-poll upstream, sendMessage downstream; token auth.",
125
126
  order: 75,
126
127
  },
127
- configSchema: {
128
- schema: {
129
- type: "object",
130
- additionalProperties: false,
131
- properties: {
132
- replyProgressMessages: {
133
- type: "boolean",
134
- default: true,
135
- description: "Send structured tool-call progress messages.",
136
- },
137
- },
138
- },
139
- },
128
+ configSchema: WeixinChannelConfigSchema,
140
129
  capabilities: {
141
130
  chatTypes: ["direct"],
142
131
  media: true,
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,46 @@
1
- import { z } from "openclaw/plugin-sdk/zod";
1
+ import { buildJsonChannelConfigSchema } from "openclaw/plugin-sdk/channel-config-schema";
2
2
  import { CDN_BASE_URL, DEFAULT_BASE_URL } from "../auth/accounts.js";
3
- // ---------------------------------------------------------------------------
4
- // Zod config schema
5
- // ---------------------------------------------------------------------------
6
- const weixinAccountSchema = z.object({
7
- name: z.string().optional(),
8
- enabled: z.boolean().optional(),
9
- baseUrl: z.string().default(DEFAULT_BASE_URL),
10
- cdnBaseUrl: z.string().default(CDN_BASE_URL),
11
- routeTag: z.number().optional(),
12
- });
3
+ const routeTagSchema = {
4
+ anyOf: [{ type: "number" }, { type: "string" }],
5
+ };
6
+ const weixinAccountProperties = {
7
+ name: { type: "string" },
8
+ enabled: { type: "boolean" },
9
+ baseUrl: { type: "string", default: DEFAULT_BASE_URL },
10
+ cdnBaseUrl: { type: "string", default: CDN_BASE_URL },
11
+ routeTag: { type: "number" },
12
+ };
13
+ const weixinAccountSchema = {
14
+ type: "object",
15
+ additionalProperties: true,
16
+ properties: weixinAccountProperties,
17
+ };
18
+ const botAgentSchema = {
19
+ type: "string",
20
+ description: "Self-declared bot_agent identifier for backend observability.",
21
+ };
22
+ const replyProgressMessagesSchema = {
23
+ type: "boolean",
24
+ default: true,
25
+ description: "Send structured tool-call progress messages.",
26
+ };
13
27
  /** Top-level weixin config schema (token is stored in credentials file, not config). */
14
- export const WeixinConfigSchema = weixinAccountSchema.extend({
15
- accounts: z.record(z.string(), weixinAccountSchema).optional(),
16
- replyProgressMessages: z.boolean().default(true),
17
- /** ISO 8601; bumped on each successful login to refresh gateway config from disk. */
18
- channelConfigUpdatedAt: z.string().optional(),
19
- });
28
+ const weixinChannelConfigJsonSchema = {
29
+ type: "object",
30
+ additionalProperties: true,
31
+ properties: {
32
+ ...weixinAccountProperties,
33
+ // Section-level routing also accepts the string form read by loadConfigRouteTag.
34
+ routeTag: routeTagSchema,
35
+ accounts: {
36
+ type: "object",
37
+ additionalProperties: weixinAccountSchema,
38
+ },
39
+ botAgent: botAgentSchema,
40
+ replyProgressMessages: replyProgressMessagesSchema,
41
+ /** ISO 8601; bumped on each successful login to refresh gateway config from disk. */
42
+ channelConfigUpdatedAt: { type: "string" },
43
+ },
44
+ };
45
+ export const WeixinChannelConfigSchema = buildJsonChannelConfigSchema(weixinChannelConfigJsonSchema);
20
46
  //# sourceMappingURL=config-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,yBAAyB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE;IAC9D,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,qFAAqF;IACrF,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;CACvC,CAAC;AAEX,MAAM,uBAAuB,GAAG;IAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE;IACtD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;IACrD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACpB,CAAC;AAEX,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;IAC1B,UAAU,EAAE,uBAAuB;CAC3B,CAAC;AAEX,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,+DAA+D;CACpE,CAAC;AAEX,MAAM,2BAA2B,GAAG;IAClC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,8CAA8C;CACnD,CAAC;AAEX,wFAAwF;AACxF,MAAM,6BAA6B,GAAG;IACpC,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;IAC1B,UAAU,EAAE;QACV,GAAG,uBAAuB;QAC1B,iFAAiF;QACjF,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,mBAAmB;SAC1C;QACD,QAAQ,EAAE,cAAc;QACxB,qBAAqB,EAAE,2BAA2B;QAClD,qFAAqF;QACrF,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3C;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,6BAA6B,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  # Architecture
2
2
 
3
- [简体中文](./architecture.md)
3
+ [简体中文](../zh-CN/architecture.md)
4
4
 
5
5
  `openclaw-weixin` adapts the Weixin HTTP/CDN protocol to the OpenClaw channel
6
6
  runtime. The plugin owns login, account state, long polling, message conversion,
@@ -8,7 +8,7 @@ and outbound media transfer. OpenClaw owns routing, sessions, command
8
8
  authorization, reply generation, hooks, and the unified media store.
9
9
 
10
10
  The wire-level endpoint and message shapes are documented in the
11
- [backend API protocol](./backend-api_EN.md).
11
+ [backend API protocol](./backend-api.md).
12
12
 
13
13
  ## Component map
14
14
 
@@ -1,7 +1,7 @@
1
1
  # Backend API Protocol
2
2
 
3
- [Back to detailed guide](./guide_EN.md) |
4
- [简体中文](./backend-api.md)
3
+ [Back to detailed guide](./guide.md) |
4
+ [简体中文](../zh-CN/backend-api.md)
5
5
 
6
6
  This document covers every Weixin backend endpoint used by the plugin for QR
7
7
  login, lifecycle notifications, messaging, and media. The two QR login requests
@@ -37,7 +37,7 @@ not. The message examples below omit it for readability.
37
37
  ```
38
38
 
39
39
  `bot_agent` is for observability only. Its supported format and configuration
40
- are documented in the [detailed guide](./guide_EN.md#custom-botagent-optional).
40
+ are documented in the [detailed guide](./guide.md#custom-botagent-optional).
41
41
 
42
42
  ## Endpoint List
43
43
 
@@ -71,6 +71,12 @@ Content-Type: application/json
71
71
  }
72
72
  ```
73
73
 
74
+ `local_token_list` contains up to 10 local `bot_token` values from the most
75
+ recently registered accounts; it is empty when no local credentials exist. The
76
+ backend uses the list to recognize bots already bound to this OpenClaw and may
77
+ respond with `binded_redirect`. Every token in the list is sensitive; never put
78
+ a real value in logs or examples.
79
+
74
80
  The response contains an opaque `qrcode` identifier and
75
81
  `qrcode_img_content`, the URL rendered as the QR code. Poll
76
82
  `GET /ilink/bot/get_qrcode_status?qrcode=<opaque-id>` until it reaches a
@@ -169,8 +175,11 @@ Send a message to a user.
169
175
 
170
176
  ## getUploadUrl
171
177
 
172
- Get CDN upload pre-signed parameters. Call this endpoint before uploading a file
173
- to obtain `upload_param` and `thumb_upload_param`.
178
+ Get CDN upload pre-signed parameters. Call this endpoint before uploading a
179
+ file; clients prefer `upload_full_url` and otherwise use `upload_param`.
180
+ `thumb_upload_param` may be returned only when a thumbnail is requested. The
181
+ current plugin always sends `no_need_thumb: true`, uploads only the original
182
+ media, and neither requests nor uses thumbnail upload parameters.
174
183
 
175
184
  **Request body:**
176
185
 
@@ -335,13 +344,15 @@ AES-128-ECB encryption:
335
344
 
336
345
  1. Calculate the file's plaintext size, MD5, and ciphertext size after
337
346
  AES-128-ECB encryption
338
- 2. If a thumbnail is needed (image/video), calculate the thumbnail's plaintext
339
- and ciphertext parameters as well
340
- 3. Call `getUploadUrl` to get `upload_full_url` or `upload_param` (and optional
341
- `thumb_upload_param`)
342
- 4. Encrypt the file content with AES-128-ECB and `POST` it to the CDN URL as
347
+ 2. Call `getUploadUrl` with `no_need_thumb: true`
348
+ 3. Prefer `upload_full_url`; otherwise construct the CDN URL from `upload_param`
349
+ 4. Encrypt the original media with AES-128-ECB and `POST` it to the CDN URL as
343
350
  `application/octet-stream`
344
- 5. Encrypt and upload the thumbnail in the same way when requested
345
- 6. Read `x-encrypted-param` from the CDN response and use it as
351
+ 5. Read `x-encrypted-param` from the CDN response and use it as
346
352
  `encrypt_query_param` in the `CDNMedia` reference
347
- 7. Include the reference in the `MessageItem` and send
353
+ 6. Include the reference in the `MessageItem` and send
354
+
355
+ The protocol also defines `thumb_rawsize`, `thumb_rawfilemd5`,
356
+ `thumb_filesize`, and `thumb_upload_param` for implementations that set
357
+ `no_need_thumb: false` and upload a thumbnail. The current plugin does not enter
358
+ that branch.
@@ -0,0 +1,41 @@
1
+ # Community and Tencent distributions
2
+
3
+ [Back to overview](https://openclaw-weixin.newfuture.cc/en/) |
4
+ [简体中文](https://openclaw-weixin.newfuture.cc/distributions.html)
5
+
6
+ This project is a community-maintained distribution of
7
+ [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin); Tencent's
8
+ official npm package is `@tencent-weixin/openclaw-weixin`. This project is
9
+ maintained and published independently and is not an official Tencent or WeChat
10
+ release. Both distributions use the same WeChat backend protocol and
11
+ `openclaw-weixin` internal identity. The main differences are their publication
12
+ sources and how fixes, new features, and security updates are incorporated.
13
+
14
+ - **Shipped community fixes:** On top of Tencent upstream, this distribution
15
+ includes inbound replay deduplication, per-agent inbound media isolation,
16
+ stable multi-account aliases, case-insensitive context-token user IDs, and
17
+ explicit failure instead of false success when a context token is missing. See
18
+ the [community changelog](https://openclaw-weixin.newfuture.cc/en/changelog.html)
19
+ for the first release of each change.
20
+ - **Explicit compatibility boundaries:** The minimum supported host and
21
+ recommended development host are both validated, and a precompiled runtime is
22
+ published to reduce uncertainty from host upgrades and install-time
23
+ compilation.
24
+ - **Flexible installation and migration:** The same community implementation is
25
+ available from npm and ClawHub. It retains Tencent's plugin, channel, and state
26
+ ID, allowing an in-place replacement that preserves configuration and login
27
+ state.
28
+ - **Transparent maintenance:** Bilingual documentation and changelogs are paired
29
+ with an [upstream intake tracker](https://github.com/NewFuture/openclaw-weixin/issues/36)
30
+ that distinguishes Tencent-side status, community inclusion, and release
31
+ status.
32
+
33
+ Current capabilities include direct chats, text and media transfer, QR login,
34
+ and multiple accounts.
35
+
36
+ > **Name compatibility:** `openclaw-wechat` is the ClawHub package name and
37
+ > channel compatibility alias; `openclaw-weixin` remains the canonical
38
+ > plugin/channel ID. On OpenClaw 2026.7.1 and later,
39
+ > `--channel openclaw-wechat` selects the same channel; earlier supported hosts
40
+ > must continue to use `openclaw-weixin`. Plugin enable/disable commands, config,
41
+ > and state paths always use `openclaw-weixin`.
@@ -80,6 +80,45 @@ authentication or routing. All registered agents on this plugin instance
80
80
  currently share the same `botAgent` declaration; per-agent overrides may be
81
81
  added in a future version if needed.
82
82
 
83
+ ## Tool-call progress messages (optional)
84
+
85
+ `replyProgressMessages` defaults to `true`. While the model calls tools, the
86
+ plugin sends structured `TOOL_CALL_START` and `TOOL_CALL_RESULT` progress
87
+ messages. Disable these extra messages in `openclaw.json` if they are not
88
+ wanted:
89
+
90
+ ```json
91
+ {
92
+ "channels": {
93
+ "openclaw-weixin": {
94
+ "replyProgressMessages": false
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ Setting it to `false` suppresses only tool-call progress messages. It does not
101
+ disable the final reply or ordinary text and media messages.
102
+
103
+ ## Proactive and scheduled sends
104
+
105
+ The WeChat backend requires every outbound message to carry an account-scoped
106
+ context token issued by an inbound message from that recipient. The plugin
107
+ stores the token under the receiving account.
108
+
109
+ - If the recipient has not messaged the bot or the token is missing, the plugin
110
+ refuses delivery instead of returning a local success result.
111
+ - A stored token can still become stale. If a send fails after a long idle
112
+ period, ask the recipient to message the corresponding bot once to refresh
113
+ the token, then retry.
114
+ - Scheduled jobs in multi-account deployments should explicitly set both
115
+ `delivery.to` and `delivery.accountId`. Without `accountId`, delivery proceeds
116
+ only when account-scoped context selects exactly one account; missing or
117
+ ambiguous context fails.
118
+
119
+ Context tokens are sensitive: never copy them between accounts, put them in job
120
+ configuration, or share their state files.
121
+
83
122
  ## Uninstall
84
123
 
85
124
  > [!WARNING]
@@ -120,5 +159,6 @@ openclaw channels status --probe
120
159
 
121
160
  ## Developer Documentation
122
161
 
162
+ - [Community and Tencent distributions](https://openclaw-weixin.newfuture.cc/en/distributions.html)
123
163
  - [Backend API protocol](https://openclaw-weixin.newfuture.cc/en/backend-api.html)
124
164
  - [Architecture](https://openclaw-weixin.newfuture.cc/en/architecture.html)
@@ -1,6 +1,6 @@
1
1
  # 架构说明
2
2
 
3
- [English](./architecture_EN.md)
3
+ [English](../en/architecture.md)
4
4
 
5
5
  `openclaw-weixin` 将微信 HTTP/CDN 协议适配到 OpenClaw channel 运行时。插件负责
6
6
  登录、账号状态、长轮询、消息转换和出站媒体传输;OpenClaw 负责路由、会话、命令
@@ -1,6 +1,6 @@
1
1
  # 后端 API 协议
2
2
 
3
- [返回详细指南](./guide.md) | [English](./backend-api_EN.md)
3
+ [返回详细指南](./guide.md) | [English](../en/backend-api.md)
4
4
 
5
5
  本文档覆盖插件用于扫码登录、生命周期通知、消息和媒体的全部微信后端接口。两个扫码
6
6
  登录请求始终使用腾讯固定服务;账号登录后 `baseurl` 指定的后端需要实现生命周期、
@@ -67,6 +67,10 @@ Content-Type: application/json
67
67
  }
68
68
  ```
69
69
 
70
+ `local_token_list` 最多包含账号索引中最近注册的 10 个本地 `bot_token`;没有本地凭据
71
+ 时为空。后端用它识别已绑定到当前 OpenClaw 的 bot,并可能返回
72
+ `binded_redirect`。列表中的 token 均属敏感信息,不要在日志或示例中使用真实值。
73
+
70
74
  响应包含不透明的 `qrcode` 标识,以及用于生成二维码的 URL
71
75
  `qrcode_img_content`。随后轮询
72
76
  `GET /ilink/bot/get_qrcode_status?qrcode=<opaque-id>`,直到进入终止状态。遇到
@@ -163,8 +167,10 @@ Content-Type: application/json
163
167
 
164
168
  ## getUploadUrl
165
169
 
166
- 获取 CDN 上传预签名参数。上传文件前需先调用此接口获取 `upload_param` 和
167
- `thumb_upload_param`。
170
+ 获取 CDN 上传预签名参数。上传文件前需先调用此接口;客户端优先使用
171
+ `upload_full_url`,否则使用 `upload_param`。仅在请求缩略图时才可能返回
172
+ `thumb_upload_param`。当前插件始终传入 `no_need_thumb: true`,只上传原始媒体,
173
+ 不请求或使用缩略图上传参数。
168
174
 
169
175
  **请求体:**
170
176
 
@@ -327,12 +333,14 @@ Content-Type: application/json
327
333
  ## CDN 上传流程
328
334
 
329
335
  1. 计算文件明文大小、MD5,以及 AES-128-ECB 加密后的密文大小
330
- 2. 如需缩略图(图片/视频),同样计算缩略图的明文和密文参数
331
- 3. 调用 `getUploadUrl` 获取 `upload_full_url` 或 `upload_param`(以及可选的
332
- `thumb_upload_param`)
333
- 4. 使用 AES-128-ECB 加密文件内容,以 `application/octet-stream` 通过 `POST`
336
+ 2. 调用 `getUploadUrl`,并传入 `no_need_thumb: true`
337
+ 3. 优先使用 `upload_full_url`,否则通过 `upload_param` 构造 CDN URL
338
+ 4. 使用 AES-128-ECB 加密原始媒体,以 `application/octet-stream` 通过 `POST`
334
339
  上传到 CDN URL
335
- 5. 需要缩略图时,同理加密并上传
336
- 6. 从 CDN 响应读取 `x-encrypted-param`,作为 `CDNMedia` 引用中的
340
+ 5. 从 CDN 响应读取 `x-encrypted-param`,作为 `CDNMedia` 引用中的
337
341
  `encrypt_query_param`
338
- 7. 将引用放入 `MessageItem` 后发送
342
+ 6. 将引用放入 `MessageItem` 后发送
343
+
344
+ 协议还定义了 `thumb_rawsize`、`thumb_rawfilemd5`、`thumb_filesize` 和
345
+ `thumb_upload_param`,供设置 `no_need_thumb: false` 的实现上传缩略图;当前插件
346
+ 不会进入该分支。
@@ -0,0 +1,27 @@
1
+ # 社区版与腾讯版
2
+
3
+ [返回概览](https://openclaw-weixin.newfuture.cc/) |
4
+ [English](https://openclaw-weixin.newfuture.cc/en/distributions.html)
5
+
6
+ 本项目是 [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin) 的
7
+ 社区维护发行版;腾讯官方 npm 包是 `@tencent-weixin/openclaw-weixin`。本项目由社区
8
+ 独立维护和发布,不是腾讯或微信官方版本。两者使用相同的微信后端协议及
9
+ `openclaw-weixin` 内部标识,差异主要在发布来源、修复纳入和新功能支持以及安全更新。
10
+
11
+ - **已发布的社区修复:** 在腾讯上游基础上,已加入入站重放去重、按 Agent 隔离入站
12
+ 媒体、稳定多账号别名、context token 用户 ID 大小写兼容,以及缺少 context token
13
+ 时拒绝“假成功”;具体首发版本见[社区变更日志](https://openclaw-weixin.newfuture.cc/changelog.html)。
14
+ - **明确的兼容边界:** 同时验证最低支持宿主与推荐开发宿主,并发布预编译运行时,
15
+ 减少宿主升级或安装期编译带来的不确定性。
16
+ - **灵活的安装与迁移:** 同一套社区实现提供 npm 和 ClawHub 两个安装源,并沿用腾讯版的
17
+ 插件、Channel 和状态 ID,可原位替换并保留现有配置与登录状态。
18
+ - **透明的维护过程:** 提供中英文文档与变更日志,并在
19
+ [上游合入跟踪](https://github.com/NewFuture/openclaw-weixin/issues/36)中区分腾讯侧
20
+ 状态、社区版合入和正式发布。
21
+
22
+ 当前能力包括微信私聊、文本与媒体收发、扫码登录和多账号。
23
+
24
+ > **名称兼容:** `openclaw-wechat` 是 ClawHub 包名及 channel 兼容别名,
25
+ > `openclaw-weixin` 仍是规范 plugin/channel ID。在 OpenClaw 2026.7.1 及以上版本,
26
+ > 可以使用 `--channel openclaw-wechat` 选择同一 channel;较早的受支持宿主仍需使用
27
+ > `openclaw-weixin`。插件启停命令、配置和状态路径始终使用 `openclaw-weixin`。
@@ -69,6 +69,39 @@
69
69
  已注册的 agent 共享同一个 `botAgent` 声明;如有需要按 agent 单独标识的场景,
70
70
  可在后续版本扩展配置。
71
71
 
72
+ ## 工具调用进度消息(可选)
73
+
74
+ `replyProgressMessages` 默认为 `true`。模型调用工具时,插件会发送结构化的
75
+ `TOOL_CALL_START` 和 `TOOL_CALL_RESULT` 进度消息。若不希望显示这些额外消息,可在
76
+ `openclaw.json` 中关闭:
77
+
78
+ ```json
79
+ {
80
+ "channels": {
81
+ "openclaw-weixin": {
82
+ "replyProgressMessages": false
83
+ }
84
+ }
85
+ }
86
+ ```
87
+
88
+ 设为 `false` 只会停止工具调用进度消息,不会关闭最终回复或普通文本与媒体消息。
89
+
90
+ ## 主动与定时发送
91
+
92
+ 微信后端要求每条出站消息携带由该收件人入站消息下发的账号级 context token。插件收到
93
+ 消息后会按账号保存该 token。
94
+
95
+ - 尚未收到该收件人的消息或 token 缺失时,插件会拒绝发送消息,不会返回本地“成功”
96
+ 结果。
97
+ - 已保存的 token 仍可能失效;长时间无交互后发送失败时,请让收件人先向对应 bot
98
+ 发送一条消息以刷新 token,再重试。
99
+ - 多账号部署的定时任务应同时显式设置 `delivery.to` 和 `delivery.accountId`。未指定
100
+ `accountId` 时,只有恰好能从账号级上下文选出一个账号才会发送;缺失或歧义都会
101
+ 失败。
102
+
103
+ context token 属于敏感数据,不要跨账号复制、写入任务配置或分享状态文件。
104
+
72
105
  ## 卸载
73
106
 
74
107
  > [!WARNING]
@@ -105,5 +138,6 @@ openclaw channels status --probe
105
138
 
106
139
  ## 开发者文档
107
140
 
141
+ - [社区版与腾讯版](https://openclaw-weixin.newfuture.cc/distributions.html)
108
142
  - [后端 API 协议](https://openclaw-weixin.newfuture.cc/backend-api.html)
109
143
  - [架构说明](https://openclaw-weixin.newfuture.cc/architecture.html)
package/index.ts CHANGED
@@ -1,15 +1,14 @@
1
- import { buildChannelConfigSchema } from "openclaw/plugin-sdk/channel-config-schema";
2
1
  import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-entry";
3
2
 
4
3
  import { weixinPlugin } from "./src/channel.js";
5
4
  import { assertHostCompatibility } from "./src/compat.js";
6
- import { WeixinConfigSchema } from "./src/config/config-schema.js";
5
+ import { WeixinChannelConfigSchema } from "./src/config/config-schema.js";
7
6
 
8
7
  export default {
9
8
  id: "openclaw-weixin",
10
9
  name: "WeChat",
11
10
  description: "Community-maintained WeChat (Weixin) channel plugin for OpenClaw using the iLink bot API.",
12
- configSchema: buildChannelConfigSchema(WeixinConfigSchema),
11
+ configSchema: WeixinChannelConfigSchema,
13
12
  register(api: OpenClawPluginApi) {
14
13
  // Fail-fast: reject incompatible host versions before any side-effects.
15
14
  assertHostCompatibility(api.runtime?.version);
@@ -3,13 +3,24 @@
3
3
  "name": "WeChat",
4
4
  "description": "Community-maintained WeChat (Weixin) channel plugin for OpenClaw using the iLink bot API.",
5
5
  "icon": "https://openclaw-weixin.newfuture.cc/logo.svg",
6
- "version": "3.1.2",
6
+ "version": "3.1.5",
7
7
  "channels": ["openclaw-weixin"],
8
8
  "channelConfigs": {
9
9
  "openclaw-weixin": {
10
10
  "schema": {
11
11
  "type": "object",
12
- "additionalProperties": true
12
+ "additionalProperties": true,
13
+ "properties": {
14
+ "botAgent": {
15
+ "type": "string",
16
+ "description": "Self-declared bot_agent identifier for backend observability."
17
+ },
18
+ "replyProgressMessages": {
19
+ "type": "boolean",
20
+ "default": true,
21
+ "description": "Send structured tool-call progress messages."
22
+ }
23
+ }
13
24
  },
14
25
  "label": "WeChat",
15
26
  "description": "Weixin channel configuration."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-weixin",
3
- "version": "3.1.2",
3
+ "version": "3.1.5",
4
4
  "description": "Community-maintained WeChat (Weixin) channel plugin for OpenClaw using the iLink bot API.",
5
5
  "license": "MIT",
6
6
  "author": "Tencent",
@@ -28,6 +28,12 @@
28
28
  "openclaw.plugin.json",
29
29
  "dist/",
30
30
  "docs/",
31
+ "!docs/CONTRIBUTING.md",
32
+ "!docs/SECURITY.md",
33
+ "!docs/en/release.md",
34
+ "!docs/zh-CN/contributing.md",
35
+ "!docs/zh-CN/release.md",
36
+ "!docs/zh-CN/security.md",
31
37
  "README.md",
32
38
  "README_EN.md",
33
39
  "README.zh_CN.md",
@@ -59,7 +65,7 @@
59
65
  "prepublishOnly": "npm run check:static && npm test"
60
66
  },
61
67
  "engines": {
62
- "node": ">=22.22.3 <23 || >=24.15.0 <25 || >=25.9.0"
68
+ "node": ">=22.22.3"
63
69
  },
64
70
  "dependencies": {
65
71
  "qrcode-terminal": "0.12.0"