SuperAPI AI 工具集

claude-code-memory-obsidian-graphify

办公与效率

查看项目

更新于 10-16 10:36

技能介绍

用途

本技能用于为 Claude Code 搭建持久化记忆与知识图谱系统,借助 Obsidian Zettelkasten 笔记和 Graphify 减少 token 消耗。资料称可减少最多 71.5 倍 token,实现跨会话保留上下文、避免重复读取代码库、保存对话历史。

解决的核心问题

  1. 会话失忆:Claude Code 在会话之间忘记一切,用户需要反复解释技术栈、决策与进度。
  2. 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% 上下文保留。关于对话保存部分的描述在资料中不完整,暂未提供完整细节。