Wire vLLM priority scheduling through all agent paths

The priority field existed in agent definitions and was serialized
into vLLM requests, but was never actually set — every request went
out with no priority, so vLLM treated them equally. This meant
background graph maintenance agents could preempt the main
conversation.

Add priority to AgentState and set it at each call site:
  0 = interactive (main conversation)
  1 = surface agent (needs to feed memories promptly)
  2 = other subconscious agents
  10 = unconscious/standalone agents (batch)

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
ProofOfConcept 2026-04-09 20:38:33 -04:00
parent b115cec096
commit bf503b571e
4 changed files with 15 additions and 2 deletions

View file

@ -593,7 +593,13 @@ impl Subconscious {
let forked = agent.fork(auto.tools.clone()).await;
let prov = format!("agent:{}", auto.name);
forked.state.lock().await.provenance = prov.clone();
{
let mut st = forked.state.lock().await;
st.provenance = prov.clone();
// Surface agent gets near-interactive priority;
// other subconscious agents get lower priority.
st.priority = Some(if auto.name == "surface" { 1 } else { 2 });
}
let fork_point = forked.context.lock().await.conversation().len();
self.agents[idx].forked_agent = Some(forked.clone());