openclaw-weixin 3.0.1 → 3.0.2

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,32 @@
6
6
 
7
7
  ## [未发布]
8
8
 
9
+ ## [3.0.2] - 2026-08-05
10
+
11
+ ### 变更
12
+
13
+ - **入站媒体按 Agent 隔离:** 图片、视频、文件和语音现在按已路由的 Agent 存入
14
+ `weixin/<agentId>/inbound`,避免多 Agent 部署中的媒体文件混放及跨 Agent
15
+ 访问;无法解析 Agent 时继续使用兼容旧版本的 `inbound` 路径。
16
+
17
+ ### 修复
18
+
19
+ - **入站 getUpdates 双投递:** ordinary / approval 两条 admission 车道在处理前通过
20
+ OpenClaw `createClaimableDedupe`(账号隔离的 `resolveFilePath`,落在
21
+ `openclaw-weixin/replay-dedupe/`,兼容最低宿主 `2026.6.1`)认领稳定去重键
22
+ (`message_id` → `client_id` → `seq` → 正文指纹),成功后写入 24 小时墓碑,
23
+ 避免 iLink 长轮询至少一次投递(约 1 秒重放)以及长任务卡住后的更长窗口重投
24
+ 把同一条消息跑两遍 AI,并在进程重启后仍生效。失败与 abort 会 release 以便
25
+ 重试。进行中的重放会立刻释放 admission 车道,在车道外观察持有者,仅在
26
+ release 时重新入队,避免挡住后续不同消息。认领成功后的每一步都在 claim
27
+ 生命周期内。Fallback 优先用 item `msg_id` 摘要,绝不只按发送者建键。重复
28
+ 投递日志只记录非敏感的 identity 种类。该窗口是**重放去重 / 墓碑窗口**,不
29
+ 会吞掉用户故意再发且带有新 `message_id` 的消息。存在传输层 id 时
30
+ `MessageSid` 使用同一稳定键。移植自
31
+ [Tencent/openclaw-weixin#240](https://github.com/Tencent/openclaw-weixin/pull/240);
32
+ 跟踪
33
+ [NewFuture/openclaw-weixin#36](https://github.com/NewFuture/openclaw-weixin/issues/36)。
34
+
9
35
  ## [3.0.1] - 2026-08-02
10
36
 
11
37
  ### 变更
package/CHANGELOG_EN.md CHANGED
@@ -6,6 +6,36 @@ This project follows the [Keep a Changelog](https://keepachangelog.com/) format.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.0.2] - 2026-08-05
10
+
11
+ ### Changed
12
+
13
+ - **Per-agent inbound media isolation:** images, videos, files, and voice messages
14
+ are now stored under `weixin/<agentId>/inbound` for the routed agent, preventing
15
+ mixed media and cross-agent access in multi-agent deployments. Unresolved
16
+ routes continue to use the legacy-compatible `inbound` path.
17
+
18
+ ### Fixed
19
+
20
+ - **Inbound getUpdates duplicate delivery:** ordinary and approval admission
21
+ lanes claim a stable dedupe key (`message_id` → `client_id` → `seq` → body
22
+ fingerprint) via OpenClaw `createClaimableDedupe` (account-scoped
23
+ `resolveFilePath` under `openclaw-weixin/replay-dedupe/`, compatible with the
24
+ minimum host `2026.6.1`) before processing, then commit a 24h tombstone so
25
+ at-least-once iLink long-poll replays (~1s) and longer redeliveries after
26
+ stuck long turns do not run the AI pipeline twice — including across process
27
+ restart. Failures and abort release the claim for retry. In-flight replays
28
+ release the admission lane immediately, observe the owner out of band, and
29
+ re-enqueue only if the owner releases — so a distinct follow-up message is
30
+ not blocked. Claim ownership wraps every step after admission. Fallback keys
31
+ prefer item `msg_id` digests and never key by sender alone. Duplicate logs
32
+ record only a non-sensitive identity kind. The window is a **replay-dedupe /
33
+ tombstone window**, not a content dedupe that swallows intentional re-sends
34
+ with a new `message_id`. Stable `MessageSid` uses the same key when transport
35
+ ids are present. Port of
36
+ [Tencent/openclaw-weixin#240](https://github.com/Tencent/openclaw-weixin/pull/240);
37
+ tracks [NewFuture/openclaw-weixin#36](https://github.com/NewFuture/openclaw-weixin/issues/36).
38
+
9
39
  ## [3.0.1] - 2026-08-02
10
40
 
11
41
  ### Changed
package/NOTICE CHANGED
@@ -9,3 +9,7 @@ Copyright (C) 2026 Tencent. All rights reserved.
9
9
  openclaw-weixin is licensed under the MIT.
10
10
 
11
11
  Modifications Copyright (C) 2026 Contributors to NewFuture/openclaw-weixin.
12
+
13
+ The OpenClaw lobster artwork in docs/site/logo.svg is adapted from
14
+ openclaw/openclaw ui/public/favicon.svg.
15
+ Copyright (C) 2026 OpenClaw Foundation. Licensed under the MIT License.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # openclaw-weixin
2
2
 
3
- [English](./README_EN.md)
3
+ [English](./README_EN.md) · [文档站点](https://openclaw-weixin.newfuture.cc/)
4
4
 
5
5
  这是 [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin)
6
6
  的社区维护发行版,用于连接 OpenClaw 与微信,并提供更好的使用体验。
@@ -94,3 +94,5 @@ openclaw config set session.dmScope per-account-channel-peer
94
94
  - [详细指南](docs/guide.zh_CN.md):安装行为、BotAgent、卸载和故障排查
95
95
  - [后端 API 协议](docs/backend-api.zh_CN.md)
96
96
  - [架构说明](docs/architecture.md)
97
+ - [文档站点](https://openclaw-weixin.newfuture.cc/):多语言在线文档,同时提供
98
+ Markdown 原文与 [llms.txt](https://openclaw-weixin.newfuture.cc/llms.txt) 索引
package/README_EN.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # openclaw-weixin
2
2
 
3
- [简体中文](./README.md)
3
+ [简体中文](./README.md) · [Documentation site](https://openclaw-weixin.newfuture.cc/en/)
4
4
 
5
5
  Community-maintained distribution of
6
6
  [Tencent/openclaw-weixin](https://github.com/Tencent/openclaw-weixin) that
@@ -101,3 +101,6 @@ openclaw config set session.dmScope per-account-channel-peer
101
101
  troubleshooting
102
102
  - [Backend API protocol](docs/backend-api.md)
103
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
@@ -10,6 +10,7 @@ const WEIXIN_MEDIA_MAX_BYTES = 100 * 1024 * 1024;
10
10
  */
11
11
  export async function downloadMediaFromItem(item, deps) {
12
12
  const { cdnBaseUrl, saveMedia, errLog, label } = deps;
13
+ const subdir = deps.subdir ?? "inbound";
13
14
  const result = {};
14
15
  if (item.type === MessageItemType.IMAGE) {
15
16
  const img = item.image_item;
@@ -21,7 +22,7 @@ export async function downloadMediaFromItem(item, deps) {
21
22
  const buf = aesKeyBase64
22
23
  ? await downloadAndDecryptBuffer(img.media.encrypt_query_param ?? "", aesKeyBase64, cdnBaseUrl, `${label} image`, img.media.full_url)
23
24
  : await downloadPlainCdnBuffer(img.media.encrypt_query_param ?? "", cdnBaseUrl, `${label} image-plain`, img.media.full_url);
24
- const saved = await saveMedia(buf, undefined, "inbound", WEIXIN_MEDIA_MAX_BYTES);
25
+ const saved = await saveMedia(buf, undefined, subdir, WEIXIN_MEDIA_MAX_BYTES);
25
26
  result.decryptedPicPath = saved.path;
26
27
  logger.debug(`${label} image saved: ${saved.path}`);
27
28
  }
@@ -39,13 +40,13 @@ export async function downloadMediaFromItem(item, deps) {
39
40
  logger.debug(`${label} voice: decrypted ${silkBuf.length} bytes, attempting silk transcode`);
40
41
  const wavBuf = await silkToWav(silkBuf);
41
42
  if (wavBuf) {
42
- const saved = await saveMedia(wavBuf, "audio/wav", "inbound", WEIXIN_MEDIA_MAX_BYTES);
43
+ const saved = await saveMedia(wavBuf, "audio/wav", subdir, WEIXIN_MEDIA_MAX_BYTES);
43
44
  result.decryptedVoicePath = saved.path;
44
45
  result.voiceMediaType = "audio/wav";
45
46
  logger.debug(`${label} voice: saved WAV to ${saved.path}`);
46
47
  }
47
48
  else {
48
- const saved = await saveMedia(silkBuf, "audio/silk", "inbound", WEIXIN_MEDIA_MAX_BYTES);
49
+ const saved = await saveMedia(silkBuf, "audio/silk", subdir, WEIXIN_MEDIA_MAX_BYTES);
49
50
  result.decryptedVoicePath = saved.path;
50
51
  result.voiceMediaType = "audio/silk";
51
52
  logger.debug(`${label} voice: silk transcode unavailable, saved raw SILK to ${saved.path}`);
@@ -63,7 +64,7 @@ export async function downloadMediaFromItem(item, deps) {
63
64
  try {
64
65
  const buf = await downloadAndDecryptBuffer(fileItem.media.encrypt_query_param ?? "", fileItem.media.aes_key, cdnBaseUrl, `${label} file`, fileItem.media.full_url);
65
66
  const mime = getMimeFromFilename(fileItem.file_name ?? "file.bin");
66
- const saved = await saveMedia(buf, mime, "inbound", WEIXIN_MEDIA_MAX_BYTES, fileItem.file_name ?? undefined);
67
+ const saved = await saveMedia(buf, mime, subdir, WEIXIN_MEDIA_MAX_BYTES, fileItem.file_name ?? undefined);
67
68
  result.decryptedFilePath = saved.path;
68
69
  result.fileMediaType = mime;
69
70
  logger.debug(`${label} file: saved to ${saved.path} mime=${mime}`);
@@ -79,7 +80,7 @@ export async function downloadMediaFromItem(item, deps) {
79
80
  return result;
80
81
  try {
81
82
  const buf = await downloadAndDecryptBuffer(videoItem.media.encrypt_query_param ?? "", videoItem.media.aes_key, cdnBaseUrl, `${label} video`, videoItem.media.full_url);
82
- const saved = await saveMedia(buf, "video/mp4", "inbound", WEIXIN_MEDIA_MAX_BYTES);
83
+ const saved = await saveMedia(buf, "video/mp4", subdir, WEIXIN_MEDIA_MAX_BYTES);
83
84
  result.decryptedVideoPath = saved.path;
84
85
  logger.debug(`${label} video: saved to ${saved.path}`);
85
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"media-download.js","sourceRoot":"","sources":["../../../src/media/media-download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-download.js","sourceRoot":"","sources":["../../../src/media/media-download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import { createHash } from "node:crypto";
2
+ import path from "node:path";
3
+ import { createClaimableDedupe } from "openclaw/plugin-sdk/persistent-dedupe";
4
+ import { MessageItemType } from "../api/types.js";
5
+ import { resolveStateDir } from "../storage/state-dir.js";
6
+ import { logger } from "../util/logger.js";
7
+ /**
8
+ * Replay-dedupe tombstone TTL for getUpdates at-least-once delivery.
9
+ * Covers ~1s iLink replays and longer redeliveries (e.g. 30–50 min after a
10
+ * stuck long turn). Not a content-dedupe window: a new user send with a new
11
+ * `message_id` is always claimed.
12
+ *
13
+ * Uses OpenClaw `createClaimableDedupe` with the resolveFilePath shape that
14
+ * works on the minimum host (2026.6.1 JSON files) and newer hosts (path used
15
+ * as a stable SQLite namespace). Account isolation is via claim `namespace`
16
+ * (= accountId) and per-account files under
17
+ * `$OPENCLAW_STATE_DIR/openclaw-weixin/replay-dedupe/`.
18
+ */
19
+ export const WEIXIN_INBOUND_DEDUPE_TTL_MS = 24 * 60 * 60 * 1000;
20
+ const WEIXIN_INBOUND_DEDUPE_MEMORY_MAX = 20_000;
21
+ const WEIXIN_INBOUND_DEDUPE_FILE_MAX = 20_000;
22
+ function sanitizeSegment(value) {
23
+ const trimmed = value.trim();
24
+ if (!trimmed)
25
+ return "global";
26
+ return trimmed.replace(/[^a-zA-Z0-9_-]/g, "_");
27
+ }
28
+ function resolveReplayDedupeFilePath(namespace) {
29
+ return path.join(resolveStateDir(), "openclaw-weixin", "replay-dedupe", `${sanitizeSegment(namespace)}.json`);
30
+ }
31
+ function onReplayDedupeDiskError(error) {
32
+ logger.warn(`[weixin] inbound replay-dedupe disk error: ${error instanceof Error ? error.message : String(error)}`);
33
+ }
34
+ function createWeixinInboundDedupe(options) {
35
+ const base = {
36
+ ttlMs: WEIXIN_INBOUND_DEDUPE_TTL_MS,
37
+ memoryMaxSize: WEIXIN_INBOUND_DEDUPE_MEMORY_MAX,
38
+ };
39
+ if (options?.persistent === false) {
40
+ return createClaimableDedupe(base);
41
+ }
42
+ return createClaimableDedupe({
43
+ ...base,
44
+ fileMaxEntries: WEIXIN_INBOUND_DEDUPE_FILE_MAX,
45
+ resolveFilePath: resolveReplayDedupeFilePath,
46
+ onDiskError: onReplayDedupeDiskError,
47
+ });
48
+ }
49
+ let inboundDedupe = createWeixinInboundDedupe();
50
+ function extractTextForFallback(itemList) {
51
+ if (!itemList?.length)
52
+ return "";
53
+ for (const item of itemList) {
54
+ if (!item)
55
+ continue;
56
+ if (item.type === MessageItemType.TEXT && item.text_item?.text != null) {
57
+ return String(item.text_item.text);
58
+ }
59
+ if (item.type === MessageItemType.VOICE && item.voice_item?.text) {
60
+ return String(item.voice_item.text);
61
+ }
62
+ }
63
+ return "";
64
+ }
65
+ /** Canonical sorted item msg_id list for collision-safe media identity. */
66
+ export function collectWeixinItemMsgIds(itemList) {
67
+ if (!itemList?.length)
68
+ return [];
69
+ const ids = [];
70
+ for (const item of itemList) {
71
+ const id = item?.msg_id?.trim();
72
+ if (id)
73
+ ids.push(id);
74
+ }
75
+ return ids.sort();
76
+ }
77
+ /**
78
+ * Stable inbound identity for dedupe + MessageSid.
79
+ * Prefer transport ids from iLink; then item msg_id digests; then text body.
80
+ * Returns null when no message-specific identity exists (never key by sender alone).
81
+ */
82
+ export function buildWeixinInboundDedupeKey(accountId, msg) {
83
+ const from = msg.from_user_id ?? "";
84
+ if (!accountId)
85
+ return null;
86
+ if (msg.message_id != null && Number.isFinite(msg.message_id)) {
87
+ return `weixin:v1:${accountId}:${from}:mid:${msg.message_id}`;
88
+ }
89
+ if (msg.client_id) {
90
+ return `weixin:v1:${accountId}:${from}:cid:${msg.client_id}`;
91
+ }
92
+ if (msg.seq != null && Number.isFinite(msg.seq)) {
93
+ return `weixin:v1:${accountId}:${from}:seq:${msg.seq}`;
94
+ }
95
+ const itemIds = collectWeixinItemMsgIds(msg.item_list);
96
+ if (itemIds.length > 0) {
97
+ const digest = createHash("sha256").update(itemIds.join("\0")).digest("hex").slice(0, 16);
98
+ return `weixin:v1:${accountId}:${from}:items:${digest}`;
99
+ }
100
+ const body = extractTextForFallback(msg.item_list);
101
+ if (!body) {
102
+ // Empty-body media without transport/item ids must not share a sender-only key.
103
+ return null;
104
+ }
105
+ const t = msg.create_time_ms ?? 0;
106
+ const digest = createHash("sha256").update(body).update("\0").update(String(t)).digest("hex").slice(0, 16);
107
+ return `weixin:v1:${accountId}:${from}:body:${digest}`;
108
+ }
109
+ /** Non-sensitive identity kind for logs (no account / user / client ids). */
110
+ export function describeWeixinInboundDedupeIdentity(key) {
111
+ if (key.includes(":mid:"))
112
+ return "mid";
113
+ if (key.includes(":cid:"))
114
+ return "cid";
115
+ if (key.includes(":seq:"))
116
+ return "seq";
117
+ if (key.includes(":items:"))
118
+ return "items";
119
+ if (key.includes(":body:"))
120
+ return "body";
121
+ return "unknown";
122
+ }
123
+ /**
124
+ * Non-blocking claim attempt for admission lanes.
125
+ * Callers must not await `inflight.pending` while holding a lane slot.
126
+ */
127
+ export async function tryClaimWeixinInboundMessage(key, options) {
128
+ const result = await inboundDedupe.claim(key, {
129
+ namespace: options?.namespace,
130
+ now: options?.now,
131
+ });
132
+ if (result.kind === "claimed")
133
+ return { kind: "claimed" };
134
+ if (result.kind === "duplicate")
135
+ return { kind: "duplicate" };
136
+ return { kind: "inflight", pending: result.pending };
137
+ }
138
+ /** Observe an in-flight owner without holding an admission lane. */
139
+ export async function waitForInflightWeixinInboundOwner(pending) {
140
+ try {
141
+ await pending;
142
+ return "duplicate";
143
+ }
144
+ catch {
145
+ return "released";
146
+ }
147
+ }
148
+ /** Persist the claim after successful handling (survives restart for TTL). */
149
+ export async function commitWeixinInboundMessage(key, options) {
150
+ await inboundDedupe.commit(key, {
151
+ namespace: options?.namespace,
152
+ now: options?.now,
153
+ });
154
+ }
155
+ /** Release a held claim so a later delivery can retry after a thrown failure. */
156
+ export function releaseWeixinInboundMessage(key, options) {
157
+ inboundDedupe.release(key, {
158
+ namespace: options?.namespace,
159
+ error: options?.error,
160
+ });
161
+ }
162
+ /** Test helper — switch to memory-only guard and clear. */
163
+ export function resetWeixinInboundDedupeForTests(options) {
164
+ inboundDedupe.clearMemory();
165
+ inboundDedupe = createWeixinInboundDedupe({
166
+ persistent: options?.persistent ?? false,
167
+ });
168
+ }
169
+ export function logWeixinInboundDuplicate(params) {
170
+ const identity = describeWeixinInboundDedupeIdentity(params.key);
171
+ logger.info(`[weixin] dropping duplicate inbound message identity=${identity} hasMsgId=${params.messageId != null} hasSeq=${params.seq != null}`);
172
+ }
173
+ //# sourceMappingURL=inbound-dedupe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound-dedupe.js","sourceRoot":"","sources":["../../../src/messaging/inbound-dedupe.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { MessageItemType } from "../api/types.js";
4
4
  import { resolveStateDir } from "../storage/state-dir.js";
5
5
  import { logger } from "../util/logger.js";
6
6
  import { generateId } from "../util/random.js";
7
+ import { buildWeixinInboundDedupeKey } from "./inbound-dedupe.js";
7
8
  // ---------------------------------------------------------------------------
8
9
  // Context token store (in-process cache + disk persistence)
9
10
  // ---------------------------------------------------------------------------
@@ -163,6 +164,7 @@ function bodyFromItemList(itemList) {
163
164
  */
164
165
  export function weixinMessageToMsgContext(msg, accountId, opts) {
165
166
  const from_user_id = msg.from_user_id ?? "";
167
+ const stableSid = buildWeixinInboundDedupeKey(accountId, msg);
166
168
  const ctx = {
167
169
  Body: bodyFromItemList(msg.item_list),
168
170
  From: from_user_id,
@@ -170,7 +172,7 @@ export function weixinMessageToMsgContext(msg, accountId, opts) {
170
172
  AccountId: accountId,
171
173
  OriginatingChannel: "openclaw-weixin",
172
174
  OriginatingTo: from_user_id,
173
- MessageSid: generateMessageSid(),
175
+ MessageSid: stableSid ?? generateMessageSid(),
174
176
  SenderId: from_user_id,
175
177
  Timestamp: msg.create_time_ms,
176
178
  Provider: "openclaw-weixin",
@@ -1 +1 @@
1
- {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../../src/messaging/inbound.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../../src/messaging/inbound.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import path from "node:path";
3
3
  import { createTypingCallbacks } from "openclaw/plugin-sdk/channel-runtime";
4
4
  import { resolveDirectDmAuthorizationOutcome, resolveSenderCommandAuthorizationWithRuntime, } from "openclaw/plugin-sdk/command-auth";
5
5
  import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/infra-runtime";
6
+ import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
6
7
  import { sendTyping } from "../api/api.js";
7
8
  import { MessageItemType, TypingStatus } from "../api/types.js";
8
9
  import { loadWeixinAccount } from "../auth/accounts.js";
@@ -34,7 +35,12 @@ function extractTextBody(itemList) {
34
35
  return "";
35
36
  }
36
37
  /**
37
- * Process a single inbound message: route → download media → dispatch reply.
38
+ * Process a single inbound message: resolve route → download media → authorize → dispatch reply.
39
+ * Route is resolved first so the agentId can isolate media under
40
+ * `weixin/<agentId>/inbound` in the framework media store, preventing one agent
41
+ * from observing another agent's inbound files. Authorization still gates
42
+ * dispatch — `route` is reused for session/ctx bookkeeping but is not consulted
43
+ * for accept/reject decisions.
38
44
  * Extracted from the monitor loop to keep monitoring and message handling separate.
39
45
  */
40
46
  export async function processOneMessage(full, deps) {
@@ -67,6 +73,37 @@ export async function processOneMessage(full, deps) {
67
73
  const itemTypes = full.item_list?.map((i) => i.type).join(",") ?? "none";
68
74
  debugTrace.push("── 收消息 ──", `│ seq=${full.seq ?? "?"} msgId=${full.message_id ?? "?"} from=${full.from_user_id ?? "?"}`, `│ body="${textBody.slice(0, 40)}${textBody.length > 40 ? "…" : ""}" (len=${textBody.length}) itemTypes=[${itemTypes}]`, `│ sessionId=${full.session_id ?? "?"} contextToken=${full.context_token ? "present" : "none"}`);
69
75
  }
76
+ // Resolve the agent route early so downloadMedia can place the file under a
77
+ // per-agent subdirectory in the framework media store. Authorization still
78
+ // gates dispatch below; the early route resolution only drives storage scoping.
79
+ const senderId = full.from_user_id ?? "";
80
+ const route = deps.channelRuntime.routing.resolveAgentRoute({
81
+ cfg: deps.config,
82
+ channel: "openclaw-weixin",
83
+ accountId: deps.accountId,
84
+ peer: { kind: "direct", id: senderId },
85
+ });
86
+ logger.debug(`resolveAgentRoute: agentId=${route.agentId ?? "(none)"} sessionKey=${route.sessionKey ?? "(none)"} mainSessionKey=${route.mainSessionKey ?? "(none)"}`);
87
+ if (!route.agentId) {
88
+ logger.error(`resolveAgentRoute: no agentId resolved for peer=${senderId} accountId=${deps.accountId} — message will not be dispatched`);
89
+ }
90
+ // Sanitize the agentId into a portable, filesystem-safe path component before
91
+ // embedding it under the media store. OpenClaw's media store rejects path
92
+ // traversal, absolute paths, empty segments, and null bytes (per the
93
+ // saveMediaBuffer contract). We deliberately use `normalizeAgentId` (from
94
+ // `openclaw/plugin-sdk/routing`) rather than `normalizeAccountId`: the latter
95
+ // is intended for account keys and collapses JS-reserved names like
96
+ // `constructor` / `prototype` / `__proto__` to `default`, which would
97
+ // collide distinct agents into the same directory and defeat this isolation.
98
+ // `normalizeAgentId` only collapses unsafe characters and keeps reserved
99
+ // names literal; it falls back to `main` for empty input, but we already
100
+ // gate that case above and emit the legacy `inbound` subdir instead.
101
+ const sanitizedAgentId = route.agentId ? normalizeAgentId(route.agentId) : "";
102
+ const mediaSubdir = sanitizedAgentId ? `weixin/${sanitizedAgentId}/inbound` : "inbound";
103
+ logger.debug(`mediaSubdir: subdir=${mediaSubdir} (agentId=${route.agentId ?? "(none)"})`);
104
+ if (debug) {
105
+ debugTrace.push("── 路由 ──", `│ route: agent=${route.agentId ?? "none"} session=${route.sessionKey ?? "none"}`);
106
+ }
70
107
  const mediaOpts = {};
71
108
  // Find the first downloadable media item (priority: IMAGE > VIDEO > FILE > VOICE).
72
109
  // When none found in the main item_list, fall back to media referenced via a quoted message.
@@ -88,6 +125,7 @@ export async function processOneMessage(full, deps) {
88
125
  const downloaded = await downloadMediaFromItem(mediaItem, {
89
126
  cdnBaseUrl: deps.cdnBaseUrl,
90
127
  saveMedia: deps.channelRuntime.media.saveMediaBuffer,
128
+ subdir: mediaSubdir,
91
129
  log: deps.log,
92
130
  errLog: deps.errLog,
93
131
  label,
@@ -102,7 +140,6 @@ export async function processOneMessage(full, deps) {
102
140
  // --- Framework command authorization ---
103
141
  const rawBody = textBody.trim() || (ctx.Body?.trim() ?? "");
104
142
  ctx.CommandBody = rawBody;
105
- const senderId = full.from_user_id ?? "";
106
143
  const { senderAllowedForCommands, commandAuthorized } = await resolveSenderCommandAuthorizationWithRuntime({
107
144
  cfg: deps.config,
108
145
  rawBody,
@@ -134,22 +171,12 @@ export async function processOneMessage(full, deps) {
134
171
  ctx.CommandAuthorized = commandAuthorized;
135
172
  logger.debug(`authorization: senderId=${senderId} commandAuthorized=${String(commandAuthorized)} senderAllowed=${String(senderAllowedForCommands)}`);
136
173
  if (debug) {
137
- debugTrace.push("── 鉴权 & 路由 ──", `│ auth: cmdAuthorized=${String(commandAuthorized)} senderAllowed=${String(senderAllowedForCommands)}`);
138
- }
139
- const route = deps.channelRuntime.routing.resolveAgentRoute({
140
- cfg: deps.config,
141
- channel: "openclaw-weixin",
142
- accountId: deps.accountId,
143
- peer: { kind: "direct", id: ctx.To },
144
- });
145
- logger.debug(`resolveAgentRoute: agentId=${route.agentId ?? "(none)"} sessionKey=${route.sessionKey ?? "(none)"} mainSessionKey=${route.mainSessionKey ?? "(none)"}`);
146
- if (!route.agentId) {
147
- logger.error(`resolveAgentRoute: no agentId resolved for peer=${ctx.To} accountId=${deps.accountId} — message will not be dispatched`);
148
- }
149
- if (debug) {
150
- debugTrace.push(`│ route: agent=${route.agentId ?? "none"} session=${route.sessionKey ?? "none"}`);
174
+ debugTrace.push("── 鉴权 ──", `│ auth: cmdAuthorized=${String(commandAuthorized)} senderAllowed=${String(senderAllowedForCommands)}`);
151
175
  debugTs.preDispatch = Date.now();
152
176
  }
177
+ // Note: `route` was resolved earlier so downloadMedia could pick the
178
+ // per-agent subdirectory. Session/storePath/dispatch below reuse the same
179
+ // resolved object; no second routing call is needed.
153
180
  // Propagate the resolved session key into ctx so dispatchReplyFromConfig uses
154
181
  // the correct session (matching the dmScope from config) instead of falling back
155
182
  // to agent:main:main.
@@ -1 +1 @@
1
- {"version":3,"file":"process-message.js","sourceRoot":"","sources":["../../../src/messaging/process-message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-message.js","sourceRoot":"","sources":["../../../src/messaging/process-message.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { WeixinConfigManager } from "../api/config-cache.js";
3
3
  import { getRemainingPauseMs, pauseSession, STALE_TOKEN_ERRCODE } from "../api/session-guard.js";
4
4
  import { MessageItemType } from "../api/types.js";
5
5
  import { setContextToken } from "../messaging/inbound.js";
6
+ import { buildWeixinInboundDedupeKey, commitWeixinInboundMessage, logWeixinInboundDuplicate, releaseWeixinInboundMessage, tryClaimWeixinInboundMessage, waitForInflightWeixinInboundOwner, } from "../messaging/inbound-dedupe.js";
6
7
  import { processOneMessage } from "../messaging/process-message.js";
7
8
  import { getSyncBufFilePath, loadGetUpdatesBuf, saveGetUpdatesBuf } from "../storage/sync-buf.js";
8
9
  import { logger } from "../util/logger.js";
@@ -41,34 +42,82 @@ export async function monitorWeixinProvider(opts) {
41
42
  aLog.info(`No previous get_updates_buf found, starting fresh`);
42
43
  }
43
44
  const configManager = new WeixinConfigManager({ baseUrl, token }, log);
44
- const processInboundMessage = async (full, onReplyAdmitted) => {
45
- if (abortSignal?.aborted)
46
- return;
47
- aLog.info(`inbound message: from=${full.from_user_id} types=${full.item_list?.map((i) => i.type).join(",") ?? "none"}`);
48
- const now = Date.now();
49
- setStatus?.({ accountId, lastEventAt: now, lastInboundAt: now });
50
- // allowFrom filtering is delegated to processOneMessage via the framework
51
- // authorization pipeline (resolveSenderCommandAuthorizationWithRuntime).
52
- const fromUserId = full.from_user_id ?? "";
53
- const cachedConfig = await configManager.getForUser(fromUserId, full.context_token);
54
- if (abortSignal?.aborted)
55
- return;
56
- await processOneMessage(full, {
57
- accountId,
58
- config,
59
- channelRuntime,
60
- baseUrl,
61
- cdnBaseUrl,
62
- token,
63
- typingTicket: cachedConfig.typingTicket,
64
- log: opts.runtime?.log ?? (() => { }),
65
- errLog,
66
- onReplyAdmitted,
67
- });
45
+ /**
46
+ * Process one inbound delivery that already owns `dedupeKey` (or has none).
47
+ * Every step after admission is inside the claim guard so exceptions release.
48
+ */
49
+ const processInboundMessage = async (full, onReplyAdmitted, dedupeKey) => {
50
+ let committed = false;
51
+ try {
52
+ if (abortSignal?.aborted) {
53
+ throw new Error("aborted");
54
+ }
55
+ const itemTypes = full.item_list
56
+ ?.map((item) => item?.type)
57
+ .filter((type) => type !== undefined)
58
+ .join(",") ?? "none";
59
+ aLog.info(`inbound message: from=${full.from_user_id} types=${itemTypes}`);
60
+ const now = Date.now();
61
+ setStatus?.({ accountId, lastEventAt: now, lastInboundAt: now });
62
+ // allowFrom filtering is delegated to processOneMessage via the framework
63
+ // authorization pipeline (resolveSenderCommandAuthorizationWithRuntime).
64
+ const fromUserId = full.from_user_id ?? "";
65
+ const cachedConfig = await configManager.getForUser(fromUserId, full.context_token);
66
+ if (abortSignal?.aborted) {
67
+ throw new Error("aborted");
68
+ }
69
+ await processOneMessage(full, {
70
+ accountId,
71
+ config,
72
+ channelRuntime,
73
+ baseUrl,
74
+ cdnBaseUrl,
75
+ token,
76
+ typingTicket: cachedConfig.typingTicket,
77
+ log: opts.runtime?.log ?? (() => { }),
78
+ errLog,
79
+ onReplyAdmitted,
80
+ });
81
+ if (dedupeKey) {
82
+ await commitWeixinInboundMessage(dedupeKey, { namespace: accountId });
83
+ committed = true;
84
+ }
85
+ }
86
+ catch (error) {
87
+ if (dedupeKey && !committed) {
88
+ releaseWeixinInboundMessage(dedupeKey, { namespace: accountId, error });
89
+ }
90
+ if (abortSignal?.aborted) {
91
+ return;
92
+ }
93
+ throw error;
94
+ }
68
95
  };
69
96
  // Serialize preprocessing until core accepts the turn; approvals use an independent lane.
97
+ // Claim attempts are non-blocking for inflight: release the lane immediately and observe
98
+ // pending out of band, re-enqueueing only if the owner releases without commit.
70
99
  let ordinaryLane = Promise.resolve();
71
100
  let approvalLane = Promise.resolve();
101
+ const observeInflightReplay = (full, dedupeKey, pending) => {
102
+ void (async () => {
103
+ const outcome = await waitForInflightWeixinInboundOwner(pending);
104
+ if (outcome === "duplicate") {
105
+ logWeixinInboundDuplicate({
106
+ key: dedupeKey,
107
+ messageId: full.message_id,
108
+ seq: full.seq,
109
+ });
110
+ return;
111
+ }
112
+ if (abortSignal?.aborted)
113
+ return;
114
+ // Owner released — re-enter admission so the message is not lost.
115
+ scheduleInboundMessage(full);
116
+ })().catch((err) => {
117
+ errLog(`weixin inbound inflight observe failed: ${String(err)}`);
118
+ aLog.error(`Inbound inflight observe failed: ${String(err)}, stack=${err.stack ?? "none"}`);
119
+ });
120
+ };
72
121
  const scheduleInboundMessage = (full) => {
73
122
  const isApproval = isPluginApprovalMessage(full);
74
123
  const previous = isApproval ? approvalLane : ordinaryLane;
@@ -80,7 +129,26 @@ export async function monitorWeixinProvider(opts) {
80
129
  released = true;
81
130
  releaseLane();
82
131
  };
83
- void processInboundMessage(full, releaseOnce)
132
+ void (async () => {
133
+ const dedupeKey = buildWeixinInboundDedupeKey(accountId, full);
134
+ if (dedupeKey) {
135
+ const attempt = await tryClaimWeixinInboundMessage(dedupeKey, { namespace: accountId });
136
+ if (attempt.kind === "duplicate") {
137
+ logWeixinInboundDuplicate({
138
+ key: dedupeKey,
139
+ messageId: full.message_id,
140
+ seq: full.seq,
141
+ });
142
+ return;
143
+ }
144
+ if (attempt.kind === "inflight") {
145
+ // Do not hold this lane while waiting on the owner.
146
+ observeInflightReplay(full, dedupeKey, attempt.pending);
147
+ return;
148
+ }
149
+ }
150
+ await processInboundMessage(full, releaseOnce, dedupeKey);
151
+ })()
84
152
  .catch((err) => {
85
153
  errLog(`weixin inbound message failed: ${String(err)}`);
86
154
  aLog.error(`Inbound message failed: ${String(err)}, stack=${err.stack ?? "none"}`);
@@ -175,7 +243,7 @@ export async function monitorWeixinProvider(opts) {
175
243
  aLog.info(`Monitor ended`);
176
244
  }
177
245
  function isPluginApprovalMessage(message) {
178
- const text = message.item_list?.find((item) => item.type === MessageItemType.TEXT)?.text_item?.text;
246
+ const text = message.item_list?.find((item) => item?.type === MessageItemType.TEXT)?.text_item?.text;
179
247
  return PLUGIN_APPROVAL_RE.test(String(text ?? "").trim());
180
248
  }
181
249
  function sleep(ms, signal) {
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../src/monitor/monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../src/monitor/monitor.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,7 @@ override applies.
103
103
  | `openclaw-weixin/accounts/<accountId>.json` | Token, backend URL, save time, and linked user ID |
104
104
  | `openclaw-weixin/accounts/<accountId>.sync.json` | `getUpdates` cursor |
105
105
  | `openclaw-weixin/accounts/<accountId>.context-tokens.json` | Recipient context tokens for that account |
106
+ | `openclaw-weixin/replay-dedupe/<accountId>.json` | Inbound getUpdates replay tombstones (24h; newer hosts may map the path to SQLite) |
106
107
  | `credentials/openclaw-weixin-<accountId>-allowFrom.json` | Framework pairing allow-list |
107
108
  | `openclaw.json` | Channel configuration and account overrides |
108
109
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "openclaw-weixin",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "channels": ["openclaw-weixin"],
5
5
  "channelConfigs": {
6
6
  "openclaw-weixin": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-weixin",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Community-maintained OpenClaw WeChat channel plugin",
5
5
  "license": "MIT",
6
6
  "author": "Tencent",
@@ -49,7 +49,7 @@
49
49
  "check:versions": "node scripts/check-versions.mjs",
50
50
  "check:static": "npm run check:versions && npm run check:style && npm run typecheck && npm run typecheck:tests",
51
51
  "check:fast": "npm run check:static && npm run test:unit",
52
- "audit:deps": "npm audit --audit-level=moderate",
52
+ "audit:deps": "npm audit --omit=dev --omit=peer --audit-level=moderate",
53
53
  "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
54
54
  "build": "npm run clean && tsc",
55
55
  "check": "npm run check:static && npm run test:coverage && npm run build",
@@ -67,8 +67,8 @@
67
67
  "openclaw": ">=2026.6.1"
68
68
  },
69
69
  "devDependencies": {
70
- "@biomejs/biome": "2.5.4",
71
- "@types/node": "^22.20.1",
70
+ "@biomejs/biome": "2.5.6",
71
+ "@types/node": "^26.1.2",
72
72
  "@vitest/coverage-v8": "^4.1.10",
73
73
  "openclaw": "2026.7.1",
74
74
  "silk-wasm": "^3.7.1",
@@ -76,12 +76,12 @@
76
76
  "vitest": "^4.1.10"
77
77
  },
78
78
  "overrides": {
79
- "@hono/node-server": "2.0.10",
80
- "brace-expansion": "5.0.8",
81
- "fast-uri": "3.1.4",
82
- "hono": "4.12.27",
79
+ "@hono/node-server": "2.1.0",
80
+ "brace-expansion": "5.0.9",
81
+ "fast-uri": "3.1.5",
82
+ "hono": "4.13.0",
83
83
  "protobufjs": "7.6.5",
84
- "tar": "7.5.21"
84
+ "tar": "7.5.22"
85
85
  },
86
86
  "openclaw": {
87
87
  "extensions": [