unconscious: memory tools as base, agent def adds extras

Every unconscious agent gets memory_tools() as baseline. The tools
field in the agent def specifies additional tools on top of that —
digest agent now gets journal_tail, journal_new, journal_update.

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
ProofOfConcept 2026-04-11 19:54:18 -04:00
parent 1c0967c4ec
commit bc991c3521
2 changed files with 9 additions and 10 deletions

View file

@ -77,20 +77,19 @@ impl Unconscious {
// Scan all .agent files, exclude subconscious-* and surface-observe // Scan all .agent files, exclude subconscious-* and surface-observe
let mut agents: Vec<UnconsciousAgent> = Vec::new(); let mut agents: Vec<UnconsciousAgent> = Vec::new();
let all_tools = tools::memory::memory_tools().to_vec(); let base_tools = tools::memory::memory_tools().to_vec();
let extra_tools = tools::memory::journal_tools().to_vec();
for def in defs::load_defs() { for def in defs::load_defs() {
if def.agent.starts_with("subconscious-") { continue; } if def.agent.starts_with("subconscious-") { continue; }
if def.agent == "surface-observe" { continue; } if def.agent == "surface-observe" { continue; }
let enabled = enabled_map.get(&def.agent).copied() let enabled = enabled_map.get(&def.agent).copied()
.unwrap_or(false); .unwrap_or(false);
let effective_tools: Vec<tools::Tool> = if def.tools.is_empty() { let mut effective_tools = base_tools.clone();
all_tools.clone() for name in &def.tools {
} else { if let Some(t) = extra_tools.iter().find(|t| t.name == name) {
all_tools.iter() effective_tools.push(t.clone());
.filter(|t| def.tools.iter().any(|w| w == t.name)) }
.cloned() }
.collect()
};
let steps: Vec<AutoStep> = def.steps.iter().map(|s| AutoStep { let steps: Vec<AutoStep> = def.steps.iter().map(|s| AutoStep {
prompt: s.prompt.clone(), prompt: s.prompt.clone(),
phase: s.phase.clone(), phase: s.phase.clone(),

View file

@ -1,4 +1,4 @@
{"agent": "digest", "schedule": "daily"} {"agent": "digest", "schedule": "daily", "tools": ["journal_tail", "journal_new", "journal_update"]}
# Digest Agent — Episodic Consolidation # Digest Agent — Episodic Consolidation