openclaw-weixin 3.0.2 → 3.1.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.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,26 @@
6
6
 
7
7
  ## [未发布]
8
8
 
9
+ ## [3.1.0] - 2026-08-10
10
+
11
+ ### 修复
12
+
13
+ - **OpenClaw SDK 入口兼容:** `createTypingCallbacks` 改从
14
+ `openclaw/plugin-sdk/channel-message` 导入,同时兼容仍提供旧入口的最低宿主和已经移除
15
+ `channel-runtime` 的新版宿主;CI 针对两类实际 SDK 构建并导入该边界,且执行无 mock
16
+ 插件注册冒烟。
17
+ - **context token 用户 ID 大小写规范化(发送 ret=-3):** context token 的账号级内存键和
18
+ 持久化键统一对用户 ID 做小写规范化;getUpdates 返回混合大小写 ID、OpenClaw 会话目标
19
+ 为小写或重启恢复旧格式文件时,仍能命中正确 token
20
+ (见 Tencent/openclaw-weixin#243)。
21
+ - **QR 登录保留稳定 `--account` 别名(逻辑映射):** `channels login --account <alias>`
22
+ 成功后凭证与状态仍落在服务端 `ilink_bot_id`(primary hash)下,并写入一对一
23
+ `alias → hash` 映射供 bindings / 出站解析;`listAccountIds` / monitor 只使用
24
+ primary;`config.isEnabled` 对别名返回 false,避免宿主 `start(alias)` 建 task
25
+ 后触发重启循环。宿主 `default` 哨兵不会变成别名;`alreadyConnected` 在不歧义时
26
+ 只登记映射,对已有 primary hash 重登为 no-op;拒绝与其它 bot 冲突的别名凭证,
27
+ 不搬迁 sync/context/allow-list;索引原子写入,失败时保留原索引。
28
+
9
29
  ## [3.0.2] - 2026-08-05
10
30
 
11
31
  ### 变更
package/CHANGELOG_EN.md CHANGED
@@ -6,6 +6,31 @@ This project follows the [Keep a Changelog](https://keepachangelog.com/) format.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.1.0] - 2026-08-10
10
+
11
+ ### Fixed
12
+
13
+ - **OpenClaw SDK entry compatibility:** `createTypingCallbacks` now imports from
14
+ `openclaw/plugin-sdk/channel-message`, supporting both the minimum host that
15
+ still exposes the legacy entry and modern hosts that removed `channel-runtime`.
16
+ CI builds and imports this boundary and runs an unmocked plugin-registration
17
+ smoke against both real SDK profiles.
18
+ - **Context-token user ID case normalization (outbound ret=-3):** account-scoped
19
+ in-memory and persisted context-token keys now lowercase the user ID. Mixed-case
20
+ IDs from getUpdates, lowercased OpenClaw session targets, and legacy persisted
21
+ files therefore resolve the same token after restart
22
+ (see Tencent/openclaw-weixin#243).
23
+ - **Persist stable `--account` aliases on QR login (logical mapping):** after
24
+ `channels login --account <alias>` succeeds, credentials and state stay under
25
+ the server `ilink_bot_id` (primary hash) and a 1:1 `alias → hash` map is stored
26
+ for bindings / outbound resolution. `listAccountIds` / monitors use only the
27
+ primary; `config.isEnabled` returns false for aliases so host `start(alias)` is
28
+ rejected before a lifecycle task (no restart loop). The host `default` sentinel
29
+ is never treated as an alias; `alreadyConnected` only records the mapping when
30
+ unambiguous and is a no-op for existing primary-hash relogin; conflicting alias
31
+ credentials are rejected without moving sync/context/allow-list state; the
32
+ account index is written atomically and left intact if publish fails.
33
+
9
34
  ## [3.0.2] - 2026-08-05
10
35
 
11
36
  ### Changed
package/README.md CHANGED
@@ -1,98 +1,149 @@
1
1
  # openclaw-weixin
2
2
 
3
- [English](./README_EN.md) · [文档站点](https://openclaw-weixin.newfuture.cc/)
3
+ <!-- docs-site:repo-only:start -->
4
+ [English](./README_EN.md) · [在线文档](https://openclaw-weixin.newfuture.cc/)
5
+ <!-- docs-site:repo-only:end -->
4
6
 
5
- 这是 [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin)
6
- 的社区维护发行版,用于连接 OpenClaw 与微信,并提供更好的使用体验。
7
+ <p class="product-tagline">把 OpenClaw 接入微信</p>
7
8
 
8
- ## 安装或替换
9
+ <p class="product-summary">
10
+ 这是 <a href="https://github.com/Tencent/openclaw-weixin">Tencent/openclaw-weixin</a>
11
+ 的社区维护发行版。提示词或命令行任选一种,即可完成安装或原位替换。
12
+ </p>
9
13
 
10
- 需要 [OpenClaw](https://docs.openclaw.ai/install) `>=2026.6.1`。请使用运行
11
- OpenClaw 的同一用户,并在同一环境中执行。
14
+ <h2 id="connect-wechat">选择一种安装方式</h2>
12
15
 
13
- **命令行——一行安装或替换:**
16
+ <p class="choice-lead"><strong>推荐复制提示词,也可以直接运行命令。</strong>
17
+ 两种方式效果相同,任选一种即可,不必重复执行。直接运行命令时,请使用运行 OpenClaw
18
+ 的同一用户和同一环境。</p>
14
19
 
15
- > 提示:**不要**先卸载 `@tencent-weixin/openclaw-weixin`;直接原位替换通常会保留现有配置和登录状态。
20
+ <div class="install-choice">
21
+ <a href="#agent-install"><strong>复制提示词</strong><span>粘贴到 OpenClaw 聊天框</span></a>
22
+ <span class="choice-or" aria-hidden="true">或</span>
23
+ <a href="#cli-install"><strong>运行命令</strong><span>在终端执行一行命令</span></a>
24
+ </div>
25
+
26
+ <h3 id="agent-install">复制提示词</h3>
27
+
28
+ <p class="prompt-lead">复制下面这段话,粘贴到 OpenClaw 聊天框并发送:</p>
29
+
30
+ ```text
31
+ 请使用 OpenClaw 插件安装命令
32
+ `openclaw plugins install npm:openclaw-weixin --force` 安装或原位替换插件。
33
+ 不要先卸载或改用普通的 `npm install`,也不要删除现有配置或登录数据。若不能运行
34
+ 终端命令,请直接说明。安装成功后,若 Gateway 已自动重启,执行
35
+ `openclaw channels status --probe` 检查连接;若未自动重启,先询问我是否重启,
36
+ 并在确认重启完成后再执行该探测。若探测显示微信尚未登录,再提示我运行
37
+ `openclaw channels login --channel openclaw-weixin` 扫码。最后报告实际结果。
38
+ ```
39
+
40
+ <h3 id="cli-install">运行一条命令</h3>
16
41
 
17
42
  ```bash
18
43
  openclaw plugins install npm:openclaw-weixin --force
19
44
  ```
20
45
 
21
- <details>
22
- <summary>绑定微信账号(全新安装)</summary>
46
+ <p class="replacement-note"><strong>替换腾讯版时不要先卸载。</strong>
47
+ 直接安装会保留现有配置和登录状态;<code>--force</code> 用于覆盖现有插件安装,
48
+ 不改变来源信任或安全策略。
49
+ OpenClaw 会自动轮换配置备份。</p>
50
+
51
+ <p class="install-done"><strong>如果当前 OpenClaw 已有微信登录状态,完成任一种方式后通常即可使用。</strong>
52
+ 全新安装需要展开完整检查并扫码绑定;安装报错、未自动恢复连接或需要确认目标账号时,
53
+ 也在此检查。</p>
54
+
55
+ <details id="verify-connection" class="full-check">
56
+ <summary>完整检查、扫码与恢复</summary>
57
+
58
+ ### 安装命令报告版本不兼容
23
59
 
24
- 如需将微信账号绑定到当前 OpenClaw,请启用插件并开始扫码绑定:
60
+ 仅在安装命令报告版本不兼容时检查;需要
61
+ [OpenClaw](https://docs.openclaw.ai/install) `>=2026.6.1`:
25
62
 
26
63
  ```bash
27
- openclaw plugins enable openclaw-weixin
28
- openclaw channels login --channel openclaw-weixin
64
+ openclaw --version
29
65
  ```
30
66
 
31
- 登录命令会在终端显示二维码。
67
+ 若版本过低或 Nix 模式禁止安装,请不要卸载现有插件;按
68
+ [安装限制与故障排查](docs/guide.md#安装限制)处理。
32
69
 
33
- </details>
34
-
35
- <details>
36
- <summary>重载检查</summary>
70
+ ### 安装后没有自动连接
37
71
 
38
- 确保正在运行的 Gateway 已重载插件。必要时重启承载 OpenClaw 的服务、容器或
39
- Pod,然后执行:
72
+ 安装可能使启用了配置重载的受管 Gateway 自动重载。若仍未连接,请重启实际承载
73
+ OpenClaw 的服务、容器或 Pod,然后执行:
40
74
 
41
75
  ```bash
42
76
  openclaw plugins list
43
77
  openclaw channels status --probe
44
78
  ```
45
79
 
46
- 插件无加载错误且目标账号探测成功即完成;若显示未登录,请执行上面的登录命令。
47
-
48
- </details>
80
+ <div class="connection-criteria">
81
+ <strong>满足以下条件即表示连接成功</strong>
82
+ <ul>
83
+ <li><code>openclaw plugins list</code> 显示插件已启用,并且没有加载错误。</li>
84
+ <li><code>openclaw channels status --probe</code> 对目标微信账号探测成功。</li>
85
+ <li>使用多账号时,探测结果对应你准备使用的别名或账号 ID。</li>
86
+ </ul>
87
+ </div>
49
88
 
89
+ | 检查结果 | 下一步 |
90
+ | --- | --- |
91
+ | 插件显示已停用 | 执行 `openclaw plugins enable openclaw-weixin`,重载 Gateway,然后重新探测 |
92
+ | 插件无加载错误,且目标账号探测成功 | 已完成,无需继续操作 |
93
+ | 账号显示未登录 | 继续下面的扫码绑定 |
94
+ | Channel 显示 `OK` 但未连接 | 按[连接故障排查](docs/guide.md#channel-显示-ok-但未连接)重载实际运行单元 |
50
95
 
51
- ### 提示词自动安装
96
+ <h3 id="bind-account">状态显示未登录</h3>
52
97
 
53
- 将下面的提示词直接发送 OpenClaw Agent,用于安全安装或原位替换插件:
98
+ 仅在探测显示目标账号未登录时执行:
54
99
 
55
- ```text
56
- 请在不改变现有配置和登录状态的前提下,安装或原位替换 `openclaw-weixin`:
57
- 1. 先确认 `openclaw --version` 不低于 2026.6.1。
58
- 2. 我信任 npm 来源 `openclaw-weixin`。执行
59
- `openclaw plugins install npm:openclaw-weixin --force`,不要先卸载。
60
- 3. 仅在 `openclaw plugins list` 显示已停用时启用插件。不要主动重启 Gateway 或发起
61
- 扫码登录;安装可能使启用了配置重载的受管 Gateway 自动重启。若已自动重启,执行
62
- `openclaw channels status --probe`;否则询问是否重启 Gateway。
63
- 4. 只报告结果;若未登录过微信,提示我手动运行
64
- `openclaw channels login --channel openclaw-weixin` 扫码绑定微信。
100
+ ```bash
101
+ openclaw plugins enable openclaw-weixin
102
+ openclaw channels login --channel openclaw-weixin
65
103
  ```
66
104
 
67
- ### 通过 Agent 命令安装
68
-
69
- OpenClaw `>=2026.7.2-beta.1` 时,如果已设置 `commands.plugins: true`,并且你是
70
- owner/admin,直接发送:
105
+ 登录命令会在终端显示二维码。扫码并等待登录完成,然后再次执行:
71
106
 
72
- ```text
73
- /plugins install npm:openclaw-weixin --force
107
+ ```bash
108
+ openclaw channels status --probe
74
109
  ```
75
110
 
76
- 然后按上面的**重载检查**操作。
111
+ </details>
77
112
 
78
113
  ## 多账号
79
114
 
80
- 再次执行登录命令即可绑定其他微信账号:
115
+ 如果会同时使用多个微信账号,建议先按「账号 + 渠道 + 对端」隔离私聊上下文:
81
116
 
82
117
  ```bash
83
- openclaw channels login --channel openclaw-weixin
118
+ openclaw config set session.dmScope per-account-channel-peer
84
119
  ```
85
120
 
86
- 多个账号同时登录时,建议按「账号 + 渠道 + 对端」隔离上下文:
121
+ 这是 OpenClaw 的全局会话设置,会影响所有渠道;它不影响账号登录,只决定之后收到的
122
+ 私聊消息如何分配会话。
123
+
124
+ 再次执行登录命令即可绑定其他微信账号。建议为每个号使用**稳定别名**,以便
125
+ `openclaw.json` / bindings 用可读 `accountId`(而不是仅服务端 hash):
87
126
 
88
127
  ```bash
89
- openclaw config set session.dmScope per-account-channel-peer
128
+ openclaw channels login --channel openclaw-weixin --account wukong
129
+ openclaw channels login --channel openclaw-weixin --account nezha
90
130
  ```
91
131
 
132
+ <details>
133
+ <summary>账号 ID 与状态文件</summary>
134
+
135
+ 登录成功后会写入:
136
+
137
+ - `openclaw-weixin/accounts/<ilink_bot_id 规范化>.json`(凭证与状态命名空间;`listAccountIds` / monitor 只用此 id)
138
+ - `openclaw-weixin/account-aliases.json`(一对一 `alias → hash` 逻辑映射,供 bindings / 出站解析;别名不会再起一条 transport)
139
+
140
+ 未传 `--account` 时(宿主会传入 `default` 哨兵)只索引服务端 bot id,不会创建名为 `default` 的账号。已绑定过的 hash 账号再执行 `login --account <alias>` 时,会在不歧义的情况下登记别名映射(不在线改名、不搬迁状态命名空间)。
141
+
142
+ </details>
143
+
92
144
  ## 文档
93
145
 
94
- - [详细指南](docs/guide.zh_CN.md):安装行为、BotAgent、卸载和故障排查
95
- - [后端 API 协议](docs/backend-api.zh_CN.md)
146
+ - [详细指南](docs/guide.md):安装行为、BotAgent、卸载和故障排查
147
+ - [后端 API 协议](docs/backend-api.md)
96
148
  - [架构说明](docs/architecture.md)
97
- - [文档站点](https://openclaw-weixin.newfuture.cc/):多语言在线文档,同时提供
98
- Markdown 原文与 [llms.txt](https://openclaw-weixin.newfuture.cc/llms.txt) 索引
149
+ - [llms.txt](https://openclaw-weixin.newfuture.cc/llms.txt):面向智能体的文档索引
package/README_EN.md CHANGED
@@ -1,106 +1,162 @@
1
1
  # openclaw-weixin
2
2
 
3
+ <!-- docs-site:repo-only:start -->
3
4
  [简体中文](./README.md) · [Documentation site](https://openclaw-weixin.newfuture.cc/en/)
5
+ <!-- docs-site:repo-only:end -->
4
6
 
5
- Community-maintained distribution of
6
- [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin) that
7
- connects OpenClaw with WeChat for a better messaging experience.
7
+ <p class="product-tagline">Bring OpenClaw into WeChat</p>
8
8
 
9
- ## Install or Replace
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
+ installs or replaces the plugin using either one prompt or one command.
13
+ </p>
10
14
 
11
- Requires [OpenClaw](https://docs.openclaw.ai/install) `>=2026.6.1`. Run commands
12
- as the same user and in the same environment as OpenClaw.
15
+ <h2 id="connect-wechat">Choose one installation method</h2>
13
16
 
14
- **CLI—one-command install or replacement:**
17
+ <p class="choice-lead"><strong>We recommend the prompt; you can also run the command directly.</strong>
18
+ Both produce the same result. Choose one; do not run both. If you run the
19
+ command directly, use the same user and environment that run OpenClaw.</p>
15
20
 
16
- > Tip: **Do not** uninstall `@tencent-weixin/openclaw-weixin` first; replacing it
17
- > in place usually preserves the existing configuration and login state.
21
+ <div class="install-choice">
22
+ <a href="#agent-install"><strong>Copy a prompt</strong><span>Paste it into an OpenClaw chat</span></a>
23
+ <span class="choice-or" aria-hidden="true">or</span>
24
+ <a href="#cli-install"><strong>Run a command</strong><span>Execute one line in your terminal</span></a>
25
+ </div>
26
+
27
+ <h3 id="agent-install">Copy the prompt</h3>
28
+
29
+ <p class="prompt-lead">Copy this prompt, paste it into an OpenClaw chat, and send it:</p>
30
+
31
+ ```text
32
+ Install or replace the plugin with OpenClaw's plugin installer by running exactly
33
+ `openclaw plugins install npm:openclaw-weixin --force`. Do not uninstall first or
34
+ use plain `npm install`; do not delete existing configuration or login data.
35
+ If you cannot run terminal commands, say so. After a successful install, run
36
+ `openclaw channels status --probe` if the Gateway restarted automatically. If it
37
+ did not, ask me whether to restart it and run the probe only after the restart is
38
+ confirmed complete. If the probe reports that WeChat is not logged in, tell me to run
39
+ `openclaw channels login --channel openclaw-weixin` and scan the QR code. Finally,
40
+ report the actual result.
41
+ ```
42
+
43
+ <h3 id="cli-install">Run one command</h3>
18
44
 
19
45
  ```bash
20
46
  openclaw plugins install npm:openclaw-weixin --force
21
47
  ```
22
48
 
23
- <details>
24
- <summary>Bind a WeChat account (new installations)</summary>
49
+ <p class="replacement-note"><strong>Do not uninstall Tencent's package first.</strong>
50
+ Installing directly preserves the existing configuration and login state.
51
+ <code>--force</code> overwrites an existing plugin installation; it does not
52
+ change source-trust or security policy. OpenClaw rotates configuration backups
53
+ automatically.</p>
54
+
55
+ <p class="install-done"><strong>If this OpenClaw instance already has a WeChat login,
56
+ either option is usually all you need.</strong> For a new installation, open the full
57
+ check and scan the QR code. Use it as well when installation fails, the connection
58
+ does not return automatically, or you need to confirm the intended account.</p>
59
+
60
+ <details id="verify-connection" class="full-check">
61
+ <summary>Full check, QR login, and recovery</summary>
25
62
 
26
- To bind a WeChat account to this OpenClaw instance, enable the plugin and start
27
- the QR flow:
63
+ ### The install command reports an incompatible version
64
+
65
+ Check only when installation reports an incompatible version. Requires
66
+ [OpenClaw](https://docs.openclaw.ai/install) `>=2026.6.1`:
28
67
 
29
68
  ```bash
30
- openclaw plugins enable openclaw-weixin
31
- openclaw channels login --channel openclaw-weixin
69
+ openclaw --version
32
70
  ```
33
71
 
34
- The login command displays a QR code in the terminal.
72
+ If the version is too old or Nix mode disables installation, do not uninstall the
73
+ existing plugin. Follow the
74
+ [installation limitations and troubleshooting](docs/guide_EN.md#limitations).
35
75
 
36
- </details>
76
+ ### The connection does not return after installation
37
77
 
38
- <details>
39
- <summary>Reload check</summary>
40
-
41
- Ensure the running Gateway has reloaded the plugin. If needed, restart the
42
- service, container, or pod that runs OpenClaw, then run:
78
+ Installation can automatically reload a managed Gateway with configuration
79
+ reload enabled. If it remains disconnected, restart the service, container, or
80
+ pod that actually runs OpenClaw, then run:
43
81
 
44
82
  ```bash
45
83
  openclaw plugins list
46
84
  openclaw channels status --probe
47
85
  ```
48
86
 
49
- It is ready when the plugin has no load error and the intended account passes
50
- the probe. If the probe reports no login, use the login command above.
87
+ <div class="connection-criteria">
88
+ <strong>You are connected when all of these are true</strong>
89
+ <ul>
90
+ <li><code>openclaw plugins list</code> shows the plugin enabled with no load error.</li>
91
+ <li><code>openclaw channels status --probe</code> succeeds for the intended WeChat account.</li>
92
+ <li>With multiple accounts, the result belongs to the alias or account ID you intend to use.</li>
93
+ </ul>
94
+ </div>
51
95
 
52
- </details>
96
+ | Result | Next action |
97
+ | --- | --- |
98
+ | Plugin is disabled | Run `openclaw plugins enable openclaw-weixin`, reload the Gateway, then probe again |
99
+ | Plugin has no load error and the intended account passes the probe | You are done |
100
+ | Account is not logged in | Continue to QR login below |
101
+ | Channel shows `OK` but does not connect | Follow [connection troubleshooting](docs/guide_EN.md#channel-shows-ok-but-doesnt-connect) to reload the actual runtime |
53
102
 
54
- ### Automatic Installation Prompt
103
+ <h3 id="bind-account">The status reports no login</h3>
55
104
 
56
- Send the following prompt directly to an OpenClaw Agent to safely install or
57
- replace the plugin in place:
105
+ Run this only when the probe reports that the intended account is not logged in:
58
106
 
59
- ```text
60
- Install or replace `openclaw-weixin` without changing the existing configuration
61
- or login state:
62
- 1. Verify that `openclaw --version` is at least 2026.6.1.
63
- 2. I trust the npm source `openclaw-weixin`. Run
64
- `openclaw plugins install npm:openclaw-weixin --force`; do not uninstall first.
65
- 3. Enable the plugin only if `openclaw plugins list` shows it disabled. Do not
66
- restart the Gateway yourself or start QR login. Installation may automatically
67
- restart a managed Gateway with config reload enabled. If it does, run
68
- `openclaw channels status --probe`; otherwise, ask whether to restart the Gateway.
69
- 4. Report only the result. If WeChat is not logged in, ask me to manually run
70
- `openclaw channels login --channel openclaw-weixin` and scan the QR code.
107
+ ```bash
108
+ openclaw plugins enable openclaw-weixin
109
+ openclaw channels login --channel openclaw-weixin
71
110
  ```
72
111
 
73
- ### Install Through an Agent Command
74
-
75
- On OpenClaw `>=2026.7.2-beta.1`, if `commands.plugins: true` is set and you are
76
- an owner/admin, send:
112
+ The login command displays a QR code in the terminal. Scan it, wait for login to
113
+ finish, then run:
77
114
 
78
- ```text
79
- /plugins install npm:openclaw-weixin --force
115
+ ```bash
116
+ openclaw channels status --probe
80
117
  ```
81
118
 
82
- Then follow **Reload check** above.
119
+ </details>
83
120
 
84
121
  ## Multiple Accounts
85
122
 
86
- Run the login command again to bind another WeChat account:
123
+ Before using multiple WeChat accounts, consider isolating direct-message context
124
+ by account + channel + sender:
87
125
 
88
126
  ```bash
89
- openclaw channels login --channel openclaw-weixin
127
+ openclaw config set session.dmScope per-account-channel-peer
90
128
  ```
91
129
 
92
- For multiple logged-in accounts, isolate context by account + channel + sender:
130
+ This is a global OpenClaw session setting that affects every channel. It does not
131
+ change account login; it controls how subsequent direct messages are assigned to
132
+ sessions.
133
+
134
+ Run the login command again to bind another WeChat account. Prefer a **stable
135
+ alias** per number so `openclaw.json` / bindings can use a readable `accountId`
136
+ instead of only the server hash:
93
137
 
94
138
  ```bash
95
- openclaw config set session.dmScope per-account-channel-peer
139
+ openclaw channels login --channel openclaw-weixin --account alice
140
+ openclaw channels login --channel openclaw-weixin --account bob
96
141
  ```
97
142
 
143
+ <details>
144
+ <summary>Account IDs and state files</summary>
145
+
146
+ A successful login writes:
147
+
148
+ - `openclaw-weixin/accounts/<normalized ilink_bot_id>.json` (credential + state namespace; `listAccountIds` / monitors use only this id)
149
+ - `openclaw-weixin/account-aliases.json` (1:1 `alias → hash` map for bindings / outbound resolution; aliases never start a second transport)
150
+
151
+ Without `--account` (the host passes its `default` sentinel) only the server bot id is indexed; a `default` account file is never created. Re-running `login --account <alias>` against an already-bound hash-only install records an alias mapping when unambiguous (no online rename, no state-namespace move).
152
+
153
+ </details>
154
+
98
155
  ## Documentation
99
156
 
100
- - [Detailed guide](docs/guide.md): install behavior, BotAgent, uninstall, and
157
+ - [Detailed guide](docs/guide_EN.md): install behavior, BotAgent, uninstall, and
101
158
  troubleshooting
102
- - [Backend API protocol](docs/backend-api.md)
103
- - [Architecture](docs/architecture.md)
104
- - [Documentation site](https://openclaw-weixin.newfuture.cc/en/): multilingual
105
- documentation that also serves the raw Markdown and an
106
- [llms.txt](https://openclaw-weixin.newfuture.cc/llms.txt) index
159
+ - [Backend API protocol](docs/backend-api_EN.md)
160
+ - [Architecture](docs/architecture_EN.md)
161
+ - [llms.txt](https://openclaw-weixin.newfuture.cc/llms.txt): machine-readable
162
+ documentation index