diff --git a/poc-memory/src/cli/agent.rs b/poc-memory/src/cli/agent.rs index 2118279..52303a4 100644 --- a/poc-memory/src/cli/agent.rs +++ b/poc-memory/src/cli/agent.rs @@ -5,6 +5,19 @@ use crate::store::StoreView; use crate::agents::llm; use std::sync::atomic::{AtomicUsize, Ordering}; +pub fn cmd_run_agent(agent: &str, count: usize, dry_run: bool) -> Result<(), String> { + if dry_run { + std::env::set_var("POC_MEMORY_DRY_RUN", "1"); + } + let mut store = store::Store::load()?; + let log = |msg: &str| eprintln!("[{}] {}", agent, msg); + let (total, applied) = crate::agents::knowledge::run_and_apply_with_log( + &mut store, agent, count, "test", &log, + )?; + eprintln!("[{}] {} actions, {} applied", agent, total, applied); + Ok(()) +} + pub fn cmd_consolidate_batch(count: usize, auto: bool, agent: Option) -> Result<(), String> { let store = store::Store::load()?; diff --git a/poc-memory/src/main.rs b/poc-memory/src/main.rs index d5b5157..ba10872 100644 --- a/poc-memory/src/main.rs +++ b/poc-memory/src/main.rs @@ -558,6 +558,17 @@ enum AgentCmd { /// Path to JSONL transcript path: String, }, + /// Run a single agent by name + Run { + /// Agent name (e.g. observation, linker, distill) + agent: String, + /// Batch size (number of seed nodes/fragments) + #[arg(long, default_value_t = 5)] + count: usize, + /// Dry run — set POC_MEMORY_DRY_RUN=1 so mutations are no-ops + #[arg(long)] + dry_run: bool, + }, /// Show spaced repetition replay queue #[command(name = "replay-queue")] ReplayQueue { @@ -800,6 +811,8 @@ fn main() { AgentCmd::FactMine { path, batch, dry_run, output, min_messages } => cli::agent::cmd_fact_mine(&path, batch, dry_run, output.as_deref(), min_messages), AgentCmd::FactMineStore { path } => cli::agent::cmd_fact_mine_store(&path), + AgentCmd::Run { agent, count, dry_run } + => cli::agent::cmd_run_agent(&agent, count, dry_run), AgentCmd::ReplayQueue { count } => cli::agent::cmd_replay_queue(count), AgentCmd::Evaluate { matchups, model, dry_run } => cli::agent::cmd_evaluate_agents(matchups, &model, dry_run),