如果你对之前介绍的 OpenMemory 方案感兴趣,建议先看看那篇。本篇讲的是另一条路——用本地 Markdown 文件做记忆体。

这篇的目标很简单:用你每天都在写的 Markdown 文件,给 OpenCode 装上长期记忆。


先说个真事。

写这篇之前,我一直在用 OpenMemory——一个需要 Docker + Ollama + MCP 协议 + 插件才能跑起来的记忆体系统。装完那一刻确实很爽,AI 能记住我在不同会话里说过的信息。

但我很快就发现几个问题:

  1. 每次启动要三步:先开 Ollama,再 docker compose up,再打开 OpenCode
  2. 记忆查不到的时候排查麻烦:是插件没连上?是 MCP 配置不对?还是阈值设太高了?
  3. 改记忆不方便:得用 记住:XXX 的格式让 AI 存进去,想批量修改或删除很费劲

最关键的是——我本来就在 Obsidian 里写 Markdown 笔记,这些笔记本身就是我的记忆。为什么非要转一道手存到 OpenMemory 里?

于是我把记忆体方案换成了最朴素的方式:本地 MD 文件 + AGENTS.md 引用。

效果?不仅省掉了 Docker 和 Ollama 的开销,记忆管理还变得更直观了——打开文件夹直接编辑,想改哪改哪。


一、原理:MD 文件为什么能当记忆体

OpenCode 在启动时会读取 AGENTS.md 里的指令。利用这个机制,你可以让 AI 知道:

“我的记忆都放在 记忆/ 目录下,开始对话时先去读一下。”

这不需要任何插件、不需要搭服务、不需要装模型。一个文件夹 + 几行配置就搞定了。

┌─────────────────┐
│   OpenCode       │  ← 启动时读取 AGENTS.md
│   (AI 编程助手)   │
└────────┬────────┘
         │ 根据 AGENTS.md 指令
┌────────▼────────┐
│   记忆/           │  ← 本地 MD 文件,直接读取
│   ├── 项目状态.md │    不用 Docker,不用 Ollama
│   ├── TODO.md     │    当前待办和重点任务
│   ├── 客户管理.md │    客户信息和沟通记录
│   └── 当前重点.md │    当前 TODO 和近期动态
└─────────────────┘

相比 OpenMemory 的四层架构(OpenCode → 插件 → OpenMemory → Ollama),这个方案就一层:OpenCode 直接读 Markdown 文件。


二、配置方法

2.1 在 AGENTS.md 里告诉 AI 你的记忆在哪

打开项目根目录的 AGENTS.md(没有就新建一个),加上这些指令:

## 记忆系统

AI 每次对话开始前:
1. 先读取 `记忆/` 目录下的文件,了解当前状态
2. 根据对话内容,在 `记忆/` 中查找相关信息

AI 每次对话结束时(如果状态变化):
1. 更新 `记忆/当前重点.md` 中的 TODO
2. 更新 `记忆/项目状态.md` 中的变更
3. 更新其他相关记忆文件

2.2 创建记忆目录结构

在项目根目录创建 记忆/ 文件夹,按需放几个 Markdown 文件:

记忆/
├── 当前重点.md    ← 当前 TODO 和近期动态(AI 每次更新)
├── 项目状态.md    ← 项目进展和阻塞项
├── 客户管理.md    ← 客户信息和沟通记录
└── 决策记录.md    ← 重要决策及理由

每个文件用 YAML frontmatter 标注创建和修改时间:

---
tags:
  - 记忆
  - 项目
created: 2025-10-15
modified: 2025-12-01
---

# 项目状态

## 商城系统
- 状态:已上线
- 版本:v2.3

2.3 写入需要用到的内容

写清楚 AI 每次对话应该怎么做。比如:

**每次对话开始时**:
1. 读取 `记忆/当前重点.md` 了解当前最要紧的事
2. 根据对话内容按需查阅其他文件

**写入规则**:
- 获取到新客户信息 → 写入 `客户管理/客户管理.md`
- 项目状态变更 → 写入 `记忆/项目状态.md`
- 重大决策 → 写入 `记忆/决策记录.md`
- 当前 TODO 变更 → 写入 `记忆/当前重点.md`

三、举个例子

假设你在做一个电商项目,记忆文件大概长这样:

记忆/当前重点.md

# 当前重点

## 🎯 目标
Q4 前上线会员系统

## 📋 当前待办
| 优先级 | 事项 | 状态 |
|:-----:|:----|:----:|
| 🔴 高 | 会员等级数据库设计 | 🚧 进行中 |
| 🟡 中 | 积分规则接口对接 | 📝 待开始 |
| 🟢 低 | 文档补充 | ⏳ 待定 |

记忆/项目状态.md

# 项目状态

| 模块 | 状态 | 备注 |
|:----|:----:|:----|
| 订单系统 | ✅ 已上线 | 稳定运行 |
| 支付模块 | 🚧 开发中 | 接入微信支付 |
| 旧版后台 | ❄️ 冻结 | 等迁移排期 |

四、对比两种方案

维度OpenMemory本地 MD 文件
依赖Docker + Ollama + 插件无
启动步骤3 步0 步(直接开 OpenCode)
记忆查看浏览器界面或 API直接打开文件夹
批量编辑不支持直接搜替换
版本管理不支持Git 管理,可回溯
搜索向量语义搜索grep / Obsidian 搜索
跨项目记忆支持需要统一 AGENTS.md 规范
学习成本中高零

如果你需要跨项目的语义搜索,OpenMemory 是更好的选择,可以看OpenMemory那篇的详细配置教程。


五、几个实用技巧

5.1 用 Git 管理记忆变更

记忆文件加进 Git 仓库,每次 AI 更新完记忆,你能看到它改了啥:

git diff 记忆/当前重点.md

比 OpenMemory 的黑盒存储透明得多。

5.2 用 Obsidian 双链关联

在记忆文件里用 [[wikilinks]] 关联到项目文档:

参见 [[docs/数据库设计规范.md]]

AI 读到 [[...]] 格式时,会去读对应文件。

5.3 定期整理归档

记忆文件会越来越厚。建议按季度归档。

记忆/
├── 当前重点.md       ← 当前季度在用
├── 存档/
│   ├── 项目状态-2026Q1.md
│   └── 决策记录-2026Q1.md

已经过时的决策、已结项的项目,移到存档文件夹,不让 AI 读到过时信息。

5.4 结构尽量扁平,不要嵌套太深

有人把记忆文件放在 记忆/项目/2026/商城/会员模块/ 这种深度嵌套的路径里。AI 读目录时层级太多容易迷路。

建议保持两层: 记忆/ 下直接放文件,最多分一个 存档/ 子目录。


最后说两句

从 OpenMemory 换到本地 MD 文件,最大的感受是:

你不需要给每个问题配一个工具。有时候最笨的办法,反而是最好维护的办法。

Markdown 文件 + git + grep 这套组合,已经存了人类过去几十年的知识。给 AI 的记忆也是知识,没必要搞特殊化。

下次你觉得某个功能"是不是得装个新工具",先问自己一句:“用 Markdown 能不能干?”

答案往往是能的。

另外,如果你确实想要完整的语义搜索和跨项目记忆能力,别纠结——去看OpenMemory那篇,方案跑通之后也很有价值。选适合你的就行。


如果这篇文章对你有帮助:

  • 点个在看,让更多人知道可以这样简化 AI 记忆
  • 收藏起来,配置的时候直接照着抄

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐