Appearance
Claude Code会话管理:基于Obsidian的归档机制实现指南
和Claude Code聊两小时搞清楚一个问题,关掉窗口,第二天再打开,一切归零。这篇文章讲怎么解决:几个本地脚本,把对话原文归档到Obsidian,双向可同步。
失忆到底是怎么回事
「没记忆」拆开其实是四件具体的事:
| 问题 | 说明 |
|---|---|
| 没有会话入口 | 关掉窗口再打开,侧边栏不列历史会话 |
| 没有resume命令 | 所有斜杠命令在桌面端不可用 |
| md档案不完整 | AI总结的md是二次加工,关键细节丢掉 |
| jsonl文件打不开 | 对话原文在硬盘上,但这是机器格式 |
问题本质:数据还在,但既没入口又不可读。
CLI的resume为什么不够
| 痛点 | 说明 |
|---|---|
| 只能恢复单个会话 | 不能跨会话综合 |
| 整会话全量载入 | token消耗没得挑 |
| 只在CLI可用 | PM、内容工作者不常驻终端 |
为什么不选claude-mem
| 隐形成本 | 说明 |
|---|---|
| 环境依赖重 | Bun、uv、Chroma三件套+后台worker |
| 中文embedding不确定 | 项目方没给数据 |
| 每次调AI做摘要 | 长期基线花销 |
| 只抓工具调用 | 纯对话内容不落盘 |
| OAuth用户无独立API key | 跑不了摘要流程 |
方案:三层架构
把jsonl自动转成可读markdown,扔到Obsidian里,用Obsidian的全文搜索和反向链接做检索。
不装向量库,不跑后台进程,不调AI做摘要。
索引层 MEMORY.md ~200行,永远自动加载
↑
策划层 memory/*.md 精炼的反馈/偏好/项目结论
↑
原始层 sessions-md/ 完整对话归档,按需取三层不是冗余,是递进:
- 原始层管「全」
- 策划层管「精」
- 索引层管「轻」
AI每次启动只读索引层,像翻目录页。需要深入才读策划层。只有精确回溯才去原始层翻。
实现三件事
1. jsonl转md
archive-convert.js:读jsonl每一行,按对话格式写成md,工具调用这种中间过程默认过滤掉。生成的md头部带YAML元数据:
yaml
---
session: f75d9cf5-cc4e-4ca8-a5ad-03a6d19b5454
title: "会话归档系统建设"
date: 2026-04-17
folder: claude-system
---2. 双向同步
每个归档md头部都有一个session_id作为唯一绑定。
archive-sync.js扫所有md的frontmatter,反向更新索引。默认已有md只生成不覆盖——Obsidian里的手动编辑不会被下次同步抹掉。
3. 预分类
最省token的设计:
原来做法:明天打开新会话,AI要先读历史jsonl推断分类——花明天的token,推断还不准。
优化后:今天聊完说「归档」的那一刻,当前AI直接把分类写进本地文件。明天的AI看到已分类,直接生成md完事,零推断成本。
今天多一条bash命令(几乎不花token),换明天省几千token的推断。
桌面端:自然语言触发
桌面端不能跑斜杠命令、不能配hook、不能进shell。解法是用AI的Bash工具作为中间层。
| 触发词 | 动作 |
|---|---|
| 「归档」「再见」「下次继续」 | AI预写当前会话分类 |
| 「上次聊X的会话」 | AI读摘要文件,列出候选会话 |
| 「合并A B C会话」 | AI按时间线合并,原文软删除 |
| 「删掉XX对话」 | md + jsonl一起移到trash |
| 「重建归档」 | 强制重生成所有md |
| 下次启动时 | 自动扫未归档 + 反向同步 |
日常只需要记住三条:聊完说「归档」,要彻底删说「删掉XX」,想重建全部说「重建归档」。
按需读取四层
| 层级 | Token消耗 | 动作 |
|---|---|---|
| L0 | 0 | 直接打开Obsidian自己翻 |
| L1 | ~5K | AI读项目摘要文件,列候选会话 |
| L2 | ~2K | AI读某会话头部元数据确认 |
| L3 | ~1-2K | AI用Grep在原文里搜关键词 |
极限用法:在Obsidian里找到那段话,复制过来贴给AI——消耗最低,精准度最高。
五条不妥协原则
| 原则 | 说明 |
|---|---|
| 原文永远不碰 | 所有脚本只写md,不改jsonl |
| 索引可以重建 | manifest丢了扫一遍md就能重建 |
| 删除都是软的 | 移到trash目录,永不自动清理 |
| 分类由当前AI写 | 不等下次AI推断 |
| 系统不跑时不花token | 每一步都可见、可预测 |
总结
| 要点 | 说明 |
|---|---|
| 核心方案 | jsonl转md存Obsidian |
| 三层架构 | 索引→策划→原始 |
| 自然触发 | 桌面端用Bash工具中间层 |
| 按需读取 | L0-L3四层token分级 |
真正的记忆,不是替你记住,是让你能自己找回。
关键词:Claude Code会话管理, Obsidian归档, jsonl转md, 会话记忆, 桌面端方案, 三层架构
