用 Obsidian 做 AI Agent 的长期记忆中枢:架构解析与实践指南

0 阅读6分钟

用 Obsidian 做 AI Agent 的长期记忆中枢:架构解析与实践指南

一张架构图,揭示了 AI 助手"记住一切"背后的完整信息流。


为什么 AI Agent 需要长期记忆?

大语言模型本身是无状态的——每次对话结束,上下文清空,一切归零。

这是个根本性缺陷:你今天告诉它你的偏好,明天再开一个新对话,它对你一无所知。要让 AI 助手真正"懂你",必须在模型外面搭一套持久化记忆系统。

有人用数据库,有人用向量检索,有人用纯文本文件。而这套架构选择了一个出人意料却极其务实的方案:Obsidian Vault


架构全景:三层信息流

整套系统分为三层,信息从外向内流动,再通过反馈回路闭环。

外部数据源 → AI Agent(Hermes)→ Obsidian Vault → 反馈回 AI

第一层:外部数据源

五类外部 API 持续向系统注入实时数据:

数据源API用途
日历Google Calendar今日日程、待办提醒
任务Todoist API任务清单、优先级
股票Yahoo Finance行情、涨跌、情绪分类
邮件Email API重要邮件摘要
天气OpenWeather当日天气、穿搭建议

这些数据不是手动输入的,而是由**定时任务(Cron Jobs)**自动拉取,写入 Vault。

第二层:AI Agent 核心

AI Agent(图中称为 Hermes Agent)包含四个组件:

1. Cron Jobs — 定时自动化
  • 早报(6:50 AM):拉取 Todoist + Google Calendar,生成当日 daily note,写入 Vault;7:00 AM 第二个 Cron 读取缓存,格式化后推送到 Telegram。
  • 财报(9:00 AM):爬取 Yahoo Finance,按 ticker 提取价格、涨跌幅、新闻标题,自动分类牛/中性/熊情绪,推送表格到 Telegram。
2. Skills Library — 技能库
  • 存储 150+ 可复用工作流
  • 覆盖:网页搜索、发布博客、控制智能家居、运行代码等
  • Skills 可以直接读写 Vault,实现跨会话的工作流持久化
3. Memory Tool — 会话记忆
  • 每次对话开始时,将 9K 字符的精华记忆注入 system prompt
  • 存储用户偏好、环境信息、已知 quirks 等稳定事实
  • 当记忆接近 67% 容量上限时,触发记忆迁移流水线
4. Chat Interface — 交互入口
  • 支持 Telegram 和 CLI 双入口
  • 是唯一一个接收 Vault 反向反馈的组件
  • AI 可在对话中按需查询 Vault 中的历史记录和文档

第三层:Obsidian Vault

Vault 是整套架构的"持久化大脑",组织结构如下:

Vault/
├── System/          # 稳定参考资料
   ├── context.md       # 当前环境上下文
   ├── preferences.md   # 用户偏好
   └── environment.md   # 系统配置
├── Daily/           # 可检索的时间线
   ├── 2026-04-23.md
   ├── 2026-04-22.md
   └── ...
├── Work/            # 工作记录
   ├── Business-A/
   ├── Business-B/
   └── Reports/
└── Personal/        # 个人追踪
    ├── Finance/
    ├── Health/
    └── Projects/

记忆迁移流水线:核心设计亮点

这是整套架构最精妙的部分,解决了一个棘手问题:热记忆有限,如何不丢失重要信息?

Hot Memory(9K,每轮注入)
    ↓ 达到 67% 容量
Stable Vault Files(按需检索)
    ↓ AI 需要时
On-demand Lookup → 回注入对话上下文

三段式设计的逻辑:

  1. 工作记忆(Hot Memory):每轮对话都注入的 9K 字符,相当于人类的短期记忆,存放最近、最常用的信息。

  2. 迁移触发(67% 阈值):当热记忆快满时,系统将"已稳定、不常变动"的事实迁移到 Vault 文件。这不是简单的 overflow,而是有意识的知识分层。

  3. 按需检索(On-demand Lookup):AI 在对话中可以主动查询 Vault,拉取特定历史记录或参考文档,实现"想起来了"的效果。

这套设计的本质是模拟人类记忆的工作记忆 + 长期记忆分层模型,用工程手段在 LLM 的无状态架构上打了一个补丁。


实践指南:如何复刻这套架构

Step 1:初始化 Obsidian Vault

mkdir -p ~/vault/{System,Daily,Work,Personal}

# 创建核心系统文件
touch ~/vault/System/context.md
touch ~/vault/System/preferences.md
touch ~/vault/System/environment.md

preferences.md 里写下你的基本偏好(语言、时区、工作习惯等),这将成为 AI 每轮注入的基础素材。

Step 2:配置定时任务 Cron Jobs

以早报为例,设置两个 Cron:

# cron 1: 06:50 — 拉取数据,生成 daily note
import datetime
import requests

def generate_daily_note():
    today = datetime.date.today().isoformat()
    
    # 拉取 Todoist 任务
    tasks = fetch_todoist_tasks()
    # 拉取 Google Calendar 事件
    events = fetch_calendar_events()
    
    note_content = f"""# {today}

## 今日任务
{format_tasks(tasks)}

## 日程安排
{format_events(events)}
"""
    with open(f"~/vault/Daily/{today}.md", "w") as f:
        f.write(note_content)

# cron 2: 07:00 — 读取缓存,推送 Telegram
def send_morning_briefing():
    today = datetime.date.today().isoformat()
    with open(f"~/vault/Daily/{today}.md") as f:
        content = f.read()
    send_to_telegram(format_briefing(content))

Step 3:设计记忆注入格式

Hot Memory 的 9K 字符需要精心设计,建议分区:

## USER PROFILE
- 姓名、角色、偏好语言
- 工作习惯、时区

## ENVIRONMENT
- 系统路径、工具配置
- API key 位置(只记路径,不记值)

## ACTIVE PROJECTS
- 当前在做的项目
- 关键决策和进展

## QUIRKS & LESSONS
- 工具的已知 bug 和绕过方式
- 用户的纠正记录(不要再做 X,要做 Y)

Step 4:技能库组织

将可复用的工作流封装为独立 Skill 文件,每个 Skill 包含:

---
name: skill-name
description: 一句话描述
---

# 触发条件
什么情况下用这个 skill

# 步骤
1. 具体操作步骤
2. 关键命令

# 注意事项
已知坑点

Step 5:实现反向查询(On-demand Lookup)

当 AI 需要查询 Vault 时,通过工具调用实现:

def search_vault(query: str, path: str = "~/vault") -> str:
    """搜索 Obsidian Vault 中的内容"""
    import subprocess
    result = subprocess.run(
        ["rg", "-l", "--max-count=5", query, path],
        capture_output=True, text=True
    )
    files = result.stdout.strip().split("\n")
    
    contents = []
    for f in files[:3]:  # 最多返回3个文件
        with open(f) as fp:
            contents.append(f"## {f}\n{fp.read()[:2000]}")
    
    return "\n\n".join(contents)

这套架构的本质思想

看完整张图,有一个核心洞察值得单独说:

AI Agent 的记忆问题,本质上是一个信息架构问题,而不是模型能力问题。

Obsidian 之所以适合做记忆后端,不是因为它有什么神奇的技术,而是因为它的核心设计哲学——纯文本、本地优先、双向链接——天然契合 AI 的信息消费方式。

  • 纯文本 = LLM 可直接读取,无需解析
  • 本地优先 = 延迟低,无网络依赖
  • 文件夹结构 = 天然的信息分层,对应记忆的冷热分层

换句话说:用 Obsidian 做 AI 记忆后端,是把人类知识管理的最佳实践,嫁接到了 AI Agent 的工程架构上。

这也是为什么它比向量数据库方案更直觉友好——你可以直接打开 Obsidian 看到 AI 的"大脑"里存了什么,随时编辑、随时理解。


小结

组件作用对应人类记忆
Hot Memory(9K)每轮注入的核心上下文工作记忆
Daily Notes每日自动生成的时间线日记/情节记忆
System/ 文件稳定的参考资料语义记忆
Skills Library可复用的程序性知识程序性记忆
On-demand Lookup按需检索历史提取式回忆

这不只是一套工具组合,而是一种关于"AI 应该如何记忆"的完整思考框架。

如果你正在构建自己的 AI 助手,这套架构值得认真参考。


参考架构来源:Reddit r/ObsidianMD,原帖展示了完整的 Obsidian + Hermes Agent 集成方案。