* 过滤上下文数据
(contextData: ContextData, options?: FilterOptions)
| 22 | * 过滤上下文数据 |
| 23 | */ |
| 24 | filter(contextData: ContextData, options?: FilterOptions): ContextData { |
| 25 | const filterOptions = { ...this.defaultOptions, ...options }; |
| 26 | |
| 27 | const filteredData: ContextData = { |
| 28 | layers: { |
| 29 | system: contextData.layers.system, |
| 30 | session: contextData.layers.session, |
| 31 | conversation: this.filterConversation(contextData.layers.conversation, filterOptions), |
| 32 | tool: filterOptions.includeTools |
| 33 | ? this.filterTools(contextData.layers.tool, filterOptions) |
| 34 | : { recentCalls: [], toolStates: {}, dependencies: {} }, |
| 35 | workspace: filterOptions.includeWorkspace |
| 36 | ? contextData.layers.workspace |
| 37 | : { currentFiles: [], recentFiles: [], environment: {} }, |
| 38 | }, |
| 39 | metadata: { |
| 40 | ...contextData.metadata, |
| 41 | lastUpdated: Date.now(), |
| 42 | }, |
| 43 | }; |
| 44 | |
| 45 | // 重新计算 token 数量 |
| 46 | filteredData.metadata.totalTokens = this.estimateTokens(filteredData); |
| 47 | |
| 48 | return filteredData; |
| 49 | } |
| 50 | |
| 51 | /** |
| 52 | * 过滤对话上下文 |
no test coverage detected