fix: enhance message handling by refining tool message sanitization and updating WeCom message sending method

This commit is contained in:
Zhang Rui 2026-02-27 16:12:59 +08:00
parent 80fa303c2e
commit 7be27f2d92
3 changed files with 15 additions and 5 deletions

View file

@ -229,8 +229,19 @@ func sanitizeHistoryForProvider(history []providers.Message) []providers.Message
logger.DebugCF("agent", "Dropping orphaned leading tool message", map[string]any{}) logger.DebugCF("agent", "Dropping orphaned leading tool message", map[string]any{})
continue continue
} }
last := sanitized[len(sanitized)-1] // Walk backwards to find the nearest assistant message,
if last.Role != "assistant" || len(last.ToolCalls) == 0 { // skipping over any preceding tool messages (multi-tool-call case).
foundAssistant := false
for i := len(sanitized) - 1; i >= 0; i-- {
if sanitized[i].Role == "tool" {
continue
}
if sanitized[i].Role == "assistant" && len(sanitized[i].ToolCalls) > 0 {
foundAssistant = true
}
break
}
if !foundAssistant {
logger.DebugCF("agent", "Dropping orphaned tool message", map[string]any{}) logger.DebugCF("agent", "Dropping orphaned tool message", map[string]any{})
continue continue
} }

View file

@ -463,8 +463,7 @@ func (al *AgentLoop) runAgentLoop(ctx context.Context, agent *AgentInstance, opt
} }
// 9. Log response // 9. Log response
responsePreview := utils.Truncate(finalContent, 120) logger.InfoCF("agent", fmt.Sprintf("Response: [%s]", finalContent),
logger.InfoCF("agent", fmt.Sprintf("Response: %s", responsePreview),
map[string]any{ map[string]any{
"agent_id": agent.ID, "agent_id": agent.ID,
"session_key": opts.SessionKey, "session_key": opts.SessionKey,

View file

@ -231,7 +231,7 @@ func (c *WeComAppChannel) Send(ctx context.Context, msg bus.OutboundMessage) err
"preview": utils.Truncate(msg.Content, 100), "preview": utils.Truncate(msg.Content, 100),
}) })
return c.sendTextMessage(ctx, accessToken, msg.ChatID, msg.Content) return c.sendMarkdownMessage(ctx, accessToken, msg.ChatID, msg.Content)
} }
// handleWebhook handles incoming webhook requests from WeCom // handleWebhook handles incoming webhook requests from WeCom