Skip to content

fix(qq-official): 群里 @ 机器人时对话对象标成点名自己,不再被模型当闲聊不出声 - #1234

Merged
SuInk merged 1 commit into
mainfrom
claude/qq-official-at-addressing
Oct 27, 2026
Merged

SuInk merged 1 commit into
mainfrom
claude/qq-official-at-addressing

Conversation

@SuInk

@SuInk SuInk commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

QQ 官方机器人在群里被 @ 时,给模型的「当前消息的对话对象」现在会标明点名了自己(mentions_self=true)。以前这一项一直是 false,模型可能把明明在叫它的话当成群友闲聊,send 空正文、不出声。

Why

生产上 2026-10-28 00:04 有人在群里 @ 机器人说「试试发个md表格」,事件页显示「模型判断这轮不需要回复:send 正文为空」。

根因:QQ 官方机器人会把 @ 机器人的那一段从正文里剥掉,「被点名」只体现在事件的 ToMe=true 上(GROUP_AT_MESSAGE_CREATE 或 mentions 里的 is_you)。addressingForEvent 只从 at 段和 MentionTargets 里找提及,于是给模型的对话对象是 {"reply_target":"none","mentions":[],"mentions_self":false},等于告诉它「没人叫你」。路由那一步按 ToMe 判定要回复,但到了主回复模型这里,它按这份对话对象选择了沉默。

改了什么

  • addressingForEvent:QQ 官方机器人的群消息 ToMe=true 且还没有指向自己的提及时,补一条 {target: "self"},mentions_self=true。
  • 只限 QQ 官方机器人:OneBot 的 ToMe 也可能来自叫名字,照旧只认 at 段;全量群消息模式下没 @ 机器人的消息 ToMe=false,不会被补成点名。

用户影响

QQ 官方机器人在群里被 @ 后不会再因为「以为没人叫它」而不回。其他平台不变。

验证

  • scripts/test-serial.sh ./model/assistant:-race 和 TZ=UTC 均通过。
  • 新增 TestAddressingMarksQQOfficialGroupAtAsSelf:官方机器人 ToMe 的群消息标成点名自己;ToMe=false 不补;OneBot 的 ToMe 不受影响。
  • 生产回放(gpt-6.1-sol,和生产同一模型、同一配置档):取那一轮完整的生产请求原样重放,只把对话对象改成本 PR 生成的内容。原请求 3/3 次 send 空正文;改后 3/3 次正常发出 Markdown 表格。
  • 生产同期这台官方机器人群里另有 1 条消息(00:08「发个md表哥」)的 context canceled 不是故障:同一个人 4 秒后追发「表格」,那一轮按追发合并被取消后带着两条重答并正常发出,与本 PR 无关。

QQ 官方机器人把 @ 机器人的那一段从正文里剥掉,被点名只体现在 ToMe 上;
addressingForEvent 只认 at 段,于是告诉模型 mentions_self=false,模型把明明叫它的话
当成群友闲聊,send 空正文。现在官方机器人群消息 ToMe 时补一条指向自己的提及。
@SuInk
SuInk force-pushed the claude/qq-official-at-addressing branch from e5143ce to 0253778 Compare October 27, 2026 17:16
@SuInk
SuInk merged commit 78d936c into main Oct 27, 2026
14 checks passed
@SuInk
SuInk deleted the claude/qq-official-at-addressing branch October 27, 2026 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant