diff options
| author | sigoden <sigoden@gmail.com> | 2024-11-07 06:15:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-07 06:15:33 +0800 |
| commit | 503c282be5d5b445ccb2f0a68f50995ab27ad932 (patch) | |
| tree | 90c19fae0e8cfa43dc77f509ecc1fd44b1924c07 | |
| parent | cc74b36740833b69f527d0b395331b74257644b6 (diff) | |
| download | aichat-503c282be5d5b445ccb2f0a68f50995ab27ad932.tar.gz | |
refactor: init agent variables (#977)
| -rw-r--r-- | src/config/agent.rs | 8 | ||||
| -rw-r--r-- | src/config/mod.rs | 16 |
2 files changed, 16 insertions, 8 deletions
diff --git a/src/config/agent.rs b/src/config/agent.rs index 9a7e67c..c80a271 100644 --- a/src/config/agent.rs +++ b/src/config/agent.rs @@ -94,13 +94,11 @@ impl Agent { None }; - let shared_variables = agent_config.variables.clone(); - Ok(Self { name: name.to_string(), config: agent_config, definition, - shared_variables, + shared_variables: Default::default(), session_variables: None, functions, rag, @@ -229,6 +227,10 @@ impl Agent { } } + pub fn config_variables(&self) -> &IndexMap<String, String> { + &self.config.variables + } + pub fn shared_variables(&self) -> &IndexMap<String, String> { &self.shared_variables } diff --git a/src/config/mod.rs b/src/config/mod.rs index 6736624..e88ac5c 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -1062,8 +1062,8 @@ impl Config { session.exit(&sessions_dir, self.working_mode.is_repl())?; self.last_message = None; } - if self.agent.is_some() { - self.init_agent_shared_variables()?; + if let Some(agent) = self.agent.as_mut() { + agent.set_session_variables(None); } Ok(()) } @@ -1863,9 +1863,8 @@ impl Config { None => return Ok(()), }; let new_variables = - Agent::init_agent_variables(agent.defined_variables(), agent.shared_variables())?; + Agent::init_agent_variables(agent.defined_variables(), agent.config_variables())?; agent.set_shared_variables(new_variables); - agent.set_session_variables(None); Ok(()) } @@ -1875,9 +1874,16 @@ impl Config { _ => return Ok(()), }; let shared_variables = agent.shared_variables(); - let mut all_variables = shared_variables.clone(); + let mut all_variables = if shared_variables.is_empty() { + agent.config_variables().clone() + } else { + shared_variables.clone() + }; all_variables.extend(session.agent_variables().clone()); let new_variables = Agent::init_agent_variables(agent.defined_variables(), &all_variables)?; + if shared_variables.is_empty() { + agent.set_shared_variables(new_variables.clone()); + } agent.set_session_variables(Some(new_variables)); session.sync_agent(agent, false); Ok(()) |
