@@ -480,11 +480,14 @@ const contextEnginePlugin = {
480480 ] ) ;
481481 const userResult = userSettled . status === "fulfilled" ? userSettled . value : { memories : [ ] } ;
482482 const agentResult = agentSettled . status === "fulfilled" ? agentSettled . value : { memories : [ ] } ;
483- // 合并两个位置的结果,去重
483+ // 合并两个位置的结果,去重 (linear time via Set)
484484 const allMemories = [ ...( userResult . memories ?? [ ] ) , ...( agentResult . memories ?? [ ] ) ] ;
485- const uniqueMemories = allMemories . filter ( ( memory , index , self ) =>
486- index === self . findIndex ( ( m ) => m . uri === memory . uri )
487- ) ;
485+ const seenUris = new Set < string > ( ) ;
486+ const uniqueMemories = allMemories . filter ( ( memory ) => {
487+ if ( seenUris . has ( memory . uri ) ) return false ;
488+ seenUris . add ( memory . uri ) ;
489+ return true ;
490+ } ) ;
488491 const leafOnly = uniqueMemories . filter ( ( m ) => m . level === 2 ) ;
489492 result = {
490493 memories : leafOnly ,
@@ -938,9 +941,12 @@ const contextEnginePlugin = {
938941 }
939942
940943 const allMemories = [ ...( userResult . memories ?? [ ] ) , ...( agentResult . memories ?? [ ] ) ] ;
941- const uniqueMemories = allMemories . filter ( ( memory , index , self ) =>
942- index === self . findIndex ( ( m ) => m . uri === memory . uri )
943- ) ;
944+ const seenUris = new Set < string > ( ) ;
945+ const uniqueMemories = allMemories . filter ( ( memory ) => {
946+ if ( seenUris . has ( memory . uri ) ) return false ;
947+ seenUris . add ( memory . uri ) ;
948+ return true ;
949+ } ) ;
944950 const leafOnly = uniqueMemories . filter ( ( m ) => m . level === 2 ) ;
945951 const processed = postProcessMemories ( leafOnly , {
946952 limit : candidateLimit ,
0 commit comments