Fix context budgeting and compaction
- Budget now counts exact message tokens matching what assemble_api_messages sends, not raw string content. Eliminates undercounting from formatting overhead (journal headers, personality separators, working stack). - Load journal before trimming so trim accounts for journal cost. - Compact before every turn, not just after turn completion. Prevents agent_cycle surfaced memories from pushing context over budget. - Move agent_cycle orchestration from Agent::turn to Mind::start_turn — surfaced memories and reflections now precede the user message. - Move AgentCycleState from Agent to Mind — it's orchestration, not per-agent state. memory_scoring_in_flight and memory_scores stay on Agent where they belong. - Tag DMN entries as ConversationEntry::Dmn — compaction evicts them first since they're ephemeral. Compaction also prefers evicting memories over conversation when memories exceed 50% of entry tokens. - Kill /retry slash command. Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
parent
c22b8c3a6f
commit
d5e6f55da9
5 changed files with 194 additions and 170 deletions
|
|
@ -316,7 +316,6 @@ pub async fn run(
|
|||
mind_tx: tokio::sync::mpsc::UnboundedSender<MindCommand>,
|
||||
) -> Result<()> {
|
||||
let agent = &mind.agent;
|
||||
let shared_mind = &mind.shared;
|
||||
// UI-owned state
|
||||
let mut idle_state = crate::thalamus::idle::State::new();
|
||||
idle_state.load();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue