mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 14:38:12 +02:00
Lot 34 : bloc projet figé (PROJ_SNAPSHOT) dans le tour de la façade
PROJ_SNAPSHOT était le dernier réglage qui gardait la conversation au Go : la façade la tient désormais dans tous les cas (LOKI_CHAT=go reste la porte de sortie). facadeChatBlocker et la décision prise une fois par processus disparaissent. Go (facade_projsnap.go) : - /internal/v1/turn/view, avec la clé et l'agent : tête du tour portant le bloc figé (ou le vivant à rafraîchir), préambule sans date ni dossier, et la décision projsnap (rafraîchir, mise à jour à poser, instantané à ranger, clé et système du tour) ; dry pour le préchauffage ; - /internal/v1/turn/projsnap/refresh : bloc vivant et instantané qu'il devient, pour une compaction en plein tour. Rust : - ChatService::assemble_turn, partagé par le tour et la relance du builder : instantané rangé avec la discussion, mise à jour posée en tête du dernier message utilisateur (prependCtxUpdate), historique nettoyé au rafraîchissement ; - TurnHost::project_refresh après une compaction ou une réduction en plein tour (replaceProjectHead) ; l'instantané posé devient celui de la discussion ; - le préchauffage demande la vue en dry et garde les mises à jour tant que le bloc n'est pas rafraîchi. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
19 files changed
+1063
-171
No files matched your search
@@ -42,8 +42,9 @@
|
||||
//! préchauffage en vol le garde ([`TurnHost::prewarm_keeps`]) ; toute autre
|
||||
//! l'annule ([`super::prewarm`]).
|
||||
//!
|
||||
//! Non porté : PROJ_SNAPSHOT. Avec cette clé, le Go garde la conversation
|
||||
//! (`facadeChatBlocker`, décidé au démarrage).
|
||||
//! Bloc projet figé (PROJ_SNAPSHOT, lot 34) : une compaction ou une réduction
|
||||
//! en plein tour fait remplacer le bloc figé par le vivant
|
||||
//! ([`TurnHost::project_refresh`]).
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::future::Future;
|
||||
@@ -150,6 +151,13 @@ pub trait TurnHost: Send + Sync {
|
||||
body: Vec<u8>,
|
||||
keep_prewarm: bool,
|
||||
) -> impl Future<Output = Result<Reply, SendError>> + Send;
|
||||
/// PROJ_SNAPSHOT : une compaction ou une réduction vient de réécrire
|
||||
/// l'historique en plein tour — le début du prompt change de toute façon,
|
||||
/// le bloc projet figé est remplacé par le vivant et les mises à jour
|
||||
/// retirées (`projSnapTurn.refresh`). Sans la clé : tel quel.
|
||||
fn project_refresh(&self, msgs: Vec<Message>) -> impl Future<Output = Vec<Message>> + Send {
|
||||
async { msgs }
|
||||
}
|
||||
/// PREWARM : la requête qui part (empreintes cumulées de ses messages,
|
||||
/// corps) prolonge-t-elle exactement le préchauffage en vol ?
|
||||
fn prewarm_keeps(&self, _prefix: &[u64], _payload: &Value) -> bool {
|
||||
@@ -691,7 +699,7 @@ async fn run_turn_loop<H: TurnHost>(
|
||||
if let Some(c) = c {
|
||||
s.compacted_retry = true;
|
||||
log_compact(ccfg, "réactif", 0, &messages, &c, true);
|
||||
messages = c;
|
||||
messages = host.project_refresh(c).await;
|
||||
extra.clear();
|
||||
publish_history(cb, kt, &messages);
|
||||
continue;
|
||||
@@ -703,7 +711,7 @@ async fn run_turn_loop<H: TurnHost>(
|
||||
if changed {
|
||||
s.shrink_retries += 1;
|
||||
log_compact(ccfg, "réduction", actual, &messages, &c, true);
|
||||
messages = c;
|
||||
messages = host.project_refresh(c).await;
|
||||
extra.clear();
|
||||
publish_history(cb, kt, &messages);
|
||||
continue;
|
||||
@@ -1124,7 +1132,7 @@ async fn run_turn_loop<H: TurnHost>(
|
||||
);
|
||||
if let Some(c) = c {
|
||||
s.last_est = 0;
|
||||
messages = c;
|
||||
messages = host.project_refresh(c).await;
|
||||
extra.clear();
|
||||
publish_history(cb, kt, &messages);
|
||||
}
|
||||
@@ -1183,7 +1191,7 @@ async fn run_turn_loop<H: TurnHost>(
|
||||
);
|
||||
if let Some(c) = c {
|
||||
cb(StreamEvent::DropReasoning);
|
||||
messages = c;
|
||||
messages = host.project_refresh(c).await;
|
||||
extra.clear();
|
||||
publish_history(cb, kt, &messages);
|
||||
continue;
|
||||
|
||||
Reference in new issue
Block a user