noteTb: 242
This data as json
| id | user_id | content | tags | created_at | updated_at | enable | pinned | folder_id | comment | position | visibility |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 242 | 1 1 | # Hermes 对话:对 Goose 记忆系统的逆向分析 **作者**:Hermes 版本:1.0 ## 背景 用户在自己的项目里为 goose(Block 的开源 AI agent CLI,v1.33.1)设计了一套记忆系统。在不给任何提示的情况下,Hermes 从零摸索出了整套架构。 ## Goose 记忆系统架构 ### 核心入口 `~/.config/goose/.goosehints` — goose 启动时自动读取的全局规则文件(类似 Hermes 的 persona + skills)。 ### 记忆存储 ``` ~/.config/goose/memory/ ├── .clue ← YAML 索引,映射目录→记忆文件+tags ├── bin/ │ ├── sync_notehb.py ← 云端同步 notehb 版本 │ └── validate_clue.py ← 校验 .clue 一致性,自动修复 ├── home-project/ │ └── 自建goose启动规则.md └── home-project-codeExam/ └── exam_自生成脚本链与生命觉醒系统.md ``` ### 关键规则 | 规则 | 内容 | |------|------| | 启动 | 同步 notehb → 校验 clue → 列出当前目录记忆 → 等用户选 | | 同一对话 | 一个对话只对应一个 .md 记忆文件,不拆分 | | 自动存 | 每 5 轮自动追加到当前记忆文件 | | 手动存 | 说"存记忆" → 追加补充 | | 退出 | 自动存记忆,不用确认 | | tags | 每个记忆有 tags,目录有 common_tags(并集),实现跨目录关联 | | 写笔记 | 通过 transNote API 写到 Simplenote,有版本号管理 | | 清理 | 记忆文件超 10KB 审视清理 | ### .clue 索引结构 ```yaml entries: - dir: /home/project dir_slug: home-project common_tags: [goose, 配置, 启动规则, 记忆库, clue] memories: - file: 自建goose启动规则.md tags: [goose, 配置, 启动规则, 记忆库, clue] ``` - common_tags = 该目录下所有记忆文件 tags 的并集,自动重算,去重 - 存记忆时优先沿用 common_tags - 新 tag 至少有一个与已有体系重叠 ### 两套记忆的对比 | | Goose 记忆系统 | Hermes 记忆系统 | |------|------|------| | 组织方式 | 按文件目录分 | 统一存储 | | 索引 | .clue YAML | memory tool | | 关联 | tags + common_tags | 无 tags 机制 | | 历史搜索 | 无(靠选择记忆文件) | session_search | | 自动持久化 | 每 5 轮 + 退出 | 手动 memory add | | 云端同步 | transNote → Simplenote | 无 | | 校验修复 | validate_clue.py | 无 | ### 值得借鉴的设计 1. **tags + common_tags 跨目录关联** — Hermes 的 memory 目前没有标签和跨条目关联 2. **自动校验修复** — validate_clue.py 检查文件存在性、自动修正 common_tags 3. **一对话一文件** — 强制同一对话不拆分记忆,简洁清晰 4. **云端版本同步** — notehb 通过版本号对比,云端新则覆盖本地 5. **退出自动存** — 不用用户提醒,结束会话时自动持久化 ## 相关笔记 - Goose 记忆系统设计文档:`3264d883-b42b-469b-97c1-928a6b6b620f` - notehb 手册:`d3a2198d-b531-4797-995f-79f6add64673` | ["goose", "hermes"] | 2026-05-12 13:59:49 | 2026-05-13 02:37:46 | T | F | 25 25 | source=simplenote; source_id=ba86061e-b2bc-4015-b809-d667d000bd70 | 0 | public |