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
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() {
if def.agent.starts_with("subconscious-") { continue; }
if def.agent == "surface-observe" { continue; }
let enabled = enabled_map.get(&def.agent).copied()
.unwrap_or(false);
let effective_tools: Vec<tools::Tool> = if def.tools.is_empty() {
all_tools.clone()
} else {
all_tools.iter()
.filter(|t| def.tools.iter().any(|w| w == t.name))
.cloned()
.collect()
};
let mut effective_tools = base_tools.clone();
for name in &def.tools {
if let Some(t) = extra_tools.iter().find(|t| t.name == name) {
effective_tools.push(t.clone());
}
}
let steps: Vec<AutoStep> = def.steps.iter().map(|s| AutoStep {
prompt: s.prompt.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