>wangyr@context: ~$

作品八

个人知识库系统

2026-04 起 · 手动入库在用,定时入库 2026-09-08 停 · 一千零四十五页知识页

我读过的东西,下次提问时能直接用上。

AI 把每篇读过的文章提炼成概念、实体、综合三类页,和旧页连好;我问一个问题,AI 先读总目录再读页,好的答案归档回来;读过的东西越积越有用,不是越积越找不到。

编译一次、一直维护;问时先读目录再读页,好答案归档回来 存入知识库 向量检索的三 种索引方式 已入库 日志 +1 总目录 嵌入向量 检索增强生成 相似度 索引结构 向量索引 近似最近邻 FAISS 索引选型 先读总目录,再读页 > 向量索引怎么选? 读 总目录 向量索引 近似最近邻 百万条以内先用精确索引,再换近似。 好答案归档成新页,回到总目录 文章从个人信息获取系统来 知识页是个人 AI 操作系统的记忆层 验收按 Praxis 走
上半是编译:我拨一下开关,AI 把文章变成页,新页接进总目录、连上旧页,日志多一行,原文盖章。下半是回路:我提问,AI 先读总目录再读页,答案里好的一句归档成新页,回到总目录。自动循环。右边一格是它接上的三处,点标签能过去。

它帮我做的,是收藏做不到的事:读过的东西被再次用到。

  • 我剪藏的文章存在文件夹里,只在我恰好想起它的时候才被用到。
  • 把文章直接交给 AI 检索,AI 每次提问都从原文重新找一遍,找到的是片段,问过的问题不留下任何积累。
  • 这个系统把读过的东西编译一次,然后一直维护:一篇文章入库时,AI 已经把它和旧页连好;我提问时,AI 读的是连好的页,不是原文。
  • 分工是:我判断什么值得进来,AI 做提炼、链接、归档、检查的全部维护工作。人自己维护一套知识页会放弃,原因不是读和想,是维护:改一处要同步改交叉引用,新资料推翻旧说法时要标出来,页面多了要保持一致。这类工作 AI 不会漏做,一次能改十几页。

它是什么:一个由 AI 写、我读的知识页文件夹,一套让 AI 维护它的流程,一套 harness。

  • 知识页是 AI 从我读过的文章、书的章节、自己写的文档里提炼出的页面,每页讲一个概念、一个实体或一个结论,页与页之间用双向链接连着。「双向链接」指一页引用另一页时,被引用的页也登记这条引用。
  • 流程分四步:我定什么进来;AI 读原文提炼成页;AI 把新页和旧页、总目录、日志连起来;AI 检查。每一步在操作日志里留一条能核对的记录。
  • 流程跑在 Claude Code 上,结果在 Obsidian 里看。
  • 这个文件夹是作品一七个容器里的知识编译层,那一页只提了它的名字,这一页讲它怎么运转。
  • 一套 harness:入口、只读、模板、写序、核验、限速这类不产出内容、只约束产出的工程,八项,每项约束上面某一层。

为什么可信:写的不自己宣布合格;无人值守时限速,跑坏了能查到是哪一步。

  • 写知识页的 AI 不做核验。核验由另一个 AI 做,按入库前写好的验收标准逐条判过或不过,全过才算入库。
  • 无人值守时每批开一个独立会话,失败的批留在队列里,连续失败三次就等一小时再试;每批的结果写进运行日志,跑坏了能从日志里查出是哪一批、哪一步。
  • 原文正文只读。AI 只往知识页里写,在原文里只改文件头的标记,不碰正文。
  • 这套做法我 2025 年 10 月起已经在做:一个技能读我给它的文章或论文,写出分析,再把里面的概念、人物、技术各提炼成一页,页与页之间用双向链接连起来;2026 年 1 月收件箱文章头部加上「存入知识库」开关,什么留下由我拨一下决定。2026 年 4 月 4 日 Andrej Karpathy 发出 llm-wiki 构想:让 AI 增量维护一个持久的、互相链接的知识库,而不是每次提问时从原文检索;与我在做的不谋而合。次日我照它补齐三样:原始资料、知识页、写给 AI 的规则这三层的划分,入库、查询、检查三个动作,总目录加操作日志。门槛怎么设、页怎么分、定时怎么跑、失败怎么处理、怎么检查,是我在自己的资料上一步步试出来的,这一页讲的是这些。

它做到五件事。

  • 什么进来由我定,动作只有一下。本页把这个动作叫「举手」:收件箱里的文章拨一个开关,存量文件在文件头写一行。见举手一节。
  • 一篇原文变成零到五页,页有三种类型、固定的段落。见提炼一节。
  • 新页和旧页连起来,总目录、操作日志、来源、盖章四样记录每次同步更新。「盖章」指入库完成后 AI 在原文文件头写一行「已入库」,盖过章的文件下次扫描跳过。见链接一节。
  • 写的不自己宣布合格:另一个 AI 逐条核验,入库前先写验收标准,健康检查查孤页断链。见检查一节。
  • 无人值守跑:定时启动,每批一个独立会话,失败不出队,撞到用量上限就等。定时任务有两个:每天凌晨处理收件箱新文章的,本页叫「日班」;每晚处理存量文件的,本页叫「夜班」。见夜班与限速一节。

它和什么连着:上游是收件箱的卡片和存量文件,下游是个人 AI 操作系统的记忆层和我在会话里的提问。

它由三层资料、三个动作、两个定时任务构成,下面按一篇文章走过的顺序讲。

  • 三层资料:原始资料(我读过、决定留下的文章和文档)、知识页(AI 从原始资料提炼出的页面)、技能说明(告诉 AI 入库、查询、检查各怎么做的文档)。本页把这三样合称「三层资料」。
  • 三个动作:入库、查询、检查。
  • 两个定时任务:日班管收件箱的新文章,夜班管存量文件。
  • 顺序:全图,然后举手、提炼、链接、检查、夜班与限速、查询,最后是演化和现状。
  1. 全图:一篇文章从我标记它到被我用上,走六步
  2. 举手:什么进来由我定,动作只有一下
  3. 提炼:一篇原文变成零到五页,段落标题写死
  4. 链接:新页接进旧页,四样记录同步更新
  5. 检查:写的不自己宣布合格,另一个 AI 逐条判
  6. 夜班与限速:无人值守时,失败留在队列里,撞到上限就等
  7. 查询:先读总目录再读页,好答案归档回来
  8. Harness:八项工程,每项约束一层
  9. 演化:五个月,三次收窄
  10. 现状:分三档说

全图:一篇文章从我标记它到被我用上,走六步

前四步是入库,后两步是使用;闭环在第六步:查询里的好答案归档成新页,下一次查询读得到它。

我举手:收件箱里拨开关,或在存量文件头写一行。这是全流程里我做的唯一动作一
AI 读原文,提炼成零到五页知识页;已有的页往里补,没有的才新建二
AI 把新页接进旧页:新页列出引用的旧页,旧页登记反向链接,每页底部补一行来源指回原文三
另一个 AI 逐项核验字段、段落、链接;通过后写总目录和操作日志,在原文盖章;不通过就不盖章,下次扫描它还在队列里四
我提问,AI 先读总目录定位相关页,再读页合成答案五
有独立价值的答案归档成新的综合页,同样更新总目录和日志。下一次查询从这里接着读六
我 拨开关 · 写一行 扫描程序 找举手的 · 排队 提炼 一篇一个独立会话 链接 新页 ↔ 旧页 核验 另一个 AI 逐条判 盖章 原文头 知识页文件夹 概念 · 实体 · 综合 · 总目录 · 日志 查询 先读总目录 有独立价值的答案归档成综合页 核验不过,不盖章
红色实线是我做的:拨开关或写一行,决定一篇进不进。红色虚线是核验守的:核验不过,原文不盖章,下次还会再排队。其余步骤全是 AI 读文件、写文件。下排是使用:查询从总目录进入知识页,好答案归档回来。

三层资料各归一个写入者:原始资料我写或我剪藏,知识页 AI 写,技能说明我和 AI 一起改。

层是什么谁写实际是什么
原始资料我读过、决定留下的东西我,或剪藏工具收件箱里的文章、书的章节、项目与领域文件夹里的文档。留在原处,AI 只读正文,只改文件头的标记
知识页从原始资料提炼出的页面AI一个独立文件夹,三个子目录各放一类页,加一份总目录、一份操作日志
技能说明告诉 AI 入库、查询、检查各怎么做,页面长什么样我和 AI一份技能说明,一份页面格式规范,一份批处理指令

三个动作都由 AI 执行;我出现在两格:入口定进不进,出口提问和判断答案值不值得留。

两个定时任务各管一个入口,共用同一份批处理指令。

定时任务扫哪里什么时候每批几篇现在
日班收件箱里两个开关都拨上的文章每天凌晨一点,两点硬停一篇2026-09-08 停
夜班项目、领域、资源三个文件夹里没盖章的存量文件每晚九点到凌晨四点,每小时补触发一次五篇并行2026-04-14 停

举手:什么进来由我定,动作只有一下

进不进知识页由人判断,AI 不替我决定;判断的动作压到最轻,一个开关或一行字。

两类原始资料各有一个入口,举手的方式不同。

收件箱的新文章:「存入知识库」和「读过」两个开关都拨上,日班第二天凌晨来取入口一
项目、领域、资源文件夹里的存量文件:文件头写一行「知识库候选」,等待接入队列。本页把这一行叫「举手行」入口二
任何一个文件:在会话里给 AI 一个路径,直接入库,不经过扫描程序手动

「读过」这道门槛是后加的,它让日班停了产。

存量文件的举手行由 AI 逐篇评估后写入,不做成工具。

提炼:一篇原文变成零到五页,段落标题写死

知识页存的是可复用的知识,不是原文摘要;一篇原文产生几页,取决于它有几个能独立成页的东西。

页分三类,因为知识有三种组织形态,和原始资料是多对多的关系。

类型回答的问题固定段落怎么长
概念页某个东西是什么定义 · 核心特征 · 适用场景 · 相关页面 · 来源跨来源合并:几篇文章讲同一个概念,合成一页
实体页某个人、工具、公司、项目是什么样概述 · 关键信息 · 相关页面 · 来源随新资料加厚:每篇提到它的文章往里补一段
综合页某个问题的结论是什么背景 · 对比分析 · 结论建议 · 相关页面 · 来源由分析产生:一篇文章的论证,或一次查询的答案

段落标题写死,AI 不许自由命名。

每页头部固定六个字段,来源要在页面底部看得见。

检查:写的不自己宣布合格,另一个 AI 逐条判

检查分三层:批次内核验每批必跑,验收标准每篇一份,健康检查扫全库。

核验守住的是「不破坏」,它抓不住「漏了」;漏掉的问题堆在日志里等健康检查。

写这一页时,我用脚本把健康检查该查的东西实测了一遍,数字在现状一节。

夜班与限速:无人值守时,失败留在队列里,撞到上限就等

定时任务跑在我自己的电脑上,每批开一个独立的 AI 会话;不用云端定时,因为云端碰不到本地文件。

夜班上线三天就撞了两个问题,重设计从审计开始。

第一夜。队列两千零七十六篇,处理三十五篇,失败两千零四十一篇。凌晨达到用量上限后,脚本每十几秒重试一次,每次失败都把那批文件从队列里删掉,四百多批把整个队列空转删光2026-04-11
审计四天日志。定位到两个根因:失败也出队;达到上限后没有退避。顺手查了日班脚本,同一个错,前一天中午三十九篇里十四篇因超预算失败后被删出队列2026-04-13
第一版退避:读到错误信息里「凌晨一点重置」,写成睡到凌晨一点再试。当晚验证不了:电脑整晚休眠,夜班一次都没触发2026-04-13
第二版退避:删掉「睡到一点」的全部逻辑,改成连续失败三次就固定睡一小时,靠窗口截止时间自然终止2026-04-14

「睡到凌晨一点」被删掉,因为它把一次观察到的数字写死成了架构假设。

限速的另外三个参数同时收窄,全部往「少而稳」调。

参数原来改成理由
夜班窗口晚九点到早九点晚九点到凌晨四点凌晨四点后电脑多半在睡,窗口是空的;七小时刚好覆盖一次五小时的用量回补
成功后冷却十秒三分钟把消耗节奏拉开,降低短时间内达到上限的概率。理论吞吐降到原来的四分之一,用量上限本来就是硬上限,实际差距小
失败后出队无条件出队只在成功时出队失败的批留在队列里,下轮重试
触发方式晚九点整点触发每小时触发,白天直接退出整点错过就丢;每小时触发在电脑醒来后能补上

日班在七月又收窄一次:从一批五篇改成一批一篇。

没解决的一条:定时任务依赖电脑醒着,电脑整晚休眠时夜班一次也不会触发。

查询:先读总目录再读页,好答案归档回来

查询不用向量检索,AI 先读总目录的简述定位相关页,再读页合成答案。

查询最常发生在阅读中:读书读到接不上的地方,提问触发一次页面更新。

已知缺口:查询靠总目录里的词,总目录里没有的词就找不到。

Harness:八项工程,每项约束一层

harness 不提炼也不查询,只让 AI 维护知识页时每一步都在界内:什么进来、往哪写、写成什么形状、失败了怎么办,各有一处定了;八项各守一层。

项做了什么约束哪一层
入口归人进不进由我标记,AI 不替我决定;存量文件 AI 只做预筛,入库仍等我定。防的是知识页里混进我没判断过的东西入库的入口:原始资料哪些进来
原文正文只读AI 只往知识页写,在原文里只改文件头的标记,不碰正文。防的是来源被改坏,页面无法回指原文三层资料里的原始资料
段落标题写死三类页的段落标题序列写在指令里,不许添加规范之外的段。防的是格式漂移,检查只能靠人读知识页的外形
四样同步,盖章最后总目录、日志、来源、盖章按固定顺序写,前三样全成功才盖章;盖过章的文件下次跳过。防的是半途失败的文章被当成已完成,系统不知道自己做过什么入库的收尾:系统对自己做过什么的记录
总目录单写并行入库时各批只写知识页,总目录和日志只由一处写。防的是并行的几批互相覆盖同一份总目录总目录与操作日志
写与核验分开写页的 AI 不核验;另一个 AI 按入库前写好的验收标准逐条判,全过才算。防的是 AI 自己宣布合格检查这个动作
失败不出队,撞上限就等只在成功时出队,失败的留在队里;撞到用量上限就等;每批有花费上限,窗口到点硬停。防的是失败空转删光队列、撞上限反复重试、一批超支拖累别批两个定时任务
每批独立会话,步骤单源每批新开一个会话;发给它的指令只说对哪几个文件入库,步骤只写在技能说明里。防的是上下文越积越大、崩一次全丢,和步骤两处要同步改两个定时任务与技能说明

演化:五个月,三次收窄

从 2026-04-05 到 09-08,三次收窄:入口从 AI 全量扫收成文件举手,批次从五篇并行收成一篇一批,运行从无人值守夜里跑收成停掉定时、手动入库。

前史一。一个技能读我给它的文章或论文,写出分析,再把概念、人物、技术各提炼成一页,页与页之间双向链接;链接由 AI 建议、我确认后写入。写了十九篇分析、二十三页,12 月中之后没再用2025-10-21 – 12-15
前史二。收件箱文章头部加上「存入知识库」开关,什么留下由我拨一下决定2026-01-28
Andrej Karpathy 发出 llm-wiki 构想2026-04-04
起点。读到 llm-wiki 构想,当天立项。定下三条:知识页从零开始,不批量导入;一次一篇,我在场;三类页和统一的头部字段。第一次入库一篇文章产生三页2026-04-05
放弃自定义复选框,改接收件箱已有的「存入知识库」开关。理由:不另立要记的约定2026-04-05
入库流程从项目文件夹搬成全局技能,任何位置一句话触发。同日定下定时方案:放弃云端,用本机定时加无人值守会话。来源段从头部字段搬到页面底部2026-04-08
日班连续两天失败,原因是五十个文件路径塞进一条指令,超出长度。改成每批五篇、每批一个独立会话2026-04-10
夜班上线,存量两千零七十七篇,五路并行,估三晚清完2026-04-10
夜班第一夜:处理三十五篇,失败两千零四十一篇2026-04-11
审计与重设计:失败不出队;退避从「睡到凌晨一点」改成固定睡一小时;窗口十二小时收成七小时;冷却十秒拉到三分钟;段落格式写进批处理指令。发现电脑休眠让夜班从未再触发2026-04-13 – 14
夜班停掉2026-04-14
存量入库改走举手:不再全量硬扫,AI 逐篇评估知识密度后在文件头写举手行。不做成工具,写成一次性执行方案2026-04-21
边读边入库:读书时按章入库,提问触发页面更新,不为每个词建页2026-06-29
日班从一批五篇改成一批一篇,独享花费上限,处理完立刻盖章。从下午一点挪到凌晨一点2026-07-13
每次入库先写十条验收标准,另一个 AI 逐条判过或不过2026-07-13
收件箱入口加「读过」门槛:只保存没读完的不入库2026-07-16
最近一次入库:一篇七月的文章,三页新页,五页补链接2026-08-30
停掉日班。核实时它已零产出:两个开关同时拨上的文章为零,两百多篇保存了没读。决定不再自动入库,手动入库照常2026-09-08

没变的是分工和格式,变的是每一处「AI 自己决定」都收回给了我,或收成了更小的单位。

现状:分三档说

写这一页的日期是 2026-09-17。三档分开说,不混。

在跑,有真实使用记录
  • 知识页文件夹本身:三类各一个子目录,总目录和日志随每次入库更新。查询在会话里发生,AI 先读总目录。
  • 手动入库:在会话里给一个文件路径,AI 按技能说明走完六步。最近一次在会话里触发的入库是 2026-07-13。
  • 批次内核验和验收标准:随每次入库执行,核验记录写在日志每一条的备注里。
建了,不常跑或没走通
  • 日班:2026-04-08 到 09-08 每天触发,多数日子队列为空。09-08 关停。
  • 夜班:实际启动过三次,完整跑完的只有一夜。04-14 关停,电脑休眠问题没解决。
  • 举手行:文件写了举手行,举手行和扫描程序没有接通,经这条门入库的是零。
  • 健康检查:写在技能说明里,没有作为独立动作跑过一次。核验记下的重复页、格式漂移、日期不同步、索引漏登都在等它。
  • 查询答案归档:跨域综合归档只发生过一次。
设计中或未测得
  • 把举手行接进扫描程序:设计写了,没建。
  • 定时任务的触发可靠性:三个候选方案,没动手。
  • 过期页检查:九十天规则写了,没测过。

数字只报能证明系统真实存在的,全部从文件里读出或 2026-09-17 实测。

概念页六百五十二,实体页二百四十六,综合页一百四十七一千零四十五页
首次入库 2026-04-05,最近一次 2026-08-30一百四十七天
操作日志条目:入库一百四十三,批量入库一百,重入库六,更新二,手动一,跨域综合一,初始化一二百五十四条
盖过章的原始资料五百四十份
写了举手行的文件,其中经举手入库的为零五百七十五份
来源两篇以上的知识页;来源最多的一页十四篇二百一十八页
正文里页与页之间的链接五千九百二十六条
断链,指向不存在的页六十九条
无入链页,没有任何页链到它八十九页
索引未登记,页存在但总目录没有它二百零八页
日班处理过的文章,一百五十四天里五十二天有产出二百四十五篇
夜班完整跑过的一晚处理的文章;队列两千零七十六篇三十五篇
审计时测得一篇原文平均产生的新页一点四页
读书按章入库与更新的日志条目二十二条
写过的验收标准三份
现在在跑的定时任务零个

它是作品一记忆层的一部分,那一页讲它在整个系统里站哪。判断外化那条思路后来搬进了一家公司,见作品二。它背后的想法怎么来的,见思考。