MCPcopy Create free account
hub / github.com/astercloud/aster / buildSummaryPrompt

Method buildSummaryPrompt

pkg/memory/session_compressor.go:161–200  ·  view source on GitHub ↗

buildSummaryPrompt 构建总结提示词

(messages []agentext.Message)

Source from the content-addressed store, hash-verified

159
160// buildSummaryPrompt 构建总结提示词
161func (s *LLMSummarizer) buildSummaryPrompt(messages []agentext.Message) string {
162 var sb strings.Builder
163
164 // 添加总结指示
165 levelInstructions := map[CompressionLevel]string{
166 CompressionLevelLight: "请详细总结以下会话内容,保留大部分细节和具体信息。",
167 CompressionLevelModerate: "请总结以下会话内容,保留关键信息和重要细节。",
168 CompressionLevelAggressive: "请简要总结以下会话内容,只保留核心要点和结论。",
169 }
170
171 instruction := levelInstructions[s.config.Level]
172 if instruction == "" {
173 instruction = levelInstructions[CompressionLevelModerate]
174 }
175
176 sb.WriteString(instruction)
177 sb.WriteString("\n\n")
178
179 // 添加字数限制
180 if s.config.MaxSummaryWords > 0 {
181 sb.WriteString(fmt.Sprintf("请将总结控制在 %d 字以内。\n\n", s.config.MaxSummaryWords))
182 }
183
184 // 添加上下文保留要求
185 if s.config.PreserveContext {
186 sb.WriteString("总结时请保留以下信息:\n")
187 sb.WriteString("- 用户的关键问题和需求\n")
188 sb.WriteString("- 重要的决策和结论\n")
189 sb.WriteString("- 关键的数据和事实\n")
190 sb.WriteString("- 未解决的问题或待办事项\n\n")
191 }
192
193 // 添加会话内容
194 sb.WriteString("会话内容:\n\n")
195 for i, msg := range messages {
196 sb.WriteString(fmt.Sprintf("[消息 %d - %s]\n%s\n\n", i+1, msg.Role, msg.Content))
197 }
198
199 return sb.String()
200}
201
202// callLLM 调用 LLM API 生成总结
203// 注意:这是一个简化实现,实际应该使用真实的 LLM API

Callers 1

SummarizeSessionMethod · 0.95

Calls 1

StringMethod · 0.45

Tested by

no test coverage detected