AI Agent记忆系统第二大脑知识管理HermesObsidianKarpathy

AI Agent记忆系统实战:Hermes三层知识架构搭建第二大脑


为什么AI Agent需要记忆系统

大语言模型的上下文窗口是有限的。即使是128K context的模型,一次对话消耗完就没了——下次对话从零开始。这意味着:

  • 你每次告诉Agent”用简体中文回复”,下次对话它又忘了
  • 上周调通的策略参数,这次又要重新推导
  • 三个月前踩过的坑,今天又踩一遍

解决方案是给Agent建一套持久化记忆系统。 不是简单的聊天记录,而是分层的、可进化的、跨领域关联的知识网络。

本文以我实际运行的Hermes Agent为例,展示一套三层知识架构——从即时会话记忆,到中期自我进化,再到长期Wiki知识库,全部基于开源工具和零成本方案。

架构全景

┌──────────────────────────────────────────────────────────────────┐
│                    Hermes Agent 三层知识架构                       │
│                                                                   │
│  ┌───────────────┐  ┌───────────────┐  ┌───────────────────┐     │
│  │  第一层:会话记忆 │  │  第二层:自我进化 │  │  第三层:Wiki知识库 │     │
│  │  (Always-on)   │  │  (Daily cron)  │  │  (Weekly compound)│     │
│  │                │  │                │  │                   │     │
│  │  MEMORY.md     │  │  ~/self-improving/│ │  ~/wiki/ (Obsidian)│     │
│  │  USER.md       │  │  ├── memory.md  │  │  ├── entities/    │     │
│  │  2,200字符上限  │  │  ├── corrections│  │  ├── concepts/    │     │
│  │  每轮自动注入   │  │  ├── suggestions│  │  ├── comparisons/ │     │
│  │                │  │  └── report_*.md│  │  ├── lessons/     │     │
│  │  ←快速偏好/规则 │  │  ←中期学习/纠错 │  │  └── raw/         │     │
│  └───────────────┘  └───────────────┘  └───────────────────┘     │
│         │                   │                      │              │
│         └───────────────────┼──────────────────────┘              │
│                             ▼                                     │
│                    ┌───────────────┐                              │
│                    │  IMA知识库云端  │                              │
│                    │  9,153条内容    │                              │
│                    │  对话记录归档   │                              │
│                    └───────────────┘                              │
└──────────────────────────────────────────────────────────────────┘

三层各有分工:

层级名称触发频率容量用途
第一层会话记忆每轮对话2,200字符偏好、规则、关键参数
第二层自我进化每日cron~50KB/天搜索发现、经验纠错、建议追踪
第三层Wiki知识库每周cron178页/42万字结构化知识、跨域关联、长期复利

第一层:会话记忆(MEMORY.md + USER.md)

设计理念

这是最底层的记忆——每轮对话自动注入system prompt,确保Agent始终”记得”你是谁、你的偏好是什么。

文件结构

~/.hermes/memories/
├── MEMORY.md     # Agent的工作笔记(24条规则/参数/经验)
├── USER.md       # 用户画像(12条身份/偏好/习惯)
├── MEMORY.md.lock
└── USER.md.lock

MEMORY.md:Agent的工作记忆

容量限制2,200字符(约24条条目),用§分隔。每条是一个紧凑的事实陈述:

核心规则 > 日常流程: **每日01:00**: 增量数据下载(pytdx CSV)→DuckDB同步
§
核心规则 > 关键信息: **飞书群聊ID**: oc_xxxxxx(您的群聊ID)
§
DuckDB > 5/8去重: 45M重复(75%→0%), ETL改UPSERT防重复. 股票15.2M行
§
策略: ETF轮动S1.37/白马v2.3年化+18.3%/聚宽组合S1.94
§
HTTP 400修复(6/18): fallback改deepseek-chat, reasoning_effort:none

关键设计原则:

  1. 声明式而非指令式 — “用户偏好简体中文” ✅,不要写”请用简体中文回复” ❌。声明式让Agent理解这是事实,指令式会被当成待执行任务
  2. 极度压缩 — 每条不超过一行。缩写、符号、代码片段都可以,只要Agent能理解
  3. 分类清晰 — 用 > 做层级分隔(核心规则 > 日常流程数据源 > pytdx),方便定位
  4. 过期清理 — 7天内会过期的信息不写入(如PR号、临时状态),保持信噪比

USER.md:用户画像

记录用户的身份和偏好,让Agent个性化响应:

姓名: 一名量化爱好者
§
**Timezone:** Asia/Shanghai (CST, UTC+8)
§
工作习惯:执行多任务时,完成一个自动开始下一个,不询问。
每小时汇报进度。不要在任务之间停下来问"需要继续吗"。
§
偏好:命令直接执行,不需要申请批准。
§
券商佣金: 万0.5 (0.005%)
§
饮食: 早晚餐规律午餐不规律,爱面条,重口味。
5:50起23:00睡(不足6h). 工程技术人员(某能源企业)

为什么有2,200字符限制?

这是刻意的设计。在128K context窗口中,记忆注入占用的空间必须控制——否则会挤压实际对话和工具调用的空间。2,200字符约500 token,不到context的0.4%,但足以携带最高优先级的24条规则。

超过限制时怎么办? 合并相似条目、删除过期信息、将详细内容下沉到第二层或第三层。这迫使你做信息筛选——只有真正重要的东西才留在HOT层。


第二层:自我进化引擎(~/self-improving/)

设计理念

第一层记忆是”被动记住”,第二层是”主动学习”。每天凌晨5点,Agent自动搜索互联网,发现新工具、新策略、新技术,将高价值信息归档。

文件结构

~/self-improving/
├── memory.md              # WARM记忆(219行,12.8KB)
├── corrections.md         # 纠错日志(最近50条)
├── heartbeat-state.md     # 运行状态追踪
├── suggestions.md         # 累计建议(561行,37.6KB)
├── report_2026-06-08.md   # 每日进化报告(永久存档)
├── report_2026-06-05.md
├── ...
├── projects/              # 项目级学习(按项目隔离)
├── domains/               # 领域级学习(按领域隔离)
└── archive/               # 冷存储(过期内容)

每日进化流程

05:00  Cron触发 → flock并发保护

  ├── Step 0: 去重检查(读取最近3天报告的URL列表)
  ├── Step 1: 动态搜索(11组关键词,每天轮换)
  │   ├── 固定池轮换(10类,按日期%d取模)
  │   ├── 动态关键词(加入月份/季节/当前热点)
  │   ├── Hermes Agent更新(每次必搜)
  │   └── 当日财经热点
  ├── Step 2: 内容提取(web_extract深度读取)
  │   └── 质量把关:跳过内容农场,保留GitHub/arXiv/官方文档
  ├── Step 3: 生成进化报告卡片
  │   └── /tmp/hermes_self_evol_card_YYYY-MM-DD.md
  ├── Step 4: 上传飞书群聊(文件卡片)
  └── Step 5: 追加到suggestions.md(长期追踪)

memory.md:WARM层记忆

与第一层的MEMORY.md不同,这里的memory.md没有2,200字符限制,可以展开记录完整的技术发现:

## [Agent] Context Engineering 取代 Prompt Engineering (2026趋势)
- Karpathy (2025.06) 提出: LLM=CPU, 上下文窗口=RAM, Agent=操作系统
- 任务: 给上下文加载"正确的代码和数据"
- 生产环境失败主因: 上下文拼装错误 > 提示词错误
- LangChain 4策略: write/select/compress/isolate
- "Lost in the Middle"问题: 关键信息放开头或结尾(>30%精度损失)
- 来源: https://thomas-wiegold.com/blog/...

## [量化] Dynamic Grid Trading (arXiv:2506.11921)
- 传统固定网格策略期望收益为零,仅是波动捕获器
- DGT: Geometric Grid + 动态参考价格 + 波动率自适应间距
- 对中国可转债网格V6.4: 动态间距思路可借鉴

三级存储机制

层级位置容量限制行为
HOT第一层MEMORY.md≤100行每轮对话自动加载
WARM~/self-improving/memory.md≤200行/文件按上下文匹配加载
COLD~/self-improving/archive/无限仅显式查询时加载

自动流转规则:

  • 模式被3天内使用3次 → 提升到HOT
  • 30天未使用 → 降级到WARM
  • 90天未使用 → 归档到COLD
  • 从不删除(只降级)

纠错机制:corrections.md

当Agent犯错被纠正时,自动记录到corrections.md,追踪同一错误的重复次数:

## 2026-02-19

### 14:32 — Code style
- **Correction:** "Use 2-space indentation, not 4"
- **Context:** Editing TypeScript file
- **Count:** 1 (first occurrence)

### 16:15 — Communication
- **Correction:** "Don't start responses with 'Great question!'"
- **Count:** 3 → **PROMOTED to memory.md**

同一纠正出现3次 → 自动提升到第一层MEMORY.md。这是防止反复犯错的防线。


第三层:Wiki知识库(Karpathy LLM Wiki模式)

设计理念

前两层解决”记住”和”学习”,第三层解决”知识复利”。基于Andrej Karpathy提出的LLM Wiki模式——不是每次从零检索(传统RAG),而是编译一次、持续维护、交叉引用。

核心思想:Wiki vs RAG

维度传统RAGLLM Wiki
检索方式每次查询从零检索向量预编译知识网络
知识质量原始文档直出已综合、已去重、已交叉引用
矛盾处理可能返回冲突信息冲突已标记(contested字段)
更新成本重新embeddingAgent直接编辑markdown
可读性向量碎片人类可读结构化文档

目录结构(三层架构)

~/wiki/ → YourVault/07_LLM_Wiki/ (符号链接)
├── SCHEMA.md           # 层3: 规范定义(版本/标签/frontmatter规则)
├── index.md            # 层3: 内容目录(每页一行摘要)
├── log.md              # 层3: 操作日志(append-only,19.5KB)
├── raw/                # 层1: 不可变原始素材(86页)
│   ├── articles/       #  - 网页文章
│   ├── papers/         #  - arXiv论文
│   ├── ima/            #  - IMA知识库回采(81个日报)
│   └── market-valuation-reports/
├── entities/           # 层2: 实体页(20页)
├── concepts/           # 层2: 概念页(41页)
├── comparisons/        # 层2: 对比分析(11页)
├── lessons/            # 层2: 教训提取(13页)
└── queries/            # 层2: 查询归档(2页)

Layer 1 — Raw Sources: 不可变。Agent读取但不修改。raw/下的每个文件带sha256哈希,重复摄入时检测漂移。

Layer 2 — The Wiki: Agent拥有和维护的markdown文件。创建、更新、交叉引用。

Layer 3 — The Schema: SCHEMA.md定义结构规范、frontmatter字段、标签分类。

SCHEMA v2.2:质量信号系统

每个wiki页面必须携带YAML frontmatter质量信号:

---
title: 可转债低价轮动
created: 2026-05-20
updated: 2026-06-15
type: entity
tags: [bond, cb, rotation, backtesting]
domain: quant
confidence: high          # 多源(≥2)支持 + 数据明确
sources: [raw/articles/jisilu-cb.md]

# 可选质量信号
contested: false           # 是否包含未解决矛盾
contradictions: []         # 冲突页面列表
sha256: <hex>             # 仅raw/文件,检测源漂移
---

置信度判定:

  • high — 多源(≥2)支持 + 数据/证据明确
  • medium — 单源但来源权威,或多源但有矛盾
  • low — 单源非权威、推测、记忆模糊

每周lint时,所有confidence: low的页面被标记,待补强或降级。

六大领域 + 跨领域链接

Wiki覆盖6个领域,强制跨领域关联防止信息孤岛:

领域页面数示例
量化交易~80策略/回测/数据/风控/实盘
健康档案~15体检/血压/TG/脂肪肝/饮食
工作业务~10煤矿通风/党建/谈心谈话
家庭决策~5理财/教育/家事
读书学习~5技术/通识/历史
自我认知~5个人画像/目标/反思

跨领域硬性指标:

  • 每个新页面至少1条出链指向其他领域
  • 每月至少新建1页在非量化领域
  • 跨领域链接密度 ≥ 10%

实际效果——这是我最喜欢的跨领域对比页:

┌─────────────────────────────────────────────────────┐
│  comparisons/quant-risk-YOUR_API_KEY-health-risk.md           │
│                                                     │
│  维度        量化交易          健康                  │
│  回撤        策略最大回撤       体检指标恶化           │
│  黑天鹅      流动性危机         急性病/意外            │
│  杠杆放大    融资融券           多项坏习惯叠加         │
│  止损规则    止损/仓位/分散     控压/控糖/控盐         │
│  复利效应    年化+20%          每天散步30min          │
│  均值回归    策略失效回归基准   不良习惯会回归         │
└─────────────────────────────────────────────────────┘

用量化交易的风险管理思维,反过来理解健康管理——这就是跨领域知识复利。

思考循环(O-D-W Hook)

wiki-think-hook skill强制Agent在研究/决策任务中执行Orient→Decide→Write循环:

┌─ ORIENT(前置)──────────────────────────────────┐
│ 读index.md + search_files + 读log.md最近30行     │
│ → 了解已有知识,避免重复创建                       │
└──────────────────────────────────────────────────┘

┌─ DECIDE(引用)──────────────────────────────────┐
│ 回答必引用 [[page-a]] [[page-b]]                  │
│ 标注 confidence(high/medium/low)                 │
│ 存在 contested: true 必呈现双方立场               │
│ 指出wiki知识缺口                                   │
└──────────────────────────────────────────────────┘

┌─ WRITE(回写)───────────────────────────────────┐
│ 综合对比 → comparisons/<topic>.md                 │
│ 新问题被答 → queries/<date>-<topic>.md            │
│ 失败教训   → lessons/<type>-<topic>.md            │
│ 新事实     → 更新entity/concept页 + bump updated  │
└──────────────────────────────────────────────────┘

关键规则: 任何”X是什么/为什么/怎么办”的问题,先读index再回答。策略对比先搜现有comparison。>5次工具调用的长任务结束后,必须评估是否写回Wiki。

知识管道:5路Pre-Collection

每周日凌晨3:40,一条完整的知识管道自动执行:

03:10  P1 IMA回采      → raw/ima/*.md (从IMA知识库反向提取)
03:20  P2 Session提炼   → lessons/session-digest.md (从551MB FTS5数据库)
03:30  P3 Skills提取    → concepts/skill-inventory.md (193个Skill元数据)
03:40  Main Update      → 新建≥3页 + 更新≥5页 + ≥1跨域 + ≥1 comparison/lesson

P1 IMA回采: 从腾讯IMA个人知识库(9,153条内容)反向提取7天的对话知识。IMA API的search_note_book按相关度排序,按日期搜索更可靠。

P2 Session提炼: 查询Hermes的~/.hermes/state.db(551.7MB SQLite FTS5数据库),找到高价值用户会话(非cron、>20条消息、含知识关键词),提取核心讨论到Wiki。

P3 Skills提取: 扫描所有193个Skill的YAML frontmatter,生成完整技能清单。

数据规模

指标数值
Wiki总页数178页
总字符数419,482(41.9万字)
SCHEMA版本v2.2
跨领域对比页11页
教训提取页13页
原始素材页86页(含81个IMA日报)
自我进化建议累计561行

IMA知识库:云端对话归档

除了三个本地层级,还有一个云端备份层——腾讯IMA个人知识库。

每日00:00  Cron自动执行

  ├── 提取当天Hermes对话记录
  ├── 格式化为Markdown文档
  └── 上传到IMA知识库(API: import-topic-data)

IMA知识库当前9,153条内容,涵盖:

  • 每日对话归档(81天连续记录)
  • 全市场估值周报(每周一自动归档)
  • 策略研究报告

双向管道: IMA不只是归档目标。P1回采脚本每周日从IMA反向提取知识到Wiki,形成闭环。


实际效果:系统运行数据

三层协同时间线(典型一天)

01:00  📥 增量数据下载(量化系统K线更新)
03:10  🔄 P1 IMA回采(从云端提取知识到Wiki)
03:20  🔄 P2 Session提炼(从对话数据库提取知识)
03:30  🔄 P3 Skills提取(更新技能清单)
03:40  📝 周日Wiki综合更新(新建+更新+lint)
05:00  🧠 自我进化搜索(全网搜索新知识)
06:00  🌅 早间检查(系统巡检→飞书通知)
07:20  📝 自我进化报告→博客文章
00:00  📤 对话记录归档到IMA

知识流转路径

用户对话 → Session DB(551MB FTS5)
    │              ↓
    │         P2提炼 → Wiki lessons/

    ├──→ IMA云端(9,153条)
    │         ↓
    │    P1回采 → Wiki raw/ima/

    └──→ 自我进化(每日搜索)

         suggestions.md(561行)

         MEMORY.md(精选24条)

周度Lint评分

Wiki每周自动执行12项Lint检查,综合评分公式:

总分 = pages(20) + cross-domain(10) + outlinks(15) + broken-links(10)
     + orphans(10) + confidence(10) + completeness(10) + cross-domain-depth(15)
     = 100

最近一次评分:95/100(A+级),7领域均衡发展。


避坑指南

坑1:MEMORY.md膨胀

问题: 记忆条目越加越多,超过2200字符限制
根因: 把临时状态(PR号、Bug编号)写入了持久记忆
解决: 只写"7天后仍有价值"的事实。临时状态用session_search检索

坑2:Wiki退化为单领域堆栈

问题: Wiki 90%都是量化交易,健康/工作/家庭页面稀少
根因: 没有跨领域强制规则
解决: SCHEMA v2.2新增跨领域硬性指标:每月≥1页非量化、跨域链接密度≥10%

坑3:自我进化报告重复

问题: 每天的进化报告和前三天高度重复
根因: 搜索关键词固定不变
解决: 10类关键词按日期%d取模轮换 + 每天必须生成2个全新搜索词
      + 读取最近3天报告URL列表做去重

坑4:O-D-W Hook被跳过

问题: Agent面对复杂问题直接回答,不读Wiki
根因: think-hook是建议性的,Agent可能跳过
解决: 将O-D-W写入skill的HARD RULES,用关键词触发
      ("为什么/怎么办/X vs Y" → 强制读index.md)

坑5:raw/目录缺乏哈希校验

问题: 重新摄入同一篇文章时不知道内容是否变化
解决: raw/文件frontmatter加sha256字段
      相同URL摄入 → 比对哈希 → 相同跳过/不同标记漂移

技术栈总结

组件技术选型成本
AI AgentHermes Agent (Nous Research)开源免费
会话记忆MEMORY.md + USER.md(文件)免费
自我进化~/self-improving/(Markdown)免费
Wiki知识库YourVault + Markdown免费
知识搜索SQLite FTS5(551MB session DB)免费
云端归档腾讯IMA个人知识库免费
搜索引擎Tavily + arXiv API + GitHub API免费额度
通知飞书群聊(文件卡片+消息)免费
调度Hermes Cron(28个定时任务)免费

总成本:0元。 全部基于开源工具和免费API额度。


从零搭建:行动清单

如果你想复制这套架构,按以下顺序操作:

第一步(30分钟):会话记忆

  1. 安装Hermes Agent
  2. 编辑~/.hermes/memories/MEMORY.md:写入你的核心偏好(语言、时区、工作习惯)
  3. 编辑~/.hermes/memories/USER.md:写入用户画像(身份、专长、约束)

第二步(1小时):自我进化

  1. 创建~/self-improving/目录结构
  2. 设置每日cron job:搜索你关注领域的最新信息
  3. 建立suggestions.md做长期追踪

第三步(2小时):Wiki知识库

  1. 安装Obsidian(可选,Agent直接操作markdown也行)
  2. 创建Wiki目录结构(entities/concepts/comparisons/lessons/raw)
  3. SCHEMA.md定义你的领域和规范
  4. index.md做内容目录
  5. 从最重要的10个概念开始建页

第四步(持续优化):管道打通

  1. 设置每日对话归档(到云笔记或本地)
  2. 设置每周Wiki更新cron(新建+更新+lint)
  3. 加入wiki-think-hook(O-D-W思考循环)
  4. 持续优化搜索关键词和去重策略

本文基于作者实际运行的Hermes Agent系统(2026年6月状态)。178页Wiki、24条持久记忆、561条进化建议、28个定时任务——全部从零搭建,零成本运行。

💬 评论