- Rewrite 3_context-and-memory.md (auto-context system, remove legacy memory) - Create 7_voice.md (voice interface documentation) - Update 0_overview.md, 1_architecture.md, 4_tools-and-workflows.md, 6_ui.md, 8_mcp.md - Add simple human-readable intros to all docs - Update README.md with voice doc reference Synced from ra-h commit 4a3d7e0
162 lines
5.6 KiB
Markdown
162 lines
5.6 KiB
Markdown
# Context & Memory
|
|
|
|
> How RA-H decides what information to show the AI during conversations.
|
|
|
|
**How it works:** RA-H automatically identifies your 10 most-connected knowledge nodes (by edge count) and shares their titles with the AI as background context. When you focus on a specific node, the AI also sees a preview of that content. This means the AI always knows about your most important ideas without you having to manually select them.
|
|
|
|
---
|
|
|
|
## Context System Overview
|
|
|
|
Every conversation includes context assembled by the **context builder**. This context tells the AI about your knowledge base, available tools, and what you're currently working on.
|
|
|
|
### What Gets Included
|
|
|
|
| Block | Contents | Cached? |
|
|
|-------|----------|---------|
|
|
| **Base Context** | How nodes, edges, dimensions work; formatting rules | ✅ Yes |
|
|
| **Agent Instructions** | Role-specific prompts (ra-h, ra-h-easy, wise-rah, mini-rah) | ✅ Yes |
|
|
| **Tool Definitions** | Available tools and their parameters | ✅ Yes |
|
|
| **Workflow Definitions** | Available workflows (orchestrators only) | ✅ Yes |
|
|
| **Background Context** | Top 10 most-connected nodes (if enabled) | ✅ Yes |
|
|
| **Focused Nodes** | Currently open node(s) with content previews | ❌ No |
|
|
|
|
---
|
|
|
|
## Auto-Context System
|
|
|
|
Auto-context automatically includes your most important knowledge in every conversation. It replaces the old manual "pinning" system.
|
|
|
|
### How It Works
|
|
|
|
1. **Toggle:** Enable in Settings → Context tab
|
|
2. **Query:** Finds top 10 nodes by edge count (most connections = most important)
|
|
3. **Format:** Shows `[NODE:id:"title"] (edges: X)` for each hub node
|
|
4. **Agent behavior:** Agents see titles only; they call `queryNodes` or `getNodesById` when they need full content
|
|
|
|
### The Query
|
|
|
|
```sql
|
|
SELECT n.id, n.title, COUNT(DISTINCT e.id) AS edge_count
|
|
FROM nodes n
|
|
LEFT JOIN edges e ON (e.from_node_id = n.id OR e.to_node_id = n.id)
|
|
WHERE n.type IS NULL OR n.type != 'memory'
|
|
GROUP BY n.id
|
|
ORDER BY edge_count DESC, n.updated_at DESC
|
|
LIMIT 10
|
|
```
|
|
|
|
**Tie-breaking:** When nodes have equal edge counts, most recently updated wins.
|
|
|
|
### Settings Storage
|
|
|
|
**Location:** `~/Library/Application Support/RA-H/config/settings.json`
|
|
|
|
```json
|
|
{
|
|
"autoContextEnabled": true,
|
|
"lastPinnedMigration": "2025-12-09T00:00:00Z"
|
|
}
|
|
```
|
|
|
|
**Legacy migration:** If you had pinned nodes before the auto-context update, the system automatically enabled auto-context on first run.
|
|
|
|
### Context Block Format
|
|
|
|
When enabled, agents see this in their system prompt:
|
|
|
|
```
|
|
=== BACKGROUND CONTEXT ===
|
|
Top 10 most-connected nodes (important knowledge hubs). Use queryNodes/getNodesById if relevant.
|
|
|
|
[NODE:1573:"building ra-h - knowledge management system"] (edges: 47)
|
|
[NODE:4436:"Continual learning explains some interesting phenomena"] (edges: 32)
|
|
[NODE:3014:"Multi-Agent Research Systems: Insights from Simon Willison"] (edges: 28)
|
|
...
|
|
```
|
|
|
|
---
|
|
|
|
## Focused Nodes
|
|
|
|
Focused nodes are the node(s) you currently have open in the Focus panel.
|
|
|
|
### What Agents See
|
|
|
|
- **Primary focused node:** The active tab
|
|
- **Additional focused nodes:** Other open tabs
|
|
- **Content preview:** First ~25 words
|
|
- **Metadata:** Title, ID, link, dimensions, chunk status
|
|
|
|
### Example Format
|
|
|
|
```
|
|
=== FOCUSED NODES ===
|
|
|
|
### Primary: [NODE:4523:"How RAG systems work"]
|
|
Preview: Retrieval-augmented generation (RAG) combines information retrieval with language model generation to produce more accurate and grounded responses...
|
|
Link: https://example.com/rag-systems
|
|
Dimensions: research, ai, papers
|
|
Chunk status: chunked (embeddings available)
|
|
|
|
### Also Open:
|
|
- [NODE:4520:"Vector databases explained"] (25 words preview...)
|
|
```
|
|
|
|
---
|
|
|
|
## Context Caching
|
|
|
|
RA-H uses provider-specific caching to reduce costs and latency.
|
|
|
|
### Anthropic (Claude)
|
|
|
|
- **Explicit cache control:** Blocks marked with `cache_control: { type: 'ephemeral' }`
|
|
- **What's cached:** Base context, instructions, tools, workflows, background context
|
|
- **What's NOT cached:** Focused nodes (change too frequently)
|
|
|
|
### OpenAI (GPT)
|
|
|
|
- **Implicit caching:** Based on prefix matching
|
|
- **Same structure:** Identical blocks, just no explicit markers
|
|
- **Optimization:** Prompts structured for maximum cache reuse
|
|
|
|
---
|
|
|
|
## Agent-Specific Context
|
|
|
|
Different agents receive different context based on their role:
|
|
|
|
| Agent | Background Context | Workflows | Tools |
|
|
|-------|-------------------|-----------|-------|
|
|
| **ra-h / ra-h-easy** (orchestrators) | ✅ Yes | ✅ Yes | All |
|
|
| **wise-rah** (workflow executor) | ❌ No | ❌ No | Planner tools only |
|
|
| **mini-rah** (worker) | ❌ No | ❌ No | Executor tools only |
|
|
|
|
**Why orchestrators only:** Background context helps with general conversation. Workers execute specific tasks and don't need the full picture.
|
|
|
|
---
|
|
|
|
## Key Files
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `src/services/helpers/contextBuilder.ts` | Assembles system prompts with caching |
|
|
| `src/services/context/autoContext.ts` | Auto-context query and formatting |
|
|
| `src/services/settings/autoContextSettings.ts` | Settings read/write helpers |
|
|
| `src/components/settings/ContextViewer.tsx` | Settings UI for auto-context toggle |
|
|
|
|
---
|
|
|
|
## Legacy: Memory System (Removed)
|
|
|
|
The automatic memory extraction pipeline has been **removed**. Previously, RA-H would analyze conversations and create "memory" nodes automatically. This system was removed because:
|
|
|
|
1. Memory nodes cluttered the database
|
|
2. Quality was inconsistent
|
|
3. Users preferred explicit knowledge capture
|
|
|
|
**Existing memory nodes:** Still in the database but excluded from auto-context (filtered by `type != 'memory'`).
|
|
|
|
**Future approach:** Store long-term knowledge as regular nodes with explicit dimensions rather than automatic extraction.
|