用途
本技能用于为 Claude Code 搭建持久化记忆与知识图谱系统,借助 Obsidian Zettelkasten 笔记和 Graphify 减少 token 消耗。资料称可减少最多 71.5 倍 token,实现跨会话保留上下文、避免重复读取代码库、保存对话历史。
解决的核心问题
- 会话失忆:Claude Code 在会话之间忘记一切,用户需要反复解释技术栈、决策与进度。
- token 浪费:每次会话仅为定位上下文就重新读取约 40 个文件,消耗约 20k token。
三层解决方案
- Obsidian Vault:集中式 Zettelkasten,包含原子笔记、wikilinks 与 YAML frontmatter,作为持久项目记忆。
- Graphify:基于 AST 的代码库知识图谱,用高效查询替代文件重读。
- 聊天导入管道:Python 脚本加 cron 任务,把 Claude 对话洞察保存为 vault 笔记。
前提条件
需要安装 graphifyy 与 claude-conversation-extractor,并下载 Obsidian(免费,网址 https://obsidian.md)。
pip install graphifyy
pip install claude-conversation-extractor
安装与设置
1. 安装 Graphify
pip install graphifyy
graphify install --platform claude
ls ~/.claude/skills/graphify/SKILL.md
2. 配置 API 密钥
export ANTHROPIC_API_KEY="sk-ant-your-key-here"
# 或使用 Moonshot(Kimi)
export MOONSHOT_API_KEY="your-moonshot-key"
source ~/.bashrc
3. 创建 Obsidian Vault 结构
mkdir -p ~/vault/{permanent,inbox,fleeting,templates,logs,references}
mkdir -p ~/vault/chats/{code,web}
mkdir -p ~/vault/graphify
PROJECT_NAME="my-project"
mkdir -p ~/vault/$PROJECT_NAME/{architecture,pipeline,data,features,logs}
4. 创建 CLAUDE.md 配置
在 ~/vault/CLAUDE.md 中定义 Zettelkasten 规则(使用 wikilinks、强制 YAML frontmatter、kebab-case 文件名、每条永久笔记一个概念、每条笔记至少 2 个 wikilinks)、标准 frontmatter 格式,以及 /resume 与 /save 两个会话命令。
5. 设置聊天导入管道
创建 ~/scripts/claude_to_obsidian.py,脚本功能包括:按关键词映射标签、查找已有 vault 笔记并插入 wikilinks、从标题和文件名提取标题与日期、生成 frontmatter,处理 code 与 web 两类导出。之后执行:
chmod +x ~/scripts/claude_to_obsidian.py
6. 创建自动化脚本
创建 ~/scripts/sync_claude_obsidian.sh,先创建导出目录,调用 claude-extract 导出 Claude Code 聊天,再运行 Python 脚本导入 vault,并记录日志。随后设置权限并计划每日 22:00 执行:
chmod +x ~/scripts/sync_claude_obsidian.sh
(crontab -l 2>/dev/null; echo "0 22 * * * $HOME/scripts/sync_claude_obsidian.sh") | crontab -
使用 Graphify
在 Claude Code 内生成知识图谱:
/graphify . --obsidian --obsidian-dir ~/vault/graphify/my-project
在终端以 AST-only 模式(0 token):
cd /path/to/project
graphify extract . --out ./graphify-out --no-cluster
语义提取(使用 LLM):
graphify extract . --out ./graphify-out --deep
graphify extract . --out ./graphify-out --deep --model claude-3-5-sonnet-20241022
常用命令包括 extract、query、--obsidian、--no-cluster、--deep、--model 等。资料称通过 tree-sitter 支持 Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、Ruby、C#、Kotlin、Scala、PHP、Swift、Lua、Zig 等语言。图谱输出包含 graph.json、nodes.json、edges.json,若启用 --obsidian 还会生成 Obsidian 格式笔记目录。
工作流模式
- 开始会话:运行 /resume,读取最近 3 条会话日志与 architecture/decisions.md,总结当前状态与待办。
- 结束会话:运行 /save,创建会话日志、记录完成工作与决策、添加 wikilinks、并在仓库中执行 git commit 与 push。
- 创建项目笔记、查询知识图谱、在重大代码变更后重新运行图谱更新。
Zettelkasten 最佳实践
包括:原子笔记(一条笔记一个概念,示例为 JWT Token Refresh Strategy);密集链接(每条永久笔记至少 2 个 wikilinks);标准 frontmatter 字段(title、tags、created、updated、status、type)。
故障排查
资料提供多项排查方法:Graphify 技能未找到时重装并检查 SKILL.md;API 密钥问题检查环境变量并用 curl 测试;聊天导入失败时检查提取器、权限、手动运行与日志;wikilinks 无法解析时检查 kebab-case 文件名、frontmatter 有效性与相对路径;图谱查询为空时检查生成文件并加 --verbose 重试;token 仍高时核对清单;cron 未运行时检查 cron 状态、crontab 条目与系统日志。
配置示例
包含多项目 vault 目录结构、在 Python 脚本中自定义 KEYWORD_TAG_MAP 标签映射,以及 Graphify 模型选择(如 claude-3-haiku-20240307、claude-3-opus-20240229、claude-3-5-sonnet-20241022)。
预期结果
资料称:初始会话约 20k token 用于代码库定位;使用 Graphify + Obsidian 后每会话约 280 token;减少 71.5 倍;跨会话 100% 上下文保留。关于对话保存部分的描述在资料中不完整,暂未提供完整细节。