@jeik/dingtalk-connector 0.8.28 → 0.8.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +40 -30
  2. package/README.en.md +114 -130
  3. package/README.md +112 -131
  4. package/dist/{background-work-Cxb4b-91.mjs → background-work-DkaSDqWk.mjs} +12 -1
  5. package/dist/card-content-cache-C7-XHhHw.mjs +2 -0
  6. package/dist/{card-content-cache-bDQFz2u8.mjs → card-content-cache-DT_OYThh.mjs} +15 -1
  7. package/dist/chunk-upload-BKM1y4Ba.mjs +2 -0
  8. package/dist/{chunk-upload-BE71drPg.mjs → chunk-upload-CIU5G_ay.mjs} +1 -1
  9. package/dist/{common-BZiVgd3A.mjs → common-BfIYs1yC.mjs} +3 -3
  10. package/dist/{common-DgL28gCZ.mjs → common-C0Oaf0z-.mjs} +1 -1
  11. package/dist/{connection-CZ7ZoN5_.mjs → connection-obtrPkj4.mjs} +56 -65
  12. package/dist/entry-bundled.mjs +1 -1
  13. package/dist/{gateway-methods-kNX3qvqw.mjs → gateway-methods-BdcpfxEZ.mjs} +1 -1
  14. package/dist/gateway-methods-DQ6TwOAr.mjs +2 -0
  15. package/dist/index.mjs +2 -2
  16. package/dist/{logger-mZ9OSbmD.mjs → logger-CnBTcwyq.mjs} +16 -2
  17. package/dist/logger-D8H2IcYz.mjs +2 -0
  18. package/dist/{media-BqpUGCni.mjs → media-DDtX37T2.mjs} +1 -1
  19. package/dist/{media-DnQB2BrL.mjs → media-g8tJtpfU.mjs} +29 -20
  20. package/dist/{message-handler-B1usz1wb.mjs → message-handler-BeTQQCUe.mjs} +33 -30
  21. package/dist/{messaging-DVS3UKOp.mjs → messaging-CK0Wz3Ze.mjs} +18 -20
  22. package/dist/{runtime-A6G7WAWn.mjs → runtime-CjE4Z9G5.mjs} +6 -5
  23. package/dist/{utils-Bjh4r_qS.mjs → utils-Bwz2Fls_.mjs} +1 -1
  24. package/docs/RELEASE_NOTES_V0.8.28.md +4 -4
  25. package/docs/RELEASE_NOTES_V0.8.29.md +72 -0
  26. package/openclaw.plugin.json +9 -5
  27. package/package.json +1 -1
  28. package/src/config/schema.ts +2 -1
  29. package/src/core/connection.ts +90 -113
  30. package/src/core/message-handler.ts +24 -16
  31. package/src/reply-dispatcher.ts +33 -20
  32. package/src/services/media.ts +60 -27
  33. package/src/services/messaging/card-content-cache.ts +11 -6
  34. package/src/services/messaging.ts +52 -38
  35. package/src/utils/background-work.ts +3 -1
  36. package/src/utils/logger.ts +23 -2
  37. package/dist/card-content-cache-c4Ls96eJ.mjs +0 -2
  38. package/dist/chunk-upload-PwhogwfE.mjs +0 -2
  39. package/dist/gateway-methods-BkI1gKaC.mjs +0 -2
  40. package/dist/logger-BmJkQkm1.mjs +0 -2
package/CHANGELOG.md CHANGED
@@ -5,53 +5,63 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [0.8.28] - 2026-07-25
9
-
10
- ### 主题
8
+ ## [0.8.30] - 2026-07-28
11
9
 
12
- 基于**官方最新 0.8.24** 继续做社区增强:把连接做稳、消息少丢、错误提示更清楚。少折腾、多好用。
10
+ ### Fixes
13
11
 
14
- ### 基于官方 0.8.24 吸收的能力
12
+ - **incomplete_turn 误报不定格错误卡** — 上游 `final + isError` 文案为 `Agent couldn't generate a response`,但卡片已有真实答案(`lastAnswerText`/`accumulatedText` ≥20 字)时,忽略该误报,用已有答案 `closeStreaming`,不再覆盖正文/定格错误(避免网关误报后卡片停止流式)。
15
13
 
16
- - 更稳的长连接思路:连接建立后再挂心跳相关监听,减少「看起来连着、其实收不到消息」的假死重连
17
- - 机器人忙着回上一条时,处理过程中也会保持连接活跃,长回复不容易被中途掐断
18
- - 上游 SDK 刷屏日志过滤,控制台更干净,少误判成故障
19
- - 空回复时的友好提示(尤其是群聊配置不当的情况)
14
+ ## [0.8.29] - 2026-07-25
20
15
 
21
- > 说明:官方给其他插件用的「卡片创建/更新开放接口」本版**未合入**(对话体验不依赖它)。需要时可后续单独加。
16
+ ### 主题
22
17
 
23
- ### 本版重点优化(效果向)
18
+ 正式版加固:默认日志更轻、排障只靠配置 `debug: true`;继承 0.8.28 连接/消息/错误卡能力。
24
19
 
25
- **1. 长连接更稳**
26
- - 只有钉钉确认「这条连接可以收机器人消息」之后,才对外显示已连接
27
- - 连不上会自动多试几轮,而不是假装在线
28
- - 正常使用时尽量不乱拆连接,减少「连发好几条消息完全没反应」
20
+ ### 变更
29
21
 
30
- **2. 消息更少丢、反馈更快**
31
- - 消息进队成功后再向钉钉确认已收到,失败可让平台重发,避免「确认了却其实没处理」
32
- - 同一会话排队处理更可靠:任务进行中再发消息,更容易马上出现「已排队 / 处理中」提示和思考中表情
33
- - 单条任务卡住太久会自动放开队列,避免后面消息永远等不到
22
+ - 🧹 **默认静默诊断刷屏** — 无图文本回复不再输出 LocalImage / MediaIdTrace / CardCache / Quote 成功路径
23
+ - 🔍 **debug 配置统一开关** — 顶层或账号 `"debug": true` 打开连接摘要、图片 mediaId、引用回填、队列计数等详细日志;**不再依赖环境变量**
24
+ - 📚 **文档** — 安装命令精简为三条递进指导;README 中英同步至 0.8.29
34
25
 
35
- **3. 模型出错时体验更好**
36
- - 上游欠费、无可用线路、503 等失败时,群聊/私聊都更容易定格成清晰中文错误卡片
37
- - 减少卡在「正在召唤大模型…」或莫名「思考完成」却看不到原因的情况
38
- - 错误结束后继续发消息,响应能力明显好于旧版
26
+ ### 继承(0.8.28)
39
27
 
40
- **4. 社区原有增强(继续保留)**
41
- - 即时首响卡片、大段答案独立答案卡、图片/本地图修复、中文错误映射、强制群聊正常回复合流等
28
+ - 基于官方 0.8.24 的长连接更稳、消息少丢、模型错误中文定稿、本仓库独有答案卡/图片能力
42
29
 
43
30
  ### 安装
44
31
 
32
+ **npx(一键扫码,按顺序试):**
33
+
45
34
  ```bash
46
- npx -y @jeik/dingtalk-connector@0.8.28 install --force
47
- openclaw gateway restart
35
+ npx @jeik/dingtalk-connector install --force && openclaw gateway restart
36
+ npx @jeik/dingtalk-connector@0.8.29 install --force && openclaw gateway restart
37
+ NPM_CONFIG_REGISTRY=https://registry.npmjs.org npx @jeik/dingtalk-connector@0.8.29 install --force && openclaw gateway restart
48
38
  ```
49
39
 
50
- 或:
40
+ **openclaw plugins install(只装插件,按顺序试):**
51
41
 
52
42
  ```bash
53
- openclaw plugins install @jeik/dingtalk-connector@0.8.28 --force
54
- openclaw gateway restart
43
+ openclaw plugins install @jeik/dingtalk-connector --force && openclaw gateway restart
44
+ openclaw plugins install @jeik/dingtalk-connector@0.8.29 --force && openclaw gateway restart
45
+ NPM_CONFIG_REGISTRY=https://registry.npmjs.org openclaw plugins install @jeik/dingtalk-connector@0.8.29 --force && openclaw gateway restart
46
+ ```
47
+
48
+ ## [0.8.28] - 2026-07-25
49
+
50
+ ### 主题
51
+
52
+ 基于**官方最新 0.8.24**,并保留**本仓库独有**优化:连接更稳、消息少丢、错误提示更清楚。
53
+
54
+ ### 本版重点
55
+
56
+ - 长连接:能收消息才显示已连接;少假死误重连
57
+ - 消息:进队后再 ACK;排队反馈更及时
58
+ - 错误:503 / 欠费 / 无通道等中文定稿,少卡「正在召唤大模型」
59
+ - 本仓库独有:答案卡、图片全路径、首响等
60
+
61
+ ### 安装
62
+
63
+ ```bash
64
+ openclaw plugins install @jeik/dingtalk-connector@0.8.28 --force && openclaw gateway restart
55
65
  ```
56
66
 
57
67
  ## [0.8.26] - 2026-07-25
package/README.en.md CHANGED
@@ -2,9 +2,9 @@
2
2
  <img alt="DingTalk" src="https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-openclaw-connector/main/docs/images/dingtalk.svg" width="72" height="72" />
3
3
  <h1>dingtalk-openclaw-connector(Community Maintained Fork)</h1>
4
4
  <p>Community-enhanced fork based on official <strong>v0.8.24</strong>: adopts official long-connection improvements, plus stronger message delivery, queue feedback, and error-card UX.<br/>
5
- Keeps community extras (images, answer cards, first-response UX) and continues to fix issues not yet covered upstream.</p>
5
+ Keeps <strong>this repo’s unique</strong> extras (images, answer cards, first-response UX) and continues to fix issues not yet covered upstream.</p>
6
6
 
7
- <p><strong>Current release: <a href="https://www.npmjs.com/package/@jeik/dingtalk-connector">@jeik/dingtalk-connector</a> v0.8.28</strong> (recommended for production; install: <code>npx -y @jeik/dingtalk-connector@0.8.28 install --force</code>).</p>
7
+ <p><strong>Current release: <a href="https://www.npmjs.com/package/@jeik/dingtalk-connector">@jeik/dingtalk-connector</a> v0.8.30</strong></p>
8
8
 
9
9
  <p>
10
10
  <a href="https://www.npmjs.com/package/@jeik/dingtalk-connector"><img src="https://img.shields.io/npm/v/@jeik/dingtalk-connector.svg?style=flat&colorA=18181B&colorB=28CF8D" alt="npm version" /></a>
@@ -23,87 +23,89 @@
23
23
 
24
24
  ## 🔧 Recent Updates
25
25
 
26
- ### 🚀 v0.8.28 · 2026-07-25 (current)
26
+ ### 🚀 v0.8.30 · 2026-07-29 (current)
27
27
 
28
- **Theme: based on official 0.8.24 · steadier connection · fewer lost messages · clearer errors**
28
+ **Theme: production hardening · quieter logs · debug config only**
29
29
 
30
- Built on community enhancements, aligned with official **0.8.24** connection work, and focused on real UX: “sent but no reply”, stuck error cards, and missing “queued” feedback.
30
+ Built on **0.8.28** (steadier connection / fewer lost messages / clearer error cards):
31
31
 
32
- #### From official 0.8.24
32
+ | Experience | Effect |
33
+ |------------|--------|
34
+ | 🧹 **Quieter by default** | No LocalImage / MediaIdTrace / CardCache spam on normal text replies |
35
+ | 🔍 **Simple debug** | Set `"debug": true` for connection, image, quote, and queue diagnostics (no env vars) |
36
+ | 🔗 **Connection / queue** | Connected only when messages can be received; better multi-send and post-error recovery |
37
+ | ⚠️ **Model failures** | 503 / billing / no-channel settle to clear Chinese cards instead of spinning forever |
38
+ | 🃏 **This repo’s unique extras** | Answer cards, full image paths, first-response UX remain |
33
39
 
34
- - More reliable long-connection setup and keepalive (fewer “connected but silent” cases)
35
- - Long AI runs less likely to get cut mid-task by connection flapping
36
- - Cleaner console logs for easier ops
40
+ ### 📦 v0.8.28 · 2026-07-25
37
41
 
38
- #### Extra community improvements (what you’ll notice)
42
+ Official 0.8.24-aligned connection & delivery hardening (included in 0.8.30).
39
43
 
40
- | Experience | Effect |
41
- |------------|--------|
42
- | 🔗 **Connection** | Marks “connected” only when the bot can actually receive messages; auto-retries instead of faking online |
43
- | 📩 **Fewer lost messages** | Much better after errors, after a reply finishes, or when sending several messages quickly |
44
- | ⏳ **Queue feedback** | While the previous message is still running, new messages more reliably show “queued / processing” + thinking reaction |
45
- | ⚠️ **Model failures** | Billing / no channel / 503-style failures settle into clear Chinese error cards instead of spinning forever |
46
- | 🃏 **Answer cards & images** | Existing community answer-card and full image-path fixes remain |
44
+ ### 📦 v0.8.26 / 0.8.25 and earlier
47
45
 
48
- ```bash
49
- npx -y @jeik/dingtalk-connector@0.8.28 install --force && openclaw gateway restart
50
- ```
46
+ Target ID rules, sender identity, answer cards, image fixes — see [CHANGELOG.md](CHANGELOG.md).
51
47
 
52
- ### 📦 v0.8.26 · 2026-07-25
48
+ ---
53
49
 
54
- Stricter outbound target ID rules (keep `==` suffixes and case).
50
+ ## 🚀 Quick Start
55
51
 
56
- ### 📦 v0.8.25 · 2026-07-24
52
+ ### Requirements
57
53
 
58
- Sender role/title identity; bare DingTalk IDs as direct chat.
54
+ - **OpenClaw** installed and running ([website](https://openclaw.ai/))
55
+ - **Version**: OpenClaw ≥ **2026.4.9** (`openclaw -v`)
56
+ - Same channel id as official (`dingtalk-connector`); `--force` overwrites — **no uninstall** needed
57
+ - Always `openclaw gateway restart` after install/upgrade
59
58
 
60
- ### 📦 v0.8.21-fix49 and earlier
59
+ Package: [`@jeik/dingtalk-connector`](https://www.npmjs.com/package/@jeik/dingtalk-connector)
61
60
 
62
- Answer cards, image path fixes, streaming finalize, Chinese error mapping — see [CHANGELOG.md](CHANGELOG.md).
61
+ ### A) npx one-command QR install (try in order)
63
62
 
64
- Full log: [CHANGELOG.md](CHANGELOG.md) · [FIXES.md](FIXES.md)
63
+ ```bash
64
+ # 1) Install latest
65
+ npx @jeik/dingtalk-connector install --force && openclaw gateway restart
65
66
 
66
- ---
67
+ # 2) If you did not get the latest, pin the version
68
+ npx @jeik/dingtalk-connector@0.8.30 install --force && openclaw gateway restart
67
69
 
68
- ## Enhanced Features
70
+ # 3) If it still fails, force the official npm registry
71
+ NPM_CONFIG_REGISTRY=https://registry.npmjs.org npx @jeik/dingtalk-connector@0.8.30 install --force && openclaw gateway restart
72
+ ```
69
73
 
70
- ### 🖼️ Image sending: full fix & upgrade
74
+ ### B) Plugin only (credentials already set; try in order)
71
75
 
72
- > 🔥 **No dead corners** · mixed send paths · far beyond the official’s weak image pipeline
73
- > Chat · ✅ message direct · ✅ markdown embed · ✅ split or merge layout
76
+ ```bash
77
+ # 1) Install latest
78
+ openclaw plugins install @jeik/dingtalk-connector --force && openclaw gateway restart
74
79
 
75
- Full-path image fixes every channel below renders correctly:
80
+ # 2) If you did not get the latest, pin the version
81
+ openclaw plugins install @jeik/dingtalk-connector@0.8.30 --force && openclaw gateway restart
76
82
 
77
- | | Path | Capability |
78
- |--|------|------------|
79
- | 💬 | **Normal chat reply** | Agent embeds `![alt](…)`; upload to mediaId before finalize |
80
- | 📤 | **message · mediaUrl** | Proactive direct send (local / LAN / public) |
81
- | 📝 | **message · markdown body** | Nested `![](…)` (local / `file://` / URL) with text |
82
- | ⚙️ | **Configurable layout** | Default 📎 **separate**; `messageImageMd: true` → 🧩 **merge** one markdown |
83
+ # 3) If it still fails, force the official npm registry
84
+ NPM_CONFIG_REGISTRY=https://registry.npmjs.org openclaw plugins install @jeik/dingtalk-connector@0.8.30 --force && openclaw gateway restart
85
+ ```
83
86
 
84
- #### 🌐 Source types covered
87
+ ### Local tgz / from source (dev / offline)
85
88
 
86
- | | Type | Examples |
87
- |--|------|----------|
88
- | 🌍 | Public URL | `https://…` |
89
- | 🏠 | Private / LAN URL | `http://intranet/…` |
90
- | 📁 | Local absolute path | `/tmp/…` · `/root/…` |
91
- | 💾 | **`/mnt` mounts** | Chinese paths · SMB shares |
92
- | 🔗 | `file://` URI | `file:///mnt/…` · `file:///tmp/…` |
93
- | 🆔 | Existing mediaId | `@lADP…` |
89
+ ```bash
90
+ git clone https://github.com/jeikl/dingtalk-openclaw-connector-fix-Community.git
91
+ cd dingtalk-openclaw-connector-fix-Community
92
+ npm install && npm run build && npm pack
93
+ openclaw plugins install ./jeik-dingtalk-connector-0.8.30.tgz --force && openclaw gateway restart
94
+ ```
94
95
 
95
- #### 🛡️ Extra safeguards
96
+ ### Smoke check
96
97
 
97
- - 📦 Code-block / inline-code paths are **not** uploaded
98
- - ⬇️ Remote: **download then upload**; local: **`/tmp` retry** on failure
99
- - 🫧 Image + download link in **one bubble**: `![]` → mediaId, URL kept as-is
98
+ ```bash
99
+ openclaw -v
100
+ openclaw plugins list
101
+ # Send a DingTalk message — first “summoning model…”, then streaming / answer card
102
+ ```
100
103
 
101
- ### 🎨 AI Card template
104
+ ---
102
105
 
103
- - Custom stream cards; **if `cardTemplateId` is omitted**, defaults to
104
- `0d2c84b3-12c1-473b-b14a-f329a7a102cd.schema` (📋 copy button, etc.)
106
+ ## ⚙️ Configuration
105
107
 
106
- ### ⚙️ Minimal config
108
+ ### Minimal config
107
109
 
108
110
  ```json
109
111
  "channels": {
@@ -121,8 +123,6 @@ Defaults apply: stream card `0d2c84b3-…schema`, session answer card on, messag
121
123
 
122
124
  ### Maximal config (for illustration; defaults written out)
123
125
 
124
- **Single Agent** and **multi Agent** (all values are defaults — **not extra features**).
125
-
126
126
  **Single Agent (top-level credentials):**
127
127
 
128
128
  ```json
@@ -197,12 +197,64 @@ Defaults apply: stream card `0d2c84b3-…schema`, session answer card on, messag
197
197
  | `answerCardTemplateId` | string | `d246b7f5-1783-4e9b-bb46-bef52d63050e.schema` | Static answer card template |
198
198
  | `messageAnswerCard` | boolean | **true** | message-tool body via answer card; `false` = plain message |
199
199
  | `messageImageMd` | boolean | **false** | message images: separate vs merge markdown |
200
+ | `debug` | boolean | **false** | Verbose diagnostics (connection / image mediaId / quote / queue). **Off in production**; set `true` then restart gateway |
200
201
 
201
202
  > `answerCard` = conversation finalize; `messageAnswerCard` = message-tool outbound.
202
203
 
204
+ **Temporary debug example:**
205
+
206
+ ```json
207
+ "channels": {
208
+ "dingtalk-connector": {
209
+ "enabled": true,
210
+ "clientId": "…",
211
+ "clientSecret": "…",
212
+ "debug": true
213
+ }
214
+ }
215
+ ```
216
+
203
217
  ---
204
218
 
205
- ## 🎯 Reply markers + Answer card + Tool progress (core enhancements)
219
+ ## Enhanced Features
220
+
221
+ ### 🖼️ Image sending: full fix & upgrade
222
+
223
+ > 🔥 **No dead corners** · mixed send paths · far beyond the official’s weak image pipeline
224
+ > ✅ Chat · ✅ message direct · ✅ markdown embed · ✅ split or merge layout
225
+
226
+ Full-path image fixes — every channel below renders correctly:
227
+
228
+ | | Path | Capability |
229
+ |--|------|------------|
230
+ | 💬 | **Normal chat reply** | Agent embeds `![alt](…)`; upload to mediaId before finalize |
231
+ | 📤 | **message · mediaUrl** | Proactive direct send (local / LAN / public) |
232
+ | 📝 | **message · markdown body** | Nested `![](…)` (local / `file://` / URL) with text |
233
+ | ⚙️ | **Configurable layout** | Default 📎 **separate**; `messageImageMd: true` → 🧩 **merge** one markdown |
234
+
235
+ #### 🌐 Source types covered
236
+
237
+ | | Type | Examples |
238
+ |--|------|----------|
239
+ | 🌍 | Public URL | `https://…` |
240
+ | 🏠 | Private / LAN URL | `http://intranet/…` |
241
+ | 📁 | Local absolute path | `/tmp/…` · `/root/…` |
242
+ | 💾 | **`/mnt` mounts** | Chinese paths · SMB shares |
243
+ | 🔗 | `file://` URI | `file:///mnt/…` · `file:///tmp/…` |
244
+ | 🆔 | Existing mediaId | `@lADP…` |
245
+
246
+ #### 🛡️ Extra safeguards
247
+
248
+ - 📦 Code-block / inline-code paths are **not** uploaded
249
+ - ⬇️ Remote: **download then upload**; local: **`/tmp` retry** on failure
250
+ - 🫧 Image + download link in **one bubble**: `![]` → mediaId, URL kept as-is
251
+
252
+ ### 🎨 AI Card template
253
+
254
+ - ✨ Custom stream cards; **if `cardTemplateId` is omitted**, defaults to
255
+ `0d2c84b3-12c1-473b-b14a-f329a7a102cd.schema` (📋 copy button, etc.)
256
+
257
+ ### 🎯 Reply markers + Answer card + Tool progress
206
258
 
207
259
  These make the "process → final answer" rendering on DingTalk cleaner and more stable, working around DingTalk's official streaming AI Card bug:
208
260
 
@@ -232,80 +284,12 @@ Community contributions (features & bug fixes) are always welcome — submit a P
232
284
 
233
285
  | Item | Description |
234
286
  |------|-------------|
235
- | Base | Official v0.8.20, fully identical features |
236
- | Fixes | Bugs the official team hasn't addressed (see recent fixes above) |
287
+ | Base | Aligned with official **v0.8.24** long-connection work + this repo’s unique extras |
288
+ | Fixes | Silent connection, lost messages, stuck error cards, grey images, etc. |
237
289
  | Maintenance | Community maintained, continuously tracking official updates |
238
290
 
239
291
  ---
240
292
 
241
- ## Requirements & Installation
242
-
243
- Before you start, make sure you have:
244
-
245
- - **OpenClaw**: Installed and running properly. Visit the [OpenClaw website](https://openclaw.ai/) for details.
246
- - **Version**: OpenClaw ≥ **2026.4.9**. Check with `openclaw -v`.
247
-
248
- > If below this version, upgrade with: `npm install -g openclaw`
249
-
250
- ---
251
-
252
- ## Installation
253
-
254
- > Same channel id as the official plugin (`dingtalk-connector`); `--force` overwrites in place — **no uninstall** needed.
255
- > **Current stable: `0.8.21-fix31`** (npm `latest`). Always run `openclaw gateway restart` after install/upgrade.
256
-
257
- ### Option 1: npm (recommended)
258
-
259
- Package: [`@jeik/dingtalk-connector`](https://www.npmjs.com/package/@jeik/dingtalk-connector)
260
-
261
- **1) One-command QR install** (bot → credentials → plugin → config):
262
-
263
- ```bash
264
- npx -y @jeik/dingtalk-connector install
265
-
266
- # force overwrite when a local dingtalk-connector already exists
267
- npx -y @jeik/dingtalk-connector install --force
268
- ```
269
-
270
- **2) Plugin only** (credentials already set / manual setup):
271
-
272
- ```bash
273
- openclaw plugins install @jeik/dingtalk-connector --force
274
- openclaw gateway restart
275
- ```
276
-
277
- **3) Upgrade to latest:**
278
-
279
- ```bash
280
- openclaw plugins install @jeik/dingtalk-connector --force
281
- openclaw gateway restart
282
- ```
283
-
284
- ### Option 2: Local tgz / from source (dev / offline)
285
-
286
- ```bash
287
- git clone https://github.com/jeikl/dingtalk-openclaw-connector-fix-Community.git
288
- cd dingtalk-openclaw-connector-fix-Community
289
- # optional: pin a release (this is a git tag, not a branch)
290
- # git fetch --tags && git checkout v0.8.21-fix31
291
-
292
- npm install && npm run build && npm pack
293
- # → jeik-dingtalk-connector-0.8.21-fix31.tgz
294
-
295
- openclaw plugins install ./jeik-dingtalk-connector-0.8.21-fix31.tgz --force
296
- openclaw gateway restart
297
- ```
298
-
299
- ### Smoke check
300
-
301
- ```bash
302
- openclaw -v
303
- openclaw plugins list
304
- # Send a DingTalk message — you should first see "🦸 正在召唤大模型…" then streaming reply
305
- ```
306
-
307
- ---
308
-
309
293
  ## Usage Guide
310
294
 
311
295
  [OpenClaw DingTalk Plugin User Guide](https://alidocs.dingtalk.com/i/nodes/2Amq4vjg89GEno0zfPqoPGqdV3kdP0wQ?utm_scene=team_space)
@@ -338,4 +322,4 @@ This project is licensed under the [MIT](LICENSE) License.
338
322
  ## Support
339
323
 
340
324
  - **Issues**: [GitHub Issues](https://github.com/jeikl/dingtalk-openclaw-connector-fix-Community/issues)
341
- - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
325
+ - **Changelog**: [CHANGELOG.md](CHANGELOG.md)