@@ -19,7 +19,7 @@ use crate::tools::execute_command::tools::TerminateCommandTool;
1919use crate :: tools:: execute_command:: ProcessRegistry ;
2020use crate :: tools:: list_files:: ListFilesTool ;
2121use crate :: tools:: memory;
22- use crate :: tools:: memory:: Entity ;
22+ use crate :: tools:: memory:: indexer :: MemoryIndexer ;
2323use crate :: tools:: memory:: MemoryManager ;
2424use crate :: tools:: read_file:: ReadFileTool ;
2525use crate :: tools:: replace_in_file:: ReplaceInFileTool ;
@@ -40,7 +40,6 @@ use rig::agent::AgentBuilder;
4040use rig:: completion:: CompletionError ;
4141use rig:: completion:: CompletionModel ;
4242use rig:: completion:: CompletionResponse ;
43- use rig:: embeddings:: EmbeddingsBuilder ;
4443use rig:: message:: AssistantContent ;
4544use rig:: message:: ImageMediaType ;
4645use rig:: message:: Message ;
@@ -50,8 +49,6 @@ use rig::message::UserContent;
5049use rig:: tool:: Tool ;
5150use rig:: tool:: ToolError ;
5251use rig:: tool:: ToolSetError ;
53- use rig:: vector_store:: in_memory_store:: InMemoryVectorIndex ;
54- use rig:: vector_store:: in_memory_store:: InMemoryVectorStore ;
5552use rig:: OneOrMany ;
5653use serde:: Deserialize ;
5754use serde:: Serialize ;
@@ -138,41 +135,27 @@ struct AgentContext {
138135 state : Arc < RwLock < AgentState > > ,
139136 sender : mpsc:: UnboundedSender < AgentOutputEvent > ,
140137 process_registry : Arc < RwLock < ProcessRegistry > > ,
141- memory_index : Arc < RwLock < InMemoryVectorIndex < rig_fastembed :: EmbeddingModel , Entity > > > ,
138+ memory_index : Arc < RwLock < MemoryIndexer > > ,
142139 system_prompt_token_count : u32 ,
143140 current_input_tokens : u32 ,
144141 current_completion_tokens : u32 ,
145142}
146143
147144impl Agent {
148145 pub fn new (
149- data_dir : & str ,
146+ _data_dir : & str ,
150147 config : Config ,
148+ memory : Arc < RwLock < MemoryManager > > ,
151149 sender : mpsc:: UnboundedSender < AgentOutputEvent > ,
152150 ) -> Self {
153151 Self {
154152 config,
155153 sender,
156- memory : Arc :: new ( RwLock :: new ( MemoryManager :: new ( data_dir , false ) ) ) ,
154+ memory,
157155 process_registry : Arc :: new ( RwLock :: new ( ProcessRegistry :: default ( ) ) ) ,
158156 }
159157 }
160158
161- pub async fn init_memory_index (
162- & mut self ,
163- ) -> InMemoryVectorIndex < rig_fastembed:: EmbeddingModel , Entity > {
164- let documents = self . memory . read ( ) . await . entities ( ) . clone ( ) ;
165- let client = rig_fastembed:: Client :: new ( ) ;
166- let model = client. embedding_model ( & rig_fastembed:: FastembedModel :: AllMiniLML6V2 ) ;
167- let embeddings = EmbeddingsBuilder :: new ( model. clone ( ) )
168- . documents ( documents)
169- . unwrap ( )
170- . build ( )
171- . await
172- . unwrap ( ) ;
173- InMemoryVectorStore :: from_documents ( embeddings. into_iter ( ) ) . index ( model)
174- }
175-
176159 fn add_static_tools < M > (
177160 agent_builder : AgentBuilder < M > ,
178161 context : BuildAgentContext < ' _ > ,
@@ -418,7 +401,7 @@ impl Agent {
418401 data_dir : & str ,
419402 receiver : mpsc:: UnboundedReceiver < AgentControlEvent > ,
420403 messages : Vec < Message > ,
421- memory_index : InMemoryVectorIndex < rig_fastembed :: EmbeddingModel , Entity > ,
404+ memory_index : Arc < RwLock < MemoryIndexer > > ,
422405 ) {
423406 tracing:: info!(
424407 "Run agent: {:?} : {}" ,
@@ -468,7 +451,6 @@ impl Agent {
468451 . unwrap ( ) ;
469452
470453 let messages = Arc :: new ( RwLock :: new ( messages) ) ;
471- let memory_index = Arc :: new ( RwLock :: new ( memory_index) ) ;
472454 let sender = self . sender . clone ( ) ;
473455 let state = Arc :: new ( RwLock :: new ( state) ) ;
474456 let config_state = Arc :: new ( RwLock :: new ( AgentConfigState :: new ( data_dir) ) ) ;
0 commit comments