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.",
|
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"]}"#,
|
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.",
|
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"]}"#,
|
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 })) },
|
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 ───────────────────────────────────────────────
|
// ── 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")?;
|
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))?
|
.ok_or_else(|| anyhow::anyhow!("node not found: {}", key))?
|
||||||
.render())
|
.render())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue