MCPcopy Create free account
hub / github.com/echoVic/blade-code / compress

Method compress

src/context/processors/ContextCompressor.ts:24–55  ·  view source on GitHub ↗

* 压缩上下文数据

(contextData: ContextData)

Source from the content-addressed store, hash-verified

22 * 压缩上下文数据
23 */
24 async compress(contextData: ContextData): Promise<CompressedContext> {
25 const messages = contextData.layers.conversation.messages;
26 const toolCalls = contextData.layers.tool.recentCalls;
27
28 // 分离系统消息和用户/助手消息
29 const systemMessages = messages.filter(m => m.role === 'system');
30 const conversationMessages = messages.filter(m => m.role !== 'system');
31
32 // 获取最近的消息(保持完整)
33 const recentMessages = this.getRecentMessages(conversationMessages);
34
35 // 压缩较旧的消息
36 const olderMessages = conversationMessages.slice(0, -this.recentMessagesLimit);
37 const summary = await this.generateSummary(olderMessages);
38
39 // 提取关键要点
40 const keyPoints = this.extractKeyPoints(olderMessages, toolCalls);
41
42 // 生成工具摘要
43 const toolSummary = this.generateToolSummary(toolCalls);
44
45 // 估算 token 数量
46 const tokenCount = this.estimateTokenCount(summary, keyPoints, recentMessages, toolSummary);
47
48 return {
49 summary,
50 keyPoints,
51 recentMessages: [...systemMessages, ...recentMessages],
52 toolSummary,
53 tokenCount,
54 };
55 }
56
57 /**
58 * 获取最近的消息

Callers 2

getFormattedContextMethod · 0.80

Calls 6

getRecentMessagesMethod · 0.95
generateSummaryMethod · 0.95
extractKeyPointsMethod · 0.95
generateToolSummaryMethod · 0.95
estimateTokenCountMethod · 0.95
filterMethod · 0.45

Tested by

no test coverage detected