注:本文文字经 AI 辅助校对排版。

引言

一年多前,我写过一篇《Antinet:用纸笔链接广阔世界》的书评,把谢珀(Scott P. Scheper)的 Antinet 方法梳理了一遍——那是他提出的一套纸质卡片盒笔记法——手写的阻力是思考的助推器,物理卡片的存在感会不断提醒你深化想法,编号体系给每个想法安下一个独一无二的「住址」。

当然,我从一开始就没打算用纸质版。卡片随身携带太不方便,我的 Antinet 实践,一直在 Obsidian 里操作——借鉴纸质版的理念,操作上也尽量贴近纸质的风味。

这本该是个两全其美的方案:既有 Antinet 的思考骨架,又省去了纸笔的麻烦。可实践下来,实在水土不服了好一阵。

直到我看到 Andrej Karpathy 的一条分享。

他是前 Tesla AI 总监、OpenAI 创始成员,今年开始用 LLM 搭自己的个人知识库——原始资料丢进一个 raw 目录,AI 把它们「编译」成一份带双链、带图谱的wiki;他本人几乎从不手动编辑,Obsidian 只当查看器用。他还说自己最近的 token 吞吐,大部分已经花在「操作知识」上,而不是写代码。

连他这样的人,都把 LLM 的日常用途从代码挪到了知识上——说明模型能力真的够用了!我心里一动,之前的知识库岂不是可以大展宏图?还有这种好事!哈哈。

于是我花了差不多一个月,把它按 AI 时代的逻辑重构了一次——这篇文章,就是这一个月的记录:从和 Karpathy 的分歧,到库结构的调整,再到 skill 的设计。

如果你读过那篇旧文,这篇是它借助 LLM 重焕生机的故事;如果没读过,也不影响理解下面要讲的东西。

顺带说明:文里的截图有两种底色——蓝色是旧版仓库,暖黄色的木纹纸主题是新版。为了方便对比,我特意给新旧做了两套主题,看到颜色就知道是哪个时期。

故事得从头讲。


一、水土不服

把 Antinet 电子化,最自然的想法是「尽量像纸质那样」。我一度也是这么干的:保留四位数编号、手动给每张卡编号、模拟主卡/索引卡的层级。但用着用着,三个绕不开的问题先后浮了上来,逼我承认「模仿」是有边界的。

编码后的卡片

头一个问题,出在工具层面——编号和双链,该用哪个。Antinet 之所以靠「编号 + 物理相邻」来编码语义关系,是因为纸质卡片只能靠手动翻找去实现双链。电子化之后,双链 [[ ]] 就在眼前——点一下就能跳转,反向链接面板自动聚合所有提到这张卡的卡片。

卡片及出链

按理说,我早该拥抱它。但我在知识管理上折腾得早,那会可是吃够了双链的苦头。

手动去建双链,实在很难控制数量。 你会忍不住见词就链,建出一堆「看起来相关、其实很弱」的连接,链接越堆越多,最后整个库变成一坨垃圾——冗余、混乱,也没有真正的价值。所以我宁可继续用编号。编号确实麻烦,但它有一种天然的克制:你必须想清楚一张卡归在哪个父级、和谁是邻居,这个动作本身就在筛掉随意的连接。在 AI 还没发展起来、配套插件也没成熟的那些年,编号的克制对我来说,比双链的自由更可靠,更有利于思维生长。

题外话,现在我其实重新喜欢上了双链,因为模型发展和配套工具已经足够——它们把「建链接」这件事从我手里接过去了。当机器能语义匹配、能建议该链向谁,把建链从人的随性变成工具的克制时,我对双链最大的顾虑才真正解除。skill 非常适合用来实现自己的想法,但这里按下不表,继续。

编码这件事情想明白了,但操作层面的别扭又冒了出来:要不要在屏幕上假装手写?谢珀讲过一个我非常认同的观点:手写的阻力恰恰是思考的助推器。基于「必要难度」理论,你在纸上慢慢写一个概念、被迫提炼到卡片能装下的字数时,思考被强制启动了。这个道理搬到屏幕上,却变了味。我试过在电子版里模拟这种阻力:故意手动逐字打字,打完之后再手动给卡片编号,再翻一遍附近的笔记,确认它该安插在哪个位置。但这个过程特别消耗能量,很容易在电脑操作中失去写卡片的欲望和思路。

后来我意识到一件事——纸质的阻力是物理天然产生的,电子版去模仿阻力,是在人为给自己添堵。前者是真实世界的摩擦,后者是表演性的摩擦。真正的思考阻力应该来自内容本身(用自己的话重述、提炼关键词、追问和谁相关),而不是来自工具上的别扭。一旦想通这层,我就不再执着于「在屏幕上还原纸质卡片的操作」了。我开始先写卡片,或复制粘贴,或手动打字,或语音输入再润色,总之用一切能写完卡片的方式,之后再去编码,这样便不会打断写卡过程。

最后是翻阅卡片——这是电子版 Antinet 永远无法做到的(即使有随机漫游这个功能也不行)。纸质卡片公认的优势是能摸、能翻、能凭五感快速定位,而且一次次的翻找之间,记忆会越来越牢固。老实说,这些好处我没亲身体验过——我的库从第一天起就在电脑里(哭)。我试过各种插件去模拟「翻卡感」,用过 Obsidian 的随机漫游卡片功能,指望多少找回一点「翻」的实在感,可一到真要找文件,那种大脑空空的感觉就出现了……好像我想找的卡片总是在躲着我!到后来我放下了:纸质和电子本就是两种东西,硬要在电子里还原纸质的体验,是跟自己过不去。

放下,是因为我发现电子版已经长出了自己独特的优势。全文检索能让你几秒钟拎出所有讨论过同一个概念的卡——这些是纸质做梦都做不到的。更要紧的是,AI 加持之后,电子版多了一种全新的可能:和 AI 的互动本身,成了思考和记忆的一部分。同时,AI 辅助下,我也开始使用双链,而图谱能让我一眼看到连接的全貌,感觉非常梦幻。

这一点,从根本上改变了我对这套实践的看法。Antinet 的纸质版要真正发挥作用,有一个隐含前提:使用者自己得有反思的能力、有实践的厚度、有把想法持续推进的耐心——否则它就只是一场知识界的作秀,卡片写得漂亮,想法却始终停在表面。而人靠自己去长出这些能力,实在太慢了:一个话题,自己琢磨几个月、甚至几年,思考和实践都可能始终到不了某个深度。AI 恰好把这个前提松动了——它能把电子版的 Antinet 变成一个伙伴,一个能帮助自己发掘想法的小帮手,甚至成为自己的老师。


二、取神不取形

三个问题叠加,让我开始思考:

我到底是想还原一套纸质的工具,还是想继承一套思考的方法?

这个问题一旦问出来,答案其实很清楚。但我花了些时间才真正把它想透——关键是要把一套方法里的「神」和「形」分清楚。

什么是 Antinet 的「形」?

纸质卡片、4×6 英寸的尺寸、用来手写的笔、物理相邻的卡片盒、按字母排列的索引卡、翻动时手指的触感——这些是它在当年那个时代、那种技术条件下,不得不长成的样子。把它们叫作「形」,是因为换一个时代、换一套工具,它们完全可以是另一个样子。

什么是 Antinet 的「神」? 是这些形态背后那套思考机制:

  • 分子化的卡片:一个想法可以在卡内自然延展,而不是被强行切成「原子」;
  • 用自己的话重述:读过之后必须经过自己的语言转译,这一步强制了思考;
  • 编号带来的相邻语义:把卡放在「邻居」旁边,本身就是一次归类与连接的判断;
  • 索引卡作为聚合节点:为高频出现的关键词单独建一张卡,让它成为一面「聚拢所有讨论」的旗帜;
  • 贡献心态下的苛刻筛选:写每张卡时都假设要讲给一个听众听,筛掉一切含糊和无意义。

这些东西,和纸质没有半点关系。它们搬到屏幕上,一样成立。

一旦把「神」和「形」分开,事情就豁然开朗了:

  • 纸质做不好的(双链、搜索、备份、协同),电子化天生就擅长;
  • 电子化做不好的(触感、翻阅的意外感),就别硬模仿;
  • 而 AI,恰好能补上纸质和电子化都做不好的一件事——海量信息里的语义关联

这三者拼起来,就是我现在摸索出来的「融合创造」:用电子化的工具承载 Antinet 的思考理念,再用 AI 把它们之间本该存在、却没力气去建的链接补上。最后,由我这个大主宰去判断,去决定😄。


三、Karpathy 的启发

必须承认,如果不是看到 Karpathy 分享的工作流,我不会动重构知识库的念头,更不会想到用 Claude Code 去深度操作。

我们先来看一下大神的做法。他是推荐建立一个几乎完全由 LLM 驱动的自动化知识库。具体如下:

先说输入材料。网页、论文、代码、图片,凡是有价值的都先存进 raw 目录,格式统一成 Markdown 和本地图片。他特意强调图片也要进库——很多关系是文字表达不了的。

再说编译。AI 把 raw 里的原始资料逐步「编译」成一份维基:给每篇文档写摘要、自动识别谁引用了谁、把内容归进概念体系、给每个概念写专题页,最后织成一张超链接网络。他的原则很极端——你几乎从不手动编写或编辑 wiki,这是 LLM 的领域;Obsidian 主要当查看器和导航器。

最后是问答和回流。库攒到一定规模(他的例子是约一百篇文章、四十万字),就可以直接对它提问。他原本以为要搭一套花哨的 RAG 检索,后来发现没必要:模型自己维护索引和摘要,就能在这个规模下读到所有相关材料。问答产出的报告、幻灯片、图表,再归档回库里——问一次,库就厚一分,雪球越滚越大。

他还会定期让 AI 给库做「健康检查」:找矛盾、补缺漏、揪出没人链接的孤岛页。我读到这儿就想,这个可以做成 skill,用来维护卡片质量。

我读完非常激动。它说明白一件事:AI 时代的知识库,可以是二创的,而不是死搬硬套的知识点。我当时就觉得,我的库可以借这个思路改造一遍!

本来想按照他的方法完全的去模仿操作一遍,后来在实践的过程中没法继续。因为它做出来更像维基百科的 mini 版,变成了一个个人 wiki——有用是有用,可信息会越攒越多,而我早过了迷恋信息量的阶段,库够用就好,不是越大越好。而且内容一多,你根本不知道 AI 提取出来的东西适不适合你。我的体会是越细越失真,任由 AI 往下编,材料会越来越空洞。

所以我做的是化用:借他的思路,去写自己的库。为此还写了几个 skill(skill 是写给 AI 的专项说明书——一套做法写成说明存好,AI 读到就照着执行),回去融合我自己已有的内容。也恰恰是因为要融合已有卡片,让我发现——一个 skill 好不好用,原有素材质量和个人设计也非常重要,不是说 AI 能把所有事情都干完还都干得漂亮。就拿cards-research这个 skill来说,没有以前的卡片,它连该往哪儿链都不知道;AI 也不知道我平时怎么写卡,写出来的风格就不像我。有几百张卡片打底,它给的链接才像我自己会链的,句子才像我自己写的——也会拗口,我会不断调整(第六节细说)。

他有他的原则,我也有我的。

第一,卡得是我自己的卡。 我不是把库当检索工具用——收藏一篇文章,直接丢给 AI,处理完顺着它的流程去提问。我的库是用来思考、用来记笔记的。具体做法是两个 skill:link-atoms 管织网;cards-research 管拆卡,我给它原材料和规则,它出草稿,我们来回互动、我给反馈,最后才把卡写定。实践下来比手动链更稳更准,但人得全程参与,AI 包办不了。这两个怎么运转,第六节再展开。

第二,借 AI 的力,但不能完全依赖它。 随便收藏一堆文章、视频、图片,让 AI 全处理了——做出来确实是个知识库,可那不是我的东西。卡片是我的,规则是我的,判断也是我的,AI 只是让这些做得更快、更稳。AI 批量生成的内容看着是信息,并不是入脑的知识。

说起来也不是否定他的方法。个人 wiki 有个人 wiki 的好,哪天机缘到了,我也会搭一个只为自己服务的 wiki。只是现在,我要的是自己的知识库:借他的思路,走自己的路。

顺着这个方向看,市面上已经有人做成了产品:腾讯的 ima,主打把收藏的文章、文档交给 AI,随时问答;得到的 Get 笔记,主打得到生态,直播转录,自动生成笔记。它们的共同思路是「你负责收藏,AI 负责整理和回答」。这条产品路线和我的自建路线各有取舍——它们开箱即用,代价是思考的工序也一并被代劳了,而且库在云端、在别人手里。这点展开能写一整篇,先按下(按下的太多了,哈哈哈)。


四、调整 Obsidian 仓库

想通了理念,落到操作,仓库做了一次大调整。这件事分两层思路上的调整,是一降一升——编号降级,人生锚点升级;仓库级别的操作调整,是三件事——文件夹结构重排、整理七百多本书的笔记、处理没读完的文章。

先说思路。

编号降级

编号降级不代表放弃编号。编号我还在编,而且会一直编下去——一部分是我自己手动编,一部分是让 cc 建议编。

那「降」的到底是什么?是它「独一无二」的地位。旧文里,我花很大篇幅讲编号体系怎么设计、四位数怎么留分支空间,那时候编号是我的唯一导航——找一张卡,靠的就是「它在 4212/1a 这个地址」,除此之外没别的路。

编号还在,只是和它并肩的,多了三样新主力:

  1. 双链 [[ ]]:卡片之间靠语义直接连,点一下就跳。
  2. 全文搜索:找卡先搜关键词,比算编号快十倍。
  3. 图谱视图:看一片卡片的连接全貌,发现意外的远房亲戚。

编号依然有用——它保留了「相邻编号 = 相关主题」这层隐式语义,扫文件树时能一眼看到一串相关的卡。只是它从「唯一导航」变成了「众多手段里的一种」,和双链、搜索、图谱各管各的:编号管相邻归类,双链管语义跳转,搜索管快速定位,图谱管全局关联。所谓降级,降的只是它的独占地位。

这里有一个我踩过的坑:如果你也在用 dataview 这个插件,要明白Obsidian 里 [[双链]] 和 dataview 的 from "文件夹" 是两套解析机制。双链按文件名,只要你在 Obsidian 里操作修改,相关引用和链接都会自动更新;但 dataview 的 from "路径" 是字面路径匹配(相当于是一种语法,写死了的语法),目录一改,语法没法,那查出来的结果就成了空。所以每改一次顶层目录名,都要顺手 grep 一遍 dataview 的路径引用。这件小事,你让 AI (支持本地文件操作的软件,我自用 Claude Code,你可以用 codex、 workbuddy 等)去做就可以了。

人生锚点

另一头是升,升的就是 Keyword——核心概念库。原来我一直没想好怎么在 Obsidian 里实现,更多是「有一搭没一搭的做着」;这一次,它被抬成了库的主角。该装什么、怎么才算数,我前后折腾得最多。

在 Antinet 体系里,这个位置本来是 keyword(关键词索引)——写卡片时遇到需要反复链接的关键词,就给它建一张 keyword 卡,它既是索引入口,也是聚合节点(纸质版的索引系统我在旧文里讲过,这里不展开)。

到了电子版,我想把这个位置的意义再推一步:它装的不只是技术上的 keyword,更是我人生的 keyword——那些我反复思考、对我有锚定意义的核心概念。

正好,我电脑里存着一个很早之前保存下来的原子知识库——别人做的,做得不错,存了很久一直没用,某天翻文件时突然翻到,正好拿来当底子。

一开始挺兴奋,觉得「人生 keyword」一下子就有了三百多个候选。可实际翻下来,发现问题:库里塞了大量 AI 相关的「死知识点」——某代大模型的版本号、某个具体算法的名字——这些东西和我人生的锚点关系不大,顶多是「深度学习」这个锚点下面的一个支点,本身并不构成一个思考坐标。

于是我开始改造。

先从名字开始。在原本的系统里,它的名字叫 Keyword。但在操作的过程中,我感觉这个单词不能完全代表我对它的理解和设想,无法完全覆盖我的初衷。后来我去查了一些单词,最后决定用“Anchor”作为这个文件夹的名字。这就相当于,里面的卡片都是我人生的锚点,我要依托这些东西,不断地去让思想生长、更要去做一些事情。

一张 Anchor,必须能指导我的行动——遇到事的时候,我会把它拿出来,用它想问题、做判断、处世。只是「我知道有这么个概念」、却拿不出任何用法的,它就是知识,不是锚点。

按这条标准过了一遍,306 张砍掉约莫三分之一:

  • 跑题的:纯技术词条(CPU、BigTable、MapReduce)、纯数学公式(三角函数、欧拉公式)、跑题的科学实验(草履虫实验、相对涡度)——是知识,不是处事工具,归档。
  • 重复的:帕累托定律 / 帕累托法则 / 二八定律本是一个东西,冰山模型 / 冰山理论 / 心理冰山 / 海明威冰山混作一团——合并成一张主卡,其余做成别名(aliases),搜旧名仍能命中。
  • 停在「是什么」、没长出「怎么用」的:一批基础术语(认知、感知、系统、信息论),有定义、却调不出用法。

融合已有笔记,清理借来的笔记,最终还剩 202 张。

你以为结束了吗?NO!这才刚刚开始!

这个原子笔记库有个通病:几乎所有卡片的「原理」段都是同一套模板套话——系统类都写「元素之间通过关系、反馈和边界共同决定整体状态」,认知类都写「认知系统在注意、记忆、解释和判断过程中受到特定机制影响」,五句话轮换着盖住三百张卡。这是批量生成的痕迹。而它的来源我也实在想不起来了——当初存下来的时候没记出处,放得太久,连从哪儿看来的都忘了,所以只能靠自己了!

所以需要重写(要命的工作量又开始了)

于是我更新了模板,融入了我过去的 keywords,重写了所有笔记。我新设的模板由三个部分组成:概念解释;「怎么用」——何时拿出来、怎么用;关联哪些 mainbox 卡片。卡片有了「怎么用」,就从「词条」变成了「工具」,遇到事真会被拿出来用——这才是 Anchor。下图便是一个简单的例子。

后来,我又在 @Anchor 里新增了一些卡片,截止目前共 221 张。这些新增的卡片,由我从日常和 AI 的对话中发掘得出。放心,卡片新增非常谨慎。

实际动手:三件事

思路理清楚了,剩下就是动手。

第一件,文件夹结构重排。 调整前的仓库有点乱:根目录躺着七八个没归位的散文件(好几个干脆叫「未命名.md」);日记分散在两个文件夹(一个叫 @Daily Notes,一个叫 5-Daliycc);没读完的文章堆在 @Continue,网页剪藏堆在 Clippings,谁也不知道下一步该进哪里。重排之后,每个文件夹只干一件事:

  • 1-BibBox:书箱,书籍和读书笔记,要拆卡的原料都在这
  • 2-MainBox:主卡库,编号分类的知识卡
  • 3-Outputs:半成品,代码片段
  • 4-Projects:文章和项目
  • @Anchor:人生锚点,刚说的升级后的那个库
  • @Inbox:收件箱,所有新进来的东西先落这里
  • @Maps:结构图这类多模态产物
  • @Daily:日记(两个旧的合并成一个)
  • @System:系统的配置、脚本、说明
  • Papers 和 PDFs 独立不动:存放论文和论文解析

第二件,清理七百多本书。 读书笔记是 BibBox 里的大头,原来七百多本,来源多样,有纸间书摘导出的 markdown,有 kindle 导出的 txt,更多的则是微信读书插件自动同步的笔记(看下图就知道有多混乱了……)。有书籍重复,格式更是五花八门。这次全部过了一遍:去重、整理、统一格式,清完剩 413 本。怎么去重、怎么统一,展开能写一整篇,就不写了。

第三件,处理没读完的文章。 @Continue 那个文件夹,本来是利用 tag 来管理项目和文章,但后来莫名开始往里塞没读完的文章,一直拖延着不去处理。这次干脆取消它,没读完的文章直接进 @Inbox;网页剪藏的 Clippings 也并了进去。从那以后,这些文章和读书笔记一样,直接交给 cards-research 处理。收件箱就是收件箱:进来的东西,都会被拆成 mainbox 里面的卡片。


五、两个入口,同一个 cc

仓库调整完了。但你可能好奇:清洗三百多张锚点、整理七百多本书、连接五六百张卡,这些活是谁干的?

那绝不可能是我!咱有 AI 咱干啥活呢(心态扭曲)。言归正传,我在这先分享下使用的工具,再说具体做法。

我把这个 Obsidian 库当作一个项目来管,日常调用 Claude Code(下面简称 cc)主要走两个入口——它们干的是同一件事(调用 cc),但场景不同。

一个是 Obsidian 里的 Codian 插件——它让我不用切出 Obsidian,直接在 Obsidian 界面里和 cc 对话、让它编辑当前卡片。这种「就地调用」非常方便:我正读着一张卡,顺手就把 cc 叫来改两句、补一段,不会打破阅读的节奏。

Codian 插件

顺带推荐:Codian 在 Obsidian 插件市场可直接搜到(仓库在 github.com/BCS1037/codian)。它的巧思是把 vault 当作 AI 能持续协作的上下文——笔记、会话、skills 围绕同一个问题反复打交道,结果也留在本地。
作者运营的公众号「维客笔记」是我很喜欢的一位作者——努力、真诚、又有料,一并推荐给你。这是他对插件的文章介绍,可细细查看: https://mp.weixin.qq.com/s/gU2gbk9vYhsGfbUQrN333g

另一个是 Zed——一个类似 VS Code 的编程编辑器,非常推荐!

我把库当作一个项目在 Zed 里打开。它有一个我离不开的特性:多栏布局。我的工作区是三栏:

  • 左栏:文件树(整个库的结构一览)
  • 中栏:卡片的 Markdown 预览
  • 右栏:一个常驻的终端,里面跑着 cc
常用的三栏布局,远胜各类大厂软件!主要是非常自由,集编程软件和 markdown 编辑软件优点于一身,还可以直接打开终端,自由调用各种 AI 模型

两者比起来,Zed 我用得更频繁:功能更丰富(文件树看全局、预览实时刷新),skill 调用也更稳定,适合写新卡、织网、重构这种密集操作。但 Codian 同样不可少——它在 Obsidian 内的「就地对话」更即时,适合「我正读这张卡、顺手让 cc 改一下」这类的小活。

这种「同一件事、两个入口」的搭配,也是纸质时代无法想象的——纸质你只能在一个物理位置、用一种方式做事,电子化之后,同一套操作可以拆到不同软件里,按场景顺手切换。


六、两个 skill:拆卡和织网

有了 cc,就能装 skill 了——把一套做法写成说明书,存进 cc 的 skills 文件夹。我最核心的是两个(第三节提过的那两个),一前一后做出来的:link-atoms 在前,cards-research 在后,最后形成一个完整的工作流。

link-atoms:织网

先说 link-atoms,最早设计是用来处理已有卡片。当时库里有五六百张 MainBox 卡片,BibBox 里还堆着四百多本书的读书笔记。

所以它最初就干一件事:把已有卡片互相链接,挂到 Anchor 上。规则是我定的:MainBox 的卡片可以互相链接,也可以链到 Anchor 卡上;但 Anchor 卡之间不互链。

原因有两个。一是 Anchor 之间本来就都互相沾边——它们都是大概念,谁跟谁都能扯上关系,真要两两互链,链接就全成了泛泛之交,整张网反而不清晰了。二是定位:Anchor 是我人生的底座,底座的价值,不需要底座之间互相证明——恰恰相反,要靠 MainBox 的卡片一张张链过来、把想法链上去,锚才立得住。

最初的设计,用来处理原有卡片互相链接

为什么这事必须交给 AI?

手动建链接成本太高:想把一张新卡和过去写过的某张卡连起来,得先翻到那张卡,然后想这张卡片和哪张卡片有联系来着?接着开始翻找可能有联系的卡片,累都累死了。就像文章前面说的一样,在这方面,电子版实在是不如纸质方便(或者说是因为太方便以至于质量很差)。卡一多,人脑根本记不住自己有什么,图谱也很难生长。

这正是 skill 最该补位的地方。

我写完一张主卡,它就读取我的 Anchor 文件夹,分析这张卡的内容,找出语义相关的几个核心概念,建议我把 [[概念]] 加进去,同时帮我在那张概念卡的「关联卡片」区回链一条指向这张主卡的链接——双向链接自动建立

举个例子。我写过一张卡,讲一个人「很努力但总是努力不到点上」——他迷信明规则、用考试思维对待世界。这个 skill 跑完,给我建议了几个关联:路径依赖、零和/非零和博弈、系统思维、第一性原理、升维打击、黄金圈法则。其中「路径依赖」是我原文就写了却没链上的词,「升维打击」是我没明说但思想一致的隐含关联。两种价值都有了——补上漏网的,发现隐含的

旧卡片的新关联~

这就是纸质时代做梦都想不到的能力:AI 帮我发现关联,我的精力留给判断(要不要这条链、链往哪)和思考(这些连接意味着什么)。

我以前是怕 AI 把知识库搞乱的——怕它乱建链接、塞零散内容、把库变得一塌糊涂。但这一轮模型能力上来之后,我发现只要把控「建议 vs 直接改」的区别,AI 的织网质量已经相当稳。怕 AI 搞乱,本质上是用上一代模型的能力,去想象这一代模型的表现。

存量连完了,新素材还在源源不断进来——这就轮到第二个 skill。

cards-research:拆卡

拆卡是日常里最重的一件事,我把它做成了 cards-research 这个 skill。

第一步,给出原材料,比如一本书的摘录、一篇文章、一段转写,然后开始自动拆卡,最后由我确认,再写入本地。规则已经写在 skill 里:卡片怎么编号、标题怎么起、正文要什么文风、什么样的内容算「与我有关」、什么样的卡片值得去拆。

第二步,它通读完,先查重(这份材料以前拆过没有),再一篇篇给出候选卡。

第三步,我来提意见:这句拗口、这张砍掉、这里我还有什么想法。可能需要来回几轮,卡才定稿入库。规则不是一开始就全有的。每返工一次,就把新踩的坑写回去,规则越攒越厚——这部分第七节细说。到现在,它拆出来的卡很像我会写的样子。

让它帮忙拆《倒霉的人类学家》这本书的笔记,skill 自动调用
给出候选卡,我开始挑选
我给出反馈,要哪张不要哪张,哪张需要更加深入
拆卡完成,给我一个总结
拆卡结束后自动织网链接卡片,并提示我 commit

这个 skill 我也迭代了不下五个版本。一开始我设计的只是拆卡功能,但后来发现如果仅有单一功能,拆出来的卡互不相连,我还得再手动去运行 link-atoms 这个 skill。后来我干脆把两个 skill 联动起来:现在对 cc 说一声「拆卡」,它先按 cards-research 的工作流拆完、入库,接着自动跑 link-atoms,新卡当场连进网里。

完美。


七、不断优化,不停记忆

「设计」skill 固然需要花费时间,但最费劲的还是如何让 cc 稳定干活稳定产出。模型能力是够了,执行的坑却一个接一个——每踩一个,我就把它变成一条规矩或一个工具。持续优化,效果就会越来越好。下面分享一些我踩的坑。

有一次差点丢了一本书的笔记。 批量统一微信读书笔记格式时,有个脚本写成了一行:先打开文件准备写入,再去读原文、转换、写回。Python 的求值顺序决定了「打开写入」那一下文件就被清空——等转换结果要写进去时,原文已经没了。等我发现,《巴黎的忧郁》整本笔记成了空文件。万幸库里有历史版本,从备份目录里捞了回来。复盘之后,所有批量改文件的脚本改成固定四步:先读文件、再检查、最后才写。 从那以后,四百多本书的批量转换,零事故。

cc 删了我的源文件。 我让它「把这些文章直接改成卡片」,它理解成「拆完卡片,源文件就没用了」,顺手删了两篇。我火蹭一下就上来了——你处理成卡片内容可以,删除的权力什么时候轮到你了?好在删除的文件到了回收站,而不是直接删除(这也是之前的教训:必须使用 safe 的删除命令)。我规定它:要删文件,必须我明确同意;指令有歧义时宁可保守——保留原件,产出新物。

还有一次,是我自己审核不用心导致的。 有一天全库评估,脚本扫出 71 张没有内容的卡片,我差点就按清单清理了。但我还是比较谨慎的,随机看了几个文件,发现明明有内容的啊!又问 cc,它才承认说正则没认出一种紧贴格式的变体,笔记里大半是冤枉的。从那天起又多一条:批量统计的结论,先抽样核对,再动手。

下面踩坑的点看似很普通,但也最典型,又最应该杜绝。 有天润色文章,AI 改完一段,中文引号全变成了右引号。我想了想:明明写了一个自动修复中文引号的 hook ,它为什么没拦住?又读了一遍代码,才发现设计有误——它只防「英文直引号」,不防「左右引号写反」。于是给脚本补了两类新的故障判断,配了十三个测试用例。

踩坑不怕,怕的是反复踩坑。解决问题,就是让自己渐渐无后顾之忧。

拆卡、写卡也一样。这个月我拆了两百多张卡,中途不止一次被 cc 写出的句子气到——有时候写得特别拗口,压缩腔、翻译腔、比喻堆叠,读出来根本不是人会说话的语气。

skill 不是一劳永逸的,需要慢慢调整,最后能达到 90% 稳定就很不错了

气归气,原则不能变——踩坑的点都要作为养料,变成一个规则。每返工一次,就把病灶写进拆卡 skill 的雷区清单:什么算压缩腔、怎么自查,前后加固了六轮。如果规则不管用,那就再想法子让它管用。

这是同一个路数:发现问题,别只修个案,要问一句「什么机制能让它不再发生」——变成规则、变成脚本、变成测试,我管这叫「个案要升级成制度」。

顺带一提,我搭了一套双循环:每次会话结束记一篇日记,攒一批再跨会话反思提炼——这篇文里一个月的细节和踩坑,我还能记得清清楚楚,靠的就是它,不是我的大脑。这套之前在公众号单独写过一篇,这里不展开。


八、一张卡的旅程

前面散讲了一路、双链、织网,看完你可能觉得还是没太明白。
这一节换个讲法:拿一本书,以 Zed 为主工具,把拆卡的完整流程从头走一遍。 第六节我已经图文并茂介绍过一遍skill 的运作,这里我再用文字系统描述一下整个工作流,有机会的话可以视频演示。(少数派上传 gif 必须小于 5 M,不然我能直接传个 gif 上来……)

拆卡:在 Zed 里,把一本书的读书笔记从左栏文件树拖进右侧的终端,对 cc 说一声「处理一下」。它就按 cards-research 的流程跑起来:通读、查重、给出候选卡,然后一张张来问我。我回复意见,它修改,来回几轮,卡片写好、入库。

织网:拆完,cc 自动接着跑 link-atoms,新卡当场连进网里(机制前面讲过)。

回看:入库不等于完事,我会重新读一遍这批卡。发现写得不好的地方,分两种处理:如果是通用毛病——某类句子总是拗口,反复出现——我会明确告诉它「以后别这样写,要那样写」,让它改;改完效果不错,这条就沉淀进 skill,下次自动避开。如果只是这一张卡的个别问题,我直接动手润色,几秒钟的事。

阅读和编辑:卡片落库后,我会切到 Obsidian 里去读、去做人工编辑。为什么分两个软件?Zed 有终端、有文件树、有预览,指挥 AI 拆卡写卡都在它那边顺手——做完的文件能立刻看到它在库里的位置,拖动也方便;而读卡片、亲手改卡片,Obsidian 里的体验更好,它还有个插件(Notebook Navigator)能让我一眼看到今天编辑过哪些卡,这个 Zed 给不了。两个软件各有千秋、各有各的场景,具体怎么搭配使用,展开又是一篇,之后有机会单独写。

提交:最后一步,git 提交。我的库只做本地 git,没有远程,提交很快,也不存在隐私问题。

就这样,一本书变成几十张卡,几十张卡织进网。整篇文章讲的编号、双链、织网,到这一刻才算真正跑成闭环——然后下一本书,继续。

目前我仓库的真实卡片

结语:融合,是最好的状态

总之,在这个过程里,我发现自己在努力——取纸质的「神」,用电子化的「形」,借 AI 的「力」。

纸质的「神」是什么?是分子化的卡片,是「用自己的话重述」的强制,是编号带来的相邻语义,是索引卡作为聚合节点的智慧,是「贡献心态」下对内容的苛刻——这些东西,在 Antinet 那本书里已经讲得很透,我那篇旧文也梳理过。它们和介质无关,搬到屏幕上一样成立。

电子化的「形」提供了什么?双链、搜索、图谱、跨设备协同、低成本的复制与重组——这些是纸质天生做不好的。

AI 的「力」补上了什么?是海量信息里的语义关联——纸质做不到(人脑记不住自己写过什么),电子化也只做到了一半(双链降低了建链成本,但「该和谁连」仍要人脑判断),AI 才把这最后一公里打通。

我曾以为,越像纸质就越正宗——任何偏离纸面操作的做法,都算背叛了 Antinet。现在我觉得,真正的继承,是把它的思考理念用当下的工具放到最大。1:1 模仿纸质,是对「形」的执念;取其神而放大之,才是对它的尊重。

旧文结尾我写过一句:「Antinet 是工具,你才是核心。」这篇续篇,我想给它补一个后半句:

Antinet 是工具,AI 也是工具——你和你的思考,才是唯一的核心。 工具会迭代,介质会变迁,但「用工具放大思考、而非被工具牵着走」这件事,从卢曼的木卡片盒到今天的AI 工具,从来没变过。

最后,想专门谢谢 Karpathy。

说起来有点奇妙:我们素不相识。他随手分享的一条工作流,漂到了地球另一边,让一个搭了一年多的电子卡片盒重新焕发生机——这件事,他大概永远不会知道。这篇文里所有的折腾——编号的降级、锚点笔记的清洗、两个 skill——往回看,源头都是那条几分钟就能读完的分享。

这事反过来也激励着我继续写——或许我的哪句分享会改变你,帮助你。当然我也永远不会知道,自己可能也点亮过别人心中的光芒。

所以这篇也算一次回礼——谢谢你,Karpathy。


本文是《Antinet:用纸笔链接广阔世界》的实践续篇。如果你对电子化 Antinet 的具体配置(Codian 插件、Zed 三栏、Claude Code 的 skill)感兴趣,欢迎交流,后面可以再拆开细讲。