openclaw_qq 2026-03-20 默认行为调整说明
这一轮的重点不是去改 OpenClaw core 的工作方式,而是把 openclaw_qq 的默认值和默认输出策略调得更保守一些,更贴近 QQ 的实际使用场景。
原则上,这轮变更主要是:
- 调整 QQ 插件默认配置。
- 修正 QQ 插件层的若干实现细节,让默认策略真正按文档落地。
- 不强行替换旧体验;如果你更喜欢之前的行为,仍然可以通过配置项手动改回去。
这轮为什么要调
前面连续排查了几类实际问题:
- 长回复虽然已经走了合并转发,但仍然会继续被拆成多个转发节点,阅读体验不好。
- 过程句和长正文之间的边界不稳定,有时该普通发的短过程句没发出来,有时一条最终长文又被拆成多条消息。
- QQ 侧引用消息、合并转发里的原文线索,没有稳定读进模型上下文。
interruptOnNewMessage文档虽然写的是默认关闭,但实现里实际接近“默认开启”,会影响 OpenClaw 自己的任务链路。- 群聊里的
/model这类 slash 指令会和普通聊天文本混在一起,既可能误触发,也可能输出过长后刷屏。 - 插件层自己扩出来的“动态探测 provider
/models全量目录”默认太激进,不够接近 OpenClaw 原本的/model使用习惯。
所以这轮做法不是大改逻辑,而是把默认行为收敛成更符合 QQ 场景的一套策略。
本轮默认值调整
1. 默认关闭“新消息打断旧回复”
interruptOnNewMessage=false
并且实现上也改成了:只有你显式配置为 true 时,才会因为同会话新消息而中断上一轮回复。
这意味着默认情况下,机器人会更倾向于把当前任务完整走完,不再因为中途又来一条消息就打断自己。
2. 默认按完整 assistant message 落地
blockStreaming=trueblockStreamingBreak=message_end
这组默认值的目标是:
- 短 commentary 过程句还能正常发出来。
- 但不会退回到更碎的逐段切片输出。
- commentary / final 尽量按完整消息边界落地,更适合 QQ 群聊阅读。
3. 默认长正文超过 300 字就改成 QQ 合并转发
forwardLongReplyThreshold=300
默认策略现在是:
- 短 commentary:普通消息直接发送。
- 长
final_answer:超过 300 字时自动改用 QQ 合并转发。
这样群里还能看到简短过程句,但长正文不会刷成一大片碎消息。
4. 默认转发不再按长度拆节点
forwardNodeCharLimit=0
这里的 0 不是关闭转发,而是表示:
- 启用合并转发后,不再继续按“每个节点多少字”人为拆分。
- 同一轮长回复会尽量合并进一个转发里。
如果你已经决定让长文走合并转发,那默认就不该再切成多个节点去影响阅读。
5. 默认关闭群聊裸 slash 指令
allowBareGroupCommands=false
默认情况下,群聊里单独发送 /model、/models、/newsession 这类 slash 指令不会直接触发。
当前更推荐的默认用法是:
椰子 /model椰子 /models椰子 /newsession
也就是说,默认是“先用唤醒词命中 QQ 插件,再执行本地指令”,而不是让群里的裸 slash 直接跑命令。
6. 默认关闭 /model 的动态全量模型探测
enableDynamicModelCatalog=false
这项配置关闭时,本地 /model 列表不会主动去探测各 provider 的 /models 接口拉取全量目录,而是优先按本地配置展示。
这样做的目的是让默认行为更保守,也更接近 OpenClaw 原本“按现有配置/allowlist 工作”的思路;如果你确实需要插件层动态聚合所有模型目录,再手动开启即可。
这轮插件层补强了什么
除了默认值调整,这轮还补了几处 QQ 插件层实现,让上面的默认策略真的能工作:
1. reply / forward 上下文读取补强
现在 QQ 消息里的:
- 引用消息原文
- 合并转发里的文本线索
会更稳定地进入上下文构建,模型更容易读到“你在引用谁、引用内容是什么”。
2. 单轮长回复不再因为 block 被拆成多个转发节点
排查时发现一个实际问题:OpenClaw core 在某些情况下会把同一轮最终回答拆成多个 block 派发给插件,而 QQ 插件拿不到稳定 phase 时,之前会把这些内容继续拆开发。
这轮在 QQ 插件层补了更保守的聚合策略:
- 连续 unknown block 会先短暂缓冲。
- 短过程句可以单独发。
- 真正的长正文则作为一个整体判断是否走合并转发。
- 如果走转发,默认不再按节点长度继续拆。
所以现在更接近下面这个目标行为:
- 过程句不长,就普通发出来。
- 后面的完整长文如果超过阈值,就整体进一个 QQ 合并转发。
- 不再把一轮 final 因为内部 block 边界继续切成多个转发节点或多条零碎消息。
3. 椰子 /model 现在走稳定的本地命令分支
这轮还把群聊 slash 命令识别收紧成了更明确的规则:
- 只认消息开头的
/... - 或认“唤醒词后面紧跟的
/...”
这样做有两个目的:
椰子 /model这类真正想执行的管理指令,可以稳定落到 QQ 插件本地/model分支。- 普通聊天文本里夹带
/model、/token这类片段时,不再更容易被误判成指令。
4. 群聊 /model 默认强制优先走合并转发
针对 /model / /models 这类天然容易很长的输出,这轮默认行为已经改成:
- 群聊里先尝试 QQ 合并转发。
- 默认不按节点长度拆。
- 如果单节点转发失败,再自动回退到“同一个合并转发里的多节点”。
- 只有转发路径全失败,才会退回普通分段消息。
所以默认目标不是让 /model 再刷成四五条普通消息,而是尽量收敛成一个 QQ 合并转发。
如果你想恢复之前的体验
这轮不是删功能,而是调整默认值。
如果你更喜欢以前那种更激进的切换/拆分方式,可以手动改回,例如:
{
"channels": {
"qq": {
"interruptOnNewMessage": true,
"allowBareGroupCommands": true,
"enableDynamicModelCatalog": true,
"blockStreamingBreak": "text_end",
"forwardLongReplyThreshold": 800,
"forwardNodeCharLimit": 1000
}
}
}
这样会更接近旧体验:
- 新消息可以打断旧回复。
- 群聊里裸
/model这类命令又可以直接触发。 /model会重新主动探测 provider/models全量目录。- 输出边界更碎。
- 长文需要更长才转发。
- 转发节点会继续按长度切分。
补充(2026-03-20 晚):会话命令交互补齐
前面一轮默认值收口之后,又继续补了一轮“会话”交互层,重点仍然是只改 QQ 插件层,不去碰 OpenClaw core 的底层会话结构。
1. /临时 系列命令统一收口为 /会话
现在对外主命令改成:
/会话/会话列表/会话状态/会话重命名/退出会话/会话结束
旧别名仍然保留兼容:
/临时、/临时列表、/临时状态、/临时重命名、/退出临时、/临时结束tmp、tmplist、tmpstatus、tmprename、exittemp、tmpend
也就是说,老用法不会坏,但默认文案和帮助提示全部收口到“会话”体系。
2. /会话列表 现在默认会显示“默认会话”
之前的一个实际问题是:列表里只显示命名会话槽,不显示最开始那条主线会话,所以命名会话能切,默认会话反而切不回去。
现在一个全新的群里直接执行:
/会话列表
就会看到:
1. 默认会话
如果再执行:
/会话 任务二
那么再次 /会话列表 就会看到:
1. 默认会话
2. 任务二
3. /会话 <序号> 现在支持数字切换
这次还补上了按编号直接切换:
/会话 1直接切回默认会话/会话 2切到列表里的第 2 个会话/会话 3切到列表里的第 3 个会话
这样群里同时挂多个任务时,不需要每次重新输入完整会话名。
4. 兼容原则没有变
这部分仍然遵守同一个原则:
- 不改 OpenClaw core 的会话主逻辑
- 不改底层
tmp slot的持久化结构 - 只在 QQ 插件层调整命令入口、列表视图、数字切换和默认文案
所以如果你更喜欢旧的 /临时 叫法,旧命令和老数据都还能继续工作。
仓库与文档已同步
本轮代码和文档已经继续同步到 GitHub,当前对应两次连续提交:
f1fb87eTighten QQ slash defaults and model catalog behavior
Tighten QQ slash defaults and model catalog behavior · constansino/openclaw_qq@f1fb87e · GitHub80c8a66Refine QQ session command UX
https://github.com/constansino/openclaw_qq/commit/80c8a66c0ff38df356dffbd67bf2a72637d872e2
本轮默认行为与会话交互说明文档:
这次补充后,仓库里同步更新的主要文档包括:
README.mddocs/2026-03-20-default-behavior-update.mddocs/config-reference.mddocs/advanced.md
结论
这一轮的核心不是“改 OpenClaw 的工作方式”,而是把 openclaw_qq 的默认行为调得更保守、更贴近 QQ 的实际交互习惯:
- 默认不打断。
- 过程句正常发。
- 长正文超过阈值自动转发。
- 转发后默认不再拆节点。
- 群聊裸 slash 默认不触发,改成“唤醒词 + 指令”。
/model默认不主动探测 provider/models全量目录。- reply / forward 上下文读取更稳定。
如果你需要之前的体验,配置项仍然保留,可以自己切回去。