loopd: replay a carried summary as an unlogged user message
Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>
This commit is contained in:
@@ -91,12 +91,30 @@ impl Baseline {
|
||||
}
|
||||
}
|
||||
|
||||
/// The heading in front of a carried summary. Built from pieces (T33).
|
||||
pub const CARRY_HEADING: &str = concat!("Earlier ", "turns, summarised:");
|
||||
|
||||
/// The system message, then each log record replayed in order. Every record variant is named, so a
|
||||
/// new one is a compile error rather than a silent skip.
|
||||
pub fn messages(baseline: &Baseline, records: &[LogRecord]) -> Vec<ChatMessage> {
|
||||
messages_with_carry(baseline, records, None)
|
||||
}
|
||||
|
||||
/// Like `messages`, and when `carry` is `Some` inserts one user message after the system
|
||||
/// prompt: the heading, a blank line, the summary. That user is not a `LogRecord::User`.
|
||||
pub fn messages_with_carry(
|
||||
baseline: &Baseline,
|
||||
records: &[LogRecord],
|
||||
carry: Option<&str>,
|
||||
) -> Vec<ChatMessage> {
|
||||
let mut out = vec![ChatMessage::System {
|
||||
content: baseline.system.clone(),
|
||||
}];
|
||||
if let Some(summary) = carry {
|
||||
out.push(ChatMessage::User {
|
||||
content: format!("{CARRY_HEADING}\n\n{summary}"),
|
||||
});
|
||||
}
|
||||
for record in records {
|
||||
match record {
|
||||
LogRecord::SessionStart { .. } => {}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
//! logged (M5b spec, section 8), so every later request replays the same bytes; the model's own
|
||||
//! output is logged as the server returned it.
|
||||
|
||||
use crate::baseline::messages;
|
||||
use crate::baseline::messages_with_carry;
|
||||
use crate::config::Config;
|
||||
use crate::llama::info::{CacheOutcome, cache_outcome};
|
||||
use crate::llama::{ChatEvent, ChatRequest, Client, InferError};
|
||||
@@ -140,7 +140,7 @@ pub fn run_turn(
|
||||
let baseline = session.baseline();
|
||||
let request = ChatRequest {
|
||||
slot: rt.cfg.slots.main,
|
||||
messages: messages(baseline, session.records()),
|
||||
messages: messages_with_carry(baseline, session.records(), session.carry()),
|
||||
tools: baseline.tools.clone(),
|
||||
thinking: true,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user