forked from kent/consciousness
memory_render: use cached store instead of loading from disk each call
MemoryNode::load() was calling Store::load() on every render, hitting disk each time. Use cached_store() + MemoryNode::from_store() so repeated renders (4 per agent template) share the cached store. Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
parent
aade8a9cce
commit
be6ac762f6
1 changed files with 5 additions and 3 deletions
|
|
@ -38,7 +38,7 @@ pub fn memory_tools() -> [super::Tool; 11] {
|
|||
[
|
||||
Tool { name: "memory_render", description: "Read a memory node's content and links.",
|
||||
parameters_json: r#"{"type":"object","properties":{"key":{"type":"string","description":"Node key"}},"required":["key"]}"#,
|
||||
handler: Arc::new(|_a, v| Box::pin(async move { render(&v) })) },
|
||||
handler: Arc::new(|_a, v| Box::pin(async move { render(&v).await })) },
|
||||
Tool { name: "memory_write", description: "Create or update a memory node.",
|
||||
parameters_json: r#"{"type":"object","properties":{"key":{"type":"string","description":"Node key"},"content":{"type":"string","description":"Full content (markdown)"}},"required":["key","content"]}"#,
|
||||
handler: Arc::new(|a, v| Box::pin(async move { write(&a, &v).await })) },
|
||||
|
|
@ -89,9 +89,11 @@ pub fn journal_tools() -> [super::Tool; 3] {
|
|||
|
||||
// ── Memory tools ───────────────────────────────────────────────
|
||||
|
||||
fn render(args: &serde_json::Value) -> Result<String> {
|
||||
async fn render(args: &serde_json::Value) -> Result<String> {
|
||||
let key = get_str(args, "key")?;
|
||||
Ok(MemoryNode::load(key)
|
||||
let arc = cached_store().await?;
|
||||
let store = arc.lock().await;
|
||||
Ok(MemoryNode::from_store(&store, key)
|
||||
.ok_or_else(|| anyhow::anyhow!("node not found: {}", key))?
|
||||
.render())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue