diff options
| author | sigoden <sigoden@gmail.com> | 2025-07-04 07:34:44 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-04 07:34:44 +0800 |
| commit | 8832484272002b4f0f23333523b360ee967b6be9 (patch) | |
| tree | 2ad0f8975934f7dc8fcad7a58a9d22afe5faa98b /src | |
| parent | a833512c19f501f1bea84166e6e41b97274f530b (diff) | |
| download | aichat-8832484272002b4f0f23333523b360ee967b6be9.tar.gz | |
feat: enhence `.regenerate` (#1340)
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/input.rs | 1 | ||||
| -rw-r--r-- | src/config/mod.rs | 2 | ||||
| -rw-r--r-- | src/config/session.rs | 8 |
3 files changed, 9 insertions, 2 deletions
diff --git a/src/config/input.rs b/src/config/input.rs index e2cce21..5c4e0e6 100644 --- a/src/config/input.rs +++ b/src/config/input.rs @@ -189,6 +189,7 @@ impl Input { self.role = role; } self.regenerate = true; + self.tool_calls = None; } pub async fn use_embeddings(&mut self, abort_signal: AbortSignal) -> Result<()> { diff --git a/src/config/mod.rs b/src/config/mod.rs index 04ae4ef..242826b 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -2051,7 +2051,7 @@ impl Config { output: &str, tool_results: &[ToolResult], ) -> Result<()> { - if output.is_empty() || !tool_results.is_empty() { + if !tool_results.is_empty() { return Ok(()); } self.last_message = Some(LastMessage::new(input.clone(), output.to_string())); diff --git a/src/config/session.rs b/src/config/session.rs index f3a86de..3f24289 100644 --- a/src/config/session.rs +++ b/src/config/session.rs @@ -515,7 +515,13 @@ impl Session { if input.continue_output().is_some() { return messages; } else if input.regenerate() { - messages.pop(); + while let Some(last) = messages.last() { + if !last.role.is_user() { + messages.pop(); + } else { + break; + } + } return messages; } let mut need_add_msg = true; |
