@dingtalk-real-ai/dingtalk-connector 0.8.12 → 0.8.13
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 +36 -0
- package/README.en.md +31 -6
- package/README.md +31 -6
- package/docs/RELEASE_NOTES_V0.7.10.md +40 -0
- package/docs/RELEASE_NOTES_V0.7.2.md +143 -0
- package/docs/RELEASE_NOTES_V0.7.3.md +149 -0
- package/docs/RELEASE_NOTES_V0.7.4.md +206 -0
- package/docs/RELEASE_NOTES_V0.7.5.md +267 -0
- package/docs/RELEASE_NOTES_V0.7.6.md +219 -0
- package/docs/RELEASE_NOTES_V0.7.7.md +122 -0
- package/docs/RELEASE_NOTES_V0.7.8.md +101 -0
- package/docs/RELEASE_NOTES_V0.7.9.md +65 -0
- package/docs/RELEASE_NOTES_V0.8.0.md +53 -0
- package/docs/RELEASE_NOTES_V0.8.1.md +47 -0
- package/docs/RELEASE_NOTES_V0.8.10.md +49 -0
- package/docs/RELEASE_NOTES_V0.8.11.md +51 -0
- package/docs/RELEASE_NOTES_V0.8.12.md +63 -0
- package/docs/RELEASE_NOTES_V0.8.13-beta.0.md +69 -0
- package/docs/RELEASE_NOTES_V0.8.13.md +62 -0
- package/docs/RELEASE_NOTES_V0.8.2.md +55 -0
- package/docs/RELEASE_NOTES_V0.8.3.md +63 -0
- package/docs/RELEASE_NOTES_V0.8.4.md +45 -0
- package/docs/RELEASE_NOTES_V0.8.7.md +49 -0
- package/docs/RELEASE_NOTES_V0.8.8.md +63 -0
- package/docs/RELEASE_NOTES_V0.8.9.md +81 -0
- package/docs/RELEASE_NOTES_v0.7.0.md +142 -0
- package/docs/RELEASE_NOTES_v0.7.1.md +74 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +13 -2
- package/src/channel.ts +18 -6
- package/src/config/schema.ts +2 -2
- package/src/core/connection.ts +9 -6
- package/src/core/message-handler.ts +30 -10
- package/src/reply-dispatcher.ts +4 -3
- package/src/services/media/file.ts +7 -2
- package/src/services/media.ts +19 -12
- package/src/services/messaging/card.ts +1 -2
- package/src/services/messaging.ts +29 -16
- package/src/utils/http-client.ts +2 -1
- package/docs/images/dingtalk.svg +0 -1
- package/docs/images/image-1.png +0 -0
- package/docs/images/image-2.png +0 -0
- package/docs/images/image-3.png +0 -0
- package/docs/images/image-4.png +0 -0
- package/docs/images/image-5.png +0 -0
- package/docs/images/image-6.png +0 -0
- package/docs/images/image-7.png +0 -0
- package/install-beta.sh +0 -438
- package/install-npm.sh +0 -167
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Release Notes - v0.8.10
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新修复了 **OpenClaw SDK 升级后 Gateway Methods 配置访问失败**的关键问题,并**锁定 axios 版本**以提升依赖稳定性。
|
|
6
|
+
|
|
7
|
+
This release fixes a **critical Gateway Methods configuration access failure** after OpenClaw SDK upgrade, and **pins the axios version** for improved dependency stability.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **Gateway Methods 配置访问失败 / Gateway Methods config access failure** ([#397](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/397))
|
|
12
|
+
修复 SDK 升级后 `GatewayRequestContext.deps` 类型变更(`CliDeps = { [channelId: string]: unknown }`),导致 `context.deps.config` 为 `undefined`,所有 Gateway RPC 方法(sendToUser、sendToGroup、send、docs.*、status、probe)调用时抛出 `Cannot read properties of undefined (reading 'channels')` 错误。现在通过 SDK 提供的 `loadConfig()` 函数(从 `openclaw/plugin-sdk/config-runtime` 导出)获取完整配置,替代原来的 `context.deps.config` 访问方式。
|
|
13
|
+
Fixed `context.deps.config` being `undefined` after SDK upgrade where `GatewayRequestContext.deps` type changed to `CliDeps = { [channelId: string]: unknown }`. All Gateway RPC methods (sendToUser, sendToGroup, send, docs.*, status, probe) threw `Cannot read properties of undefined (reading 'channels')`. Now uses SDK's `loadConfig()` function (exported from `openclaw/plugin-sdk/config-runtime`) to obtain the full configuration.
|
|
14
|
+
|
|
15
|
+
- **锁定 axios 版本避免兼容性问题 / Pin axios version to prevent compatibility issues** ([#396](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/396))
|
|
16
|
+
将 `axios` 依赖从 `^1.6.0` 锁定为 `1.6.0`,避免 npm install 时自动升级到不兼容的新版本导致运行时错误。
|
|
17
|
+
Pinned `axios` dependency from `^1.6.0` to `1.6.0` to prevent automatic upgrades to incompatible versions during `npm install`.
|
|
18
|
+
|
|
19
|
+
## 🔧 内部改进 / Internal Improvements
|
|
20
|
+
|
|
21
|
+
- **connection.ts 动态 import 优化** - 将 `createLoggerFromConfig` 从静态 import 改为动态 import,避免潜在的循环依赖问题。
|
|
22
|
+
**connection.ts dynamic import optimization** - Changed `createLoggerFromConfig` from static to dynamic import to avoid potential circular dependency issues.
|
|
23
|
+
|
|
24
|
+
- **单元测试适配** - 更新 Gateway Methods 单元测试,mock `openclaw/plugin-sdk/config-runtime` 的 `loadConfig` 函数,替代原来的 `context.deps.config` mock 方式。
|
|
25
|
+
**Unit test adaptation** - Updated Gateway Methods unit tests to mock `loadConfig` from `openclaw/plugin-sdk/config-runtime` instead of the deprecated `context.deps.config`.
|
|
26
|
+
|
|
27
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
31
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
32
|
+
|
|
33
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
34
|
+
openclaw plugins update dingtalk-connector
|
|
35
|
+
|
|
36
|
+
# 通过 Git 安装 / Install via Git
|
|
37
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 🔗 相关链接 / Related Links
|
|
41
|
+
|
|
42
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
43
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
**发布日期 / Release Date**:2026-03-31
|
|
48
|
+
**版本号 / Version**:v0.8.10
|
|
49
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Release Notes - v0.8.11
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新**升级 Zod 至 v4**,并通过 SDK 的 `buildChannelConfigSchema` 自动生成 `configSchema`,同时**优化依赖结构**大幅减小安装体积。
|
|
6
|
+
|
|
7
|
+
This release **upgrades Zod to v4** with auto-generated `configSchema` via SDK's `buildChannelConfigSchema`, and **optimizes dependency structure** to significantly reduce installation size.
|
|
8
|
+
|
|
9
|
+
## ✨ 功能与体验改进 / Features & Improvements
|
|
10
|
+
|
|
11
|
+
- **升级 Zod v4 + 自动生成 configSchema / Upgrade Zod v4 + auto-generate configSchema**
|
|
12
|
+
将 Zod 从 v3 升级至 v4(`zod@^4.3.6`),利用 Zod v4 的 `toJSONSchema()` 能力,通过 SDK 提供的 `buildChannelConfigSchema()` 自动从 Zod Schema 生成 JSON Schema,替代原来手动维护的 `configSchema.schema` 对象,确保配置验证与类型定义始终同步。
|
|
13
|
+
Upgraded Zod from v3 to v4 (`zod@^4.3.6`), leveraging Zod v4's `toJSONSchema()` capability to auto-generate JSON Schema via SDK's `buildChannelConfigSchema()`, replacing the manually maintained `configSchema.schema` object to ensure config validation stays in sync with type definitions.
|
|
14
|
+
|
|
15
|
+
## 📦 依赖优化 / Dependency Optimization
|
|
16
|
+
|
|
17
|
+
- **openclaw 移至 peerDependencies / Move openclaw to peerDependencies**
|
|
18
|
+
将 `openclaw` 从 `dependencies` 移至 `peerDependencies`(标记为 optional),避免插件安装时重复安装宿主框架,大幅减小 `node_modules` 体积。
|
|
19
|
+
Moved `openclaw` from `dependencies` to `peerDependencies` (marked as optional), preventing duplicate installation of the host framework and significantly reducing `node_modules` size.
|
|
20
|
+
|
|
21
|
+
- **ffmpeg 相关包移至 optionalDependencies / Move ffmpeg packages to optionalDependencies**
|
|
22
|
+
将 `fluent-ffmpeg`、`@ffmpeg-installer/ffmpeg`、`@ffprobe-installer/ffprobe` 移至 `optionalDependencies`,这些包仅在视频/音频转码场景使用(通过动态 require 加载),安装失败不影响核心功能。
|
|
23
|
+
Moved `fluent-ffmpeg`, `@ffmpeg-installer/ffmpeg`, `@ffprobe-installer/ffprobe` to `optionalDependencies`. These packages are only used for video/audio transcoding (loaded via dynamic require) and won't affect core functionality if installation fails.
|
|
24
|
+
|
|
25
|
+
- **移除未使用的 pako 依赖 / Remove unused pako dependency**
|
|
26
|
+
移除了未被任何代码引用的 `pako` 包。
|
|
27
|
+
Removed the `pako` package which was not referenced by any code.
|
|
28
|
+
|
|
29
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
33
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
34
|
+
|
|
35
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
36
|
+
openclaw plugins update dingtalk-connector
|
|
37
|
+
|
|
38
|
+
# 通过 Git 安装 / Install via Git
|
|
39
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 🔗 相关链接 / Related Links
|
|
43
|
+
|
|
44
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
45
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
**发布日期 / Release Date**:2026-04-01
|
|
50
|
+
**版本号 / Version**:v0.8.11
|
|
51
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Release Notes - v0.8.12
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新**修复了 v0.8.11 安装后启动崩溃的问题**([#419](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/419)),同时**大幅精简依赖体积**,移除了约 100MB 的非核心依赖,并**清理了无效的代理禁用代码**。
|
|
6
|
+
|
|
7
|
+
This release **fixes the startup crash after v0.8.11 installation** ([#419](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/419)), **significantly reduces dependency size** by removing ~100MB of non-core dependencies, and **removes ineffective proxy bypass code**.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **修复 v0.8.11 安装后启动崩溃 / Fix startup crash after v0.8.11 installation** ([#419](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/419))
|
|
12
|
+
v0.8.11 将 `mammoth` 和 `pdf-parse` 从 `dependencies` 移至 `optionalDependencies`,但代码中仍使用静态 `import`,导致模块加载阶段立即报错 `Cannot find module 'mammoth'`,插件无法启动。现已改为动态 `import` + 优雅降级:缺失时打印警告并跳过,不影响核心功能。
|
|
13
|
+
v0.8.11 moved `mammoth` and `pdf-parse` from `dependencies` to `optionalDependencies`, but the code still used static `import`, causing immediate `Cannot find module 'mammoth'` error at module load time. Now uses dynamic `import` with graceful degradation: prints a warning and skips when missing, without affecting core functionality.
|
|
14
|
+
|
|
15
|
+
## 📦 依赖优化 / Dependency Optimization
|
|
16
|
+
|
|
17
|
+
- **移除大体积非核心依赖 / Remove large non-core dependencies**
|
|
18
|
+
将 `pdf-parse`(~21MB)、`fluent-ffmpeg`(~12MB)、`@ffmpeg-installer/ffmpeg`(~70MB)、`@ffprobe-installer/ffprobe` 从 `optionalDependencies` 中移除。这些包均已改为动态 `import`,缺失时优雅降级,需要时用户可手动安装。仅保留 `mammoth`(~2MB)在 `optionalDependencies` 中。
|
|
19
|
+
Removed `pdf-parse` (~21MB), `fluent-ffmpeg` (~12MB), `@ffmpeg-installer/ffmpeg` (~70MB), `@ffprobe-installer/ffprobe` from `optionalDependencies`. All packages now use dynamic `import` with graceful degradation. Users can manually install them when needed. Only `mammoth` (~2MB) remains in `optionalDependencies`.
|
|
20
|
+
|
|
21
|
+
## 🧹 代码清理 / Code Cleanup
|
|
22
|
+
|
|
23
|
+
- **移除无效的代理禁用代码 / Remove ineffective proxy bypass code**
|
|
24
|
+
经源码分析,`dingtalk-stream` SDK 的 WebSocket 连接使用 `ws` 库直接建立,不经过 axios 也不受 `axios.defaults.proxy` 影响。之前在 `connection.ts` 中设置 `axios.defaults.proxy = false` 以及 `http-client.ts` 中的 `proxy: getProxyConfig()` 对 WebSocket 连接无效。现已移除 `src/utils/proxy-config.ts` 模块及所有相关代理配置代码。
|
|
25
|
+
Source code analysis revealed that `dingtalk-stream` SDK's WebSocket connection uses the `ws` library directly, bypassing axios entirely. The previous `axios.defaults.proxy = false` in `connection.ts` and `proxy: getProxyConfig()` in `http-client.ts` had no effect on WebSocket connections. Removed `src/utils/proxy-config.ts` module and all related proxy configuration code.
|
|
26
|
+
|
|
27
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
31
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
32
|
+
|
|
33
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
34
|
+
openclaw plugins update dingtalk-connector
|
|
35
|
+
|
|
36
|
+
# 通过 Git 安装 / Install via Git
|
|
37
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 可选依赖手动安装 / Optional Dependencies
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Word 文档解析(自动安装,~2MB)
|
|
44
|
+
# mammoth is auto-installed as optionalDependency
|
|
45
|
+
|
|
46
|
+
# PDF 文档解析(需手动安装)
|
|
47
|
+
npm install pdf-parse
|
|
48
|
+
|
|
49
|
+
# 视频/音频转码(需手动安装)
|
|
50
|
+
npm install fluent-ffmpeg @ffmpeg-installer/ffmpeg @ffprobe-installer/ffprobe
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 🔗 相关链接 / Related Links
|
|
54
|
+
|
|
55
|
+
- [Issue #419](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/419)
|
|
56
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
57
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
**发布日期 / Release Date**:2026-04-01
|
|
62
|
+
**版本号 / Version**:v0.8.12
|
|
63
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Release Notes - v0.8.13-beta.0
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新修复了**多账号凭据解析错误**(SecretInput 对象未展开导致发送失败)、**连接错误无法被正确捕获**(async 回调中 throw 无效),以及**消息路由支持 `group:`/`user:` 前缀**,同时兼容 pdf-parse v1/v2 双版本 API,并修复了 QPS 限流后立即重试的问题。
|
|
6
|
+
|
|
7
|
+
This release fixes **multi-account credential resolution** (SecretInput objects not unwrapped before sending), **connection errors not propagating correctly** (throw inside async callbacks replaced with reject), and adds **`group:`/`user:` prefix support in message routing**, along with pdf-parse v1/v2 compatibility and a QPS throttle retry fix.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **修复多账号场景下发送消息时凭据未解析 / Fix unresolved credentials in sendText/sendMedia**
|
|
12
|
+
`sendText` 和 `sendMedia` 在多账号模式下,`clientId`/`clientSecret` 可能为 `SecretInput` 对象或 `undefined`,导致 API 请求携带无效凭据。现已在调用前用 `resolveDingtalkAccount` 返回的已解析值覆盖原始 config。
|
|
13
|
+
In multi-account mode, `clientId`/`clientSecret` could be `SecretInput` objects or `undefined`, causing API requests with invalid credentials. Now the resolved values from `resolveDingtalkAccount` are used to override the raw config.
|
|
14
|
+
|
|
15
|
+
- **修复连接错误在 async 回调中无法传播 / Fix connection errors not propagating in async callback**
|
|
16
|
+
`connection.ts` 的错误处理在 async 回调内使用 `throw` 抛出错误,但错误无法被外层 Promise 捕获,导致 400/401 等连接失败被静默忽略。已改为 `reject(new Error(...))` 确保错误正确传播。
|
|
17
|
+
Error handlers in `connection.ts` used `throw` inside async callbacks, making errors uncatchable by the outer Promise. Changed to `reject(new Error(...))` to ensure proper error propagation for 400/401 and other connection failures.
|
|
18
|
+
|
|
19
|
+
- **修复 QPS 限流后立即重试导致再次触发限流 / Fix QPS rate limit immediate retry**
|
|
20
|
+
收到 403 QpsLimit 响应后,`lastUpdateTime` 未更新,导致下一次节流检查立即放行并再次触发限流。现已在跳过更新时同步 `lastUpdateTime`。
|
|
21
|
+
After receiving a 403 QpsLimit response, `lastUpdateTime` was not updated, causing the throttle check to immediately allow the next attempt. Now `lastUpdateTime` is synced when skipping an update.
|
|
22
|
+
|
|
23
|
+
- **修复 `resolveAllowFrom` 全局过滤误拦截群消息 / Fix resolveAllowFrom global filter incorrectly blocking group messages**
|
|
24
|
+
框架层使用 `resolveAllowFrom` 对所有消息(含群消息)做全局发送者过滤,但 `allowFrom` 原意只用于私聊白名单。群消息有独立的 `groupAllowFrom` 字段控制,由 `message-handler.ts` 内部处理。现已将 `resolveAllowFrom` 改为返回空列表,禁用框架层全局过滤。
|
|
25
|
+
The framework used `resolveAllowFrom` to filter all incoming messages (including group messages), but `allowFrom` was intended only for DM whitelisting. Group messages have a separate `groupAllowFrom` field handled internally by `message-handler.ts`. Now returns `[]` to disable framework-level global filtering.
|
|
26
|
+
|
|
27
|
+
## ✨ 功能改进 / Improvements
|
|
28
|
+
|
|
29
|
+
- **消息路由支持 `group:`/`user:` 前缀 / Message routing supports `group:`/`user:` prefix targets**
|
|
30
|
+
`sendTextToDingTalk` 和 `sendMediaToDingTalk` 新增对 `group:<openConversationId>` 和 `user:<userId>` 格式的目标解析,与 `gateway-methods.ts` 中的逻辑保持一致,兼容旧版裸 `cid` 前缀格式。
|
|
31
|
+
`sendTextToDingTalk` and `sendMediaToDingTalk` now support `group:<openConversationId>` and `user:<userId>` prefixed targets, consistent with `gateway-methods.ts` logic, while maintaining backward compatibility with bare `cid`-prefixed targets.
|
|
32
|
+
|
|
33
|
+
- **兼容 pdf-parse v1 和 v2 API / Support both pdf-parse v1 and v2 API**
|
|
34
|
+
`parsePdfFile` 现在自动检测 pdf-parse 模块导出格式:v2.x 使用 `PDFParse` 类(class API),v1.x 使用 `default` 函数,均可正确解析 PDF 文件。
|
|
35
|
+
`parsePdfFile` now auto-detects the pdf-parse export format: v2.x uses the `PDFParse` class API, v1.x uses the `default` function — both are handled correctly.
|
|
36
|
+
|
|
37
|
+
- **将 `enableMediaUpload`/`systemPrompt` 移至共享配置 / Move `enableMediaUpload`/`systemPrompt` to shared config shape**
|
|
38
|
+
这两个字段现在位于 `DingtalkSharedConfigShape`,在多账号模式下每个账号可独立配置,而不是只能在顶层配置。
|
|
39
|
+
These fields are now in `DingtalkSharedConfigShape`, allowing per-account configuration in multi-account mode instead of only top-level.
|
|
40
|
+
|
|
41
|
+
## 📝 文档 / Documentation
|
|
42
|
+
|
|
43
|
+
- **优化 README 安装验证说明 / Improve README plugin verification instructions**
|
|
44
|
+
移除了版本号硬编码(`v0.8.6`),改为通用版本占位符,并新增"如果没看到 `loaded`"的警示提示,避免用户在插件未正确加载时继续配置步骤。
|
|
45
|
+
Removed hardcoded version number (`v0.8.6`), replaced with generic version placeholder, and added a warning for when `loaded` is not shown to prevent users from proceeding with configuration before the plugin is properly loaded.
|
|
46
|
+
|
|
47
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 安装 beta 版本 / Install beta version
|
|
51
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector@0.8.13-beta.0
|
|
52
|
+
|
|
53
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
54
|
+
openclaw plugins update dingtalk-connector
|
|
55
|
+
|
|
56
|
+
# 通过 Git 安装 / Install via Git
|
|
57
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git#v0.8.13
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 🔗 相关链接 / Related Links
|
|
61
|
+
|
|
62
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
63
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
**发布日期 / Release Date**:2026-04-06
|
|
68
|
+
**版本号 / Version**:v0.8.13-beta.0
|
|
69
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Release Notes - v0.8.13
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新聚焦**媒体发送可靠性**和**多账号稳定性**:修复了文件发送时 mediaId 格式不一致导致静默失败的问题,修复了多账号凭据解析错误、连接错误无法传播、QPS 限流重试等多个关键 Bug,同时新增 `group:`/`user:` 前缀路由支持。
|
|
6
|
+
|
|
7
|
+
This release focuses on **media sending reliability** and **multi-account stability**: fixes silent file sending failures caused by inconsistent mediaId format, resolves multi-account credential resolution errors, connection error propagation, QPS throttle retry issues, and adds `group:`/`user:` prefix routing support.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **修复文件发送时 mediaId 格式不一致导致静默失败 / Fix inconsistent mediaId format causing silent file send failure**
|
|
12
|
+
`sendFileProactive` 在不同调用点传入了 `cleanMediaId`(不带 `@`)和 `mediaId`(带 `@`),经实测钉钉 API 统一要求带 `@` 前缀的 `mediaId`。同时修复了 `sendFileMessage`/`sendFileProactive` 的 catch 块吞掉异常导致外层误报成功的问题。
|
|
13
|
+
`sendFileProactive` was called with `cleanMediaId` (without `@`) in some places and `mediaId` (with `@`) in others. Testing confirmed DingTalk API requires the `@`-prefixed `mediaId`. Also fixed catch blocks swallowing errors, causing false success reports.
|
|
14
|
+
|
|
15
|
+
- **修复多账号场景下凭据未解析 / Fix unresolved credentials in multi-account mode**
|
|
16
|
+
`sendText`/`sendMedia` 在多账号模式下 `clientId`/`clientSecret` 可能为 `SecretInput` 对象,导致 API 请求携带无效凭据。现已用 `resolveDingtalkAccount` 返回的已解析值覆盖。
|
|
17
|
+
In multi-account mode, credentials could be `SecretInput` objects; now resolved values are used.
|
|
18
|
+
|
|
19
|
+
- **修复连接错误在 async 回调中无法传播 / Fix connection errors not propagating**
|
|
20
|
+
`connection.ts` 错误处理使用 `throw` 抛出,但在 async 回调内无法被外层 Promise 捕获。改为 `reject(new Error(...))` 确保 400/401 等错误正确传播。
|
|
21
|
+
Changed `throw` to `reject()` inside async error handlers for proper error propagation.
|
|
22
|
+
|
|
23
|
+
- **修复 QPS 限流后立即重试 / Fix QPS rate limit immediate retry**
|
|
24
|
+
收到 403 QpsLimit 后未更新 `lastUpdateTime`,导致节流检查立即放行。现已同步更新。
|
|
25
|
+
`lastUpdateTime` is now synced when skipping a QPS-limited update.
|
|
26
|
+
|
|
27
|
+
- **修复 `resolveAllowFrom` 全局过滤误拦截群消息 / Fix resolveAllowFrom blocking group messages**
|
|
28
|
+
`allowFrom` 仅用于私聊白名单,群消息由 `groupAllowFrom` 在内部处理。将 `resolveAllowFrom` 改为返回空列表,禁用框架层全局过滤。
|
|
29
|
+
Returns `[]` to disable framework-level filtering; internal policy checks handle DM and group separately.
|
|
30
|
+
|
|
31
|
+
## ✨ 功能改进 / Improvements
|
|
32
|
+
|
|
33
|
+
- **消息路由支持 `group:`/`user:` 前缀 / Message routing supports `group:`/`user:` prefix targets**
|
|
34
|
+
`sendTextToDingTalk` 和 `sendMediaToDingTalk` 新增 `group:<id>` 和 `user:<id>` 格式解析,兼容旧版裸 `cid` 前缀。
|
|
35
|
+
Now supports `group:<id>` and `user:<id>` prefixed targets, backward compatible with bare `cid` prefix.
|
|
36
|
+
|
|
37
|
+
- **兼容 pdf-parse v1/v2 API、共享配置字段扩展 / pdf-parse v1/v2 compatibility & shared config fields**
|
|
38
|
+
`parsePdfFile` 自动检测 pdf-parse 导出格式;`enableMediaUpload`/`systemPrompt` 移至共享配置,支持多账号独立配置。
|
|
39
|
+
Auto-detects pdf-parse export format; `enableMediaUpload`/`systemPrompt` now configurable per-account.
|
|
40
|
+
|
|
41
|
+
- **新增出站路由测试 / Add outbound routing tests**
|
|
42
|
+
新增 `outbound-routing.test.ts`,覆盖 `group:`/`user:` 前缀解析和消息路由场景。
|
|
43
|
+
Added `outbound-routing.test.ts` covering prefix parsing and message routing scenarios.
|
|
44
|
+
|
|
45
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
49
|
+
openclaw plugins update dingtalk-connector
|
|
50
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 🔗 相关链接 / Related Links
|
|
54
|
+
|
|
55
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
56
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
**发布日期 / Release Date**:2026-04-08
|
|
61
|
+
**版本号 / Version**:v0.8.13
|
|
62
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Release Notes - v0.8.2
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新聚焦于多账号场景下的稳定性与正确性:修复了多账号配置时重复建立连接的问题,优化了 WebSocket 连接管理机制,并改进了消息处理逻辑,使长连接场景下的整体可靠性显著提升。
|
|
6
|
+
|
|
7
|
+
This release focuses on stability and correctness in multi-account scenarios: it fixes duplicate connection creation when multiple accounts are configured, improves WebSocket connection management, and refines message processing logic for significantly better reliability in long-lived connection scenarios.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **多账号重复启动问题 / Multi-account Duplicate Startup**
|
|
12
|
+
修复了配置多个钉钉账号时,`enabled: false` 的账号仍会建立 WebSocket 连接的问题。现在插件会在启动时正确检查账号的 `enabled` 状态,禁用账号将保持 pending 状态直到 Gateway 停止,不再建立任何连接。
|
|
13
|
+
Fixed an issue where accounts with `enabled: false` would still establish WebSocket connections when multiple DingTalk accounts were configured. The plugin now correctly checks the `enabled` state at startup; disabled accounts remain in a pending state until the Gateway stops and no longer create any connections.
|
|
14
|
+
|
|
15
|
+
- **相同 clientId 账号去重 / Duplicate clientId Deduplication**
|
|
16
|
+
修复了多个账号配置相同 `clientId` 时会建立重复连接的问题。通过静态配置分析,同一 `clientId` 只有列表中排在最前面的启用账号才会建立连接,后续重复账号会被自动跳过并记录日志。
|
|
17
|
+
Fixed an issue where multiple accounts sharing the same `clientId` would create duplicate connections. Using static configuration analysis, only the first enabled account with a given `clientId` in the list will establish a connection; subsequent duplicates are automatically skipped and logged.
|
|
18
|
+
|
|
19
|
+
## ✨ 功能与体验改进 / Features & Improvements
|
|
20
|
+
|
|
21
|
+
- **Onboarding 配置向导优化 / Onboarding Configuration Wizard Improvement**
|
|
22
|
+
改进了钉钉连接器的配置引导逻辑:调整了凭据输入顺序(先 Client ID 后 Client Secret),优化了引导文案,使配置流程更清晰易懂。
|
|
23
|
+
Improved the DingTalk connector onboarding wizard: adjusted credential input order (Client ID first, then Client Secret), and refined the guidance text for a clearer and more intuitive setup experience.
|
|
24
|
+
|
|
25
|
+
- **会话 Key 构成遵循 OpenClaw 规范 / Session Key Follows OpenClaw Convention**
|
|
26
|
+
会话上下文(sessionKey)的构成现在严格遵循 OpenClaw 标准规则,通过 `channel`、`accountId`、`chatType`、`peerId` 等字段组合唯一标识会话,并支持 `sharedMemoryAcrossConversations` 配置实现跨会话记忆共享。
|
|
27
|
+
The session context (sessionKey) now strictly follows OpenClaw conventions, uniquely identifying sessions via `channel`, `accountId`, `chatType`, and `peerId` fields. Also supports `sharedMemoryAcrossConversations` for cross-conversation memory sharing.
|
|
28
|
+
|
|
29
|
+
- **消息处理逻辑优化 / Message Processing Logic Optimization**
|
|
30
|
+
重构消息处理流程,提升消息响应速度和处理可靠性,确保消息按序正确处理。
|
|
31
|
+
Refactored message processing flow to improve response speed and reliability, ensuring messages are processed correctly in order.
|
|
32
|
+
|
|
33
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
37
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
38
|
+
|
|
39
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
40
|
+
openclaw plugins update dingtalk-connector
|
|
41
|
+
|
|
42
|
+
# 通过 Git 安装 / Install via Git
|
|
43
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 🔗 相关链接 / Related Links
|
|
47
|
+
|
|
48
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
49
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
**发布日期 / Release Date**:2026-03-22
|
|
54
|
+
**版本号 / Version**:v0.8.2
|
|
55
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Release Notes - v0.8.3
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新修复了五个问题并带来一项体验改进:与 OpenClaw Gateway 新版本(2026.3.22+)的兼容性问题、多 Agent 路由在 `sharedMemoryAcrossConversations` 配置下的路由错误、发送图片时的异常问题、发送人昵称和群名称未正确传递给 AI 的问题,以及 AI 卡片流式更新(progressive updates)失效的问题;同时优化了消息队列繁忙时的用户体验。
|
|
6
|
+
|
|
7
|
+
This release fixes five issues and brings one UX improvement: a compatibility issue with newer OpenClaw Gateway versions (2026.3.22+), incorrect multi-Agent routing when `sharedMemoryAcrossConversations` is enabled, an image sending failure, sender nickname and group name not being correctly passed to the AI, and AI card progressive updates not working; plus an improved experience when the message queue is busy.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **兼容 OpenClaw Gateway 新版本 / Compatible with Newer OpenClaw Gateway Versions**
|
|
12
|
+
修复在 OpenClaw Gateway 2026.3.22+ 版本下安装插件时报错 `ERR_PACKAGE_PATH_NOT_EXPORTED: Package subpath './plugin-sdk/compat' is not defined by "exports"` 的问题。根因是 `src/runtime.ts` 使用了已被新版 SDK 移除的 `openclaw/plugin-sdk/compat` 子路径,现已改为从 `openclaw/plugin-sdk` 主入口导入,对所有版本(2026.3.1+)均兼容。
|
|
13
|
+
Fixed an error `ERR_PACKAGE_PATH_NOT_EXPORTED: Package subpath './plugin-sdk/compat' is not defined by "exports"` when installing the plugin under OpenClaw Gateway 2026.3.22+. The root cause was `src/runtime.ts` importing from the `openclaw/plugin-sdk/compat` sub-path which was removed in newer SDK versions. Now imports from the `openclaw/plugin-sdk` main entry, compatible with all versions (2026.3.1+).
|
|
14
|
+
|
|
15
|
+
- **AI 卡片流式更新延迟 / AI Card Progressive Updates Delayed**
|
|
16
|
+
优化了 AI 卡片流式更新的响应速度。改动前,`onReplyStart` 中 `await startStreaming()` 串行等待 AI Card 创建完成(约 500ms~1s),期间收到的 partial reply 全部被丢弃,Card 创建好之后才开始流式更新;同时节流间隔 1000ms 过于保守,对于 2 秒内完成的短回复几乎跳过所有中间更新。改动后,AI Card 创建改为 fire-and-forget 模式与 AI 生成并行,`onPartialReply` 到来时等待 Card 就绪后立即更新,节流间隔调整为 500ms,流式内容能更早、更频繁地呈现给用户。
|
|
17
|
+
Improved AI card progressive update responsiveness. Previously, `await startStreaming()` in `onReplyStart` waited serially for AI Card creation (~500ms–1s), discarding all partial replies received during that window; additionally, the 1000ms throttle interval was too conservative, skipping nearly all intermediate updates for short replies. After the fix, AI Card creation runs in fire-and-forget mode in parallel with AI generation; `onPartialReply` waits for the card to be ready and then updates immediately, with the throttle interval reduced to 500ms for earlier and more frequent streaming updates.
|
|
18
|
+
|
|
19
|
+
- **消息重复处理(钉钉服务端重发穿透)/ Duplicate Message Processing on DingTalk Server Resend**
|
|
20
|
+
修复了 AI 处理耗时超过 ~60 秒时,钉钉服务端重发消息导致 Bot 重复处理的问题。根因是去重逻辑仅使用 `headers.messageId`(WebSocket 协议层投递 ID,每次重发都是新值),未检查 `data.msgId`(业务层消息 ID,重发时保持不变),导致重发消息穿透去重缓存。修复后引入双层去重:协议层(`headers.messageId`)拦截同一次投递的重复回调,业务层(`data.msgId`)拦截服务端重发,两个 ID 同时标记,任意一个命中即可拦截。
|
|
21
|
+
Fixed an issue where DingTalk server resent messages (triggered when AI processing exceeds ~60 seconds) caused the Bot to process the same message twice. The root cause was that deduplication only checked `headers.messageId` (WebSocket protocol-layer delivery ID, which changes on every resend), ignoring `data.msgId` (business-layer message ID, which stays the same on resend). After the fix, a two-layer deduplication is applied: protocol-layer (`headers.messageId`) blocks duplicate callbacks from the same delivery, and business-layer (`data.msgId`) blocks server resends. Both IDs are marked simultaneously so either one can trigger deduplication.
|
|
22
|
+
|
|
23
|
+
- **多 Agent 路由与 sharedMemoryAcrossConversations 冲突 / Multi-Agent Routing Conflict with sharedMemoryAcrossConversations**
|
|
24
|
+
修复了配置 `sharedMemoryAcrossConversations: true` 时,多群分配不同 Agent 的 bindings 全部路由到同一个 Agent 的问题。根因是路由匹配错误地使用了 `sessionPeerId`(已被覆盖为 `accountId`)而非真实的 peer 标识。修复后,路由匹配使用专用的 `peerId` 字段(不受会话隔离配置影响),session 构建使用 `sessionPeerId`,两者职责严格分离。
|
|
25
|
+
Fixed an issue where all bindings routing different groups to different Agents would resolve to the same Agent when `sharedMemoryAcrossConversations: true` was configured. The root cause was that routing matched against `sessionPeerId` (overridden to `accountId`) instead of the real peer identifier. After the fix, routing uses the dedicated `peerId` field (unaffected by session isolation config), while session construction uses `sessionPeerId`, with strict separation of responsibilities.
|
|
26
|
+
|
|
27
|
+
- **发送图片失败 / Image Sending Failure**
|
|
28
|
+
修复了发送图片时出现异常的问题。([#316](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/316))
|
|
29
|
+
Fixed an issue where sending images would fail with an error. ([#316](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/316))
|
|
30
|
+
|
|
31
|
+
- **发送人昵称与群名称未正确传递给 AI / Sender Nickname and Group Name Not Passed to AI**
|
|
32
|
+
修复了会话上下文中 `SenderName` 字段错误传入用户 ID(而非昵称)、`GroupSubject` 字段错误传入群 ID(而非群名称)的问题。修复后,AI 能正确获取发送人的钉钉昵称和所在群的名称,有助于 AI 更好地理解对话场景。
|
|
33
|
+
Fixed an issue where the `SenderName` field in the session context was incorrectly set to the user ID instead of the display name, and `GroupSubject` was set to the group ID instead of the group title. After the fix, the AI correctly receives the sender's DingTalk nickname and the group name, enabling better contextual understanding.
|
|
34
|
+
|
|
35
|
+
## ✨ 功能与体验改进 / Features & Improvements
|
|
36
|
+
|
|
37
|
+
- **消息队列繁忙时的即时排队反馈 / Instant Queue Acknowledgement When Busy**
|
|
38
|
+
当用户快速连续发送消息、上一条仍在处理中时,新消息现在会立即弹出一条 AI Card 气泡,显示"上一条还没结束,这条我已经记下,稍后按顺序继续处理"等提示文案,同时贴上"思考中"表情,让用户第一时间知道消息已被接收并排队。等轮到该消息处理时,这条气泡会**原地更新**为最终回复内容,不会额外多发一条消息。
|
|
39
|
+
When a user sends messages in quick succession while the previous one is still being processed, the new message now immediately shows an AI Card bubble with a queuing acknowledgement (e.g. "Still working on the last one, I've noted this down and will continue in order"), along with a "thinking" emoji reaction. When it's the message's turn to be processed, the same bubble is **updated in place** with the final reply — no extra message is sent.
|
|
40
|
+
|
|
41
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
45
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
46
|
+
|
|
47
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
48
|
+
openclaw plugins update dingtalk-connector
|
|
49
|
+
|
|
50
|
+
# 通过 Git 安装 / Install via Git
|
|
51
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 🔗 相关链接 / Related Links
|
|
55
|
+
|
|
56
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
57
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
**发布日期 / Release Date**:2026-03-23
|
|
62
|
+
**版本号 / Version**:v0.8.3
|
|
63
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Release Notes - v0.8.4
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
v0.8.4 是一个兼容性修复版本,核心解决了插件在旧版 OpenClaw Gateway 上无法加载的问题。通过将 `createPluginRuntimeStore` 内联实现,插件现在可以在任意版本的 OpenClaw 上正常运行,无需担心版本兼容性。
|
|
6
|
+
|
|
7
|
+
v0.8.4 is a compatibility fix release that resolves plugin loading failures on older OpenClaw Gateway versions. By inlining the `createPluginRuntimeStore` implementation, the plugin now works correctly on any version of OpenClaw without version compatibility concerns.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **兼容旧版 OpenClaw Gateway(createPluginRuntimeStore 缺失)/ Compatible with older OpenClaw Gateway (missing createPluginRuntimeStore)**
|
|
12
|
+
修复在旧版 OpenClaw Gateway 上加载插件时报错 `TypeError: (0 , _pluginSdk.createPluginRuntimeStore) is not a function` 的问题。根因是 `src/runtime.ts` 直接从 `openclaw/plugin-sdk` 导入 `createPluginRuntimeStore`,而该函数在旧版 SDK 中并不存在。现已将其替换为内联实现的 `createRuntimeStore`,功能完全等价,不再依赖 SDK 版本。
|
|
13
|
+
Fixed `TypeError: (0 , _pluginSdk.createPluginRuntimeStore) is not a function` when loading the plugin on older OpenClaw Gateway versions. Root cause: `src/runtime.ts` imported `createPluginRuntimeStore` directly from `openclaw/plugin-sdk`, which doesn't exist in older SDK versions. Replaced with an inline `createRuntimeStore` implementation that is fully equivalent and no longer depends on SDK version.
|
|
14
|
+
|
|
15
|
+
- **openclaw 依赖版本约束放宽 / Relaxed openclaw dependency version constraint**
|
|
16
|
+
将 `package.json` 中的 `"openclaw": "^2026.3.0"` 改为 `"openclaw": "*"`。openclaw 由框架环境提供,插件不应限制其版本范围,避免版本约束导致安装失败或与用户已安装版本冲突。
|
|
17
|
+
Changed `"openclaw": "^2026.3.0"` to `"openclaw": "*"` in `package.json`. Since openclaw is provided by the framework environment, the plugin should not restrict its version range to avoid installation failures or conflicts with the user's installed version.
|
|
18
|
+
|
|
19
|
+
- **群聊消息处理崩溃 / Group chat message processing crash**
|
|
20
|
+
修复群聊时报错 `TypeError: Cannot read properties of undefined (reading 'config')` 导致 Agent 无法回复的问题。根因是 `src/policy.ts` 中 `resolveDingtalkGroupToolPolicy` 函数的参数签名与 OpenClaw SDK 的 `ChannelGroupContext` 接口不匹配——函数期望接收 `account: ResolvedDingtalkAccount`,但框架实际传入的是 `{ cfg, groupId, accountId, ... }`,导致 `account` 为 `undefined`。现已修正参数签名,内部通过 `resolveDingtalkAccount()` 正确获取账号信息。单聊不受影响(该函数仅在群聊场景下被框架调用)。
|
|
21
|
+
Fixed `TypeError: Cannot read properties of undefined (reading 'config')` crash in group chats that prevented the Agent from replying. Root cause: `resolveDingtalkGroupToolPolicy` in `src/policy.ts` had a parameter signature mismatch with the OpenClaw SDK's `ChannelGroupContext` interface — the function expected `account: ResolvedDingtalkAccount`, but the framework passes `{ cfg, groupId, accountId, ... }`, leaving `account` as `undefined`. Fixed by correcting the parameter signature and resolving the account internally via `resolveDingtalkAccount()`. Direct messages were unaffected (this function is only called by the framework in group chat scenarios).
|
|
22
|
+
|
|
23
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
27
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
28
|
+
|
|
29
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
30
|
+
openclaw plugins update dingtalk-connector
|
|
31
|
+
|
|
32
|
+
# 通过 Git 安装 / Install via Git
|
|
33
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 🔗 相关链接 / Related Links
|
|
37
|
+
|
|
38
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
39
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
**发布日期 / Release Date**:2026-03-24
|
|
44
|
+
**版本号 / Version**:v0.8.4
|
|
45
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 所有版本 / All versions
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Release Notes - v0.8.7
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新专注于**账号配置兼容性**与**网络代理控制**两大核心问题的修复。修复了驼峰命名账号 ID(如 `zhizaoDashuIP`)因大小写规范化导致配置查找失败的问题,同时统一了 WebSocket 连接与媒体下载的代理控制逻辑,确保 `DINGTALK_FORCE_PROXY` 环境变量在所有网络请求中生效一致。
|
|
6
|
+
|
|
7
|
+
This release focuses on two critical fixes: **account configuration compatibility** and **network proxy control**. It resolves an issue where camelCase account IDs (e.g., `zhizaoDashuIP`) failed to match their configurations due to forced lowercasing, and unifies proxy control logic across WebSocket connections and media downloads so that the `DINGTALK_FORCE_PROXY` environment variable is consistently respected.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **账号 ID 大小写敏感修复 / Account ID case-sensitivity fix**
|
|
12
|
+
修复 `normalizeAccountId` 函数强制将账号 ID 转为小写(`.toLowerCase()`)导致驼峰命名账号(如 `zhizaoDashuIP`)无法匹配配置的问题。现在账号 ID 仅做 `trim()` 处理,保留原始大小写,与配置文件中的 key 严格匹配。
|
|
13
|
+
Fixed `normalizeAccountId` forcibly lowercasing account IDs (`.toLowerCase()`), which caused camelCase account IDs (e.g., `zhizaoDashuIP`) to fail configuration lookup. Account IDs are now only trimmed, preserving original casing for strict matching against config keys.
|
|
14
|
+
|
|
15
|
+
- **WebSocket 连接代理控制统一 / Unified proxy control for WebSocket connections**
|
|
16
|
+
修复 `src/core/connection.ts` 中 WebSocket 连接未遵循 `DINGTALK_FORCE_PROXY` 环境变量的问题,现在与 HTTP 请求保持一致的代理控制逻辑。
|
|
17
|
+
Fixed WebSocket connections in `src/core/connection.ts` not respecting the `DINGTALK_FORCE_PROXY` environment variable; proxy control is now consistent with HTTP requests.
|
|
18
|
+
|
|
19
|
+
- **媒体下载代理控制统一 / Unified proxy control for media downloads**
|
|
20
|
+
修复 `src/core/message-handler.ts` 中图片/文件下载时代理配置与 HTTP 客户端不一致的问题,确保所有媒体下载请求统一遵循代理控制策略。
|
|
21
|
+
Fixed inconsistent proxy configuration for image/file downloads in `src/core/message-handler.ts`; all media download requests now follow the unified proxy control policy.
|
|
22
|
+
|
|
23
|
+
- **多账号消息去重误判修复 / Multi-account message deduplication false positive fix**
|
|
24
|
+
修复多账号(多机器人)场景下,同一条群消息 @多个机器人时,第二个机器人因消息去重缓存未按账号隔离,误将自己收到的消息判定为重复而跳过处理的问题。现在 `checkAndMarkDingtalkMessage` 的去重 key 带有 `accountId` 前缀,不同机器人账号的去重缓存完全隔离。
|
|
25
|
+
Fixed a false positive in multi-account (multi-bot) scenarios where a group message mentioning multiple bots caused the second bot to incorrectly skip processing, because the deduplication cache was not scoped per account. The deduplication key in `checkAndMarkDingtalkMessage` now includes an `accountId` prefix, fully isolating each bot's deduplication cache.
|
|
26
|
+
|
|
27
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
31
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
32
|
+
|
|
33
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
34
|
+
openclaw plugins update dingtalk-connector
|
|
35
|
+
|
|
36
|
+
# 通过 Git 安装 / Install via Git
|
|
37
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 🔗 相关链接 / Related Links
|
|
41
|
+
|
|
42
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
43
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
**发布日期 / Release Date**:2026-03-26
|
|
48
|
+
**版本号 / Version**:v0.8.7
|
|
49
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Release Notes - v0.8.8
|
|
2
|
+
|
|
3
|
+
## 🎉 新版本亮点 / Highlights
|
|
4
|
+
|
|
5
|
+
本次更新专注于**流式响应稳定性**、**Web UI 状态显示**和**媒体发送正确性**三大核心问题的修复。重构了 AI Card 并发创建逻辑,彻底解决多 block 响应产生多条独立气泡的问题;修复了 Web UI 中 Connected / Last inbound 字段始终显示 n/a 的问题;同时修正了文件发送时参数传递错误导致发送失败的 bug。
|
|
6
|
+
|
|
7
|
+
This release focuses on three core fixes: **streaming response stability**, **Web UI status display**, and **media sending correctness**. It refactors the AI Card concurrent creation logic to eliminate the multi-bubble issue in multi-block responses, fixes the Web UI showing n/a for Connected/Last inbound fields, and corrects a parameter error that caused file sending to fail.
|
|
8
|
+
|
|
9
|
+
## 🐛 修复 / Fixes
|
|
10
|
+
|
|
11
|
+
- **多 block 流式响应产生多条独立气泡 / Multi-block streaming response creates multiple bubbles** ([#369](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/369))
|
|
12
|
+
重构 `startStreaming` 的并发控制逻辑,从 `isCreatingCard` 布尔标志改为 `cardCreationPromise`,`await startStreaming()` 天然等待创建完成,彻底消除多 block 响应场景下每个 block 新建独立 AI Card 气泡的问题。
|
|
13
|
+
Refactored `startStreaming` concurrency control from a boolean `isCreatingCard` flag to a `cardCreationPromise`. `await startStreaming()` naturally waits for creation to complete, eliminating the issue where each block in a multi-block response created an independent AI Card bubble.
|
|
14
|
+
|
|
15
|
+
- **Web UI Connected / Last inbound 显示 n/a / Web UI shows n/a for Connected and Last inbound**
|
|
16
|
+
在 `src/core/connection.ts` 中新增 `onStatusChange` 回调,在连接建立、断开、收到消息时分别上报 `connected`、`lastConnectedAt`、`lastInboundAt` 字段;同时补全 `buildSessionContext` 在 `separateSessionByConversation: false` 分支中 `conversationId` 和 `groupSubject` 字段的透传。
|
|
17
|
+
Added `onStatusChange` callback in `src/core/connection.ts` to report `connected`, `lastConnectedAt`, and `lastInboundAt` fields on connection established, disconnected, and message received events. Also fixed `buildSessionContext` to correctly pass through `conversationId` and `groupSubject` fields in the `separateSessionByConversation: false` branch.
|
|
18
|
+
|
|
19
|
+
- **AI Card 函数调用参数错误 / AI Card function call parameter error**
|
|
20
|
+
修复 `src/reply-dispatcher.ts` 中 `createAICardForTarget`、`streamAICard`、`finishAICard` 的第三个参数从 `params.runtime` 改为 `account.config as DingtalkConfig`,第四个参数补充 `log`,确保函数签名与实现一致。
|
|
21
|
+
Fixed the third parameter of `createAICardForTarget`, `streamAICard`, and `finishAICard` in `src/reply-dispatcher.ts` from `params.runtime` to `account.config as DingtalkConfig`, and added `log` as the fourth parameter to match the function signatures.
|
|
22
|
+
|
|
23
|
+
- **sendFileProactive 参数错误导致文件发送失败 / File sending failure due to wrong sendFileProactive parameter**
|
|
24
|
+
修复 `src/services/media.ts` 中 `processFileMarkers` 和 `processRawMediaPaths` 调用 `sendFileProactive` 时错误地传入 `uploadResult.downloadUrl`,现已改为正确的 `uploadResult.cleanMediaId`,确保主动 API 模式下文件消息能正常发送。
|
|
25
|
+
Fixed `processFileMarkers` and `processRawMediaPaths` in `src/services/media.ts` incorrectly passing `uploadResult.downloadUrl` to `sendFileProactive`; now correctly uses `uploadResult.cleanMediaId` to ensure file messages are sent successfully in proactive API mode.
|
|
26
|
+
|
|
27
|
+
- **纯多账号配置下 probe 被跳过 / Probe skipped in pure multi-account config** ([#381](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/381))
|
|
28
|
+
修复 `src/onboarding.ts` 的 `getStatus()` 中,纯多账号配置(credentials 仅在 `accounts.*` 下)时 probe 被静默跳过,状态永远显示 "configured (connection not verified)" 的问题。现已改用 `resolveDingtalkAccount()` 统一获取账号信息。
|
|
29
|
+
Fixed `getStatus()` in `src/onboarding.ts` silently skipping probe in pure multi-account configs (credentials only under `accounts.*`), causing status to always show "configured (connection not verified)". Now uses `resolveDingtalkAccount()` for unified account resolution.
|
|
30
|
+
|
|
31
|
+
## ✨ 改进 / Improvements
|
|
32
|
+
|
|
33
|
+
- **音频时长提取安全性改进 / Audio duration extraction security improvement** ([#134](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues/134))
|
|
34
|
+
将 `extractAudioDuration` 从直接调用 `child_process.exec` 改为使用 `fluent-ffmpeg` 的 `ffprobe` API,与 `extractVideoMetadata` 保持一致,消除安全扫描误报。
|
|
35
|
+
Changed `extractAudioDuration` from directly calling `child_process.exec` to using `fluent-ffmpeg`'s `ffprobe` API, consistent with `extractVideoMetadata`, eliminating false positives in security scans.
|
|
36
|
+
|
|
37
|
+
- **SDK 接口迁移 / SDK interface migration**
|
|
38
|
+
将 `src/onboarding.ts` 中的类型引用从旧版 `ChannelOnboardingAdapter` 迁移到新版 `ChannelSetupWizardAdapter`,并将 `promptSingleChannelSecretInput` 的导入路径从 `openclaw/plugin-sdk` 更新为 `openclaw/plugin-sdk/setup`,适配最新 SDK 接口。
|
|
39
|
+
Migrated type references in `src/onboarding.ts` from the legacy `ChannelOnboardingAdapter` to the new `ChannelSetupWizardAdapter`, and updated the import path of `promptSingleChannelSecretInput` from `openclaw/plugin-sdk` to `openclaw/plugin-sdk/setup` to align with the latest SDK interface.
|
|
40
|
+
|
|
41
|
+
## 📥 安装升级 / Installation & Upgrade
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 通过 npm 安装最新版本 / Install latest version via npm
|
|
45
|
+
openclaw plugins install @dingtalk-real-ai/dingtalk-connector
|
|
46
|
+
|
|
47
|
+
# 或升级现有版本 / Or upgrade existing version
|
|
48
|
+
openclaw plugins update dingtalk-connector
|
|
49
|
+
|
|
50
|
+
# 通过 Git 安装 / Install via Git
|
|
51
|
+
openclaw plugins install https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 🔗 相关链接 / Related Links
|
|
55
|
+
|
|
56
|
+
- [完整变更日志 / Full Changelog](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/CHANGELOG.md)
|
|
57
|
+
- [使用文档 / Documentation](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/main/README.md)
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
**发布日期 / Release Date**:2026-03-29
|
|
62
|
+
**版本号 / Version**:v0.8.8
|
|
63
|
+
**兼容性 / Compatibility**:OpenClaw Gateway 0.4.0+
|