mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-07 13:07:57 +02:00
Add files via upload
This commit is contained in:
@@ -3,7 +3,6 @@ package handler
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"cyberstrike-ai/internal/agent"
|
||||
"cyberstrike-ai/internal/database"
|
||||
@@ -143,64 +142,3 @@ func (h *AgentHandler) prepareMultiAgentSession(req *ChatRequest) (*multiAgentPr
|
||||
UserMessageID: userMessageID,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// prepareSessionAfterUserInterrupt 用户「中断并说明」后:结束当前助手占位、写入用户说明、新建助手占位,并生成下一轮 Run 所需的 History + FinalMessage。
|
||||
func (h *AgentHandler) prepareSessionAfterUserInterrupt(conversationID, prevAssistantMessageID, reason string, roleTools []string) (*multiAgentPrepared, error) {
|
||||
if strings.TrimSpace(conversationID) == "" {
|
||||
return nil, fmt.Errorf("conversationId 为空")
|
||||
}
|
||||
if _, err := h.db.GetConversation(conversationID); err != nil {
|
||||
return nil, fmt.Errorf("对话不存在")
|
||||
}
|
||||
note := "(已根据用户说明中断当前步骤,正在继续迭代。)"
|
||||
if prevAssistantMessageID != "" {
|
||||
if _, err := h.db.Exec("UPDATE messages SET content = ?, updated_at = ? WHERE id = ?", note, time.Now(), prevAssistantMessageID); err != nil {
|
||||
return nil, fmt.Errorf("更新助手消息失败: %w", err)
|
||||
}
|
||||
r := strings.TrimSpace(reason)
|
||||
detail := "用户中断并说明"
|
||||
if r != "" {
|
||||
detail += ":" + r
|
||||
}
|
||||
_ = h.db.AddProcessDetail(prevAssistantMessageID, conversationID, "user_interrupt", detail, map[string]interface{}{
|
||||
"reason": r,
|
||||
})
|
||||
}
|
||||
userContent := fmt.Sprintf("【用户中断说明】%s\n\n请根据以上说明调整并继续任务。", strings.TrimSpace(reason))
|
||||
if strings.TrimSpace(reason) == "" {
|
||||
userContent = "【用户中断说明】(未填写具体原因)\n\n请根据情况调整并继续任务。"
|
||||
}
|
||||
userMsgRow, err := h.db.AddMessage(conversationID, "user", userContent, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("保存用户消息失败: %w", err)
|
||||
}
|
||||
assistantMsg, err := h.db.AddMessage(conversationID, "assistant", "处理中...", nil)
|
||||
if err != nil || assistantMsg == nil {
|
||||
return nil, fmt.Errorf("创建助手占位失败: %w", err)
|
||||
}
|
||||
msgs, err := h.db.GetMessages(conversationID)
|
||||
if err != nil || len(msgs) < 2 {
|
||||
return nil, fmt.Errorf("读取消息历史失败或消息不足")
|
||||
}
|
||||
histMsgs := msgs[:len(msgs)-2]
|
||||
agentHistory := make([]agent.ChatMessage, 0, len(histMsgs))
|
||||
for _, msg := range histMsgs {
|
||||
agentHistory = append(agentHistory, agent.ChatMessage{
|
||||
Role: msg.Role,
|
||||
Content: msg.Content,
|
||||
})
|
||||
}
|
||||
userMessageID := ""
|
||||
if userMsgRow != nil {
|
||||
userMessageID = userMsgRow.ID
|
||||
}
|
||||
return &multiAgentPrepared{
|
||||
ConversationID: conversationID,
|
||||
CreatedNew: false,
|
||||
History: agentHistory,
|
||||
FinalMessage: userContent,
|
||||
RoleTools: roleTools,
|
||||
AssistantMessageID: assistantMsg.ID,
|
||||
UserMessageID: userMessageID,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user