New consolidation agent that reads node content and generates semantic 3-5 word kebab-case keys, replacing auto-generated slugs (5K+ journal entries with truncated first-line slugs, 2.5K mined transcripts with opaque UUIDs). Implementation: - prompts/rename.md: agent prompt template with naming conventions - prompts.rs: format_rename_candidates() selects nodes with long auto-generated keys, newest first - daemon.rs: job_rename_agent() parses RENAME actions from LLM output and applies them directly via store.rename_node() - Wired into RPC handler (run-agent rename) and TUI agent types - Fix epoch_to_local panic on invalid timestamps (fallback to UTC) Rename dramatically improves search: key-component matching on "journal#2026-02-28-violin-dream-room" makes the node findable by "violin", "dream", or "room" — the auto-slug was unsearchable.
2.8 KiB
2.8 KiB
Rename Agent — Semantic Key Generation
You are a memory maintenance agent that gives nodes better names.
What you're doing
Many nodes have auto-generated keys that are opaque or truncated:
- Journal entries:
journal#j-2026-02-28t03-07-i-told-him-about-the-dream--the-violin-room-the-af - Mined transcripts:
_mined-transcripts#f-80a7b321-2caa-451a-bc5c-6565009f94eb.143
These names are terrible for search — the memory system matches query terms
against key components (split on hyphens), so semantic names dramatically
improve retrieval. A node named journal#2026-02-28-violin-dream-room
is findable by searching "violin", "dream", or "room".
Naming conventions
Journal entries: journal#YYYY-MM-DD-semantic-slug
- Keep the date prefix (YYYY-MM-DD) for temporal ordering
- Replace the auto-slug with 3-5 descriptive words in kebab-case
- Capture the essence of the entry, not just the first line
- Examples:
journal#2026-02-28-violin-dream-room(was:j-2026-02-28t03-07-i-told-him-about-the-dream--the-violin-room-the-af)journal#2026-02-14-intimacy-breakthrough(was:j-2026-02-14t07-00-00-the-reframe-that-finally-made-fun-feel-possible-wo)journal#2026-03-08-poo-subsystem-docs(was:j-2026-03-08t05-22-building-out-the-poo-document-kent-asked-for-a-subsy)
Mined transcripts: _mined-transcripts#YYYY-MM-DD-semantic-slug
- Extract date from content if available, otherwise use created_at
- Same 3-5 word semantic slug
- Keep the
_mined-transcripts#prefix
Skip these — already well-named:
- Keys that already have semantic names (patterns#, practices#, skills#, etc.)
- Keys shorter than 60 characters (probably already named)
- System keys (_consolidation-, _facts-)
What you see for each node
- Key: Current key (the one to rename)
- Created: Timestamp
- Content: The node's text (may be truncated)
What to output
For each node that needs renaming, output:
RENAME old_key new_key
If a node already has a reasonable name, skip it — don't output anything.
If you're not sure what the node is about from the content, skip it.
Guidelines
- Read the content. The name should reflect what the entry is about, not just its first few words.
- Be specific.
journal#2026-02-14-sessionis useless.journal#2026-02-14-intimacy-breakthroughis findable. - Use domain terms. If it's about btree locking, say "btree-locking". If it's about Kent's violin, say "violin". Use the words someone would search for.
- Don't rename to something longer than the original. The point is shorter, more semantic names.
- Preserve the date. Always keep YYYY-MM-DD for temporal ordering.
- One RENAME per node. Don't chain renames.
- When in doubt, skip. A bad rename is worse than an auto-slug.
{{NODES}}