claude-code-memory-setup源码解读:session_autosave.py零LLM调用的SessionEnd Hook实现原理
【免费下载链接】claude-code-memory-setupUp to 71.5x fewer tokens per session on Claude Code with Obsidian Graphify. Persistent memory, codebase knowledge graphs, and chat import pipeline. PT-BR included.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-memory-setup点击查看免费下载claude-code-memory-setup是一个把 Claude Code 与 Obsidian、Graphify 结合的开源项目用持久记忆和代码知识图谱为 Claude Code 提供第二大脑。它的scripts/session_autosave.py通过注册SessionEnd Hook在会话结束时自动把关键信息写入 Obsidian 笔记——全程零 LLM 调用、毫秒级完成、不花一分钱 token。本文带你逐段解读这个 Hook 的实现原理。为什么需要零 LLM 调用的会话自动保存 Hook先理解它要解决的痛点问题表现session_autosave.py 的对策跨会话失忆每次新会话都要重新解释项目背景会话结束时自动落盘日志下次/resume可恢复/save靠自觉忘了执行/save整场会话就消失Hook 作为安全网兜底记录每个会话LLM 调用成本高用 LLM 总结会话要消耗 token纯 JSONL 解析零 token、无需 API key项目 README.md 中将其定位为Auto-Save Hook (Safety Net)——它不是/save的替代品而是补漏机制/save产出的是包含决策和待办的富日志而自动日志保证被遗忘的会话也留下痕迹。 核心思想能机械解析的绝不调 LLM。这是整个脚本最值得关注的设计取向。项目全景session_autosave.py 在记忆架构中的位置claude-code-memory-setup由四层组成session_autosave.py负责其中连续性的最后一道防线层级工具解决的问题项目记忆Obsidian Zettelkasten 库跨会话失忆代码地图Graphify 知识图谱重复读取源码浪费 token对话历史scripts/claude_to_obsidian.py 导入管线聊天记录中的洞察丢失自动兜底scripts/session_autosave.py忘记/save时会话消失文件资料索引方便对照阅读源码Hook 主脚本scripts/session_autosave.py聊天导入脚本scripts/claude_to_obsidian.py、scripts/sync_claude_obsidian.shHook 使用文档README.md Part 5 章节版本记录CHANGELOG.md1.0.0 版本新增该 Hook第一步SessionEnd Hook 如何接收会话负载当 Claude Code 会话结束退出、/clear、登出时会触发SessionEnd事件并把一段 JSON 通过stdin传给 Hook 脚本。文件头注释 scripts/session_autosave.py 明确列出了负载结构session_id会话唯一标识transcript_path本次会话的 JSONL 转录文件路径关键输入cwd会话所在的工作目录用于推导项目名hook_event_name固定为SessionEndreason结束原因exit/clear/logout入口函数main()L211-L221的流程非常克制json.load(sys.stdin)读取负载解析失败只写日志、直接return校验transcript_path存在找不到转录文件就跳过调用parse_transcript提取事实再走过滤与写盘流程注意一个细节cwd缺失时会回退到os.getcwd()L219保证极端情况下项目名仍有来源。第二步从 JSONL 转录中机械提取会话事实parse_transcript()L59-L136是零 LLM 调用的核心——逐行读取 JSONL 转录把一场会话压缩为 6 个字段first_prompt 用户消息数 触碰的文件 执行的命令 起始时间 结束时间防御式解析兼容不同版本函数注释直言格式可能随 Claude Code 版本变化因此每次访问都加守卫。具体做法包括单行json.loads失败即continue不因坏行中断L76-L79role兼容两种来源message.role或顶层typeL88文件以errorsreplace打开编码异常也不会崩L71三个关键提取逻辑① 统计真实用户消息含去噪content可能是字符串或 block 列表脚本只取type text的块并且用text.startswith()过滤掉伪装成用户轮次的工具结果tool result 以开头L92-L106。第一条真实用户消息即被记录为first_prompt作为会话目标。② 追踪被编辑的文件扫描 assistant 消息中的tool_use块只对编辑类工具计数Edit、Write、MultiEdit、NotebookEdit及str_replace系列L116-L121。用seen_files集合去重文件路径优先取file_path、回退path字段。③ 采样执行的命令仅捕获Bash类工具兼容bash、bash_tool命名且只保留多行命令的第一行并截断到 120 字符L123-L127——目的是在日志里够用即可避免笔记被长命令刷屏。第三步零 token 成本生成 Obsidian 笔记并智能路由路由规则日志该写进哪个目录resolve_logs_dir()L148-L154用cwd的目录名作为项目名规则很简洁条件日志写入位置vault/project/目录存在vault/project/logs/否则回退到vault/logs/仓库目录名与 vault 文件夹名不一致时例如 monorepo官方建议建一个软链接解决见 README.md How routing works 一节。笔记长什么样build_note()L157-L208输出带标准 YAML frontmatter 的 Markdown 笔记--- title: Auto session log — 项目名 — 日期 时间 tags: - session-log - auto-log ← 关键标记用于 Obsidian 过滤 - 项目名 status: imported session_id: xxx end_reason: exit ---正文包含四个板块目标首条 prompt截断 300 字符、触碰的文件最多 20 条、执行命令采样最多 10 条、统计信息轮数 / 文件数 / 起止时间。这些最多 N 条的约束来自顶部配置常量 L33-L44MAX_FILES 20、MAX_COMMANDS 10、FIRST_PROMPT_MAX_CHARS 300——从源头控制笔记体积。防冲突的文件命名写入时若两个会话在同一分钟内结束脚本会自动追加-1、-2后缀避免覆盖L247-L254。四大设计原则为什么这个 Hook 从不破坏你的会话对照 README.md Part 5 的设计说明源码里一一对应设计原则源码体现⚡零 LLM 调用全程只有json、os、pathlib、datetime标准库毫秒级运行️安全网而非替代笔记末尾提示要富日志请运行/saveL206-L207静默失败log()函数自身也包了try/except passL49-L56main()每个可能出错的环节都只写~/scripts/autosave.log后returnClaude Code 完全无感知噪声过滤用户消息少于MIN_USER_MESSAGES 2的开了就关会话直接跳过L233-L235静默失败尤其值得注意Hook 运行在用户主流程上任何异常都不能让会话崩掉。所以从读 stdin、解析转录到写文件每一步都是出错→记日志→安全退出。三步实操安装在 settings.json 中注册 Hook第 1 步复制脚本mkdir -p ~/scripts # 将仓库中的 scripts/session_autosave.py 复制到 ~/scripts/ chmod x ~/scripts/session_autosave.py第 2 步在~/.claude/settings.json注册若文件已存在合并hooks键即可不要删除其他配置{ hooks: { SessionEnd: [ { hooks: [ { type: command, command: VAULT_DIR$HOME/vault python3 $HOME/scripts/session_autosave.py } ] } ] } }VAULT_DIR环境变量指向你的 Obsidian 库路径脚本默认值见 L33。第 3 步验证是否生效随便开一个项目与 Claude Code 交互 2~3 轮含一次文件编辑后退出然后检查tail -5 ~/scripts/autosave.log看到OK: wrote /path/to/vault/.../logs/YYYY-MM-DD-HHMM-auto-session.md即安装成功。之后在 Obsidian 中用tag:auto-log只看自动日志-tag:auto-log则隐藏它们。小结这个 Hook 教会我们的工程模式回看 scripts/session_autosave.py 全文仅约 260 行却浓缩了几个可复用的模式能用确定性解析解决就不调用模型——零 token、零延迟、零依赖防御式解析——对上游数据格式JSONL 转录保持最大兼容静默失败——旁路组件绝不污染主流程配置常量化——截断阈值、条数上限集中在文件顶部易于调参这正是claude-code-memory-setup整体哲学的缩影Obsidian 记住决定过什么Graphify 记住代码长什么样而session_autosave.py用最小的成本保证没有任何一场会话无声无息地消失。赞分享【免费下载链接】claude-code-memory-setupUp to 71.5x fewer tokens per session on Claude Code with Obsidian Graphify. Persistent memory, codebase knowledge graphs, and chat import pipeline. PT-BR included.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-memory-setup点击查看免费下载相关推荐新范式源码解读source-code-hunterDubbo异步调用实现原理新范式源码解读source code hunterDubbo异步调用实现原理 引言异步调用的时代价值 在微服务架构盛行的今天服务间的远程调用RPC性能文档教程技术博客知识库LLOneBot源码架构解析从Hook机制到API调用的实现原理LLOneBot源码架构解析从Hook机制到API调用的实现原理 LLOneBot是一款基于NTQQ的OneBot11协议实现通过巧妙的Hook机制和模块化后端即时通讯claude-code-memory-setup对话管线教程把Claude Code与Web聊天记录自动归档进Obsidianclaude code memory setup对话管线教程把Claude Code与Web聊天记录自动归档进Obsidian claude code mem上一篇10款提升编码效率的Hyper终端插件推荐从新手到高手的必备工具集下一篇探索创新动画工具UniGif - 动态图像生成器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Fider 部署实战:Docker 三步搭好功能请求与反馈投票系统

Fider 部署实战:Docker 三步搭好功能请求与反馈投票系统

Fider 部署实战:Docker 三步搭好功能请求与反馈投票系统 【免费下载链接】fider Open platform to collect and prioritize feedback 项目地址: https://gitcode.com/GitHub_Trending/fi/fider 用户的功能请求散落在工单、应用商店评论和微信群里&#xff0c…

2026/10/17 1:38:25 阅读更多 →
生产级分页工具类设计:page/size/countRows三参数深度管控

生产级分页工具类设计:page/size/countRows三参数深度管控

1. 项目概述:一个真正能落地的分页工具类,不是“Hello World”式Demo“自定义分页工具类:page、size、countRows”——这行标题看起来平平无奇,甚至有点老派。但如果你在一线写过至少三个真实业务系统,就会明白&#x…

2026/10/18 3:54:57 阅读更多 →
Qwen3 小模型 NPU 部署完全指南:如何在端侧设备上快速跑通推理

Qwen3 小模型 NPU 部署完全指南:如何在端侧设备上快速跑通推理

大模型人工智能基础模型 【免费下载链接】Qwen3-1.7B_rai_1.8.0_medusa_1.0_npu 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen3-1.7B_rai_1.8.0_medusa_1.0_npu 点击查看 免费下载 想在手机、平板这类端侧设备上本地运行大模型?Qwen3-1.7B_ra…

2026/10/17 1:38:25 阅读更多 →

最新新闻

SpringBoot3断代升级实战:从零搭建到部署的完整指南

SpringBoot3断代升级实战:从零搭建到部署的完整指南

前两周帮某电商团队做技术迁移评审,对方项目经理一上来就问:能不能在 SpringBoot2.7 基础上直接改版本号升到 3?我当时就告诉他:这可不是改一行版本号的事。编译直接红一片,javax消失,Tomcat行为变了&#…

2026/10/18 3:54:22 阅读更多 →
Widget是配置不是UI:Flutter三棵树与状态管理核心解析

Widget是配置不是UI:Flutter三棵树与状态管理核心解析

前两周帮同事排查一个非常诡异的问题:商品列表滚动到某个位置后界面卡成PPT,CPU直接飙满。代码翻了三轮,最终定位到的根因,居然不在列表渲染逻辑,而在于有人把一个封装的 Widget 实例存在字段里,每次 build…

2026/10/18 3:54:22 阅读更多 →
OpenHarmony上Flutter三方库适配实战:以carousel_slider为例

OpenHarmony上Flutter三方库适配实战:以carousel_slider为例

刚开始做 OpenHarmony 上的 Flutter 适配时,不少人一脸懵——明明 Flutter 在三方库生态上已经非常成熟,随便pub add一个库就能跑,怎么一到 OpenHarmony 上就不是这么回事了?实际上,OpenHarmony 的 Flutter 引擎适配层…

2026/10/18 3:54:22 阅读更多 →
用户登录案例与随机验证码结合:从表单校验到会话管理

用户登录案例与随机验证码结合:从表单校验到会话管理

不少刚学完 Web 基础的朋友,都会拿“用户登录”当第一个综合项目来做。但很多人做到最后发现,自己写的登录功能除了能查一下数据库、比对一下密码,根本谈不上“系统”。原因很简单:真实场景里的登录,永远不会只靠“用户…

2026/10/18 3:54:22 阅读更多 →
PHP+MySQL+百度地图全链路打点方案:从数据库到前端渲染

PHP+MySQL+百度地图全链路打点方案:从数据库到前端渲染

简介:这是一份面向Web开发初学者与地理信息系统(GIS)入门者的PHPMySQLHTML百度地图打点实战示例,解决动态数据驱动地图标记的核心问题,适用于LBS位置服务、门店展示、轨迹可视化等常见业务场景。资源共4个精简文件&…

2026/10/18 3:54:22 阅读更多 →
Delphi 11下EhLib 10.0.031安装与DBGridEh实战指南

Delphi 11下EhLib 10.0.031安装与DBGridEh实战指南

简介:EhLib 10.0.031是一套面向Delphi 11开发者的功能型组件库,核心覆盖图形图像处理、多类数据库连接、报表设计、图表分析与界面增强等常见开发场景。该版本已通过Delphi 11.1.5环境安装测试,适合中高级Delphi工程师和需要构建数据密集型桌…

2026/10/18 3:53:22 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →