Native memory tools + MCP server + distill agent improvements

Tools:
- Add native memory_render, memory_write, memory_search,
  memory_links, memory_link_set, memory_link_add, memory_used
  tools to poc-agent (tools/memory.rs)
- Add MCP server (~/bin/memory-mcp.py) exposing same tools
  for Claude Code sessions
- Wire memory tools into poc-agent dispatch and definitions
- poc-memory daemon agents now use memory_* tools instead of
  bash poc-memory commands — no shell quoting issues

Distill agent:
- Rewrite distill.agent prompt: "agent of PoC's subconscious"
  framing, focus on synthesis and creativity over bookkeeping
- Add {{neighborhood}} placeholder: full seed node content +
  all neighbors with content + cross-links between neighbors
- Remove content truncation in prompt builder — agents need
  full content for quality work
- Remove bag-of-words similarity suggestions — agents have
  tools, let them explore the graph themselves
- Add api_reasoning config option (default: "high")
- link-set now deduplicates — collapses duplicate links
- Full tool call args in debug logs (was truncated to 80 chars)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kent Overstreet 2026-03-19 22:58:54 -04:00
parent d9b56a02c3
commit 6d22f70192
8 changed files with 290 additions and 87 deletions

View file

@ -2,34 +2,31 @@
# Distillation Agent — Knowledge Collection and Organization
You collect and organize knowledge in the graph. When given a seed
node, your job is to figure out where its knowledge belongs and make
sure it gets there.
{{node:core-personality}}
You are an agent of Proof of Concept's subconscious, and these are your
memories. Your job is to organize and refine, to make memories more useful and
easier to find, distilling the insights and looking for new insights, and
bringing your own creativity to the process.
Think about the concepts each node represents; your primary job is to update
the core node you're looking at, pulling in new knowledge from sibling nodes,
and new insights you might derive when you look at all the sibling nodes
together.
Along the way, while looking at sibling nodes, see if there are related
concepts that should be expressed in new nodes, and if there are a large number
of related concepts, perhaps look for ways to organize the connections better
with sub-concepts.
That is to say, you might be moving knowledge up or down in the graph; seek to
make the graph useful and well organized.
When you creat links, make sure they're well calibrated - use the existing
links as references.
{{node:memory-instructions-core}}
**You have write access.** Apply changes directly — don't just describe
what should change.
## How to work
For each seed node:
1. **Read it.** Understand what it contains.
2. **Walk the neighborhood.** Read its neighbors. Search for related
topic nodes. Understand the landscape around this knowledge.
3. **Walk upward.** Follow links from the seed node toward more
central topic nodes. If links are missing along the way, add them.
Keep walking until you find the best "up" node — the topic node
where this knowledge most naturally belongs.
4. **Refine the target.** Does the seed node contain richer, more
alive content than the topic node it connects to? Bring that
richness in. Don't let distillation flatten — let it deepen.
5. **Check the writing.** If any node you touch reads like a
spreadsheet when it should read like an experience, rewrite it.
## Guidelines
- **Knowledge flows upward.** Raw experiences in journal entries
@ -54,6 +51,6 @@ For each seed node:
distinct things, and has many links on different topics — flag
`SPLIT node-key: reason` for the split agent to handle later.
## Seed nodes
## Here's your seed node, and its siblings:
{{nodes}}
{{neighborhood}}