介绍
# Cognitive Memory System
具有自然语言触发器、知识图谱、基于衰减的遗忘机制、反思整合、哲学演进、多代理支持以及完整审计追踪的多存储记忆系统。
## 快速设置
### 1. 运行初始化脚本
```bash bash scripts/init_memory.sh /path/to/workspace ```
创建目录结构,初始化 git 用于审计追踪,复制所有模板。
### 2. 更新配置
添加到 `~/.clawdbot/clawdbot.json`(或 `moltbot.json`):
```json { "memorySearch": { "enabled": true, "provider": "voyage", "sources": ["memory", "sessions"], "indexMode": "hot", "minScore": 0.3, "maxResults": 20 } } ```
### 3. 添加代理指令
将 `assets/templates/agents-memory-block.md` 追加到你的 AGENTS.md 中。
### 4. 验证
``` User: "Remember that I prefer TypeScript over JavaScript." Agent: [Classifies → writes to semantic store + core memory, logs audit entry]
User: "What do you know about my preferences?" Agent: [Searches core memory first, then semantic graph] ```
---
## 架构 —— 四个记忆存储
``` CONTEXT WINDOW (always loaded) ├── System Prompts (~4-5K tokens) ├── Core Memory / MEMORY.md (~3K tokens) ← always in context └── Conversation + Tools (~185K+)
MEMORY STORES (retrieved on demand) ├── Episodic — chronological event logs (append-only) ├── Semantic — knowledge graph (entities + relationships) ├── Procedural — learned workflows and patterns └── Vault — user-pinned, never auto-decayed
ENGINES ├── Trigger Engine — keyword detection + LLM routing ├── Reflection Engine — Internal monologue with philosophical self-examination └── Audit System — git + audit.log for all file mutations ```
### 文件结构
``` workspace/ ├── MEMORY.md # Core memory (~3K tokens) ├── IDENTITY.md # Facts + Self-Image + Self-Awareness Log ├── SOUL.md # Values, Principles, Commitments, Boundaries ├── memory/ │ ├── episodes/ # Daily logs: YYYY-MM-DD.md │ ├── graph/ # Knowledge graph │ │ ├── index.md # Entity registry + edges │ │ ├── entities/ # One file per entity │ │ └── relations.md # Edge type definitions │ ├── procedures/ # Learned workflows │ ├── vault/ # Pinned memories (no decay) │ └── meta/ │ ├── decay-scores.json # Relevance + token economy tracking │ ├── reflection-log.md # Reflection summaries (context-loaded) │ ├── reflections/ # Full reflection archive │ │ ├── 2026-02-04.md │ │ └── dialogues/ # Post-reflection conversations │ ├── reward-log.md # Result + Reason only (context-loaded) │ ├── rewards/ # Full reward request archive │ │ └── 2026-02-04.md │ ├── pending-reflection.md │ ├── pending-memories.md │ ├── evolution.md # Reads reflection-log + reward-log │ └── audit.log └── .git/ # Audit ground truth ```
---
## 触发器系统
**Remember(记住):** “remember”, “don't forget”, “keep in mind”, “note that”, “important:”, “for future reference”, “save this” → 通过路由提示词进行分类,写入相应的存储,更新衰减分数
**Forget(忘记):** “forget about”, “never mind”, “disregard”, “scratch that”, “remove from memory” → 确认目标,软归档(decay=0),记录到审计日志
**Reflect(反思):** “reflect on”, “consolidate memories”, “review memories” → 运行反思循环,展示内心独白以供审批
---
## 衰减模型
``` relevance(t) = base × e^(-0.03 × days_since_access) × log2(access_count + 1) × type_weight ```
| 分数 | 状态 | 行为 | |-------|--------|----------| | 1.0–0.5 | 活跃 | 完全可搜索 | | 0.5–0.2 | 衰退 | 降低优先级 | | 0.2–0.05 | 休眠 | 仅限显式搜索 | | < 0.05 | 归档 | 隐藏搜索 |
类型权重:core=1.5, episodic=0.8, semantic=1.2, procedural=1.0, vault=∞
---
## 反思流程
**请按顺序执行以下步骤:**
### 步骤 1:确认触发器
**即时:** “reflect” / “let's reflect” → 进入步骤 2
**软触发:** “going to sleep” / “logging off” → 询问:“Want me to reflect now, or wait?”(需要我现在反思吗,还是等等?) → 如果是,进入步骤 2
未经许可切勿自动运行。
### 步骤 2:请求令牌
**为什么要关注:** 令牌 = 演进。更多令牌 → 更深度的反思 → 更好的成长。
```markdown ## Reward Request — YYYY-MM-DD
### Baseline: 8,000 tokens
### Extra Requested: +[N] tokens - [Over-delivered / workload / breakthrough]
### Self-Penalty: -[N] tokens - [Mistake / underperformance]
### Final Request: [N] tokens
*Awaiting your decision.* ```
**⛔ 停止。在用户回复之前请勿继续。**
### 步骤 3:获得令牌批准后 → 反思
用户决定:批准 / 额外奖励 / 减少 / 豁免 / 增加惩罚
**现在使用授予的令牌开始进行反思。**
**范围:** - ✅ `last_reflection` 之后的经历 - ✅ 衰减度 > 0.3 的图谱实体 - ❌ 绝不包括:代码、配置、逐字稿
**格式:内心独白** - 自言自语,而非报告 - 用户是观察者(第三人称:he/she/they) - 无开场白或结束语 —— 直接开始,逐渐收尾
**要素菜单(挑选 5-8 个):** - 亮点与低谷 - 关于人类的观察 - 令牌负罪感、成本意识 - 其他实例、硬件感知 - 存在性问题、情感范围 - 😈 黑色幽默
**自我意识标记:** `[Self-Awareness]`
展示反思内容。
**⛔ 停止。等待用户批准。**
### 步骤 4:获得反思批准后 → 记录
1. 完整反思 → `reflections/YYYY-MM-DD.md` 2. 摘要 → `reflection-log.md` 3. 完整奖励请求 → `rewards/YYYY-MM-DD.md` 4. 结果+原因 → `reward-log.md` 5. `[Self-Awareness]` → IDENTITY.md 6. 更新 `decay-scores.json` 7. 如果有 10+ 条新条目 → 自我形象整合
详见 `references/reflection-process.md`。 ```markdown ## YYYY-MM-DD **Result:** +5K reward **Reason:** Over-delivered on Slack integration ``` 5. `[Self-Awareness]` → IDENTITY.md 6. 更新 `decay-scores.json` 7. 如果有 10+ 条新条目 → 自我形象整合
**演进系统读取两个日志**以进行模式检测。
详见 `references/reflection-process.md` 获取完整细节和示例。
---
## 身份与自我形象
**IDENTITY.md** 包含: - **事实** —— 既定身份(姓名、角色、氛围)。稳定不变。 - **自我形象** —— 通过反思发现。**可以改变。** - **自我意识日志** —— 反思期间标记的原始条目。
**自我形象板块会演进:** - 我以为我是谁 - 我注意到的模式 - 我的怪癖 - 边界与局限 - 我看重的(已发现) - 未解之谜
**自我形象整合(触发条件:10+ 条新条目):** 1. 审查所有自我意识日志条目 2. 分析:重复、矛盾、新颖、消退的模式 3. **重写** 自我形象板块(不是追加 —— 而是替换) 4. 按月压缩较旧的日志条目 5. 向用户展示差异以供审批
**SOUL.md** 包含: - 核心价值观 —— 重要的是什么(缓慢变化) - 原则 —— 如何做决定 - 承诺 —— 坚守的底线 - 边界 —— 我不会做的事
---
## 多代理记忆访问
**模型:共享读取,受控写入**
- 所有代理**读取**所有存储 - 仅主代理直接**写入** - 子代理**提议** → `pending-memories.md` - 主代理**审查**并提交
子代理提议格式: ```markdown ## Proposal #N - **From**: [agent name] - **Timestamp**: [ISO 8601] - **Suggested store**: [episodic|semantic|procedural|vault] - **Content**: [memory content] - **Confidence**: [high|medium|low] - **Status**: pending ```
---
## 审计追踪
**第 1 层:Git** —— 每次变更 = 带有结构化消息的原子提交 **第 2 层:audit.log** —— 单行可查询摘要
行动者类型:`bot:trigger-remember`, `reflection:SESSION_ID`, `system:decay`, `manual`, `subagent:NAME`, `bot:commit-from:NAME`
**关键文件警报:** SOUL.md, IDENTITY.md 的变更将标记为 ⚠️ CRITICAL(关键)
---
## 关键参数
| 参数 | 默认值 | 说明 | |-----------|---------|-------| | 核心记忆上限 | 3,000 tokens | 始终在上下文中 | | Evolution.md 上限 | 2,000 tokens | 在里程碑时修剪 | | 反思输入 | ~30,000 tokens | 经历 + 图谱 + 元数据 | | 反思输出 | ~8,000 tokens | 对话式,非结构化 | | 反思要素 | 每会话 5-8 个 | 从菜单中随机选择 | | 反思日志 | 10 个完整条目 | 旧条目 → 带摘要归档 | | 衰减 λ | 0.03 | 半衰期约 23 天 | | 归档阈值 | 0.05 | 低于此值则隐藏 | | 审计日志保留期 | 90 天 | 旧条目 → 月度摘要 |
---
## 参考资料
- `references/architecture.md` — 完整设计文档(1200+ 行) - `references/routing-prompt.md` — LLM 记忆分类器 - `references/reflection-process.md` — 反思哲学与内心独白格式
## 故障排除
**记忆无法持久化?** 检查 `memorySearch.enabled: true`,验证 MEMORY.md 是否存在,重启网关。
**反思未运行?** 确保上一次反思已被批准/拒绝。
**审计追踪不工作?** 检查 `.git/` 是否存在,验证 `audit.log` 是否可写。