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

Method SummarizeSession

pkg/session/summary.go:57–117  ·  view source on GitHub ↗

SummarizeSession 生成 Session 摘要

(ctx context.Context, messages []types.Message)

Source from the content-addressed store, hash-verified

55
56// SummarizeSession 生成 Session 摘要
57func (s *Summarizer) SummarizeSession(ctx context.Context, messages []types.Message) (*SessionSummary, error) {
58 if len(messages) < s.minMessages {
59 return nil, fmt.Errorf("not enough messages to summarize (need at least %d)", s.minMessages)
60 }
61
62 // 限制消息数量
63 if len(messages) > s.maxMessages {
64 messages = messages[len(messages)-s.maxMessages:]
65 }
66
67 // 构建摘要提示词
68 prompt := s.buildSummaryPrompt(messages)
69
70 // 调用 Provider 生成摘要
71 summaryMessages := []types.Message{
72 {
73 Role: types.MessageRoleUser,
74 ContentBlocks: []types.ContentBlock{
75 &types.TextBlock{Text: prompt},
76 },
77 },
78 }
79
80 // 临时设置系统提示词
81 originalSysPrompt := ""
82 if caps := s.provider.Capabilities(); caps.SupportSystemPrompt {
83 // 保存原始系统提示词(如果需要恢复)
84 if err := s.provider.SetSystemPrompt(s.sysPrompt); err != nil {
85 return nil, fmt.Errorf("set system prompt: %w", err)
86 }
87 }
88
89 response, err := s.provider.Complete(ctx, summaryMessages, nil)
90 if err != nil {
91 return nil, fmt.Errorf("generate summary: %w", err)
92 }
93
94 // 恢复原始系统提示词
95 if originalSysPrompt != "" {
96 _ = s.provider.SetSystemPrompt(originalSysPrompt)
97 }
98
99 // 提取文本内容
100 summaryText := ""
101 if len(response.Message.ContentBlocks) > 0 {
102 if textBlock, ok := response.Message.ContentBlocks[0].(*types.TextBlock); ok {
103 summaryText = textBlock.Text
104 }
105 }
106
107 summary := &SessionSummary{
108 Text: summaryText,
109 MessageCount: len(messages),
110 GeneratedAt: time.Now(),
111 TokensUsed: int(response.Usage.TotalTokens),
112 KeyTopics: extractKeyTopics(summaryText),
113 Participants: extractParticipants(messages),
114 }

Callers 1

demonstrateSummaryFunction · 0.95

Calls 6

buildSummaryPromptMethod · 0.95
extractKeyTopicsFunction · 0.85
extractParticipantsFunction · 0.85
CapabilitiesMethod · 0.65
SetSystemPromptMethod · 0.65
CompleteMethod · 0.65

Tested by

no test coverage detected