Mingkuan
3eee78922e
fix(upgrade): 修复 openclaw 2026.4.9 兼容性问题并增强日志上报 ( #259 )
...
### 修复
- **升级脚本适配OpenClaw 2026.4.9版本**:
- 修复独立版插件安装失败问题。
- 修复独立版与融合版兼容问题。
- 新增通道配置自动修复(`additional properties` 校验错误)
2026-04-10 01:27:58 +08:00
Mingkuan
e74be7a3f8
Release/1.7.1 ( #247 )
...
* feat: 添加审批功能(Inline Keyboard 按钮交互)
- 新增 approval-handler.ts:监听 Gateway 审批事件,发送带 Inline Keyboard 的审批消息
- api.ts:添加 sendC2CMessageWithInlineKeyboard / sendGroupMessageWithInlineKeyboard
- gateway.ts:处理 Inline Keyboard 按钮回调,注册/注销 approval-handler
- channel.ts:配置 execApprovals(3.28)和 approvals(3.31+)抑制框架 Forwarder 重复通知
- types.ts:添加 InlineKeyboard / KeyboardButton 等 Keyboard 类型定义
- openclaw-plugin-sdk.d.ts:补充 approval-runtime 模块声明
* feat: 增加outbound过滤
* feat: 新增审批相关配置
1. 斜杠指令当遇到报错的时候,支持将文本代理给模型来回复用户
* feat: 新增gateway审批路由注册
* feat: 新增gateway审批路由注册
* feat: 修复低版本发现的问题
1. 3.11版本兼容性处理,动态加载gateway依赖
2. 兼容3.28版本,声明审批功能可用
3. 恢复默认配置的文案修改
* feat: 修复gateway依赖加载失败问题
* feat: update 1.7.1 release
v1.7.1
2026-04-03 03:12:30 +08:00
Mingkuan
2ea3dbf452
Release/1.7.0 ( #243 )
...
* feat: support raw msg ref
* fix: mention msg content
* fix: qqmedia tag
* feat: parse msgrefid
* feat: 流式消息能力增强、斜杠指令扩展与媒体标签处理优化
## 流式消息 (streaming)
- 支持流式消息引用:回复时携带引用消息 ID,通过 message_reference 字段传递
- 重构回复边界(reply boundary)机制:检测到模型返回新回复(文本前缀不匹配)时,
不再终结当前会话并创建新 controller,改为在已有内容后拼接 "\n\n" 分隔符,
在同一流式会话中继续发送,移除 onReplyBoundary 回调及 gateway 中的重建逻辑
- 移除遇到未闭合媒体标签时提前终结流式会话的逻辑,改为继续正常流式发送安全文本
部分(performFlush 内置的 stripIncompleteMediaTag 已能保证安全),等待下次
onPartialReply 带来更多文本后标签自然闭合
- 移除 sendStreamChunk / doStartStreaming 中冗余的 resp.code 错误检查
- streaming 阶段状态转换新增 idle 回退(首分片发送失败时可回退到 idle)
- sendC2CStreamMessage 返回类型从 StreamMessageResponse 统一为 MessageResponse;
仅终结分片(DONE)触发 sendAndNotify 引用回调,中间分片直接调用 apiRequest
- 移除 types.ts 中不再使用的 StreamMessage / PendingReply 等冗余类型定义
- 补充 streaming-controller 测试用例:覆盖回复边界检测、多段拼接连续发送、
sentIndex 连续性等场景
## 斜杠指令 (slash-commands)
- 新增 /bot-streaming on|off 指令,支持用户在私聊中查看和切换流式消息开关,
修改后即时生效并持久化到 openclaw.json 配置文件
- 指令仅在 c2c(私聊)场景下可用,群聊场景下返回提示信息
## API 模块 (api)
- 引入 ApiLogger 接口与 setApiLogger 注入机制,将 api 模块内散落的
console.log/error 调用统一替换为可注入的 log 实例,便于日志分级和集中管理
- gateway 启动时自动调用 setApiLogger 注入框架 log 实例
- startBackgroundTokenRefresh 中将参数名 log 改为 refreshLog,
避免与模块级 log 变量冲突
## 网关 (gateway)
- 简化 StreamingController 创建流程:移除 createStreamingController 工厂函数
及 onReplyBoundary 回调注册,直接内联创建 controller
- dispatch 失败时统一输出错误日志,包含是否收到过响应的信息
## 媒体标签处理 (media-send)
- 修复 splitMessageByMediaTags 中正则贪婪匹配导致的字符异常问题,
改为非贪婪匹配避免跨标签吞并内容
- 新增代码块感知逻辑(isInsideCodeBlock):在匹配媒体标签前先识别并排除
围栏代码块(```)区域,避免代码块中的标签被误当作媒体资源处理
- hasMediaTags / findFirstClosedMediaTag / splitByMediaTags 均集成代码块过滤
- findFirstClosedMediaTag 不再对 textBefore 做 trim 和多余换行合并处理
- 新增 code-block-media-tag 测试文件,覆盖代码块内标签忽略、混合内容拆分、
嵌套代码块、未闭合代码块等边界场景
* ci: 添加插件测试环境流水线流程
* fix: 文件超2G错误信息优化
* fix: 优化文件上传兜底文案
* fix(api): 流式消息不存储引用,移除 DONE 分片的 sendAndNotify 回调
* feat: update ref struct
* fix(ref); 移除引用中暂时无用的赋值。
* feat: 支持自然语言更新版本
* feat(qqbot-upgrade): 声音qqbot-upgrade skill
* feat: 增加/bot-streaming不支持时的默认回复
* refactor: 重构升级脚本降级架构 v4 + 安全扫描绕过 + 内置插件禁用
## 降级架构重构
- 两级降级:Level 1 原生命令 → Level 2 npm pack + openclaw install 本地目录
- Level 1 去掉无效的多源重试(ClawHub 限流时换 npm 源无意义)
- Level 2 多源重试(npm pack 直接走 npm registry,真正绕过 ClawHub)
## 安全扫描绕过(openclaw ≥2026.3.30)
- ≥3.30 跳过 update 路径(update 不支持 --dangerously-force-unsafe-install)
- Level 2 传解压后的目录路径而非 tarball(绕过 installPluginFromArchive 漏传 flag 的 bug)
- 版本检测:仅 ≥3.30 时加 --dangerously-force-unsafe-install
## 内置插件冲突处理
- 默认禁用内置冲突插件(openclaw ≥2026.3.31 内置了 qqbot)
- 安装前清理历史遗留 ID(qqbot/openclaw-qq)的 entries/installs/allow
- 安装后验证内置插件确实已禁用
## 其它优化
- update 超时从 1000s 缩短至 180s(失败更快降级)
- install 前清除配置中的插件记录(避免 already exists)
- 精简告警信息:超时提示静默化,重试中间失败去掉 ⚠️
- 步骤标签对齐 [1/4]~[4/4]
* feat: inject OpenClaw version into User-Agent via runtime
- Add PluginRuntime.version field to openclaw-plugin-sdk.d.ts
- Replace static PLUGIN_USER_AGENT const with getPluginUserAgent() function
so the OpenClaw version can be updated after runtime injection
- Add setOpenClawVersion() to api.ts for runtime to call
- Call setOpenClawVersion(runtime.version) in setQQBotRuntime()
- Update all PLUGIN_USER_AGENT usages to getPluginUserAgent()
- Fall back to OPENCLAW_VERSION / OPENCLAW_SERVICE_VERSION env vars
before runtime is available
* fix: remove env-based OpenClaw version fallback
Reading version from process.env is a security risk as env vars
can be tampered. Use runtime.version exclusively; fall back to
"unknown" until runtime is injected.
* fix(upgrade): 切换 gateway.reload.mode=hot 防止安装期间配置写入触发 cgroup kill
问题根因:
- openclaw gateway restart 使用 systemctl --user restart
- systemd 默认 KillMode=control-group,重启时清理整个 cgroup
- 安装流程多次写 openclaw.json,hybrid 模式下触发 restart,脚本被杀
修复:
- snapshot_config 提前到所有写操作前(含 disable_builtin_plugins)
- 安装窗口开始时切换 gateway.reload.mode=hot(热更新不重启)
- 新增 restore_reload_mode():有原值 config set 恢复,无原值 config unset 删除
- cleanup_on_exit 和 [4/4] 前均调用恢复,正常/异常退出均兜底
* fix: 修复windows下路径编码异常导致文件发送错误的问题
* feat: add preferOver to disable built-in qqbot plugin
* feat: 插件升级skill优化
* feat: 更新skill的仓库名
* feat: update 1.7.0 changelog
* Merge branch 'feat/1.7.0-revertskill' into 'main' (merge request !44 )
feat: revert qqbot-upgrade skill
---------
Co-authored-by: cxyhhhhh <chenxuyang.win@qq.com >
v1.7.0
2026-04-02 16:51:19 +08:00
Mingkuan
3a89fe20bc
feat: update qqbot-upgrade scripts ( #244 )
2026-04-02 13:28:03 +08:00
ryanlee-gemini
038c97da19
Merge pull request #236 from tencent-connect/docs/upgrade-note-1.6.7
...
docs: add note of release 1.6.7
2026-03-30 22:18:52 +08:00
rianli
5ba2b706d6
docs: add note that v1.6.6 and below do not support /bot-upgrade hot update
2026-03-30 22:12:32 +08:00
ryanlee-gemini
6d172abe69
Merge pull request #235 from tencent-connect/release/1.6.7
...
Release/1.6.7
v1.6.7
2026-03-30 21:48:55 +08:00
rianli
d684aded65
Merge origin/main into release/1.6.7
2026-03-30 21:44:48 +08:00
lemanzhang
fa195ca0b7
fix: allow same version for npm package versioning
2026-03-30 20:31:33 +08:00
rianli
8c8d30393f
fix/upgrade-script-config-cleanup (merge request !27 )
...
Squash merge branch 'fix/upgrade-script-config-cleanup' into 'main'
1. 升级脚本与热更指令稳定性优化 2.升级脚本性能优化 3.提醒功能多账户 Bug 修复
2026-03-30 12:28:03 +00:00
neilhwang
1a47355aab
feat: 增加npm版本发布能力
2026-03-27 17:06:33 +08:00
neilhwang
e26bad6bba
feat: 增加npm版本发布能力
2026-03-27 16:40:59 +08:00
Mingkuan
92adca68f5
Release/1.6.6 ( #223 )
...
### 新增
- **大文件分片上传**:新增 `chunked-upload.ts` 模块,支持对大文件自动分片并行上传,包含分片级重试、进度回调和超时控制。同时支持 C2C 和群聊场景。
- **`/bot-clear-storage` 指令**:新增存储清理指令,可清理插件本地缓存数据。
- **文件下载 SSRF 防护**:新增 `ssrf-guard.ts` 模块,下载远程文件前对 URL 做 DNS 解析并校验 IP,拒绝内网/保留网段地址,防止模型输出的恶意链接触达内网服务。
### 变更
- **下载目录按账户/对话隔离**:附件下载路径从统一的 `~/.openclaw/media/qqbot/downloads/` 改为 `downloads/{appId}/{peerId}/`,按账户和对话隔离,避免多账户文件互相覆盖。
- **附件下载失败提示优化**:下载失败时区分"超时"和"失败",给模型更明确的上下文提示。
---------
Co-authored-by: sophia
Co-authored-by: cxyhhhhh <chenxuyang.win@qq.com >
Co-authored-by: rian
v1.6.6
2026-03-27 00:36:42 +08:00
rianli
75769de2d6
Merge branch 'feat/changelog' into 'main' (merge request !16 )
...
feat: update 1.6.6 changelog
2026-03-26 15:47:46 +00:00
WideLee
eee4f15dd8
feat: update 1.6.6 changelog
2026-03-26 22:29:32 +08:00
louiechen
7e6032e8a8
Merge branch 'docs/rename-images' into 'main' (merge request !19 )
...
docs: update CHANGELOG
2026-03-26 11:10:52 +00:00
rianli
6eb41cdf0e
docs: update CHANGELOG
2026-03-26 19:08:44 +08:00
sophiasong
929f2b67af
Merge branch 'feat/group' into 'main' (merge request !17 )
...
feat/group
feat: update changelog
2026-03-26 08:50:23 +00:00
cxyhhhhh
9fbb09b5e5
feat: update changelog
2026-03-26 16:46:56 +08:00
cxyhhhhh
06470266b4
feat: parse face
2026-03-26 16:46:56 +08:00
cxyhhhhh
8afec9c0c8
feat: del join group msg
2026-03-26 16:46:56 +08:00
cxyhhhhh
3a20b01f31
feat: update changelog
2026-03-26 16:46:56 +08:00
cxyhhhhh
13f2194eed
feat: update config
2026-03-26 16:46:56 +08:00
cxyhhhhh
c66872b205
fix: adjust media context
2026-03-26 16:46:56 +08:00
cxyhhhhh
048468d1b1
feat: add agent config
2026-03-26 16:46:56 +08:00
cxyhhhhh
263539e5cd
feat: update query config
2026-03-26 16:46:56 +08:00
cxyhhhhh
136aab5767
fix: update config
2026-03-26 16:46:56 +08:00
cxyhhhhh
6909c6280d
feat: optimize logic
2026-03-26 16:46:56 +08:00
cxyhhhhh
2d76f0c5e9
feat: update interaction event
2026-03-26 16:46:56 +08:00
cxyhhhhh
4a3abfeeff
feat: adjust merged reply context
2026-03-26 16:46:56 +08:00
cxyhhhhh
f7989d88e4
feat: update group config
2026-03-26 16:46:56 +08:00
cxyhhhhh
0e8cccdf10
feat: add interaction event
2026-03-26 16:46:56 +08:00
cxyhhhhh
6eec33ee8c
feat: support group messages
2026-03-26 16:46:56 +08:00
walli
d4952709c5
Merge branch 'fix/fix-concurrency' into 'main' (merge request !18 )
...
fix/fix-concurrency
fix: fix FALLBACK_MSG
2026-03-26 08:43:34 +00:00
sophiasong
cf6481f312
fix: 调整上传失败兜底文案
2026-03-26 16:40:24 +08:00
sophiasong
4d1a07293b
fix: fix FALLBACK_MSG
2026-03-26 14:29:53 +08:00
sophiasong
bd1c515109
fix: 调整文件上传重试逻辑兜底文案
2026-03-26 14:24:25 +08:00
sophiasong
d4e7a46b21
fix: fix Concurrency
2026-03-26 14:11:00 +08:00
ryanlee-gemini
fa27c477d1
Merge pull request #221 from tencent-connect/feat/changelog
...
Feat/changelog
v1.6.5
2026-03-26 11:58:59 +08:00
WideLee
c406ce18e8
feat: update 1.6.6 changelog
2026-03-26 04:41:59 +08:00
walli
b966314d40
Merge branch 'fix/fix-concurrency' into 'main' (merge request !15 )
...
fix: fix file fallback message
2026-03-25 20:26:14 +00:00
sophiasong
bdc5471a93
fix: fix file fallback message
2026-03-26 04:08:16 +08:00
walli
2fee83889f
Merge branch 'fix/fix-concurrency' into 'main' (merge request !14 )
...
fix: fix upload concurrency
2026-03-25 19:22:49 +00:00
sophiasong
babb8febbf
fix: fix upload concurrency
2026-03-26 03:21:22 +08:00
leoqlin
ffac229e6e
Merge branch 'fix/finish_upload' into 'main' (merge request !12 )
...
fix: adjust file upload concurrency
2026-03-25 16:49:20 +00:00
sophiasong
8da81ca325
fix: adjust file upload concurrency
2026-03-26 00:46:54 +08:00
rianli
196e12d60a
Merge branch 'feat/cherry-pick-upgrade-preload' into 'main' (merge request !11 )
...
feat/cherry-pick-upgrade-preload
fix: preload.cjs 改为同步 require 加载 ESM,修复框架检测不到 register/activate 的问题
- preload.cjs: 移除异步 import() + Proxy 方案,改用 Node 22 原生 CJS require ESM
- package.json: 添加 postbuild 脚本,build 后自动同步产物到 extensions 目录
- upgrade-via-source.sh: 安装后将 extensions 副本替换为 symlink 指向源码目录
2026-03-25 16:13:34 +00:00
rianli
37163252ec
fix: remove symlink replacement in upgrade script
...
The openclaw framework rejects symlinks pointing outside the extensions
directory, so the symlink-to-source approach doesn't work. Removed the
logic that replaced the installed plugin copy with a symlink.
2026-03-26 00:04:28 +08:00
rianli
f078f0d2f5
fix: preload.cjs 改为同步 require 加载 ESM,修复框架检测不到 register/activate 的问题
...
- preload.cjs: 移除异步 import() + Proxy 方案,改用 Node 22 原生 CJS require ESM
- package.json: 添加 postbuild 脚本,build 后自动同步产物到 extensions 目录
- upgrade-via-source.sh: 安装后将 extensions 副本替换为 symlink 指向源码目录
2026-03-25 23:41:08 +08:00
rianli
64b33cdb1e
Merge remote-tracking branch 'woa/main' into feat/cherry-pick-upgrade-preload
2026-03-25 23:31:01 +08:00