← 返回文章归档
BUILD NOTE / 2026年8月10日

我想让我的学习工具互相串通

从一个不那么像债主的背词工具开始,我把 B 站、Obsidian 和桌宠慢慢接成了一条还没闭合的学习循环。

DIYCodex学习工具
乌萨奇动作概念图,展示跳伞、入水、平台交互和记忆反馈等连续动作

我想让我的学习工具互相串通。这念头是最近才有的。也不算有,准确地说,是最近才把它说清楚了。以前只是隐隐约约觉得哪里不对。

在B站刷到一个视频,标题看上去有用,顺手丢进收藏夹,想着晚上再看。点下收藏那一刻,事情就算处理完了。“万一再也找不到”的慌张消失了。这倒不奇怪。奇怪的是另一件事——手指点下去的瞬间,人会觉得自己已经往前迈了一步。收藏这个动作太轻巧了,轻巧到足够骗过自己:你已经行动了。满足感到手了,至于视频里到底讲了什么,反倒没那么要紧。至于后来,后来当然也没再打开过。

网课倒是看过几集。第一集还记了笔记,第二集调成倍速,第三集之后就没有之后了。现在它停在某一集的十七分二十三秒,每次打开都能看见那个数字,像一个不打算再往前走的钟。背单词软件的会员也还在,每个月扣着费,决心倒先过期了。这些工具,单独看都挺好的。放在一起就不对劲了。谁也不认识谁。

B站知道我看到第几集,却不知道我理解了多少。连个总结也不会自己生成。Obsidian收下许多笔记,却不知道哪些已经忘了。电脑里的学习资料也是,东一堆西一堆,散在各处,不成系统。背词软件每天提醒我复习,但它只认自己的词库,跟我正在看的课程毫无关系。它们都在做对的事。只是这些事情之间,竟一点联系也没有。工具越来越多,学习却转不起来。

我想做的不是再添一个学习软件,而是把已经存在的东西接起来。前一个工具产生的东西,自动变成后一个工具的材料。学过的不再用完即弃,能在系统里来回流动。不过一开始我没想得这么全。我只是想做一个压力小一点的背单词软件。

市面上的背词软件已经很成熟了。正常来说,我没有任何理由再做一个。就像一个不大做饭的人,嫌楼下馆子的菜单字体不对,决定自己回家鼓捣煤气灶。但我还是想试试。每天打开软件,最先看见的不是今天可以学什么,而是还有多少没完成。待复习一百多个,新词几十个,数字清清楚楚。我还没开始学,已经知道自己落后了。它越科学,我的失败就越精确。今天欠下的单词明天会回来,通常还带上几个新的。图标一天比一天沉,有时候还没点开人已经累了,最后索性把通知划走。压力没有消失,只是从屏幕挪进了心里,找了个安静的角落住下。

我想做一个不那么像债主的背词软件。任务不用铺天盖地,一次只处理眼前几个词。也不想每次打开都像被讨债。看到桌宠站在那儿,总想点它一下。点一下,今天的词就背了。背对了它跳起来,背错了它歪个头。这比红色数字管用。

问题是,我不会写代码。我知道自己讨厌什么,大概知道想要什么,唯独不知道这些东西怎么变成代码。从前碰到这种情况,我会把想法放进一个文件夹,名字叫“以后再做”——大致是一种连回收站都不忍心自动清理的日期。但那段时间我开始用 Codex。我只告诉它,想做一个能抽背单词的小程序。它没让我先学 Python,也没问商业模型,闷头开始建文件、配环境、往外吐代码。终端里的字一行行往上冒,我偶尔认出几个英文单词,觉得自己也参与了开发。其余时间,主要任务是盯着屏幕。

过了一会儿,屏幕上多出一个窗口。

很丑。但它是我的。里面有输入框,有按钮,点一下,真的跳出一个单词。那个单词我从前见过不知多少次了,可它是从我提的需求里长出来的。从前“做软件”在我心里是件很远的事,前面横着编程语言、数据结构、各种报错。我总觉得该把那些全学会才有资格动手。Codex 没等我准备,直接把我从窗户扔出去了。姿势是不大体面,人倒是真到了外面。

到了该睡觉的点,我停不下来,把电脑搬到寝室继续改。“再改一点”跟“再看一个视频”差不多危险。按钮能用了,想换颜色;单词显示了,嫌反馈太单调;改完反馈,页面更丑了,只好回头接着改。Codex 过几分钟告诉我一次“修改完成”,我打开看一遍,马上又知道下一处想改什么。想法和结果首尾相接,几乎没有间隔。从前学完一章书,未必知道自己会了什么。Codex 不断把结果送到眼前,反馈几乎是即时的。一颗糖吃完,下一颗已经在路上了。

麻烦的是,我用的不是自己的 token。是学姐的额度。本来只想稍微试试,可程序一跑起来,“稍微”这个词就管不住自己了。Codex 大段输出的时候,终端里的字像计价器一样往上跳。我一面觉得功能有救了,一面觉得学姐的额度正加速消耗。我甚至不敢去查还剩多少。不看的时候,仿佛还在。那一晚就这样熬了一夜,一边担心蹬爆学姐的 token,一边继续往前做。

后来我也想过,那一夜兴奋的到底是什么。

是发现自己能做很多以前做不到的事?有一点。从前横在想法和结果之间的路太长,长到人还没出发,兴致已经没了。Codex 把这段路压到几分钟,我第一次摸到了自己提的需求长出来的东西。

是想做点东西去炫耀?也有一点。一个原本只在脑子里转悠的东西忽然出现在屏幕上,很难忍住不拉别人来看一眼。“你看,这是我做的。”至于其中多少是我做的,多少是 Codex 做的,当时顾不上想。一个人刚当上老板,通常不会急着审查股权结构。

是享受设计的过程吗?说实话,设计的过程并不享受。窗口丑了要改,按钮歪了不能不管,改完反馈页面更丑了,只好回头接着改。这不叫享受,更像是被什么东西推着走。

是喜欢当老板奴役 Codex 的感觉?可能。一个不会写代码的人,对着终端发号施令,看着字一行行往外冒,确实会产生某种幻觉。

还是说,只是 Codex 的正反馈来得太强烈?也是。传统学习的反馈很慢,看完一章书,未必知道自己学会了什么。Codex 每隔几分钟就告诉我一次“修改完成”,我打开看一遍,马上又知道下一处想改什么。一件事只要给反馈,人就停不下来,跟事情本身有没有意义关系不大。

大概每样都沾一点。但当时我没想这么多。当时我只想再改一点。

我把背单词的功能先做出来,然后才把桌宠接进去。原来桌宠只是在桌面上走动、停下、睡觉,动作可爱,但只是按预设顺序来回放。它不知道我在做什么,也不关心我有没有背单词,跟我隔着一层玻璃。接进去以后,事情变了。我答对一个词,它会高兴;答错了,换一种反应;到了复习时间,主动跑来找我。原本只在窗口里发生的事,落到了桌面上的角色身上。当它因为我答对单词而跳起来的时候,代码退到后面,它像是知道我做了什么,并且给出了回应。

英语单词答案展开后,桌宠在抽背窗口下方作出回应
答题不再只改变一个数字,也改变桌宠的动作。

也是从这里开始,事情逐渐失去控制。既然桌宠能回应背单词,为什么不能回应别的?熄屏的时候能不能不让屏幕直接黑掉,而是桌宠先关灯,走到床边,躺好,屏幕再暗下去?这对熄屏本身没有任何帮助,电脑不会因此睡得更香。但我还是给关灯和躺下的动作各做了几十帧。工具有时候不是为了完成一件事,而是给这件事一个过程。它没有提高效率,却让我愿意用下去。人就是这样,不给事情加点没用的仪式感,就不太提得起劲去做那些真正有用的事。

然后我试图让桌宠爬上床。这件事比我想的难得多。AI 能生成很漂亮的参考图,单张看没有问题。可一旦让 Codex 补中间帧,角色的比例、位置、动作就开始各走各的。单看每一帧都像同一个角色,连起来却不像。我让 Codex 改了很多版,最后终于忍不住问它:你懂什么叫做攀爬吗?又改了几版,还是不行。我把攀爬动作整个删了。桌宠走到床边,直接进入下一段。困扰许久的技术难题,通过取消需求彻底解决。

这大概也是用 Codex 的现实。它降低了开始的门槛,但没有消灭事情本身的难度。不是我教会了它,是我修改了自己的设计。

网页设计也是如此。我让它做一个简单舒服的学习页面,它给我端来一套管理后台——侧栏、卡片、统计数字、蓝紫渐变,一应俱全。我说不要管理后台,它把蓝色换成浅蓝,郑重宣布“已优化视觉层级和信息密度”。我让它做一间书房,它给我修了座政务大厅。有时候我会生气,给它加几个问号。后来想,Codex 听得懂压力吗?三个问号跟一个问号对它来说有没有区别?Codex 不会红温,红温的是我。

不过,为了把它骂明白,我不得不说清楚自己到底不满意什么。不是“感觉不对”,而是按钮太大、间距太挤、信息层级不清楚。不是“动作不像”,而是手没接触、身体没重心、前后帧连不上。我原只知道它做得不对,后来才慢慢知道怎样才算对。人在被迫把模糊的不满翻译成清晰的语言时,最先听明白的往往是自己。

背单词的小程序做好以后,我没停下来。Codex 给的正反馈让停下来变成了一件需要额外意志力的事。桌宠和背词之间的联动,又让我头一次看见两个原本互不相干的工具接起来会发生什么。我开始把同样的思路挪到其他环节。看网课,我做了个学习模式,记录看到哪一集、看了多久。有字幕就整理内容,没字幕就把音频转成文字,生成带来源信息的笔记。我不想让课程随着播放结束而结束。视频关掉以后,那些讲过的概念和例子还该留下点什么,而不是几天后只剩一句“这门课我好像看过”。

B站学习模式首页显示课程、分集进度、学习时长和继续学习入口
课程、分集和进度被放回同一个学习入口。

笔记随后进入 Obsidian。但把东西搬进 Obsidian 不等于学会,只是换了一处更像知识的住址。整理有时候比学习更容易让人满足——标签建好了,文件夹分好了,页面之间也出现了连线。至于那些概念到底什么意思,可以留待以后。知识管理最危险的地方就在这儿:它很容易把“管理知识”做得比“获得知识”更有成就感。前者只需要移动文件,后者可能要求你承认,某一段看了三遍还是没弄明白。

所以我又做了一个东西。一篇笔记进来以后,可以继续读、标注、拆概念,跟别的笔记连起来,慢慢整理成方法。知识库不该是个等人填满的柜子,它该随着阅读和使用继续生长。再往后,Obsidian 里标了“需要记忆”的内容,可以自动进入复习队列,由桌宠在合适的时候跑来抽背。我掌握得怎么样,再写回知识库,决定这个内容以后多久出现一次。B站负责输入,Obsidian 负责存放和连接,桌宠把该记住的东西重新送到面前。一个工具的结果成为另一个工具的起点,慢慢接起来了。

B站学习模式把课程分集整理为带关键词、本集概览和知识树的视频笔记
播放结束不是终点,分集继续长成带来源的结构化笔记。

市面上的软件要照顾尽可能多的人,我只需要照顾自己。不喜欢红色数字就不用,需要角色回应就让桌宠跳起来。许多需求放进正式产品,大概会被评价为受众太少、收益不明、开发成本太高。好在我就是全部受众。通用产品没有错,它得考虑多数人的习惯、留存和付费,不大可能因为某个人觉得提醒数字太压迫,或者非要桌宠熄屏前先关灯躺下,就单独改一套逻辑。工具一旦属于所有人,就只能有限地属于我。Codex 让这些不值得规模化开发的需求,第一次有了被做出来的可能。

不过东西做得越多,越躲不开一个问题:这些到底算不算我的能力?

有一次,Codex 忽然连不上了。屏幕上的字停在那里,下面是一句很小的“连接失败”,不严重,不悲壮,甚至客气。我点了一次重试,又点了一次,关掉重新打开,还是不行。刚才还在滚动的终端彻底安静下来。屏幕的白光落在键盘上,一格一格。它不说话,我也不说话。房间忽然显得很空。

我首先想到的是:不会真把学姐的 token 蹬爆了吧。

再点几次,还是没反应。代码没消失,文件也好端端留在电脑里,刚才做好的功能甚至还能跑。可我望着那些文件,不知道接下来该打开哪一个,更不知道某一行为什么该写在那儿。几分钟前我还嫌 Codex 这里蠢那里听不懂人话,它一离线,我迅速恢复原形。我这个老板,原来是靠员工扶着走路的。

从前我以为,程序一个个做出来,说明能力也在一点点长。那一刻发现,事情没这么简单。Codex 像部电梯,把我送到从前到不了的楼层。我推开门,看见外头风景不错,就开始怀疑自己是不是很会爬楼。这种错觉,坐电梯的人都有,走楼梯的人倒不会犯。走楼梯的人知道自己喘了多久。

但若说完全没学会,也不对。我开始知道环境为什么要隔离,Git 怎么留修改,动画为什么不能只靠两张好看的图,模糊的需求又该怎么拆成能验证的小问题。这些认识零零碎碎,远不够让我独立写出整个系统,但也不是假的。真正可疑的是,我常常把“在 Codex 帮助下能做到”当成“我已经掌握了”。这两样东西贴得很近,网络好的时候尤其分不清。像把导航的声音当成了自己的方向感,一路走得很顺,直到没信号了,才发现每条街的名字都很陌生。

经过反复重试、关掉重开,以及对着同一句报错进行了一段毫无技术含量的凝视,连接恢复了。我长出一口气,刚才关于能力、依赖和自我怀疑的种种思索立刻退到一边,接着让它改代码去了。道理可以以后再想,需求正等着上线。

现在这套循环还没完全闭合。有些部分能用了,有些还在长。课程可以一点点变成笔记,进入知识库,等着被拆开、连接、重新使用。桌宠已经能参与背词和熄屏,但让知识库里标了“需要记忆”的内容自动跑来找我,还得继续往下接。有时候程序跑得很好,有时候数据对不上,有时候 Codex 又把一个简单页面做成政务大厅。我生气,加问号,重新说需求,然后看着东西再往前长一点。

它未必会变成一套人人都需要的软件。它带着许多只有我自己才明白的麻烦:喜欢的角色、奇怪的动画、看网课的习惯、容易拖延的时刻,还有那些别人看来毫无必要、我却偏要留下的交互。这大概就是我想要的 DIY。不是从零写下每一行代码,也不是把所有事丢给 AI,而是按自己的需要决定什么东西该存在,它们怎么联系,以及每次学习结束以后还能留下什么。

晚上不学了,我点下熄屏按钮。桌宠关掉灯,走到床边,躺下,屏幕慢慢暗了。笔记还留在知识库里,等着下一次被打开、拆分,或者在未来某天重新回到桌面上问我。

至于攀爬,已经没有了。