From f723194a17c6095ef256dcc38e75f56dc499f043 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sun, 5 Jul 2026 13:40:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20group=5Fambient=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E7=AE=A1=E7=90=86=E5=91=98=E5=92=8C=E9=9D=9E?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E5=AE=A1=E6=9F=A5=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 管理员在群里说话不@bot时,group_ambient审查提示不应限制其工具使用权限。 现在管理员走「群聊审查模式-管理员」提示,允许正常使用工具; 普通群友仍然走严格审查,防止随意插话。 Co-Authored-By: Claude --- backend/ai-core/cmd/main.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/backend/ai-core/cmd/main.go b/backend/ai-core/cmd/main.go index 2e22022..a99b487 100644 --- a/backend/ai-core/cmd/main.go +++ b/backend/ai-core/cmd/main.go @@ -1109,21 +1109,21 @@ func handleChat( // 平台静默观察模式:只记录消息、提取记忆、触发后台思考,不生成回复。 if req.Mode == "group_ambient" { - // 群聊环境消息 — 审查是否值得回应 - message := req.Message - ctxBuilder.CacheMessage(req.SessionID, model.RoleUser, message) - if thinker != nil { - thinker.RecordUserMessage(req.SessionID) - } - // 在消息前加审查指令,让 LLM 自己判断是否插话。 - // 关键规则: - // 1. 绝大多数群聊消息不需要你回复。只有话题直接涉及你、有人@你、或你真有特别相关的信息时才开口。 - // 2. 如果有人说"别说话""闭嘴""先别说""别让ta说"之类让你安静的话,必须立刻闭嘴,后续几条消息都不要回复。 - // 3. 不想说话时不要发消息。不要为了刷存在感而发言。 - // 4. 每轮最多说 1-2 句话,不要长篇大论。 - req.Message = "【群聊审查模式】以下是群聊里的一条消息。绝大多数群聊消息你不需要回复。只有以下情况才开口:(1)有人直接@你或叫你名字 (2)话题与你高度相关 (3)你有重要信息补充。如果有人让你闭嘴/别说话,必须严格遵守。每次回复最多1-2句话。如果你被唤醒了但觉得不该说话,在消息开头写 【不发送】——这条消息就不会被发出去,只在你心里想过。\n\n" + message - req.Mode = "text" + // 群聊环境消息 — 审查是否值得回应 + message := req.Message + ctxBuilder.CacheMessage(req.SessionID, model.RoleUser, message) + if thinker != nil { + thinker.RecordUserMessage(req.SessionID) } + // 管理员消息 vs 普通群友消息使用不同的审查提示。 + // 管理员在群里说话(不@bot)也走 group_ambient,但不应限制其使用工具的权限。 + if req.IsAdmin { + req.Message = "【群聊审查模式-管理员】以下是群聊里的一条消息,发送者是开拓者本人(管理员)。\n你可以正常回应他的指令和请求,包括使用各种工具。但如果他只是闲聊或对别人说话,你可以保持安静。\n每次回复最多1-2句话。如果你觉得不该说话,在消息开头写 【不发送】。\n\n" + message + } else { + req.Message = "【群聊审查模式】以下是群聊里的一条消息。绝大多数群聊消息你不需要回复。只有以下情况才开口:(1)有人直接@你或叫你名字 (2)话题与你高度相关 (3)你有重要信息补充。如果有人让你闭嘴/别说话,必须严格遵守。每次回复最多1-2句话。如果你被唤醒了但觉得不该说话,在消息开头写 【不发送】——这条消息就不会被发出去,只在你心里想过。\n\n" + message + } + req.Mode = "text" + } if req.Mode == "platform_silent" { if thinker != nil { thinker.RecordUserMessage(req.SessionID)