From fb8bb445ae33376688cb0e6c443c8ffd03d3e4a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Mon, 17 Nov 2025 19:49:31 +0800 Subject: [PATCH] Modify message handling for user input in builder.go --- internal/attackchain/builder.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/attackchain/builder.go b/internal/attackchain/builder.go index 10f7bf05..358b148e 100644 --- a/internal/attackchain/builder.go +++ b/internal/attackchain/builder.go @@ -316,8 +316,11 @@ func (b *Builder) buildChainGenerationPrompt(contextData *ContextData) (string, for i, msg := range contextData.Messages { promptBuilder.WriteString(fmt.Sprintf("消息%d [%s]:\n", i+1, msg.Role)) - // 检查是否已总结 - if summary, ok := contextData.SummarizedItems[msg.ID]; ok { + isUserMessage := strings.EqualFold(msg.Role, "user") + // 用户输入必须原样提供给攻击链模型 + if isUserMessage { + promptBuilder.WriteString(fmt.Sprintf("%s\n\n", msg.Content)) + } else if summary, ok := contextData.SummarizedItems[msg.ID]; ok { promptBuilder.WriteString(fmt.Sprintf("[已总结] %s\n\n", summary)) } else { content := msg.Content @@ -547,6 +550,9 @@ func (b *Builder) compressLongestItem(ctx context.Context, contextData *ContextD // 查找最长的消息 for _, msg := range contextData.Messages { + if strings.EqualFold(msg.Role, "user") { + continue + } if _, alreadySummarized := contextData.SummarizedItems[msg.ID]; alreadySummarized { continue }