写个 Hook 截胡大模型:将零散的 AI 对话重塑为本地知识资产 文章

少数派 Matrix2026-05-16BLOGzh作者: 小胡小胡0009

摘要

一我同时开着好几个 Claude Code 的会话窗口。一个在推敲怎么为我独立开发的 App 接入用户反馈功能,一个在帮我创建 logging-session skill,还有一个,正在基于 Obsidian 仓库中的工作资料,帮我生成给领导的演讲稿。每个窗口都聊了多轮,调整代码、优化流程、纠正语感。人其实并不是擅长多线程处理的生物,但在 AI 时代,为了不在等待模型「吐字」的间隙去无脑刷微博,我被迫习惯了同时开几个窗口「压榨」时间。但随之而来的问题,是我对于过程的记忆会变得相当模糊。也许最终我会实现这个反馈功能,有一个好用的 skill,拿出一份能交差的演讲稿,但过程中我和 AI 对于实现方案的探讨、权衡取舍、最终的妥协,都会在关闭终端的那一刻抛诸脑后。另一方面,我有定期复盘的习惯。当前复盘的上下文,来自我的 dailylog 文档、番茄钟数据以及 GitHub 上的 commit 记录。基于这些信息,我能够让 AI 帮我总结出每周的成果,但仍然缺乏对于实现细节的分析。在 AI 工具中产生的对话,是当下最真实的工作快照,但很少有人会去翻看他们,并且包含多轮交互的对话,期间夹杂着大量执行记录,并不适宜阅读。面对这种算力与心力的双重浪费,我决定写一个工具。它必须能在每次对话结束时,自动把「问了什么、想了什么、结果是什么」无感提取并保存下来。二保存会话的方式得满足两个条件。第一,支持记录多个项目的会话,独立开发、Obsidian 仓库或是自建的 skill,这些不同路径的项目会话应当能统一保存并加以区分;第二,得方便检索,而不是在一堆文本文件里 grep。我一开始也想过存 Markdown,每个项目一个文件夹,每次对话写一个文件。但试了试发现不行,一旦想跨项目做聚合,比如「过去 7 天我做了什么」,就得写脚本遍历所有文件夹、解析每个文件的前置元数据、再拼接在一起。太折腾了。也考虑过 JSON,一个项目一个大数组,往里追加就行。但 JSON 文件读多了要全量加载到内存,而且查「项目 A 最近 7 天的 bugfix 有几个」这种条件查询,还是得写代码遍历。最终选了 SQLite。一个数据库文件,一张表,所有项目的会话记录都在里面。想查「这周项目 A 做了什么」,一条 SQL 搞定。而且 SQLite 是单文件数据库,放在 Obsidian 的 vault 里,iCloud

摘要可能不完整,可查看原文