AI编程记忆革命:用Obsidian软链接让AI记住你的项目
上次发推文说要出教程,今天兑现承诺。这是一份傻瓜式操作指南,小白也能跟着做。
🤯 你遇到过这种崩溃吗?
用 Cursor 或 Claude Code 写代码,每次开新对话都要重新解释:
- "这个项目是做什么的..."
- "我们用的是 React + TypeScript..."
- "上次我们决定用这个方案..."
AI 的记忆像金鱼,聊完就忘。
更崩溃的是——你在 Cursor 里解释过的东西,Claude Code 完全不知道。两个 AI 各自为战,你成了传话筒。
但还有一个更隐蔽的崩溃——
当你 vibe coding 做了几十个项目后,有一天打开电脑里的项目文件夹,你发现:
- 这个项目当时的灵感是什么?忘了。
- 为什么要做这个功能?忘了。
- 当时那股激情在哪里?找不到了。
因为你的灵感、你的思考、你的决策——全都散落在和 AI 的聊天窗口里。
等你想回忆的时候,你会发现:翻不到了,索引不出来了。
所以,今天讲的这个方案,不只是解决 AI 的记忆问题——更是解决你自己对项目的记忆问题。
💬 你遇到过最崩溃的"找不到当时灵感"的时刻吗?欢迎评论区吐槽。
💡 核心认知:对话框不是记忆的家
先说一个重要的思维转变:
对话窗口,不适合承载记忆。
想象一下:
对话就像便利贴——你写了一张,贴在桌上,过几天就被风吹走了,或者被你自己扔进垃圾桶。
文件就像笔记本——你写进去的东西,翻开就能找到,10年后还在。
| 对比 | 便利贴(对话) | 笔记本(文件) | |-----|--------------|--------------| | 生命周期 | 聊完就没了 | 永久保存 | | 跨工具 | Cursor 的记忆,Claude Code 不知道 | 所有工具都能读 | | 可管理 | 散落各处,找不到 | 统一存放,随时整理 |
这就是今天要讲的核心理念:File is Memory(文件即记忆)
🤔 为什么不用 OpenMemory 这类"记忆工具"?
你可能听说过一些专门给 AI 做"记忆管理"的工具,比如 OpenMemory。
我试过,但后来不用了。为什么?
因为它们本质上是"又加了一层":
- 你要单独维护一个记忆空间
- 你要开 MCP 服务或 Docker
- 你要学习它的使用方法
这不是"底层",这是"又一个工具"。
真正的底层是什么?是文件系统。
这个灵感来自最近很火的 Planning with Files 方法——用文件来管理 AI 的执行计划。
我想:既然文件可以管理"计划",那文件也可以管理"记忆"。
而 Obsidian 本身就是基于本地文件的笔记系统。
所以答案很简单:用 Obsidian 管理项目的全部上下文,然后用软链接让 AI 能读取它。
不需要额外的工具,不需要额外的服务,不需要额外的学习成本。
文件就是记忆,Obsidian 就是记忆管理器。
🛠️ 解决方案:软链接 + Git 忽略
什么是软链接?
想象一下:
你在 A 房间放了一面"魔法镜子",透过它可以直接看到 B 房间的东西。
软链接就是这面魔法镜子。
- 它不是"复制"文件
- 它是"映射"文件
- 修改任何一边,另一边同步变化
为什么用软链接?
因为我们要实现:
你的 Obsidian 笔记库
↓ (软链接映射)
你的代码项目文件夹
↓ (AI 可以读取)
Cursor / Claude Code
这样,AI 工具就能直接读取你在 Obsidian 里写的项目笔记、需求文档、决策记录。
🤔 等等,我直接在项目里写笔记不行吗?
你可能会问:我干嘛这么麻烦用软链接?直接在代码项目里建个 docs 文件夹写笔记不就行了?
不行。有两个问题:
问题1:污染代码结构
代码项目有它自己的结构:src/、components/、utils/...
如果你在里面塞一堆笔记文件,项目结构会变得乱七八糟。代码是代码,笔记是笔记,混在一起会让人抓狂。
问题2:知识无法复用
你在项目 A 里踩过的坑、学到的经验,换到项目 B 还能用吗?
如果笔记写在项目里,它就"困"在那个项目里了。但如果写在 Obsidian 里,这些经验可以:
- 被其他项目复用
- 和你的知识体系连接起来
- 随时被你回顾和整理
更麻烦的是:双重管理
如果你既在项目里写笔记,又在 Obsidian 里写笔记,最后两边都有内容,你自己都搞不清哪个是最新的,哪个是全的。
软链接的美妙之处:
你只需要维护一个地方——你的 Obsidian 笔记库。
同时,这些笔记又能"出现"在每个需要它的代码项目里,让 AI 读取。
这就像游戏里的"经验值系统":
项目开发 → 踩坑/学习 → 记录到 Obsidian(经验 +100)
↓
下个项目 → 读取经验 → 少踩坑(技能解锁!)
↓
继续积累 → 经验值爆表 → 你变成高手
- 每次开发:你往"经验池"里存东西
- 每个项目:都能从"经验池"取东西用
一份笔记,多处复用。这才是真正的"知识管理"。
🖱️ 最简单的方法:右键一键创建(推荐!)
如果你不想折腾终端命令,有一个超级好用的小工具:SymbolicLinker
装上它之后,直接右键就能创建软链接,完全不用碰终端。
下载安装
方法1:GitHub 下载(推荐)
- 下载地址:SymbolicLinker 2.2
- 下载
.dmg文件,打开后把SymbolicLinker.service拖到Services文件夹
方法2:用 Homebrew 安装(程序员推荐)
brew install --cask symboliclinker使用方法
- 在 Finder 里找到你的 Obsidian 笔记文件夹
- 右键 → 服务 → Make Symbolic Link
- 会在同一目录生成一个软链接文件
- 把这个软链接拖到你的代码项目里,改名为
docs
搞定!比终端命令简单 10 倍。
📋 实操步骤(终端命令版)
🎯 快速分流:如果你已经用 SymbolicLinker 成功创建了软链接,直接跳到下面的【避坑提醒】。
下面这段是给喜欢用命令行的程序员,或者 SymbolicLinker 安装有问题的朋友准备的。
第一步:确定两个路径
- 源头:你的 Obsidian 笔记文件夹(要分享给 AI 的那个)
- 目标:你的代码项目根目录
举例:
源头:/Users/xiaoming/Obsidian笔记库/项目文档/电商项目
目标:/Users/xiaoming/代码项目/my-shop-app
💡 如何快速复制路径?
在 Finder 里找到你的文件夹,然后:
- 选中文件夹
- 按住
Option键(⌥) - 右键点击
- 选择「将"文件夹名"拷贝为路径名」
路径就复制到剪贴板了,直接粘贴到终端即可。
第二步:打开终端,输入命令
ln -s "源头路径" "目标路径/docs"实际例子:
ln -s "/Users/xiaoming/Obsidian笔记库/项目文档/电商项目" "/Users/xiaoming/代码项目/my-shop-app/docs"解释一下这行命令:
ln -s= 创建软链接(s 代表 symbolic)- 第一个路径 = 你的笔记在哪(源头)
- 第二个路径 = 要映射到哪(目标)
执行后,你的代码项目里会多一个 docs 文件夹,里面的内容就是你 Obsidian 笔记的"镜像"。
✅ 怎么知道成功了?
- 在 Finder 里打开你的代码项目文件夹
- 你会看到一个
docs文件夹(图标上有个小箭头,表示这是链接) - 点进去,里面的内容和你的 Obsidian 笔记一模一样
❌ 如果报错了怎么办?
常见错误:ln: docs: File exists(文件已存在)
解决:先删掉旧的,再创建
rm -rf docs # 删掉旧的
ln -s "源头路径" "目标路径/docs" # 重新创建第三步:在 Git 里忽略它(双保险)
好消息:软链接有个"天然保护"——
Git 只会记录软链接本身(一个 4KB 的"指路牌"),不会把你笔记里的实际内容上传到仓库。
所以即使你忘了设置 .gitignore,你的笔记内容也不会被提交。
但为什么还要加 .gitignore?双保险:
| 不加 .gitignore | 加了 .gitignore | |----------------|----------------| | 软链接文件会被提交 | 软链接文件不会被提交 | | 别人看到一个指向你电脑的无效路径 | 完全干净,没有痕迹 | | 暴露你的本地目录结构 | 隐私保护到位 |
操作: 打开项目根目录的 .gitignore 文件,加一行:
docs/
💡 找不到 .gitignore 文件?
用 VS Code 或 Cursor 打开项目,侧边栏能看到所有文件(包括以 . 开头的隐藏文件),直接编辑即可。
⚠️ 三个避坑提醒
1. 别用 Finder 的"制作替身"
Mac 右键菜单有个"制作替身",别用它!
- 替身(Alias)是 Mac 专属的
- Git、Cursor、Claude Code 都不认识它
- 必须用终端的
ln -s命令
2. 路径要用绝对路径
# ✅ 正确:完整路径
ln -s "/Users/xiaoming/笔记库/项目" "/Users/xiaoming/代码/app/docs"
# ❌ 错误:相对路径
ln -s "../../笔记库/项目" "./docs"3. 移动源文件会让链接失效
软链接只认"死路径"。如果你把 Obsidian 里的笔记文件夹改名或移动位置,软链接就断了。
断了怎么办?删掉重建:
rm docs # 删除旧链接
ln -s "新路径" "docs" # 创建新链接✨ 三个爽感时刻
用上这套方案后,你会体验到这三个"爽感":
1️⃣ 爽感1:所有 AI 共享一个大脑
| Before 😩 | After 😎 | |-----------|----------| | Cursor 里解释过的,Claude Code 不知道 | Obsidian 一改,所有 AI 立刻看到 | | 每个工具都要重新介绍项目 | 新工具打开就懂你的项目 | | 你是 AI 之间的传话筒 | 你是项目的指挥官 |
2️⃣ 爽感2:AI 写代码时,你在旁边写需求
| Before 😩 | After 😎 | |-----------|----------| | 等 AI 写完,再补文档 | AI 写代码,你同步整理思路 | | 做完就忘了为什么这样做 | 边做边记录,决策有据可查 | | 文档永远欠着 | 开发完,文档也差不多了 |
3️⃣ 爽感3:对话可以清,记忆永远在
| Before 😩 | After 😎 | |-----------|----------| | "之前聊过但我忘了在哪" | 打开 docs/ 就找到 | | 对话太长被截断 | 关键信息存在文件里 | | 换电脑/换号就没了 | Git 同步,哪里都能用 |
🎯 进阶:配置 CLAUDE.md
如果你用 Claude Code,还可以在项目根目录创建一个 CLAUDE.md 文件。
这个文件相当于给 AI 的"项目说明书",Claude Code 每次开始工作都会先读它。
示例内容:
# 项目说明
这是一个电商小程序项目,包含商品展示和订单管理。
## 技术栈
- Next.js 14
- TypeScript
- Tailwind CSS
## 项目文档
查看 docs/ 文件夹获取完整项目背景和需求文档。📝 总结
- 核心理念:对话不是记忆载体,文件才是
- 核心方案:用
ln -s创建软链接,把笔记映射到代码项目 - 核心命令:
ln -s "笔记路径" "项目路径/docs" - 别忘了:在
.gitignore里加上docs/