用 Git 管理 AI Memory 的方案
适用工具:Claude Code、Kimi Code CLI、DSH(DeepSeek Harness)。 核心思路:memory 就是 markdown 文件,git 仓库是唯一事实来源,通过软链/导入机制分发到各工具的约定位置。
三层划分
层级 |
作用域 |
放什么 |
在 git 仓里的位置 |
|---|---|---|---|
全局(用户级) |
所有项目 |
个人偏好、沟通风格、通用工作流(如"回复用中文"、"提交信息格式") |
|
工作区(项目级) |
单个项目 |
项目架构、构建/测试命令、代码规范、踩坑记录 |
|
个人整理(知识库) |
跨项目沉淀 |
从会话中提炼的文档、笔记、方案(如本仓库的 |
整个仓库本身就是 |
优先级共识:工作区 > 全局(项目级覆盖个人级),个人整理层不自动注入,由 AI 按需检索(Grep/Read)或人工引用。
各工具的 memory 机制与利弊
Claude Code(CLAUDE.md 体系)
四级层级,启动时自动加载,层级高的先加载:
级别 |
位置 |
|---|---|
企业策略 |
Linux: |
项目(团队共享) |
|
用户(全局) |
|
项目(个人本地) |
|
关键特性:
@path导入:CLAUDE.md 里写@~/memory/global.md即可引入外部文件,可递归,最深 5 层。这是接 git 仓的关键机制。向上递归查找:在子目录启动时会一路向上读各级 CLAUDE.md,monorepo 友好。
#快捷追加:输入以#开头,直接选择写入哪个 memory 文件。/memory编辑、/init生成项目初版。
利:层级最完整、import 机制让"git 仓集中管理 + 各项目按需引用"最自然;# 追加极大降低沉淀成本。
弊:CLAUDE.md 是私有文件名,与跨工具通用的 AGENTS.md 标准不兼容(需软链变通);import 最多 5 层,深层知识库引用要控制深度。
Kimi Code CLI(AGENTS.md 体系)
两级,均为 AGENTS.md:
级别 |
位置 |
|---|---|
全局(Kimi 专用) |
|
全局(跨工具通用) |
|
工作区 |
项目根的 |
利:直接用 AGENTS.md 开放标准,与 Codex、DSH 等工具天然兼容,一份文件多工具通吃;~/.agents/AGENTS.md 是所有支持该标准的工具共享的全局层。
弊:没有 # 快捷追加、/memory 这类内置 memory 管理命令,沉淀要靠口头指令("把这个写进 AGENTS.md");没有 @import 语法,引用外部文件只能靠会话中用 @路径 手动附带。
DSH / DeepSeek Harness
工作区:以运行命令时所在目录为 workspace 根,加载适用的
AGENTS.md或CLAUDE.md,渲染预算上限 65,536 字节(64KB)——超长会被截断,这是三者中唯一有硬性大小限制的。全局/机器级:没有独立的全局 memory 文件,全局偏好写在 home 级配置
$DSH_HOME/cordis.patch.yml(如personaPrefix字段,每轮注入),对所有 profile(web/headless)生效。插件生态:有大量第三方 memory 插件(长期记忆库、自动沉淀、跨会话 recall 等),如
dsh-plugin-memory、dsh-memory-eternal,可dsh plugin --profile web add <包>安装。
利:同时认 AGENTS.md 和 CLAUDE.md,接入成本低;插件生态提供超出"静态文件"的动态记忆(自动沉淀、检索召回)。
弊:64KB 渲染预算要求 memory 文件保持精简;全局层是 YAML 配置不是 markdown,不适合放大段知识,且在家目录配置里不便随 git 仓同步(只能软链整个 patch 文件);插件质量参差,内网环境装不了插件时只剩静态文件一条路。
推荐落地方案
目录结构(一个 git 仓管全部)
memory-repo/
├── global/
│ └── AGENTS.md # 全局通用偏好(三工具共享的事实来源)
├── projects/
│ ├── linux-reference.md # 各项目的 curated memory
│ └── some-project.md
├── kb/ # 个人整理层:沉淀的知识文档(本仓库的 ai/、article/ 即此角色)
└── sync.sh # 分发脚本(软链到各工具约定位置)
分发方式
# 全局层:一份文件,三处软链
ln -sf ~/memory-repo/global/AGENTS.md ~/.agents/AGENTS.md # Kimi 等通用标准
ln -sf ~/memory-repo/global/AGENTS.md ~/.kimi-code/AGENTS.md # Kimi 专用全局(可选,与上行二选一)
ln -sf ~/memory-repo/global/AGENTS.md ~/.claude/CLAUDE.md # Claude 全局
# 工作区层:在每个项目根目录
ln -sf ~/memory-repo/projects/some-project.md /path/to/project/AGENTS.md
cd /path/to/project && ln -sf AGENTS.md CLAUDE.md # Claude 兼容(Kimi/DSH 直接认 AGENTS.md)
DSH 的全局偏好(personaPrefix)内容少,直接在 ~/.dsh/cordis.patch.yml 里写一句"先读 ~/memory-repo/global/AGENTS.md",让它每轮从 git 仓取最新内容,避免维护两份。
日常工作流(AI + git 闭环)
沉淀:会话中产生值得记住的内容时,直接对 AI 说"把这个写进 memory"——Claude 用
#前缀,Kimi/DSH 口头指令即可。写完文件就在 git 仓里(软链),git diff一目了然。审阅:memory 是 AI 的"自我暗示",写错了会反复带偏。每次提交前人工过一遍 diff,宁缺毋滥。
同步:
git commit && git push,其他机器git pull即生效(软链指向仓内文件,无需再分发)。整理:定期让 AI 把
projects/*.md中沉淀的通用经验提炼到kb/(个人整理层),保持 memory 文件精简——这对 DSH 的 64KB 预算尤其重要。
注意事项
不要入库密钥/内网地址:memory 文件会被注入每次会话并可能随会话导出,敏感信息一律不放。
控制体积:DSH 64KB 硬上限、Claude import 5 层深度,都指向同一原则——memory 文件放"指针和规则",细节放知识库文档,用路径引用。
AGENTS.md 是最大公约数:三工具都认它(Claude 靠软链
CLAUDE.md -> AGENTS.md),新内容默认写 AGENTS.md 体系。个人整理层不进上下文:知识库靠 AI 按需 Grep,不要全部塞进 memory 文件,否则挤占对话上下文、拖慢每次请求。