agent-recall-mcp 3.4.19 → 3.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +404 -981
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/check-action.d.ts +3 -0
- package/dist/tools/check-action.d.ts.map +1 -0
- package/dist/tools/check-action.js +48 -0
- package/dist/tools/check-action.js.map +1 -0
- package/dist/tools/dashboard-export.d.ts +3 -0
- package/dist/tools/dashboard-export.d.ts.map +1 -0
- package/dist/tools/dashboard-export.js +19 -0
- package/dist/tools/dashboard-export.js.map +1 -0
- package/dist/tools/pipeline-close.d.ts +3 -0
- package/dist/tools/pipeline-close.d.ts.map +1 -0
- package/dist/tools/pipeline-close.js +36 -0
- package/dist/tools/pipeline-close.js.map +1 -0
- package/dist/tools/pipeline-current.d.ts +3 -0
- package/dist/tools/pipeline-current.d.ts.map +1 -0
- package/dist/tools/pipeline-current.js +16 -0
- package/dist/tools/pipeline-current.js.map +1 -0
- package/dist/tools/pipeline-list.d.ts +3 -0
- package/dist/tools/pipeline-list.d.ts.map +1 -0
- package/dist/tools/pipeline-list.js +16 -0
- package/dist/tools/pipeline-list.js.map +1 -0
- package/dist/tools/pipeline-open.d.ts +3 -0
- package/dist/tools/pipeline-open.d.ts.map +1 -0
- package/dist/tools/pipeline-open.js +27 -0
- package/dist/tools/pipeline-open.js.map +1 -0
- package/dist/tools/pipeline-show.d.ts +3 -0
- package/dist/tools/pipeline-show.d.ts.map +1 -0
- package/dist/tools/pipeline-show.js +22 -0
- package/dist/tools/pipeline-show.js.map +1 -0
- package/dist/tools/register-rule.d.ts +3 -0
- package/dist/tools/register-rule.d.ts.map +1 -0
- package/dist/tools/register-rule.js +23 -0
- package/dist/tools/register-rule.js.map +1 -0
- package/dist/tools/session-end-reflect.d.ts +3 -0
- package/dist/tools/session-end-reflect.d.ts.map +1 -0
- package/dist/tools/session-end-reflect.js +25 -0
- package/dist/tools/session-end-reflect.js.map +1 -0
- package/dist/tools/session-end.d.ts.map +1 -1
- package/dist/tools/session-end.js +49 -9
- package/dist/tools/session-end.js.map +1 -1
- package/dist/tools/session-start.d.ts.map +1 -1
- package/dist/tools/session-start.js +32 -3
- package/dist/tools/session-start.js.map +1 -1
- package/dist/tools/skill-list.d.ts +3 -0
- package/dist/tools/skill-list.d.ts.map +1 -0
- package/dist/tools/skill-list.js +16 -0
- package/dist/tools/skill-list.js.map +1 -0
- package/dist/tools/skill-recall.d.ts +3 -0
- package/dist/tools/skill-recall.d.ts.map +1 -0
- package/dist/tools/skill-recall.js +20 -0
- package/dist/tools/skill-recall.js.map +1 -0
- package/dist/tools/skill-write.d.ts +3 -0
- package/dist/tools/skill-write.d.ts.map +1 -0
- package/dist/tools/skill-write.js +31 -0
- package/dist/tools/skill-write.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,366 +1,238 @@
|
|
|
1
1
|
<h1 align="center">AgentRecall</h1>
|
|
2
2
|
|
|
3
3
|
<p align="center"><strong>Your agent doesn't just remember. It learns how you think.</strong></p>
|
|
4
|
-
<p align="center"
|
|
4
|
+
<p align="center"><strong>你的 agent 不只是记得。它在学你怎么想。</strong></p>
|
|
5
|
+
<p align="center">Every correction saved is a mistake never repeated. Every insight compounded is tokens never wasted rebuilding context.<br/>每一次纠正都是不会重复的错误。每一次复合都是不会重建的上下文。</p>
|
|
5
6
|
<p align="center">Persistent, compounding memory + automatic correction capture. MCP server + SDK + CLI.</p>
|
|
6
7
|
|
|
7
8
|
<p align="center">
|
|
9
|
+
<a href="https://t.me/+ywZwoHrg3AM0NDVi"><img src="https://img.shields.io/badge/Telegram-Community-2CA5E0?style=flat-square&logo=telegram" alt="Telegram Community"></a>
|
|
8
10
|
<a href="https://www.npmjs.com/package/agent-recall-mcp"><img src="https://img.shields.io/npm/v/agent-recall-mcp?style=flat-square&label=MCP&color=5D34F2" alt="MCP npm"></a>
|
|
9
11
|
<a href="https://www.npmjs.com/package/agent-recall-sdk"><img src="https://img.shields.io/npm/v/agent-recall-sdk?style=flat-square&label=SDK&color=0EA5E9" alt="SDK npm"></a>
|
|
10
12
|
<a href="https://www.npmjs.com/package/agent-recall-cli"><img src="https://img.shields.io/npm/v/agent-recall-cli?style=flat-square&label=CLI&color=10B981" alt="CLI npm"></a>
|
|
11
13
|
<a href="https://github.com/Goldentrii/AgentRecall/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-brightgreen?style=flat-square" alt="License"></a>
|
|
12
14
|
<a href="https://lobehub.com/mcp/goldentrii-agentrecall"><img src="https://lobehub.com/badge/mcp/goldentrii-agentrecall" alt="MCP Badge"></a>
|
|
13
|
-
<img src="https://img.shields.io/badge/MCP-
|
|
15
|
+
<img src="https://img.shields.io/badge/MCP-18_tools-orange?style=flat-square" alt="Tools">
|
|
16
|
+
<img src="https://img.shields.io/badge/memory_layers-5-7C3AED?style=flat-square" alt="5 layers">
|
|
14
17
|
<img src="https://img.shields.io/badge/cloud-zero-blue?style=flat-square" alt="Zero Cloud">
|
|
15
18
|
<img src="https://img.shields.io/badge/Obsidian-compatible-7C3AED?style=flat-square" alt="Obsidian">
|
|
16
|
-
<img src="https://img.shields.io/badge/
|
|
17
|
-
<img src="https://img.shields.io/badge/
|
|
18
|
-
<img src="https://img.shields.io/badge/
|
|
19
|
-
<img src="https://img.shields.io/badge/scoring-RRF_(Cormack_2009)-7C3AED?style=flat-square" alt="RRF scoring">
|
|
20
|
-
<img src="https://img.shields.io/badge/decay-Ebbinghaus%2BZipf-3B82F6?style=flat-square" alt="Ebbinghaus+Zipf decay">
|
|
21
|
-
<img src="https://img.shields.io/badge/feedback-Bayesian_Beta_(active)-F59E0B?style=flat-square" alt="Beta distribution">
|
|
22
|
-
<img src="https://img.shields.io/badge/semantic_recall-pgvector_%2B_RRF-8B5CF6?style=flat-square" alt="Semantic recall">
|
|
19
|
+
<img src="https://img.shields.io/badge/decay-FSRS--lite-3B82F6?style=flat-square" alt="FSRS-lite decay">
|
|
20
|
+
<img src="https://img.shields.io/badge/retrieval-Hopfield_%2B_RRF-8B5CF6?style=flat-square" alt="Hopfield retrieval">
|
|
21
|
+
<img src="https://img.shields.io/badge/feedback-precision_KPI-F59E0B?style=flat-square" alt="Precision KPI">
|
|
23
22
|
</p>
|
|
24
23
|
|
|
25
24
|
<p align="center">
|
|
26
25
|
<b>EN:</b>
|
|
27
|
-
<a href="#why
|
|
28
|
-
<a href="#
|
|
29
|
-
<a href="#quick-start">Install</a> ·
|
|
30
|
-
<a href="#
|
|
31
|
-
<a href="#
|
|
32
|
-
<a href="#
|
|
26
|
+
<a href="#what-why--什么和为什么">Why</a> ·
|
|
27
|
+
<a href="#5-memory-layers--五层记忆模型">Memory</a> ·
|
|
28
|
+
<a href="#quick-start--快速开始">Install</a> ·
|
|
29
|
+
<a href="#18-mcp-tools--18-个-mcp-工具">Tools</a> ·
|
|
30
|
+
<a href="#how-memory-compounds--记忆如何复合">Compounding</a> ·
|
|
31
|
+
<a href="#whats-new-in-phase-6--phase-6-新增">Phase 6</a> ·
|
|
33
32
|
<a href="#sdk-api">SDK</a> ·
|
|
34
|
-
<a href="#
|
|
35
|
-
<a href="#
|
|
33
|
+
<a href="#cli">CLI</a> ·
|
|
34
|
+
<a href="#architecture--架构">Arch</a>
|
|
36
35
|
|
|
|
37
36
|
<b>中文:</b>
|
|
38
|
-
<a href="#
|
|
39
|
-
<a href="
|
|
40
|
-
<a href="
|
|
41
|
-
<a href="#
|
|
42
|
-
<a href="
|
|
43
|
-
<a href="
|
|
37
|
+
<a href="#what-why--什么和为什么">什么</a> ·
|
|
38
|
+
<a href="#5-memory-layers--五层记忆模型">记忆模型</a> ·
|
|
39
|
+
<a href="#quick-start--快速开始">安装</a> ·
|
|
40
|
+
<a href="#18-mcp-tools--18-个-mcp-工具">工具</a> ·
|
|
41
|
+
<a href="#how-memory-compounds--记忆如何复合">复合</a> ·
|
|
42
|
+
<a href="#whats-new-in-phase-6--phase-6-新增">新增</a>
|
|
44
43
|
</p>
|
|
45
44
|
|
|
46
45
|
---
|
|
47
46
|
|
|
48
47
|
<p align="center">
|
|
49
|
-
<a href="#
|
|
50
|
-
<a href="#
|
|
51
|
-
<a href="#
|
|
52
|
-
<a href="#
|
|
53
|
-
<a href="#already-using-another-memory-system
|
|
48
|
+
<a href="#the-session-loop--会话循环"><img src="https://img.shields.io/badge/%2Farstatus-START_HERE-22C55E?style=for-the-badge" alt="/arstatus"></a>
|
|
49
|
+
<a href="#the-session-loop--会话循环"><img src="https://img.shields.io/badge/%2Farstart-Load_Context-4ECDC4?style=for-the-badge" alt="/arstart"></a>
|
|
50
|
+
<a href="#the-session-loop--会话循环"><img src="https://img.shields.io/badge/%2Farsave-Save_Session-FF6B6B?style=for-the-badge" alt="/arsave"></a>
|
|
51
|
+
<a href="#the-session-loop--会话循环"><img src="https://img.shields.io/badge/%2Farsaveall-Batch_Save-FFD93D?style=for-the-badge" alt="/arsaveall"></a>
|
|
52
|
+
<a href="#already-using-another-memory-system--已经用过别的"><img src="https://img.shields.io/badge/%2Farbootstrap-Transfer_Memory-8B5CF6?style=for-the-badge" alt="/arbootstrap"></a>
|
|
54
53
|
</p>
|
|
55
|
-
<p align="center">
|
|
56
|
-
<img src="https://img.shields.io/badge/AUTO-hook--start-8B5CF6?style=for-the-badge" alt="hook-start">
|
|
57
|
-
<img src="https://img.shields.io/badge/AUTO-hook--correction-F97316?style=for-the-badge" alt="hook-correction">
|
|
58
|
-
<img src="https://img.shields.io/badge/AUTO-hook--end-06B6D4?style=for-the-badge" alt="hook-end">
|
|
59
|
-
</p>
|
|
60
|
-
<p align="center">
|
|
61
|
-
<a href="#how-memory-compounds"><img src="https://img.shields.io/badge/1-AUTO--NAMING-5D34F2?style=for-the-badge" alt="Auto-Naming"></a>
|
|
62
|
-
<a href="#how-memory-compounds"><img src="https://img.shields.io/badge/2-INDEXES-0EA5E9?style=for-the-badge" alt="Indexes"></a>
|
|
63
|
-
<a href="#how-memory-compounds"><img src="https://img.shields.io/badge/3-RELATIVITY-10B981?style=for-the-badge" alt="Relativity"></a>
|
|
64
|
-
<a href="#how-memory-compounds"><img src="https://img.shields.io/badge/4-WEIGHT_%2B_DECAY-F59E0B?style=for-the-badge" alt="Weight + Decay"></a>
|
|
65
|
-
<a href="#how-memory-compounds"><img src="https://img.shields.io/badge/5-FEEDBACK_LOOP-EF4444?style=for-the-badge" alt="Feedback Loop"></a>
|
|
66
|
-
</p>
|
|
67
|
-
|
|
68
|
-
## Already Using Another Memory System? `/arbootstrap`
|
|
69
|
-
|
|
70
|
-
> [!NOTE]
|
|
71
|
-
> **You don't start from zero.** If you've been using Claude's built-in memory, Mem0, or just working in git repos — AgentRecall can discover and import your existing context automatically.
|
|
72
|
-
|
|
73
|
-
Most users installing AgentRecall aren't starting fresh. They already have:
|
|
74
|
-
- **Git repos** with months of commit history and project structure
|
|
75
|
-
- **Claude AutoMemory** (`~/.claude/projects/`) with user profiles, feedback, and project memories
|
|
76
|
-
- **CLAUDE.md files** with project conventions and architecture decisions
|
|
77
|
-
|
|
78
|
-
**`/arbootstrap`** scans your machine and imports everything in one shot:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
/arbootstrap
|
|
82
|
-
|
|
83
|
-
──────────────────────────────────────────────────────────────
|
|
84
|
-
AgentRecall Bootstrap Scan 2026-04-26
|
|
85
|
-
──────────────────────────────────────────────────────────────
|
|
86
|
-
|
|
87
|
-
Found on your machine:
|
|
88
|
-
24 git repos
|
|
89
|
-
92 Claude memory files
|
|
90
|
-
3 CLAUDE.md files
|
|
91
|
-
|
|
92
|
-
Projects:
|
|
93
|
-
18 new (not yet in AgentRecall)
|
|
94
|
-
10 already imported
|
|
95
|
-
|
|
96
|
-
Scan time: 141ms
|
|
97
|
-
──────────────────────────────────────────────────────────────
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**What gets imported per project:**
|
|
101
|
-
- **Identity** — project name, language, description → `palace/identity.md`
|
|
102
|
-
- **Architecture** — CLAUDE.md conventions → `palace/rooms/architecture/`
|
|
103
|
-
- **Memory** — Claude AutoMemory files → `palace/rooms/knowledge/`
|
|
104
|
-
- **Trajectory** — recent git history → initial journal entry
|
|
105
|
-
|
|
106
|
-
**Safety guarantees:**
|
|
107
|
-
- Scan is read-only — never writes to your machine
|
|
108
|
-
- Import only writes to `~/.agent-recall/` — never modifies source files
|
|
109
|
-
- Skips `.env`, credentials, `.pem`, `.key` — never reads secrets
|
|
110
|
-
- Projects already in AgentRecall are skipped (no double-import)
|
|
111
|
-
|
|
112
|
-
**For MCP-only environments** (Codex, Cursor, VS Code Copilot):
|
|
113
|
-
```
|
|
114
|
-
bootstrap_scan() # discover what's on the machine
|
|
115
|
-
bootstrap_import({ scan_result }) # import selected projects
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**For CLI:**
|
|
119
|
-
```bash
|
|
120
|
-
ar bootstrap # scan and show results
|
|
121
|
-
ar bootstrap --dry-run # preview what would be imported
|
|
122
|
-
ar bootstrap --import # import all new projects
|
|
123
|
-
ar bootstrap --import --project X # import one project
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
After bootstrap, run `/arstatus` — your projects are ready.
|
|
127
54
|
|
|
128
55
|
---
|
|
129
56
|
|
|
130
|
-
##
|
|
131
|
-
|
|
132
|
-
> [!TIP]
|
|
133
|
-
> **New to AgentRecall?** Read the **[→ Command Reference](docs/commands.md)** — full instructions, all example outputs, installation, and troubleshooting in one place.
|
|
134
|
-
|
|
135
|
-
> [!IMPORTANT]
|
|
136
|
-
> **Run `/arstatus` at the start of every session.** It shows all your projects, what's pending, what's blocked, and lets you pick what to work on — by number, not by remembering project names. Without it, a fresh agent has no idea where to begin.
|
|
137
|
-
|
|
138
|
-
| Command | When | What it does |
|
|
139
|
-
|---------|------|-------------|
|
|
140
|
-
| ⭐ **`/arstatus`** | **Every session — run this first** | **Status board across ALL projects: pending work, blockers, numbered pick list. The true cold start.** |
|
|
141
|
-
| **`/arstart`** | After picking a project | Load deep context for one project: palace rooms, corrections, task-specific recall |
|
|
142
|
-
| **`/arsave`** | End of session | Write journal + consolidate to palace + update awareness |
|
|
143
|
-
| **`/arsaveall`** | End of day (multi-session) | **Batch save all parallel sessions at once** — scan, merge, deduplicate, done |
|
|
144
|
-
| **`/arbootstrap`** | **First install / switching from another memory system** | **Scan your machine for existing projects and import them into AgentRecall in seconds** |
|
|
145
|
-
|
|
146
|
-
**The session flow:** `/arstatus` → pick a number → `/arstart <project>` → work → `/arsave`.
|
|
147
|
-
|
|
148
|
-
**Running 5 agents in parallel?** Don't `/arsave` five times. Type **`/arsaveall`** once — it scans all of today's sessions across all projects, merges them into consolidated journals, deduplicates insights, and updates awareness in one shot. Each session writes to its own file (session-ID scoped), so **no conflicts, no data loss, no matter how many windows you have open.**
|
|
149
|
-
|
|
150
|
-
### What You'll See
|
|
151
|
-
|
|
152
|
-
Type `/arstatus` → see everything in flight across all projects, pick by number:
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
──────────────────────────────────────────────────────────────
|
|
156
|
-
AgentRecall Status Board 2026-04-21 5 projects
|
|
157
|
-
──────────────────────────────────────────────────────────────
|
|
158
|
-
|
|
159
|
-
1 ⚠ novada-site 2026-04-21 BLOCKED
|
|
160
|
-
Blocked: .env.local missing — Phase 1 cannot proceed
|
|
161
|
-
|
|
162
|
-
2 ● novada-mcp 2026-04-21
|
|
163
|
-
Next: fix novada_search POST /request → publish v0.8.0
|
|
164
|
-
|
|
165
|
-
3 ● prismma-scraper 2026-04-17
|
|
166
|
-
Next: UI upgrade Option A — light mode + 3D visuals
|
|
167
|
-
|
|
168
|
-
4 ✓ AgentRecall 2026-04-21 complete
|
|
169
|
-
Collecting real production data
|
|
57
|
+
## What & Why · 什么和为什么
|
|
170
58
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
Type `/arsave` → the system saves everything and renders a card with exact file paths and counts:
|
|
179
|
-
|
|
180
|
-
```
|
|
181
|
-
──────────────────────────────────────────────────────────────
|
|
182
|
-
AgentRecall ✓ Saved my-project 2026-04-20 #12
|
|
183
|
-
──────────────────────────────────────────────────────────────
|
|
184
|
-
|
|
185
|
-
Journal ~/.agent-recall/projects/my-project/journal/
|
|
186
|
-
└─ 2026-04-20--arsave--15L--review-feedback.md [written]
|
|
59
|
+
<table>
|
|
60
|
+
<tr>
|
|
61
|
+
<th width="50%">🇬🇧 English</th>
|
|
62
|
+
<th width="50%">🇨🇳 中文</th>
|
|
63
|
+
</tr>
|
|
64
|
+
<tr>
|
|
65
|
+
<td>
|
|
187
66
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
Palace ~/.agent-recall/projects/my-project/palace/
|
|
191
|
-
├─ rooms/Architecture [updated]
|
|
192
|
-
└─ rooms/Goals [updated]
|
|
193
|
-
|
|
194
|
-
Corrections 3 stored (always loaded at session start)
|
|
195
|
-
|
|
196
|
-
⚡ Similar entries found — consider merging:
|
|
197
|
-
2026-04-19 (review, feedback, architecture)
|
|
198
|
-
|
|
199
|
-
──────────────────────────────────────────────────────────────
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
Type `/arstart` → loads all context from memory in one shot:
|
|
203
|
-
|
|
204
|
-
```
|
|
205
|
-
──────────────────────────────────────────────────────────────
|
|
206
|
-
AgentRecall ↻ Loaded my-project 2026-04-21
|
|
207
|
-
──────────────────────────────────────────────────────────────
|
|
208
|
-
|
|
209
|
-
Project my-project — SaaS platform for AI agents
|
|
210
|
-
Last session 2026-04-20 — review + feedback loop shipped
|
|
211
|
-
|
|
212
|
-
Insights (top 3):
|
|
213
|
-
[5×] Server-rendered cards beat agent templates
|
|
214
|
-
[3×] Per-message dedup beats per-session dedup
|
|
215
|
-
[2×] Stemming + synonyms improve keyword recall
|
|
216
|
-
|
|
217
|
-
⚠ Past corrections — watch out:
|
|
218
|
-
- "No dark backgrounds" (corrected 3×)
|
|
219
|
-
- "Use bb-browser, not Playwright" (corrected 2×)
|
|
220
|
-
|
|
221
|
-
Cross-project: 2 related insights from novada-mcp
|
|
222
|
-
|
|
223
|
-
──────────────────────────────────────────────────────────────
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Type `/arsaveall` → batch-saves all parallel sessions at once:
|
|
227
|
-
|
|
228
|
-
```
|
|
229
|
-
──────────────────────────────────────────────────────────────
|
|
230
|
-
AgentRecall ✓ Batch Saved 2026-04-20
|
|
231
|
-
──────────────────────────────────────────────────────────────
|
|
232
|
-
|
|
233
|
-
Sessions scanned 5
|
|
234
|
-
Projects saved my-project, novada-mcp, prismma-scraper
|
|
235
|
-
Insights merged 4 (deduplicated from 7)
|
|
236
|
-
Corrections 2 new (auto-captured via hooks)
|
|
237
|
-
|
|
238
|
-
──────────────────────────────────────────────────────────────
|
|
239
|
-
```
|
|
67
|
+
**AgentRecall is not a memory tool. It's a learning loop.**
|
|
240
68
|
|
|
241
|
-
|
|
69
|
+
Memory is the mechanism. Understanding is the goal. Every time you correct your agent — *"no, not that version"*, *"put this section first"*, *"ask me before you assume"* — that correction is stored, weighted, and recalled next time.
|
|
242
70
|
|
|
243
|
-
|
|
244
|
-
──────────────────────────────────────────────────────────────
|
|
245
|
-
AgentRecall Bootstrap Complete 2026-04-26
|
|
246
|
-
──────────────────────────────────────────────────────────────
|
|
71
|
+
After 10 sessions, your agent doesn't just remember your project. It understands how you think: your priorities, your communication style, your non-negotiables.
|
|
247
72
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
3 items skipped
|
|
251
|
-
0 errors
|
|
73
|
+
</td>
|
|
74
|
+
<td>
|
|
252
75
|
|
|
253
|
-
|
|
254
|
-
──────────────────────────────────────────────────────────────
|
|
255
|
-
```
|
|
76
|
+
**AgentRecall 不是记忆工具,是学习闭环。**
|
|
256
77
|
|
|
257
|
-
|
|
78
|
+
记忆是机制,理解才是目标。每一次纠正——*"不是那个版本"*、*"先放这一段"*、*"假设之前先问我"*——都会被存储、加权、并在下次召回。
|
|
258
79
|
|
|
259
|
-
|
|
260
|
-
# Install commands (one-time, Claude Code only)
|
|
261
|
-
mkdir -p ~/.claude/commands
|
|
262
|
-
curl -o ~/.claude/commands/arstatus.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arstatus.md
|
|
263
|
-
curl -o ~/.claude/commands/arstart.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arstart.md
|
|
264
|
-
curl -o ~/.claude/commands/arsave.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arsave.md
|
|
265
|
-
curl -o ~/.claude/commands/arsaveall.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arsaveall.md
|
|
266
|
-
curl -o ~/.claude/commands/arbootstrap.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arbootstrap.md
|
|
267
|
-
```
|
|
80
|
+
跑 10 次会话之后,agent 不只是记得项目,它理解你的思考方式:优先级、沟通风格、不可妥协的底线。
|
|
268
81
|
|
|
269
|
-
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
<tr>
|
|
85
|
+
<td>
|
|
270
86
|
|
|
271
|
-
|
|
272
|
-
WITHOUT AgentRecall WITH AgentRecall
|
|
273
|
-
────────────────── ────────────────
|
|
274
|
-
|
|
275
|
-
Day 1: Build monorepo Day 1: /arstart → /arsave
|
|
276
|
-
Day 2: "What monorepo?" Day 2: /arstart
|
|
277
|
-
→ 20 min re-explaining → 2 sec: loads all decisions
|
|
278
|
-
→ Agent repeats same mistakes → Knows "no version inflation"
|
|
279
|
-
→ Forgets your priorities → Knows "arsave = hero section"
|
|
280
|
-
→ Misses half the tasks → Pushes to both repos
|
|
281
|
-
```
|
|
87
|
+
**Five things that make it different:**
|
|
282
88
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
Agent 2 finishes: you /arsave again → Scans all 5 sessions automatically
|
|
289
|
-
Agent 3 finishes: you /arsave again → Merges into consolidated journals
|
|
290
|
-
Agent 4 finishes: you /arsave again → Deduplicates insights across sessions
|
|
291
|
-
Agent 5 finishes: you /arsave again → Zero conflicts (session-ID scoped files)
|
|
292
|
-
→ 5x the work, corrections lost → One command, everything saved
|
|
293
|
-
→ Agent 3's correction unknown to Agent 5 → All agents share the same memory
|
|
294
|
-
```
|
|
89
|
+
- **Correction-first.** When you say "no, that's wrong", we log a `CorrectionRecord` with severity, holder, and evidence. After N confirmations across sessions, it auto-promotes to a cross-project insight.
|
|
90
|
+
- **Measurable learning loop.** Every correction tracks `retrieved_count`, `heeded_count`, `recurrence_count`, `precision`. The KPI that matters: *did the same bug recur after we warned about it?*
|
|
91
|
+
- **Five memory types.** Episodic, semantic, procedural, narrative, correction — mapped to canonical cognitive-psychology taxonomy (Squire 2004, Tulving 1972).
|
|
92
|
+
- **Local markdown only.** Everything lives in `~/.agent-recall/`. Open it in Obsidian. Grep it in the terminal. Version it in git. No cloud, no API keys, no lock-in.
|
|
93
|
+
- **Backed by published math.** FSRS-lite decay (Ebbinghaus → SuperMemo → FSRS-6), Modern Hopfield retrieval (Ramsauer 2020), RRF fusion (Cormack 2009).
|
|
295
94
|
|
|
296
|
-
|
|
95
|
+
</td>
|
|
96
|
+
<td>
|
|
297
97
|
|
|
298
|
-
|
|
98
|
+
**让它不同的五件事:**
|
|
299
99
|
|
|
300
|
-
|
|
100
|
+
- **以纠正为先。** 你说"不对"时,我们记下 `CorrectionRecord`(严重度、归属、证据)。跨会话被确认 N 次后,自动晋升为跨项目的 insight。
|
|
101
|
+
- **可量化的学习闭环。** 每条纠正都跟踪 `retrieved_count`(被召回多少次)、`heeded_count`(被遵守多少次)、`recurrence_count`(同样的 bug 是否复发)、`precision`。唯一重要的 KPI:警告之后同样的 bug 还复发吗?
|
|
102
|
+
- **五种记忆类型。** Episodic、semantic、procedural、narrative、correction —— 对应认知心理学经典分类(Squire 2004、Tulving 1972)。
|
|
103
|
+
- **只用本地 markdown。** 一切都在 `~/.agent-recall/`。用 Obsidian 打开、用终端 grep、用 git 版本管理。零云、零 API key、零锁定。
|
|
104
|
+
- **基于已发表数学。** FSRS-lite 衰减(Ebbinghaus → SuperMemo → FSRS-6)、Modern Hopfield 检索(Ramsauer 2020)、RRF 融合(Cormack 2009)。
|
|
301
105
|
|
|
302
|
-
|
|
106
|
+
</td>
|
|
107
|
+
</tr>
|
|
108
|
+
</table>
|
|
303
109
|
|
|
304
110
|
---
|
|
305
111
|
|
|
306
|
-
##
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
112
|
+
## 5 Memory Layers · 五层记忆模型
|
|
113
|
+
|
|
114
|
+
The canonical cognitive-psychology taxonomy mapped to your agent's filesystem · 把认知心理学的经典记忆分类映射到你的文件系统:
|
|
115
|
+
|
|
116
|
+
<table>
|
|
117
|
+
<tr>
|
|
118
|
+
<th>Layer · 层</th>
|
|
119
|
+
<th>Type · 类型</th>
|
|
120
|
+
<th>EN — What it holds</th>
|
|
121
|
+
<th>中文 — 存什么</th>
|
|
122
|
+
<th>Path</th>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td>1</td>
|
|
126
|
+
<td><b>Episodic</b><br/>情景</td>
|
|
127
|
+
<td>What happened in each session, chronologically. Auto-written by the agent during work.</td>
|
|
128
|
+
<td>每次会话发生了什么,按时间顺序。Agent 工作时自动写入。</td>
|
|
129
|
+
<td><code>journal/</code></td>
|
|
130
|
+
</tr>
|
|
131
|
+
<tr>
|
|
132
|
+
<td>2</td>
|
|
133
|
+
<td><b>Semantic</b><br/>语义</td>
|
|
134
|
+
<td>Topic-clustered facts with <code>[[wikilinks]]</code>: Architecture, Goals, Blockers, etc.</td>
|
|
135
|
+
<td>按主题聚类的事实,带 <code>[[wikilinks]]</code>:架构、目标、阻塞等。</td>
|
|
136
|
+
<td><code>palace/rooms/</code></td>
|
|
137
|
+
</tr>
|
|
138
|
+
<tr>
|
|
139
|
+
<td>3</td>
|
|
140
|
+
<td><b>Procedural</b><br/>程序<br/><i>NEW</i></td>
|
|
141
|
+
<td>IF-THEN production rules: <i>"When setting up Cloudflare DNS, do these 4 steps."</i> Reusable how-tos.</td>
|
|
142
|
+
<td>IF-THEN 产生式规则:"设置 Cloudflare DNS 时,按这 4 步走"。可复用的操作流程。</td>
|
|
143
|
+
<td><code>palace/skills/</code></td>
|
|
144
|
+
</tr>
|
|
145
|
+
<tr>
|
|
146
|
+
<td>4</td>
|
|
147
|
+
<td><b>Narrative</b><br/>叙事</td>
|
|
148
|
+
<td>Project phase milestones: Goal → What was hard → How solved → Synthesis (1-sentence reusable lesson).</td>
|
|
149
|
+
<td>项目阶段里程碑:目标 → 难点 → 怎么解决的 → 提炼(一句话可复用的经验)。</td>
|
|
150
|
+
<td><code>palace/pipeline/</code></td>
|
|
151
|
+
</tr>
|
|
152
|
+
<tr>
|
|
153
|
+
<td>5</td>
|
|
154
|
+
<td><b>Correction</b><br/>纠正</td>
|
|
155
|
+
<td>Behavioral calibration: rules the agent must follow, with precision KPIs tracking effectiveness.</td>
|
|
156
|
+
<td>行为校准:agent 必须遵守的规则,配合 precision KPI 追踪有效性。</td>
|
|
157
|
+
<td><code>corrections/</code></td>
|
|
158
|
+
</tr>
|
|
159
|
+
<tr>
|
|
160
|
+
<td>+</td>
|
|
161
|
+
<td><b>Awareness</b><br/>感知</td>
|
|
162
|
+
<td>Cross-project insights promoted from N-confirmed corrections. The compounding layer.</td>
|
|
163
|
+
<td>跨项目的 insight,由确认 N 次以上的纠正晋升而来。复合层。</td>
|
|
164
|
+
<td><code>palace/awareness</code></td>
|
|
165
|
+
</tr>
|
|
166
|
+
</table>
|
|
167
|
+
|
|
168
|
+
All five layers share one **canonical naming grammar** (`<scope>/<type>/[<topic>/]<temporal>--<slug>.md`) so any agent — Claude, Codex, future LLM — can compose retrieval paths from intent instead of grepping five conventions. Existing files keep working via a `legacy_path` virtual-key view. No migration needed.
|
|
169
|
+
|
|
170
|
+
所有五层共享一个 **规范命名语法**(`<scope>/<type>/[<topic>/]<temporal>--<slug>.md`),任何 agent —— Claude、Codex、未来的 LLM —— 都能用意图组合检索路径,不用 grep 五套命名约定。旧文件通过 `legacy_path` 虚拟键视图继续可用。无需迁移。
|
|
311
171
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
- **Compounding awareness, not infinite logs.** Memory is capped at 200 lines. New insights either merge with existing ones (strengthening them) or replace the weakest. After 100 sessions, your awareness file is still 200 lines — but each line carries the weight of cross-validated, confirmed observations.
|
|
315
|
-
|
|
316
|
-
- **Cross-project recall.** Lessons learned in one project apply everywhere. Built a rate limiter last month? That lesson surfaces when you're building one today — in a different repo, through a different agent.
|
|
317
|
-
|
|
318
|
-
- **Near-universal compatibility.** MCP server for any MCP-compatible agent (Claude Code, Cursor, Windsurf, VS Code, Codex). SDK for any JS/TS framework (LangChain, CrewAI, Vercel AI SDK, custom agents). CLI for terminal and CI workflows. One memory system, every surface.
|
|
172
|
+
---
|
|
319
173
|
|
|
320
|
-
|
|
174
|
+
## The Session Loop · 会话循环
|
|
175
|
+
|
|
176
|
+
<table>
|
|
177
|
+
<tr>
|
|
178
|
+
<th>Command</th>
|
|
179
|
+
<th>When · 什么时候</th>
|
|
180
|
+
<th>EN — What it does</th>
|
|
181
|
+
<th>中文 — 做什么</th>
|
|
182
|
+
</tr>
|
|
183
|
+
<tr>
|
|
184
|
+
<td>🔴 <code>/arstatus</code></td>
|
|
185
|
+
<td><b>First — every session</b><br/>每个会话最先</td>
|
|
186
|
+
<td>Status board across ALL projects. Pending work, blockers, relevance scores. Pick by number.</td>
|
|
187
|
+
<td>所有项目的状态看板。待办、阻塞、相关性分数。按编号选。</td>
|
|
188
|
+
</tr>
|
|
189
|
+
<tr>
|
|
190
|
+
<td><code>/arstart</code></td>
|
|
191
|
+
<td>After picking a project<br/>选完项目后</td>
|
|
192
|
+
<td>Load deep context: palace rooms, corrections, task-specific recall.</td>
|
|
193
|
+
<td>加载深度上下文:palace 房间、纠正记录、任务相关召回。</td>
|
|
194
|
+
</tr>
|
|
195
|
+
<tr>
|
|
196
|
+
<td>🔴 <code>/arsave</code></td>
|
|
197
|
+
<td><b>Last — every session</b><br/>每个会话最后</td>
|
|
198
|
+
<td>Write journal + palace consolidation + awareness compounding + semantic prefetch.</td>
|
|
199
|
+
<td>写 journal + palace 合并 + awareness 复合 + 语义预取。</td>
|
|
200
|
+
</tr>
|
|
201
|
+
<tr>
|
|
202
|
+
<td><code>/arsaveall</code></td>
|
|
203
|
+
<td>End of day (multi-session)<br/>一天结束(多会话)</td>
|
|
204
|
+
<td>Batch save all parallel sessions — scan, merge, deduplicate, done.</td>
|
|
205
|
+
<td>批量保存所有并行会话——扫描、合并、去重、完成。</td>
|
|
206
|
+
</tr>
|
|
207
|
+
<tr>
|
|
208
|
+
<td><code>/arbootstrap</code></td>
|
|
209
|
+
<td>First install / migrating<br/>首次安装 / 迁移</td>
|
|
210
|
+
<td>Scan your machine for existing projects and import them.</td>
|
|
211
|
+
<td>扫描你的机器,把已有项目导入进来。</td>
|
|
212
|
+
</tr>
|
|
213
|
+
</table>
|
|
214
|
+
|
|
215
|
+
> **Without `/arstatus`, a fresh agent has zero orientation. Without `/arsave`, nothing compounds. These two are the entire loop.**
|
|
216
|
+
> 没有 `/arstatus`,新 agent 完全失去方向。没有 `/arsave`,什么都不会复合。这两个就是整个闭环。
|
|
321
217
|
|
|
322
218
|
---
|
|
323
219
|
|
|
324
|
-
##
|
|
220
|
+
## Already Using Another Memory System? · 已经用过别的?
|
|
325
221
|
|
|
326
|
-
|
|
327
|
-
```bash
|
|
328
|
-
claude mcp add --scope user agent-recall -- npx -y agent-recall-mcp
|
|
329
|
-
```
|
|
222
|
+
**`/arbootstrap`** scans your machine and imports everything: git repos, Claude AutoMemory (`~/.claude/projects/`), CLAUDE.md files. Read-only scan, secrets never touched.
|
|
330
223
|
|
|
331
|
-
|
|
332
|
-
```typescript
|
|
333
|
-
import { AgentRecall } from "agent-recall-sdk";
|
|
334
|
-
const memory = new AgentRecall({ project: "my-app" });
|
|
335
|
-
await memory.capture("What stack?", "Next.js + Postgres");
|
|
336
|
-
```
|
|
224
|
+
**`/arbootstrap`** 扫描你的机器并导入所有:git 仓库、Claude AutoMemory(`~/.claude/projects/`)、CLAUDE.md 文件。只读扫描,secrets 永不触碰。
|
|
337
225
|
|
|
338
|
-
**CLI** — for terminal workflows and CI:
|
|
339
226
|
```bash
|
|
340
|
-
|
|
341
|
-
|
|
227
|
+
ar bootstrap # scan and show what was found
|
|
228
|
+
ar bootstrap --import # import all new projects
|
|
342
229
|
```
|
|
343
230
|
|
|
344
231
|
---
|
|
345
232
|
|
|
346
|
-
##
|
|
347
|
-
|
|
348
|
-
A **learning system** that bridges the gap between how humans think and how AI agents work. Not a log. Not a database. A compounding loop where every correction, decision, and insight makes the next session better than the last.
|
|
349
|
-
|
|
350
|
-
| Without AgentRecall | With AgentRecall |
|
|
351
|
-
|---------------------|------------------|
|
|
352
|
-
| Agent forgets yesterday's decisions | Decisions live in palace rooms, loaded on cold start |
|
|
353
|
-
| Same mistake repeated across sessions | `recall_insight` surfaces past lessons before work starts |
|
|
354
|
-
| 5 min context recovery on each session start | 2 second cold start from palace (~200 tokens) |
|
|
355
|
-
| Flat memory files that grow forever | 200-line awareness cap forces merge-or-replace |
|
|
356
|
-
| Knowledge trapped in one project | Cross-project insights match by keyword |
|
|
357
|
-
| Agent misunderstands, you correct, it forgets | `alignment_check` records corrections permanently |
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## Quick Start
|
|
233
|
+
## Quick Start · 快速开始
|
|
362
234
|
|
|
363
|
-
### MCP Server
|
|
235
|
+
### MCP Server — for AI agents
|
|
364
236
|
|
|
365
237
|
```bash
|
|
366
238
|
# Claude Code
|
|
@@ -379,14 +251,15 @@ claude mcp add --scope user agent-recall -- npx -y agent-recall-mcp
|
|
|
379
251
|
codex mcp add agent-recall -- npx -y agent-recall-mcp
|
|
380
252
|
```
|
|
381
253
|
|
|
382
|
-
**Skill (Claude Code only)
|
|
254
|
+
**Skill (Claude Code only) · 仅 Claude Code:**
|
|
255
|
+
|
|
383
256
|
```bash
|
|
384
257
|
mkdir -p ~/.claude/skills/agent-recall
|
|
385
258
|
curl -o ~/.claude/skills/agent-recall/SKILL.md \
|
|
386
259
|
https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/SKILL.md
|
|
387
260
|
```
|
|
388
261
|
|
|
389
|
-
### SDK
|
|
262
|
+
### SDK — for JS/TS applications
|
|
390
263
|
|
|
391
264
|
```bash
|
|
392
265
|
npm install agent-recall-sdk
|
|
@@ -395,750 +268,300 @@ npm install agent-recall-sdk
|
|
|
395
268
|
```typescript
|
|
396
269
|
import { AgentRecall } from "agent-recall-sdk";
|
|
397
270
|
const memory = new AgentRecall({ project: "my-app" });
|
|
398
|
-
await memory.
|
|
399
|
-
await memory.
|
|
400
|
-
await memory.palaceWrite("architecture", "Stack: Next.js + Drizzle");
|
|
271
|
+
await memory.capture("What stack?", "Next.js + Postgres");
|
|
272
|
+
const ctx = await memory.recall("rate limiting");
|
|
401
273
|
```
|
|
402
274
|
|
|
403
|
-
### CLI
|
|
275
|
+
### CLI — for terminal & CI
|
|
404
276
|
|
|
405
277
|
```bash
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
ar search "rate limiting" --include-palace
|
|
278
|
+
npx agent-recall-cli capture "What stack?" "Next.js + Postgres"
|
|
279
|
+
npx agent-recall-cli recall "rate limiting"
|
|
280
|
+
npx agent-recall-cli palace walk --depth active
|
|
410
281
|
```
|
|
411
282
|
|
|
412
283
|
---
|
|
413
284
|
|
|
414
|
-
##
|
|
415
|
-
|
|
416
|
-
>
|
|
417
|
-
>
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
→ pgvector stores the embedding
|
|
447
|
-
|
|
448
|
-
recall(query)
|
|
449
|
-
→ Supabase configured?
|
|
450
|
-
YES → cosine similarity search via pgvector, reranked with local RRF
|
|
451
|
-
NO → local keyword search (existing behavior, unchanged)
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
### Graceful degradation
|
|
455
|
-
|
|
456
|
-
If Supabase is unreachable (network error, quota exceeded, not configured), `recall()` falls back to local keyword search silently. Zero behavior change if the feature is never configured.
|
|
457
|
-
|
|
458
|
-
**Required:** `SUPABASE_URL` + `SUPABASE_SERVICE_ROLE_KEY` + either `OPENAI_API_KEY` or `VOYAGE_API_KEY`. All optional — AgentRecall works fully without them.
|
|
459
|
-
|
|
460
|
-
**Rebuild index:** `ar setup supabase --backfill` — re-embeds all local memories into Supabase.
|
|
285
|
+
## 18 MCP Tools · 18 个 MCP 工具
|
|
286
|
+
|
|
287
|
+
<table>
|
|
288
|
+
<tr>
|
|
289
|
+
<th>Category · 类别</th>
|
|
290
|
+
<th>Tool</th>
|
|
291
|
+
<th>EN — What it does</th>
|
|
292
|
+
<th>中文 — 做什么</th>
|
|
293
|
+
</tr>
|
|
294
|
+
<tr><td rowspan="6"><b>Core session</b><br/>核心会话</td>
|
|
295
|
+
<td><code>session_start</code></td><td>Load context at session start (full or <code>mode:"lite"</code> ≤500 tokens).</td><td>会话开始时加载上下文(完整或 <code>mode:"lite"</code> ≤500 tokens)。</td></tr>
|
|
296
|
+
<tr><td><code>session_end</code></td><td>Save journal + insights; optionally close/open a pipeline phase in same call.</td><td>保存 journal + insights;可在同一次调用中关闭/开启 pipeline 阶段。</td></tr>
|
|
297
|
+
<tr><td><code>session_end_reflect</code></td><td>Park-2023 reflection bundle — distills last N journals into reusable insights.</td><td>Park-2023 反思包——把最近 N 篇 journal 蒸馏成可复用的 insight。</td></tr>
|
|
298
|
+
<tr><td><code>remember</code></td><td>Write a memory, auto-routes to the right palace room.</td><td>写入一条记忆,自动路由到合适的 palace 房间。</td></tr>
|
|
299
|
+
<tr><td><code>recall</code></td><td>Search all memory (BM25 + vector with RRF fusion + Hopfield rerank).</td><td>搜索所有记忆(BM25 + 向量 + RRF 融合 + Hopfield 重排)。</td></tr>
|
|
300
|
+
<tr><td><code>memory_query</code></td><td>Pull-on-demand recall mid-task. Supports file-scoped queries.</td><td>任务中按需召回。支持按文件范围查询。</td></tr>
|
|
301
|
+
<tr><td rowspan="2"><b>Calibration</b><br/>校准</td>
|
|
302
|
+
<td><code>check</code></td><td>Record agent understanding; system returns predictive warnings from past corrections.</td><td>记录 agent 的理解;系统返回从过去纠正得出的预测性警告。</td></tr>
|
|
303
|
+
<tr><td><code>dashboard_export</code></td><td>Generate agent-readable <code>dashboard.json</code> with all-project memory snapshot + naming index.</td><td>生成 agent 可读的 <code>dashboard.json</code>,包含所有项目记忆快照 + 命名索引。</td></tr>
|
|
304
|
+
<tr><td rowspan="5"><b>Pipeline</b><br/>叙事</td>
|
|
305
|
+
<td><code>pipeline_open</code></td><td>Open a new project phase (Goal/Hard/Solved/Synthesis).</td><td>开启新的项目阶段(目标/难点/解决/提炼)。</td></tr>
|
|
306
|
+
<tr><td><code>pipeline_close</code></td><td>Close active phase with reflection fields. Status: closed / abandoned / pivoted.</td><td>关闭当前阶段并填反思字段。状态:closed / abandoned / pivoted。</td></tr>
|
|
307
|
+
<tr><td><code>pipeline_list</code></td><td>List all phases as JSON summaries.</td><td>列出所有阶段(JSON 摘要)。</td></tr>
|
|
308
|
+
<tr><td><code>pipeline_current</code></td><td>Return full content of the currently active phase.</td><td>返回当前 active 阶段的完整内容。</td></tr>
|
|
309
|
+
<tr><td><code>pipeline_show</code></td><td>Render a project's narrative spine — human-readable view of all phases.</td><td>渲染项目的叙事主干——所有阶段的人类可读视图。</td></tr>
|
|
310
|
+
<tr><td rowspan="3"><b>Skills</b><br/>程序记忆</td>
|
|
311
|
+
<td><code>skill_write</code></td><td>Save an IF-THEN production rule (trigger / preconditions / steps / postconditions / pitfalls).</td><td>保存一条 IF-THEN 产生式规则(触发条件/前提/步骤/后置条件/陷阱)。</td></tr>
|
|
312
|
+
<tr><td><code>skill_recall</code></td><td>Find skills matching an intent (deterministic trigger-keyword ranking).</td><td>按意图找到匹配的 skill(基于触发关键词的确定性排序)。</td></tr>
|
|
313
|
+
<tr><td><code>skill_list</code></td><td>Browse all skills in a project.</td><td>浏览项目中所有 skill。</td></tr>
|
|
314
|
+
<tr><td><b>Setup</b><br/>初始化</td>
|
|
315
|
+
<td><code>bootstrap_scan</code> + <code>bootstrap_import</code></td><td>Discover existing projects on this machine and import in bulk.</td><td>发现本机已有项目并批量导入。</td></tr>
|
|
316
|
+
</table>
|
|
461
317
|
|
|
462
318
|
---
|
|
463
319
|
|
|
464
|
-
## How
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
### Session End (`/arsave`)
|
|
505
|
-
```
|
|
506
|
-
session_end(summary="...", insights=[...], trajectory="...") → journal + awareness + consolidation
|
|
507
|
-
```
|
|
320
|
+
## How Memory Compounds · 记忆如何复合
|
|
321
|
+
|
|
322
|
+
<table>
|
|
323
|
+
<tr>
|
|
324
|
+
<th>Mechanism · 机制</th>
|
|
325
|
+
<th>EN</th>
|
|
326
|
+
<th>中文</th>
|
|
327
|
+
</tr>
|
|
328
|
+
<tr>
|
|
329
|
+
<td><b>Auto-naming</b></td>
|
|
330
|
+
<td>Files name themselves from content via canonical grammar — agents compose paths from intent, no guessing.</td>
|
|
331
|
+
<td>文件根据内容用规范语法自命名——agent 按意图组合路径,不用猜。</td>
|
|
332
|
+
</tr>
|
|
333
|
+
<tr>
|
|
334
|
+
<td><b>FSRS-lite decay</b></td>
|
|
335
|
+
<td><code>R = exp(-days_since_lastConfirmed / S)</code>. Each recall hit reinforces stability. Cold facts get tagged <code>archive_candidate</code> instead of silently growing forever.</td>
|
|
336
|
+
<td><code>R = exp(-距上次确认天数 / S)</code>。每次召回命中会强化稳定性。冷的事实会被标 <code>archive_candidate</code>,而不是静默无限增长。</td>
|
|
337
|
+
</tr>
|
|
338
|
+
<tr>
|
|
339
|
+
<td><b>RRF + Hopfield retrieval</b></td>
|
|
340
|
+
<td>BM25 + vector merged via RRF (Cormack 2009), then optionally re-ranked by Modern Hopfield (Ramsauer 2020) for associative blend.</td>
|
|
341
|
+
<td>BM25 + 向量通过 RRF 融合(Cormack 2009),再可选地用 Modern Hopfield 重排(Ramsauer 2020)做关联融合。</td>
|
|
342
|
+
</tr>
|
|
343
|
+
<tr>
|
|
344
|
+
<td><b>Correction precision KPI</b></td>
|
|
345
|
+
<td>Every correction tracks <code>precision = heeded / retrieved</code>. <0.3 → archive candidate (noise). ≥0.8 → promote faster.</td>
|
|
346
|
+
<td>每条纠正跟踪 <code>precision = 被遵守 / 被召回</code>。<0.3 → archive 候选(噪声)。≥0.8 → 加速晋升。</td>
|
|
347
|
+
</tr>
|
|
348
|
+
<tr>
|
|
349
|
+
<td><b>Cross-project insights</b></td>
|
|
350
|
+
<td>Lessons learned in one project surface when you're working on a similar problem in another. Match by keyword + topic.</td>
|
|
351
|
+
<td>一个项目学到的经验,在另一个相似问题上会自动浮现。按关键词 + 主题匹配。</td>
|
|
352
|
+
</tr>
|
|
353
|
+
<tr>
|
|
354
|
+
<td><b>Awareness cap</b></td>
|
|
355
|
+
<td>Capped at 200 lines. New insights merge with existing (strengthening) or replace the weakest. After 100 sessions: still 200 lines, but cross-validated.</td>
|
|
356
|
+
<td>上限 200 行。新 insight 与已有合并(加强)或替换最弱的。100 次会话之后:仍然 200 行,但都是经过交叉验证的。</td>
|
|
357
|
+
</tr>
|
|
358
|
+
</table>
|
|
508
359
|
|
|
509
360
|
---
|
|
510
361
|
|
|
511
|
-
##
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
<
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
>
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
`recall` applies the **Ebbinghaus forgetting curve** `R(t) = e^(−t/S)` with memory-type-specific strength values:
|
|
569
|
-
|
|
570
|
-
| Memory type | S (days) | 1-day retention | 1-week retention |
|
|
571
|
-
|-------------|----------|-----------------|------------------|
|
|
572
|
-
| Journal (episodic) | 2 | 60% | ~7% |
|
|
573
|
-
| Knowledge / bug fix (procedural) | 180 | 99% | 96% |
|
|
574
|
-
| Palace / decisions (semantic) | 9999 | ≈100% | ≈100% |
|
|
575
|
-
|
|
576
|
-
Old journal noise fades in days. Architecture decisions persist indefinitely. **Hot-window boost:** Items from the last 6 hours get a 3× score multiplier, last 24 hours get 2×, last 72 hours get 1.3×.
|
|
577
|
-
|
|
578
|
-
### 5. Feedback Loop
|
|
579
|
-
|
|
580
|
-
The system uses a **Bayesian Beta distribution** — the mathematically optimal estimate of true usefulness from binary observations (`E[Beta(α,β)] = (pos+1)/(pos+neg+2)`). Rating a result "useless" for one query doesn't penalize it for unrelated queries. Feedback is query-aware, not global.
|
|
581
|
-
|
|
582
|
-
> **Feedback is now automatic.** The ambient recall hook tracks which memories were surfaced. Human's next message is a correction → negative feedback. Not a correction → positive feedback. No agent action required.
|
|
583
|
-
|
|
584
|
-
### The Compounding Effect
|
|
585
|
-
|
|
586
|
-
```
|
|
587
|
-
Session 1: Save 3 memories (auto-named, indexed, edges created)
|
|
588
|
-
Session 5: Recall surfaces memories from sessions 1-4, feedback refines ranking
|
|
589
|
-
Session 10: watch_for warns agent about past mistakes before they repeat
|
|
590
|
-
Session 20: Awareness contains 10 cross-validated insights (merged from 40+ raw observations)
|
|
591
|
-
Session 50: The agent knows your priorities, blind spots, and communication style
|
|
592
|
-
— not because it was told, but because every correction compounded
|
|
593
|
-
```
|
|
594
|
-
|
|
595
|
-
**Stemming + synonyms:** "deploying" matches "deployment," "ship," and "release." A 19-rule suffix stemmer + 100-pair synonym table — no vector DB needed (keyword mode), zero external dependencies.
|
|
362
|
+
## What's New in Phase 6 · Phase 6 新增
|
|
363
|
+
|
|
364
|
+
Phase 6 closes 11 structural gaps the field's research literature flagged. Three improvement loops in one pass — 10-vantage research review → implementation → independent code review → fix-up.
|
|
365
|
+
|
|
366
|
+
Phase 6 修复了研究文献指出的 11 个结构性缺口。一次完成三个改进循环——10 视角研究审查 → 实现 → 独立代码审查 → 修复。
|
|
367
|
+
|
|
368
|
+
<table>
|
|
369
|
+
<tr>
|
|
370
|
+
<th>Change · 改动</th>
|
|
371
|
+
<th>Research grounding · 研究依据</th>
|
|
372
|
+
</tr>
|
|
373
|
+
<tr>
|
|
374
|
+
<td><b>Pipeline layer</b> — project narrative spine with 5 MCP tools<br/><b>叙事层</b> — 项目叙事主干 + 5 个 MCP 工具</td>
|
|
375
|
+
<td>Park et al. 2023 (Generative Agents) reflection pattern</td>
|
|
376
|
+
</tr>
|
|
377
|
+
<tr>
|
|
378
|
+
<td><b>Canonical naming system</b> — virtual key + <code>legacy_path</code>, no migration needed<br/><b>规范命名系统</b> — 虚拟键 + <code>legacy_path</code>,无需迁移</td>
|
|
379
|
+
<td>Squire 2004 taxonomy + CoALA architecture</td>
|
|
380
|
+
</tr>
|
|
381
|
+
<tr>
|
|
382
|
+
<td><b>Procedural memory (5th layer)</b> — <code>palace/skills/</code> + 3 MCP tools<br/><b>程序记忆(第 5 层)</b> — <code>palace/skills/</code> + 3 个 MCP 工具</td>
|
|
383
|
+
<td>Squire 2004 declarative/non-declarative split, ACT-R production rules</td>
|
|
384
|
+
</tr>
|
|
385
|
+
<tr>
|
|
386
|
+
<td><b>Correction outcome KPIs</b> — precision / heeded / recurrence tracking<br/><b>纠正结果 KPI</b> — precision / heeded / recurrence 追踪</td>
|
|
387
|
+
<td>Reflexion (Shinn 2023), RLAIF — making the learning loop measurable</td>
|
|
388
|
+
</tr>
|
|
389
|
+
<tr>
|
|
390
|
+
<td><b>FSRS-lite decay scorer</b> — reinforce on recall, decay on staleness<br/><b>FSRS-lite 衰减打分</b> — 召回时强化,过期时衰减</td>
|
|
391
|
+
<td>Ebbinghaus 1885 → SuperMemo → FSRS-6 (Anki ≥23.10)</td>
|
|
392
|
+
</tr>
|
|
393
|
+
<tr>
|
|
394
|
+
<td><b>Modern Hopfield re-ranker</b> — <code>ξ_new = X·softmax(β·X^⊤·ξ)</code><br/><b>Modern Hopfield 重排</b> — <code>ξ_new = X·softmax(β·X^⊤·ξ)</code></td>
|
|
395
|
+
<td>Ramsauer et al. 2020, exp(d/2) capacity vs classical 0.14·d</td>
|
|
396
|
+
</tr>
|
|
397
|
+
<tr>
|
|
398
|
+
<td><b>session_start lite mode</b> — ≤500 tokens, pull-on-demand<br/><b>session_start lite 模式</b> — ≤500 tokens,按需召回</td>
|
|
399
|
+
<td>Anthropic 2026 context engineering — "smallest high-signal set"</td>
|
|
400
|
+
</tr>
|
|
401
|
+
<tr>
|
|
402
|
+
<td><b>Agent-readable dashboard.json</b> — schema_version=1, one-call self-inspection<br/><b>Agent 可读的 dashboard.json</b> — schema_version=1,一次调用自查</td>
|
|
403
|
+
<td>Agent-first principle — humans aren't the only readers</td>
|
|
404
|
+
</tr>
|
|
405
|
+
<tr>
|
|
406
|
+
<td><b>Reflection bundle</b> — Park-style aggregation prompt (LLM call happens in the agent's turn, not core)<br/><b>反思包</b> — Park 风格的聚合 prompt(LLM 调用在 agent 自己的 turn 里,不在 core)</td>
|
|
407
|
+
<td>Park 2023 §4.3</td>
|
|
408
|
+
</tr>
|
|
409
|
+
<tr>
|
|
410
|
+
<td><b>Security hardening</b> — path traversal blocked, frontmatter YAML escaped, atomic writes, line-walk section parser<br/><b>安全加固</b> — 路径穿越封堵、frontmatter YAML 转义、原子写入、按行解析章节</td>
|
|
411
|
+
<td>8-agent red-team P0 findings (2026-05-30)</td>
|
|
412
|
+
</tr>
|
|
413
|
+
</table>
|
|
414
|
+
|
|
415
|
+
Full details: see [`UPDATE-LOG.md`](./UPDATE-LOG.md) Phase 6 section. Visual report: [`REPORT-2026-05-30.html`](./REPORT-2026-05-30.html).
|
|
416
|
+
|
|
417
|
+
完整细节见 [`UPDATE-LOG.md`](./UPDATE-LOG.md) Phase 6 章节。可视化报告:[`REPORT-2026-05-30.html`](./REPORT-2026-05-30.html)。
|
|
596
418
|
|
|
597
419
|
---
|
|
598
420
|
|
|
599
421
|
## SDK API
|
|
600
422
|
|
|
601
|
-
The `agent-recall-sdk` package exposes the `AgentRecall` class — a programmatic interface to the full memory system. Use it to add persistent, compounding memory to any JS/TS agent framework.
|
|
602
|
-
|
|
603
423
|
```typescript
|
|
604
424
|
import { AgentRecall } from "agent-recall-sdk";
|
|
605
|
-
const ar = new AgentRecall({ project: "my-project" });
|
|
606
|
-
```
|
|
607
|
-
|
|
608
|
-
### Core Methods
|
|
609
|
-
|
|
610
|
-
| Method | Returns | Description |
|
|
611
|
-
|--------|---------|-------------|
|
|
612
|
-
| `capture(question, answer, opts?)` | `JournalCaptureResult` | Quick Q&A capture (L1 memory) |
|
|
613
|
-
| `journalWrite(content, opts?)` | `JournalWriteResult` | Write daily journal entry |
|
|
614
|
-
| `journalRead(opts?)` | `JournalReadResult` | Read journal by date or "latest" |
|
|
615
|
-
| `journalSearch(query, opts?)` | `JournalSearchResult` | Full-text search across journals |
|
|
616
|
-
| `coldStart()` | `JournalColdStartResult` | Palace-first context loading (~200 tokens) |
|
|
617
|
-
|
|
618
|
-
### Palace Methods
|
|
619
|
-
|
|
620
|
-
| Method | Returns | Description |
|
|
621
|
-
|--------|---------|-------------|
|
|
622
|
-
| `palaceWrite(room, content, opts?)` | `PalaceWriteResult` | Write to a room with fan-out cross-refs |
|
|
623
|
-
| `palaceRead(room?, topic?)` | `PalaceReadResult` | Read room content or list all rooms |
|
|
624
|
-
| `walk(depth?, focus?)` | `PalaceWalkResult` | Progressive walk: identity → active → relevant → full |
|
|
625
|
-
| `palaceSearch(query, room?)` | `PalaceSearchResult` | Search rooms by content |
|
|
626
|
-
| `lint(fix?)` | `PalaceLintResult` | Health check and auto-archive |
|
|
627
|
-
|
|
628
|
-
### Awareness & Insight Methods
|
|
629
|
-
|
|
630
|
-
| Method | Returns | Description |
|
|
631
|
-
|--------|---------|-------------|
|
|
632
|
-
| `awarenessUpdate(insights, opts?)` | `AwarenessUpdateResult` | Compound new insights into awareness |
|
|
633
|
-
| `readAwareness()` | `string` | Read the 200-line awareness document |
|
|
634
|
-
| `recallInsight(context, opts?)` | `RecallInsightResult` | Cross-project insight recall |
|
|
635
|
-
|
|
636
|
-
### Alignment Methods
|
|
637
|
-
|
|
638
|
-
| Method | Returns | Description |
|
|
639
|
-
|--------|---------|-------------|
|
|
640
|
-
| `alignmentCheck(input)` | `AlignmentCheckResult` | Record confidence + assumptions |
|
|
641
|
-
| `nudge(input)` | `NudgeResult` | Detect contradictions with past decisions |
|
|
642
|
-
| `synthesize(opts?)` | `ContextSynthesizeResult` | L3 synthesis, optional palace consolidation |
|
|
643
|
-
|
|
644
|
-
---
|
|
645
|
-
|
|
646
|
-
## CLI Commands
|
|
647
|
-
|
|
648
|
-
The `agent-recall-cli` package provides the `ar` command for terminal workflows and CI pipelines.
|
|
649
|
-
|
|
650
|
-
```
|
|
651
|
-
ar v3.4.0 — AgentRecall CLI
|
|
652
|
-
|
|
653
|
-
JOURNAL:
|
|
654
|
-
ar read [--date YYYY-MM-DD] [--section <name>]
|
|
655
|
-
ar write <content> [--section <name>]
|
|
656
|
-
ar capture <question> <answer> [--tags tag1,tag2]
|
|
657
|
-
ar list [--limit N]
|
|
658
|
-
ar search <query> [--include-palace]
|
|
659
|
-
ar state read|write [data]
|
|
660
|
-
ar cold-start
|
|
661
|
-
ar archive [--older-than-days N]
|
|
662
|
-
ar rollup [--min-age-days N] [--dry-run]
|
|
663
|
-
|
|
664
|
-
PALACE:
|
|
665
|
-
ar palace read [<room>] [--topic <name>]
|
|
666
|
-
ar palace write <room> <content> [--importance high|medium|low]
|
|
667
|
-
ar palace walk [--depth identity|active|relevant|full]
|
|
668
|
-
ar palace search <query>
|
|
669
|
-
ar palace lint [--fix]
|
|
670
|
-
|
|
671
|
-
AWARENESS:
|
|
672
|
-
ar awareness read
|
|
673
|
-
ar awareness update --insight "title" --evidence "ev" --applies-when kw1,kw2
|
|
674
|
-
|
|
675
|
-
INSIGHT:
|
|
676
|
-
ar insight <context> [--limit N]
|
|
677
|
-
|
|
678
|
-
SETUP:
|
|
679
|
-
ar setup supabase # interactive Supabase setup wizard
|
|
680
|
-
ar setup supabase --migrate # apply pgvector migration
|
|
681
|
-
ar setup supabase --backfill # re-embed all local memories
|
|
682
|
-
|
|
683
|
-
META:
|
|
684
|
-
ar projects
|
|
685
|
-
ar synthesize [--entries N]
|
|
686
|
-
ar knowledge write --category <cat> --title "t" --what "w" --cause "c" --fix "f"
|
|
687
|
-
ar knowledge read [--category <cat>]
|
|
688
|
-
ar bootstrap [--dry-run] [--import] [--project X]
|
|
689
|
-
|
|
690
|
-
HOOKS (auto-wired via settings.json — zero discipline required):
|
|
691
|
-
ar hook-start # SessionStart: prints identity + insights + watch_for
|
|
692
|
-
ar hook-correction # UserPromptSubmit: silently captures corrections from prompt
|
|
693
|
-
ar hook-end # Stop: appends end-of-session log entry
|
|
694
|
-
|
|
695
|
-
GLOBAL FLAGS:
|
|
696
|
-
--root <path> Storage root (default: ~/.agent-recall)
|
|
697
|
-
--project <slug> Project override
|
|
698
|
-
```
|
|
699
|
-
|
|
700
|
-
---
|
|
701
|
-
|
|
702
|
-
## Architecture
|
|
703
|
-
|
|
704
|
-
### Five-Layer Memory Pyramid
|
|
705
|
-
|
|
706
|
-
```
|
|
707
|
-
L1: Working Memory journal_capture "what happened"
|
|
708
|
-
L2: Episodic Memory journal_write "what it means"
|
|
709
|
-
L3: Memory Palace palace_write / walk "knowledge across sessions"
|
|
710
|
-
L4: Awareness awareness_update "compounding insights"
|
|
711
|
-
L5: Insight Index recall_insight "cross-project experience"
|
|
712
|
-
```
|
|
713
|
-
|
|
714
|
-
### Key Mechanisms
|
|
715
|
-
|
|
716
|
-
**Fan-out writes** — Write to one room, cross-references auto-update in related rooms via `[[wikilinks]]`. Mechanical, zero LLM cost.
|
|
717
|
-
|
|
718
|
-
**Salience scoring** — Every room has a salience score: `recency(0.30) + access(0.25) + connections(0.20) + urgency(0.15) + importance(0.10)`. High-salience rooms surface first. Below threshold → auto-archive.
|
|
719
|
-
|
|
720
|
-
**Compounding awareness** — `awareness.md` is capped at 200 lines. When new insights are added, similar existing ones merge (strengthen), dissimilar ones compete (lowest-confirmation gets replaced). The constraint creates compression. Compression creates compounding.
|
|
721
|
-
|
|
722
|
-
**Cross-project insight recall** — `insights-index.json` maps insights to situations via keywords. `recall_insight("building quality gates")` returns relevant lessons from any project, ranked by severity x confirmation count.
|
|
723
425
|
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
### Storage Layout
|
|
727
|
-
|
|
728
|
-
```
|
|
729
|
-
~/.agent-recall/
|
|
730
|
-
awareness.md # 200-line compounding document (global)
|
|
731
|
-
awareness-state.json # Structured awareness data
|
|
732
|
-
awareness-archive.json # Demoted insights (preserved, not deleted)
|
|
733
|
-
insights-index.json # Cross-project insight matching
|
|
734
|
-
config.json # Optional: Supabase URL + keys (never git-committed)
|
|
735
|
-
projects/
|
|
736
|
-
<project>/
|
|
737
|
-
journal/
|
|
738
|
-
YYYY-MM-DD.md # Daily journal
|
|
739
|
-
YYYY-MM-DD-log.md # L1 captures (hook-start/hook-end entries)
|
|
740
|
-
YYYY-MM-DD.state.json # JSON state
|
|
741
|
-
index.jsonl # Fast machine-scannable index of all entries
|
|
742
|
-
palace/
|
|
743
|
-
identity.md # ~50 token project identity card
|
|
744
|
-
palace-index.json # Room catalog + salience scores
|
|
745
|
-
graph.json # Cross-reference edges (relativity)
|
|
746
|
-
feedback-log.json # Per-query feedback scores (recall learning)
|
|
747
|
-
alignment-log.json # Past corrections for watch_for patterns
|
|
748
|
-
rooms/
|
|
749
|
-
goals/ # Active goals, evolution
|
|
750
|
-
architecture/ # Technical decisions, patterns
|
|
751
|
-
decisions/ # Decision trails with prior/posterior tracking
|
|
752
|
-
blockers/ # Current and resolved
|
|
753
|
-
alignment/ # Human corrections
|
|
754
|
-
knowledge/ # Learned lessons by category
|
|
755
|
-
<custom>/ # Agents create rooms on demand
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
---
|
|
759
|
-
|
|
760
|
-
## Platform Compatibility
|
|
761
|
-
|
|
762
|
-
| Platform | MCP | SDK | CLI | Notes |
|
|
763
|
-
|----------|:---:|:---:|:---:|-------|
|
|
764
|
-
| Claude Code | ✅ | ✅ | ✅ | Full support — MCP + SKILL.md + commands |
|
|
765
|
-
| Cursor | ✅ | ✅ | ✅ | MCP via .cursor/mcp.json |
|
|
766
|
-
| VS Code (Copilot) | ✅ | ✅ | ✅ | MCP via .vscode/mcp.json |
|
|
767
|
-
| Windsurf | ✅ | ✅ | ✅ | MCP via mcp_config.json |
|
|
768
|
-
| OpenAI Codex | ✅ | ✅ | ✅ | `codex mcp add` — config.toml |
|
|
769
|
-
| Claude Desktop | ✅ | — | — | MCP server |
|
|
770
|
-
| LangChain / LangGraph | — | ✅ | — | `new AgentRecall()` in your chain |
|
|
771
|
-
| CrewAI | — | ✅ | — | SDK in tool definitions |
|
|
772
|
-
| Vercel AI SDK | — | ✅ | — | SDK in server actions |
|
|
773
|
-
| Custom JS/TS agents | — | ✅ | ✅ | SDK + CLI for any agent framework |
|
|
774
|
-
| CI / GitHub Actions | — | — | ✅ | `npx agent-recall-cli` in workflows |
|
|
775
|
-
| Any MCP agent | ✅ | — | — | Standard MCP protocol |
|
|
776
|
-
|
|
777
|
-
---
|
|
778
|
-
|
|
779
|
-
## Benchmarked Token Savings
|
|
780
|
-
|
|
781
|
-
We ran two controlled benchmarks: a 5-round A/B test (Next.js + Drizzle + Stripe project) and a 10-round v3.3.16 benchmark validating `digest` cache, `arsaveall`, and cross-project recall. **Read this table honestly:** for simple throwaway tasks, AR is pure overhead. For anything with 3+ sessions, corrections, or multiple agents, it pays for itself — and the savings compound.
|
|
782
|
-
|
|
783
|
-
| Scenario | Without AR | With AR | **Saved** |
|
|
784
|
-
|----------|:---------:|:------:|:--------:|
|
|
785
|
-
| **A: Simple** (2 sessions, 0 corrections) | 567 | 1,131 | **+99% overhead** |
|
|
786
|
-
| **B: Medium** (5 sessions, 1 correction) | 6,220 | 4,382 | **-30%** |
|
|
787
|
-
| **C: Complex** (20 sessions, 5 corrections) | 40,910 | 17,520 | **-57%** |
|
|
788
|
-
| **D: Multi-agent** (3 agents × 5 sessions) | 20,781 | 13,140 | **-37%** |
|
|
789
|
-
| **E: Digest cache** (repeated analysis, 1 recall hit) | ~2,400 | ~400 | **-83%** |
|
|
790
|
-
|
|
791
|
-
**Break-even: ~3-4 sessions.** After that, every session with AR is cheaper than without.
|
|
792
|
-
|
|
793
|
-
### Where the Savings Come From
|
|
794
|
-
|
|
795
|
-
| Source | Without AR cost | With AR cost | Why |
|
|
796
|
-
|--------|:-:|:-:|-----|
|
|
797
|
-
| **Context rebuild** | Up to ~1,100+ tokens/session | Fixed ~385 tokens (cold start) | AR loads palace context in one call |
|
|
798
|
-
| **Correction retention** | ~800 tokens per repeat | 0 (stored once, never repeated) | Biggest single savings driver in long projects |
|
|
799
|
-
| **Clarification avoidance** | ~400 tokens/session | 0 (already loaded) | Steady per-session savings |
|
|
800
|
-
| **Cross-project recall** | ~500 tokens per insight | ~350 tokens (automatic recall) | Compounds across projects |
|
|
801
|
-
| **Digest cache** | ~2,400 tokens (full re-analysis) | ~400 tokens (recall stored digest) | 83% savings on repeated heavy analysis |
|
|
802
|
-
|
|
803
|
-
All benchmark code: [`benchmark/run.mjs`](benchmark/run.mjs), [`benchmark/ab-comparison.mjs`](benchmark/ab-comparison.mjs), and [`benchmark/v3316-benchmark.mjs`](benchmark/v3316-benchmark.mjs). Run them yourself: `node benchmark/run.mjs && node benchmark/ab-comparison.mjs`.
|
|
804
|
-
|
|
805
|
-
---
|
|
806
|
-
|
|
807
|
-
## Docs
|
|
808
|
-
|
|
809
|
-
| Document | Description |
|
|
810
|
-
|----------|-------------|
|
|
811
|
-
| **[→ Command Reference](docs/commands.md)** | **Full guide to `/arstatus`, `/arstart`, `/arsave`, `/arsaveall` — example outputs, modes, palace rules, troubleshooting** |
|
|
812
|
-
| [Intelligent Distance Protocol](docs/intelligent-distance-protocol.md) | The foundational theory — why the gap between human and AI is structural, and how to navigate it |
|
|
813
|
-
| [Scoring Design Rationale](docs/SCORING.md) | Why the scoring system works this way — RRF, Ebbinghaus, Beta distribution, and the bugs they fix |
|
|
814
|
-
| [MCP Adapter Spec](docs/mcp-adapter-spec.md) | Technical spec for building adapters on top of AgentRecall |
|
|
815
|
-
| [SDK Design](docs/sdk-design.md) | Design doc for the SDK architecture |
|
|
816
|
-
| [Upgrade v3.4](UPGRADE-v3.4.md) | Changelog: semantic recall, pgvector backend, 10 MCP tools, bootstrap, palace decisions room |
|
|
817
|
-
| [MCP Server README](packages/mcp-server/README.md) | Focused guide for Claude Code / Cursor / Windsurf users |
|
|
818
|
-
| [Core SDK README](packages/core/README.md) | SDK API reference for building with AgentRecall programmatically |
|
|
819
|
-
|
|
820
|
-
---
|
|
821
|
-
|
|
822
|
-
## Contributing
|
|
823
|
-
|
|
824
|
-
Built by [tongwu](https://github.com/Goldentrii) at [Novada](https://www.novada.com).
|
|
825
|
-
|
|
826
|
-
- Issues & feedback: [GitHub Issues](https://github.com/Goldentrii/AgentRecall/issues)
|
|
827
|
-
- Email: [tong.wu@novada.com](mailto:tong.wu@novada.com)
|
|
828
|
-
- Website: [novada.com](https://www.novada.com)
|
|
829
|
-
|
|
830
|
-
MIT License.
|
|
831
|
-
|
|
832
|
-
---
|
|
833
|
-
|
|
834
|
-
---
|
|
835
|
-
|
|
836
|
-
# AgentRecall(中文文档)
|
|
837
|
-
|
|
838
|
-
> **你的智能体记不清楚?听不懂你说话?每次项目都做得非常乱?**
|
|
839
|
-
>
|
|
840
|
-
> **AgentRecall 让它学会理解你的思维方式。**
|
|
841
|
-
>
|
|
842
|
-
> 赋能agent长期记忆,并从错误中学习和纠正,随时间和项目难度进化,越来越擅长和了解用户和agent的思维。
|
|
843
|
-
>
|
|
844
|
-
> 持久复合记忆 + 智能距离协议。MCP 服务器 + SDK + CLI。
|
|
845
|
-
|
|
846
|
-
---
|
|
847
|
-
|
|
848
|
-
<p align="center">
|
|
849
|
-
<a href="#arstatus-arsave-arstart-和-arsaveall"><img src="https://img.shields.io/badge/%2Farstatus-从这里开始-22C55E?style=for-the-badge" alt="/arstatus"></a>
|
|
850
|
-
<a href="#arstatus-arsave-arstart-和-arsaveall"><img src="https://img.shields.io/badge/%2Farstart-加载上下文-4ECDC4?style=for-the-badge" alt="/arstart"></a>
|
|
851
|
-
<a href="#arstatus-arsave-arstart-和-arsaveall"><img src="https://img.shields.io/badge/%2Farsave-保存会话-FF6B6B?style=for-the-badge" alt="/arsave"></a>
|
|
852
|
-
<a href="#arstatus-arsave-arstart-和-arsaveall"><img src="https://img.shields.io/badge/%2Farsaveall-批量保存-FFD93D?style=for-the-badge" alt="/arsaveall"></a>
|
|
853
|
-
</p>
|
|
854
|
-
<p align="center">
|
|
855
|
-
<img src="https://img.shields.io/badge/自动-hook--start-8B5CF6?style=for-the-badge" alt="hook-start">
|
|
856
|
-
<img src="https://img.shields.io/badge/自动-hook--correction-F97316?style=for-the-badge" alt="hook-correction">
|
|
857
|
-
<img src="https://img.shields.io/badge/自动-hook--end-06B6D4?style=for-the-badge" alt="hook-end">
|
|
858
|
-
</p>
|
|
859
|
-
|
|
860
|
-
## `/arstatus`、`/arsave`、`/arstart` 和 `/arsaveall`
|
|
861
|
-
|
|
862
|
-
> [!IMPORTANT]
|
|
863
|
-
> **每次新会话都先运行 `/arstatus`。** 它会显示你所有项目的状态、待完成的工作、阻塞项,让你用数字选择下一步——无需记住项目名称。没有它,全新的 agent 根本不知道从哪里开始。
|
|
864
|
-
|
|
865
|
-
| 命令 | 时机 | 功能 |
|
|
866
|
-
|------|------|------|
|
|
867
|
-
| ⭐ **`/arstatus`** | **每次会话——先运行这个** | **跨所有项目的状态看板:待办事项、阻塞项、编号选择列表。真正的冷启动。** |
|
|
868
|
-
| **`/arstart`** | 选好项目后 | 加载单个项目的深度上下文:宫殿房间、纠正记录、任务相关召回 |
|
|
869
|
-
| **`/arsave`** | 会话结束时 | 写入日志 + 整合到记忆宫殿 + 更新感知 |
|
|
870
|
-
| **`/arsaveall`** | 一天结束时(多会话) | **一次性批量保存所有并行会话** — 扫描、合并、去重、完成 |
|
|
871
|
-
|
|
872
|
-
**会话流程:** `/arstatus` → 输入编号 → `/arstart <项目>` → 工作 → `/arsave`。
|
|
873
|
-
|
|
874
|
-
### 你会看到什么
|
|
875
|
-
|
|
876
|
-
输入 `/arstatus` → 一眼看清所有项目进展:
|
|
877
|
-
|
|
878
|
-
```
|
|
879
|
-
──────────────────────────────────────────────────────────────
|
|
880
|
-
AgentRecall 状态看板 2026-04-21 5 个项目
|
|
881
|
-
──────────────────────────────────────────────────────────────
|
|
426
|
+
const memory = new AgentRecall({ project: "my-app" });
|
|
882
427
|
|
|
883
|
-
|
|
884
|
-
|
|
428
|
+
// Write — auto-routes to journal / palace / awareness based on content
|
|
429
|
+
await memory.capture("What stack?", "Next.js + Postgres + Drizzle ORM");
|
|
430
|
+
await memory.remember("Database: pgvector enabled, RRF fusion for hybrid recall");
|
|
885
431
|
|
|
886
|
-
|
|
887
|
-
|
|
432
|
+
// Read — full hybrid search
|
|
433
|
+
const results = await memory.recall("rate limiting");
|
|
434
|
+
const filescoped = await memory.recall("auth flow", { file_path: "src/auth.ts" });
|
|
888
435
|
|
|
889
|
-
|
|
890
|
-
|
|
436
|
+
// Reflect — bundle recent journals + corrections for LLM-side distillation
|
|
437
|
+
const bundle = await memory.reflect({ lookback_days: 7 });
|
|
891
438
|
|
|
892
|
-
|
|
893
|
-
|
|
439
|
+
// Pipeline — track project narrative
|
|
440
|
+
await memory.pipelineOpen({ phase_name: "Discovery", goal: "Map user pain points" });
|
|
441
|
+
await memory.pipelineClose({
|
|
442
|
+
what_was_hard: "Conflicting signals from interviews",
|
|
443
|
+
how_solved: "Triangulated against analytics data",
|
|
444
|
+
synthesis: "Behavior > stated preference when they diverge"
|
|
445
|
+
});
|
|
894
446
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
| 没有 AgentRecall | 有 AgentRecall |
|
|
905
|
-
|-----------------|---------------|
|
|
906
|
-
| 智能体忘记昨天的决策 | 决策存在宫殿房间,冷启动时加载 |
|
|
907
|
-
| 跨会话重复同样的错误 | `recall_insight` 工作前自动呈现过去教训 |
|
|
908
|
-
| 每次开始需要 5 分钟恢复上下文 | 2 秒冷启动,从宫殿加载(~200 token) |
|
|
909
|
-
| 平面记忆文件无限增长 | 200 行感知上限,强制合并或替换 |
|
|
910
|
-
| 知识锁在单个项目 | 跨项目洞察按关键词匹配 |
|
|
911
|
-
|
|
912
|
-
```bash
|
|
913
|
-
# 安装命令(一次性,仅 Claude Code)
|
|
914
|
-
mkdir -p ~/.claude/commands
|
|
915
|
-
curl -o ~/.claude/commands/arstatus.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arstatus.md
|
|
916
|
-
curl -o ~/.claude/commands/arstart.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arstart.md
|
|
917
|
-
curl -o ~/.claude/commands/arsave.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arsave.md
|
|
918
|
-
curl -o ~/.claude/commands/arsaveall.md https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/commands/arsaveall.md
|
|
447
|
+
// Skills — save and recall procedural know-how
|
|
448
|
+
await memory.skillWrite({
|
|
449
|
+
name: "Cloudflare 4-step routing",
|
|
450
|
+
topic: "deploy",
|
|
451
|
+
triggers: ["cloudflare", "dns", "ssl"],
|
|
452
|
+
when: "Setting up a new domain with API gateway behind Cloudflare",
|
|
453
|
+
steps: ["Add DNS record", "Enable Proxy", "Add Origin Rule", "Set SSL mode = Full"]
|
|
454
|
+
});
|
|
455
|
+
const hits = await memory.skillRecall({ intent: "set up cloudflare for new domain" });
|
|
919
456
|
```
|
|
920
457
|
|
|
921
458
|
---
|
|
922
459
|
|
|
923
|
-
##
|
|
460
|
+
## CLI
|
|
924
461
|
|
|
925
462
|
```bash
|
|
926
|
-
#
|
|
927
|
-
|
|
463
|
+
# Capture & recall
|
|
464
|
+
ar capture "Question" "Answer"
|
|
465
|
+
ar recall "topic" # hybrid BM25 + vector + Hopfield re-rank
|
|
466
|
+
ar recall "topic" --since 7d # time-filtered
|
|
928
467
|
|
|
929
|
-
#
|
|
930
|
-
|
|
468
|
+
# Sessions
|
|
469
|
+
ar status # status board across all projects
|
|
470
|
+
ar save # full session_end (journal + palace + awareness)
|
|
471
|
+
ar saveall # batch save all parallel sessions
|
|
931
472
|
|
|
932
|
-
#
|
|
933
|
-
|
|
473
|
+
# Bootstrap
|
|
474
|
+
ar bootstrap # scan and show
|
|
475
|
+
ar bootstrap --import # import all new projects
|
|
934
476
|
|
|
935
|
-
#
|
|
936
|
-
|
|
937
|
-
|
|
477
|
+
# Palace navigation
|
|
478
|
+
ar palace walk --depth active # browse active rooms
|
|
479
|
+
ar palace read goals # read a room
|
|
938
480
|
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
curl -o ~/.claude/skills/agent-recall/SKILL.md \
|
|
943
|
-
https://raw.githubusercontent.com/Goldentrii/AgentRecall/main/SKILL.md
|
|
481
|
+
# Pipeline
|
|
482
|
+
ar pipeline show <project> # narrative spine
|
|
483
|
+
ar pipeline list <project> # JSON summaries
|
|
944
484
|
```
|
|
945
485
|
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
## 语义召回 — pgvector (v3.4.0)
|
|
949
|
-
|
|
950
|
-
> [!NOTE]
|
|
951
|
-
> **v3.4.0 新功能。** 默认关键词召回无需任何配置。当关键词搜索遇到天花板时——同义词、改写查询、多语言——升级到 Supabase pgvector 后端。
|
|
952
|
-
|
|
953
|
-
关键词搜索匹配词汇,语义搜索匹配**含义**。升级后:`recall("会话过期")` 也能找到"token 刷新"和"认证超时"相关的条目,无需手动添加同义词。
|
|
954
|
-
|
|
955
|
-
```bash
|
|
956
|
-
# 第 1 步 — 交互式配置向导
|
|
957
|
-
ar setup supabase
|
|
958
|
-
|
|
959
|
-
# 第 2 步 — 将 pgvector 迁移应用到你的 Supabase 项目
|
|
960
|
-
ar setup supabase --migrate
|
|
961
|
-
|
|
962
|
-
# 第 3 步 — 完成。运行 /arstart — 下次会话自动回填。
|
|
963
|
-
```
|
|
964
|
-
|
|
965
|
-
本地文件仍为数据源。Supabase 是派生的读取索引 — 随时可删除并用 `ar setup supabase --backfill` 重建。
|
|
966
|
-
|
|
967
|
-
**所需环境变量:** `SUPABASE_URL` + `SUPABASE_SERVICE_ROLE_KEY` + `OPENAI_API_KEY`(或 `VOYAGE_API_KEY`)。全部可选 — 不配置时 AgentRecall 完全正常运行。
|
|
968
|
-
|
|
969
|
-
**优雅降级:** Supabase 不可达时,`recall()` 静默回退到本地关键词搜索,零行为变化。
|
|
970
|
-
|
|
971
|
-
---
|
|
972
|
-
|
|
973
|
-
## 10 个 MCP 工具
|
|
974
|
-
|
|
975
|
-
AgentRecall 目前向 agent 提供 10 个工具。每个工具内部组合多个子系统——agent 不需要了解内部管道。
|
|
976
|
-
|
|
977
|
-
| 工具 | 功能 |
|
|
978
|
-
|------|------|
|
|
979
|
-
| `session_start` | 加载项目上下文。返回身份、洞察、活跃房间、跨项目匹配、watch_for 预警。约 400 token。 |
|
|
980
|
-
| `remember` | 保存记忆。自动分类并路由到正确的存储(日志、宫殿、知识库或感知系统)。 |
|
|
981
|
-
| `recall` | 通过 **RRF** 一次搜索所有记忆。支持 `feedback` 评价:正面提升排名,负面降低。查询感知。 |
|
|
982
|
-
| `session_end` | 一次调用保存全部:写日志、更新感知、整合宫殿、归档被替换洞察。 |
|
|
983
|
-
| `check` | 记录对人类意图的理解。返回 `watch_for` 预警。3+ 次强模式自动提升为感知洞察。 |
|
|
984
|
-
| `digest` | **上下文缓存**。存储耗时分析结果(代码库探索、API 审计)。实测节省 83% token。 |
|
|
985
|
-
| `project_board` | 跨所有项目的状态看板,等同于 `/arstatus`。返回编号项目列表、待办、阻塞项。 |
|
|
986
|
-
| `project_status` | 单个项目的深度状态:下一步行动、阻塞项、最近日志摘要、宫殿健康度。 |
|
|
987
|
-
| `bootstrap_scan` | 扫描机器上的现有项目(git 仓库、Claude AutoMemory、CLAUDE.md)。只读,不写入。 |
|
|
988
|
-
| `bootstrap_import` | 将 `bootstrap_scan` 发现的项目导入 AgentRecall。安全:不修改源文件。 |
|
|
486
|
+
Run `ar --help` for the full surface · 完整命令运行 `ar --help`.
|
|
989
487
|
|
|
990
488
|
---
|
|
991
489
|
|
|
992
|
-
##
|
|
993
|
-
|
|
994
|
-
不是所有记忆都平等。五个子系统相互喂养,自动命名让索引有意义,索引让关联性成为可能,关联性让检索精准,精准检索产生有意义的反馈,反馈让下一次检索更好。
|
|
995
|
-
|
|
996
|
-
**显著性评分:** `时效性(0.30) + 访问频率(0.25) + 连接数(0.20) + 紧迫性(0.15) + 重要性(0.10)`
|
|
997
|
-
|
|
998
|
-
**Ebbinghaus 衰减 `R(t) = e^(−t/S)`:**
|
|
999
|
-
|
|
1000
|
-
| 记忆类型 | S(天) | 1天后 | 1周后 |
|
|
1001
|
-
|----------|---------|-------|-------|
|
|
1002
|
-
| 日志(情景) | 2 | 60% | ~7% |
|
|
1003
|
-
| 知识/Bug修复(程序) | 180 | 99% | 96% |
|
|
1004
|
-
| 宫殿/架构决策(语义) | 9999 | ≈100% | ≈100% |
|
|
490
|
+
## Architecture · 架构
|
|
1005
491
|
|
|
1006
|
-
|
|
492
|
+
TypeScript monorepo, 4 published packages · TypeScript monorepo,4 个发布包:
|
|
1007
493
|
|
|
1008
|
-
**复合效应:**
|
|
1009
494
|
```
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
495
|
+
packages/
|
|
496
|
+
├── core/ # storage + tool logic + helpers (agent-recall-core)
|
|
497
|
+
├── mcp-server/ # thin MCP wrappers (agent-recall-mcp)
|
|
498
|
+
├── sdk/ # programmatic API for JS/TS apps (agent-recall-sdk)
|
|
499
|
+
└── cli/ # `ar` shell command (agent-recall-cli)
|
|
1014
500
|
```
|
|
1015
501
|
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
## SDK API
|
|
502
|
+
**Storage layout · 存储布局:**
|
|
1019
503
|
|
|
1020
|
-
```typescript
|
|
1021
|
-
import { AgentRecall } from "agent-recall-sdk";
|
|
1022
|
-
const ar = new AgentRecall({ project: "my-project" });
|
|
1023
504
|
```
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
505
|
+
~/.agent-recall/
|
|
506
|
+
├── projects/
|
|
507
|
+
│ └── <slug>/
|
|
508
|
+
│ ├── journal/ # episodic — per-session entries
|
|
509
|
+
│ ├── corrections/ # behavioral rules + outcome KPIs
|
|
510
|
+
│ └── palace/
|
|
511
|
+
│ ├── rooms/ # semantic — topic-clustered facts
|
|
512
|
+
│ ├── skills/ # procedural — IF-THEN rules (NEW)
|
|
513
|
+
│ ├── pipeline/ # narrative — project phases (NEW)
|
|
514
|
+
│ ├── identity.md
|
|
515
|
+
│ └── awareness # cross-project insights
|
|
516
|
+
├── dashboard.html # human-readable dashboard
|
|
517
|
+
└── dashboard.json # agent-readable snapshot (NEW)
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Optional Supabase mirror · 可选 Supabase 镜像** — pgvector for semantic recall, RRF fusion when configured. All-local stays the default.
|
|
1037
521
|
|
|
1038
522
|
---
|
|
1039
523
|
|
|
1040
|
-
##
|
|
524
|
+
## Platform Compatibility · 平台兼容
|
|
1041
525
|
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
ar palace walk [--depth identity|active|relevant|full]
|
|
1052
|
-
ar palace search <query>
|
|
1053
|
-
|
|
1054
|
-
# 感知与洞察
|
|
1055
|
-
ar awareness update --insight "标题" --evidence "证据" --applies-when kw1,kw2
|
|
1056
|
-
ar insight <context> [--limit N]
|
|
1057
|
-
|
|
1058
|
-
# 语义召回配置
|
|
1059
|
-
ar setup supabase [--migrate] [--backfill]
|
|
1060
|
-
|
|
1061
|
-
# 全局选项
|
|
1062
|
-
--root <path> 存储根目录(默认:~/.agent-recall)
|
|
1063
|
-
--project <slug> 项目覆盖
|
|
1064
|
-
```
|
|
526
|
+
| Platform | Mechanism | Status |
|
|
527
|
+
|---|---|---|
|
|
528
|
+
| Claude Code | MCP server + skill + hooks | ✅ Primary |
|
|
529
|
+
| Cursor | MCP server | ✅ |
|
|
530
|
+
| Windsurf | MCP server | ✅ |
|
|
531
|
+
| VS Code (Copilot) | MCP server | ✅ |
|
|
532
|
+
| Codex | MCP server | ✅ |
|
|
533
|
+
| Any JS/TS app | SDK (`agent-recall-sdk`) | ✅ |
|
|
534
|
+
| Terminal / CI | CLI (`ar`) | ✅ |
|
|
1065
535
|
|
|
1066
536
|
---
|
|
1067
537
|
|
|
1068
|
-
##
|
|
1069
|
-
|
|
1070
|
-
### 五层记忆模型
|
|
1071
|
-
|
|
1072
|
-
```
|
|
1073
|
-
L1: 工作记忆 journal_capture 「发生了什么」
|
|
1074
|
-
L2: 情景记忆 journal_write 「这意味着什么」
|
|
1075
|
-
L3: 记忆宫殿 palace_write / walk 「跨会话的知识」
|
|
1076
|
-
L4: 感知系统 awareness_update 「复合的洞察」
|
|
1077
|
-
L5: 洞察索引 recall_insight 「跨项目的经验」
|
|
1078
|
-
```
|
|
1079
|
-
|
|
1080
|
-
**扇出写入** — 写入一个房间,相关房间通过 `[[wikilinks]]` 自动更新交叉引用。零 LLM 成本。
|
|
538
|
+
## Docs · 文档
|
|
1081
539
|
|
|
1082
|
-
|
|
540
|
+
- [`UPDATE-LOG.md`](./UPDATE-LOG.md) — phase-by-phase evolution + design reasoning
|
|
541
|
+
- [`REPORT-2026-05-30.html`](./REPORT-2026-05-30.html) — Phase 6 visual report
|
|
542
|
+
- [`docs/`](./docs) — command reference, architecture deep-dives
|
|
543
|
+
- [`SKILL.md`](./SKILL.md) — Claude Code skill definition
|
|
1083
544
|
|
|
1084
545
|
---
|
|
1085
546
|
|
|
1086
|
-
##
|
|
547
|
+
## Community · 社区
|
|
1087
548
|
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
| Windsurf | ✅ | ✅ | ✅ | MCP via mcp_config.json |
|
|
1094
|
-
| OpenAI Codex | ✅ | ✅ | ✅ | `codex mcp add` |
|
|
1095
|
-
| LangChain / CrewAI | — | ✅ | — | SDK 集成到你的 chain 中 |
|
|
1096
|
-
| Vercel AI SDK | — | ✅ | — | SDK 在 server actions 中使用 |
|
|
1097
|
-
| CI / GitHub Actions | — | — | ✅ | `npx agent-recall-cli` |
|
|
1098
|
-
| 任何 MCP 智能体 | ✅ | — | — | 标准 MCP 协议 |
|
|
549
|
+
- 💬 [Telegram](https://t.me/+ywZwoHrg3AM0NDVi) — questions, feedback, requests
|
|
550
|
+
- 🐛 [GitHub Issues](https://github.com/Goldentrii/AgentRecall/issues) — bugs and feature requests
|
|
551
|
+
- 📦 [npm: agent-recall-mcp](https://www.npmjs.com/package/agent-recall-mcp)
|
|
552
|
+
- 📦 [npm: agent-recall-sdk](https://www.npmjs.com/package/agent-recall-sdk)
|
|
553
|
+
- 📦 [npm: agent-recall-cli](https://www.npmjs.com/package/agent-recall-cli)
|
|
1099
554
|
|
|
1100
555
|
---
|
|
1101
556
|
|
|
1102
|
-
##
|
|
1103
|
-
|
|
1104
|
-
| 场景 | 无 AR | 有 AR | **节省** |
|
|
1105
|
-
|------|:----:|:----:|:------:|
|
|
1106
|
-
| **A: 简单** (2 会话,0 纠正) | 567 | 1,131 | **+99% 纯开销** |
|
|
1107
|
-
| **B: 中等** (5 会话,1 次纠正) | 6,220 | 4,382 | **-30%** |
|
|
1108
|
-
| **C: 复杂** (20 会话,5 次纠正) | 40,910 | 17,520 | **-57%** |
|
|
1109
|
-
| **D: 多 Agent** (3 个 agent × 5 会话) | 20,781 | 13,140 | **-37%** |
|
|
1110
|
-
| **E: Digest 缓存** (重复分析,1 次命中) | ~2,400 | ~400 | **-83%** |
|
|
1111
|
-
|
|
1112
|
-
> **盈亏平衡:~3-4 个会话。** 简单一次性任务,AR 是纯开销。3+ 会话、有纠正、多 agent 的场景,AR 都能回本。
|
|
1113
|
-
|
|
1114
|
-
---
|
|
557
|
+
## Contributing · 贡献
|
|
1115
558
|
|
|
1116
|
-
|
|
559
|
+
PRs welcome. Open an issue first for anything substantive — the design is opinionated and based on published research; we want changes to be grounded the same way.
|
|
1117
560
|
|
|
1118
|
-
|
|
1119
|
-
|------|------|
|
|
1120
|
-
| **[→ 命令参考](docs/commands.md)** | **`/arstatus`、`/arstart`、`/arsave`、`/arsaveall` 完整指南** |
|
|
1121
|
-
| [智能距离协议](docs/intelligent-distance-protocol.md) | 基础理论 — 人类与 AI 之间的差距是结构性的,如何减少信息损失 |
|
|
1122
|
-
| [评分设计原理](docs/SCORING.md) | RRF、艾宾浩斯、Beta 分布及其修复的 bug |
|
|
1123
|
-
| [v3.4 升级说明](UPGRADE-v3.4.md) | 语义召回、pgvector、10 工具、bootstrap、decisions 房间 |
|
|
561
|
+
欢迎 PR。任何实质性改动请先开 issue——这个设计有自己的主张,且基于已发表的研究;我们希望改动也能用同样的方式落地。
|
|
1124
562
|
|
|
1125
563
|
---
|
|
1126
564
|
|
|
1127
|
-
##
|
|
1128
|
-
|
|
1129
|
-
由 [tongwu](https://github.com/Goldentrii) 在 [Novada](https://www.novada.com) 构建。
|
|
1130
|
-
|
|
1131
|
-
- Issues & 反馈:[GitHub Issues](https://github.com/Goldentrii/AgentRecall/issues)
|
|
1132
|
-
- 邮箱:[tong.wu@novada.com](mailto:tong.wu@novada.com)
|
|
1133
|
-
|
|
1134
|
-
MIT 许可证。
|
|
1135
|
-
|
|
1136
|
-
## Star History
|
|
565
|
+
## License
|
|
1137
566
|
|
|
1138
|
-
|
|
1139
|
-
<picture>
|
|
1140
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=Goldentrii/AgentRecall&type=date&theme=dark&legend=top-left" />
|
|
1141
|
-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=Goldentrii/AgentRecall&type=date&legend=top-left" />
|
|
1142
|
-
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=Goldentrii/AgentRecall&type=date&legend=top-left" />
|
|
1143
|
-
</picture>
|
|
1144
|
-
</a>
|
|
567
|
+
MIT — see [LICENSE](./LICENSE).
|