budget: identity = system prompt + personality, memory = loaded nodes

Personality is identity, not memory. Memory is nodes loaded during
the session via tool calls — things I've actively looked at.

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
ProofOfConcept 2026-03-25 02:28:44 -04:00
parent 79672cbe53
commit c5efc6e650

View file

@ -193,8 +193,8 @@ impl Agent {
} else if text.starts_with("Your context was just rebuilt") {
jnl_tokens += tokens;
} else if jnl_tokens == 0 && conv_tokens == 0 {
// First user message is personality/memory context
// Count it as memory, not identity
// Personality context — part of identity
id_tokens += tokens;
} else {
in_conversation = true;
conv_tokens += tokens;
@ -207,13 +207,10 @@ impl Agent {
}
}
// Memory = personality context + loaded nodes from tool calls
let mut mem_tokens: usize = self.context.personality.iter()
.map(|(_, content)| count(content))
// Memory = nodes loaded during the session via tool calls
let mem_tokens: usize = self.context.loaded_nodes.iter()
.map(|node| count(&node.render()))
.sum();
for node in &self.context.loaded_nodes {
mem_tokens += count(&node.render());
}
self.context_budget = ContextBudget {
identity_tokens: id_tokens,