From 0a164fe4b9dfcb25c574e335bf12c5973f6e26c0 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Thu, 10 Sep 2026 21:18:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(qq):=20qq=5Fget=5Fmessage=20=E5=A3=B0?= =?UTF-8?q?=E6=98=8E=20ContextPolicy=3Dprune=EF=BC=88=C2=A713.8=20?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E9=A1=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 消息正文只在当轮需要(决定怎么回复),用完即裁剪。不裁的后果是每条 QQ 消息的完整正文都留在 L0 上下文里,长会话下持续挤占 token 预算。 内核侧 §13.8 早已就位:StageAfterToolcall 之后按 ToolDef.ContextPolicy 调 RelevanceContext.Prune(772a494),但 QQ 侧一直没声明,等于功能空转。 --- example/qq/plugin.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/example/qq/plugin.go b/example/qq/plugin.go index 5c40362..79f0f86 100644 --- a/example/qq/plugin.go +++ b/example/qq/plugin.go @@ -412,6 +412,10 @@ type 枚举: text(文字)/ voice(语音转文字后发送)/ image(图 Name: tp + "get_message", Description: botInfo + "通过 message_id 从 NapCat 实时获取消息正文、发送者、附件等信息。message_id 从中断消息的 message_id=N 获取,或从 reply_to 的 message_id 获取。", NoMemory: false, Cleaner: cleaner, + // 消息正文只在当轮需要(决策怎么回复);用完即裁剪。 + // 不裁的后果是每条 QQ 消息的完整正文都留在 L0 上下文里, + // 长会话下持续挤占 token 预算(§13.8)。 + ContextPolicy: "prune", Parameters: map[string]interface{}{ "type": "object", "properties": map[string]interface{}{ "message_id": map[string]interface{}{"type": "integer", "description": "NapCat消息ID(从中断消息的 message_id=N 或 reply_to.message_id 获取)"},