package context import ( "context" "fmt" "github.com/yourname/cyrene-ai/ai-core/internal/memory" "github.com/yourname/cyrene-ai/ai-core/internal/model" "github.com/yourname/cyrene-ai/ai-core/internal/persona" ) type BuildParams struct { UserID string SessionID string UserMessage string Persona *persona.PersonaConfig Memories []memory.MemoryEntry HistoryLimit int } // Build 构建发送给LLM的完整消息列表 func (b *Builder) Build(ctx context.Context, params BuildParams) ([]model.LLMMessage, error) { messages := []model.LLMMessage{} // 1. 系统消息 —— 昔涟的人格Prompt systemPrompt := params.Persona.BuildSystemPrompt( params.UserID, // 后续可替换为真实用户名 1, // 初始好感度 ) messages = append(messages, model.LLMMessage{ Role: "system", Content: systemPrompt, }) // 2. 记忆注入 —— 相关记忆以系统消息形式注入 if len(params.Memories) > 0 { memoryPrompt := "【以下是关于开拓者的一些重要记忆,请在合适的时机自然地提及】\n" for _, m := range params.Memories { memoryPrompt += fmt.Sprintf("- %s\n", m.Content) } messages = append(messages, model.LLMMessage{ Role: "system", Content: memoryPrompt, }) } // 3. 历史对话 history, err := b.loadHistory(ctx, params.SessionID, params.HistoryLimit) if err == nil { messages = append(messages, history...) } // 4. 当前用户消息 messages = append(messages, model.LLMMessage{ Role: "user", Content: params.UserMessage, }) return messages, nil }