十一月的广州,终于褪去了那种黏腻的闷热。商学院图书馆四楼靠窗的那个位置,空调出风口一直有轻微的低频嗡嗡声。我合上正在看的《深入理解计算机系统》,脑子里突然闪过一个关于毕业设计架构重构的灵感。
很细微的一个点,关于状态机流转的优化。我习惯性地按下 Cmd + Space,输入 Notion,回车。
屏幕上出现那个熟悉的白色窗口,接着是中间那个灰色的加载圆圈。它转了两圈,三圈。然后界面框架加载出来,侧边栏那些层层叠叠的文件夹(Workspace、Projects、Notes、Archive……)挤满视线。我点开“Notes”,新建一个页面,光标停在巨大的“Untitled”标题上。
就在这一刻,我突然觉得很疲惫。那个关于状态机的灵感,在等待加载和面对这套庞大文件系统的几秒钟里,像水汽一样蒸发了。我对着屏幕发了一会儿呆,最后按下 Cmd + Q 退出了应用。
这就是我决定自己写一个笔记软件的那个晚上。
市面上的笔记应用,真的越做越重了。
Notion 无疑是伟大的产品,它的 Block 理念和 Database 几乎重塑了现代工作流。但当它变得无所不能时,它就变成了一个操作系统。每次打开它,我都像是在进入一个严肃的办公环境,需要端正坐姿,想好标题,选好分类,然后再开始“创作”。
语雀也是一样。它的知识库体系非常完整,适合用来沉淀长篇大论的技术文档或者团队协作。但我只是想记下一句刚刚在脑子里冒出来的话啊。我不需要目录,不需要封面图,不需要双向链接,更不需要一个提醒我“今天还没有更新”的打卡热力图。
Obsidian 很好,本地化做得极致,但那套基于插件的生态很容易让人陷入“折腾工具”的怪圈。我见过太多人在里面建构庞大无比的宇宙,花几个小时去调整图谱的节点颜色,却很少真正写下几行属于自己的思考。
工具的“摩擦力”太大了。每次记录之前的心智负担,都在无形中扼杀那些脆弱的、转瞬即逝的想法。
我只想要一个地方,打开就能写,写完就关掉。它应该像贴在显示器边上的那张黄色便利贴一样简单,甚至不需要你给它起个名字。
于是有了 thus-note。
名字里的 “thus”,是“如此”、“就这样”的意思。没有那么多宏大的愿景,就是这样而已。写下什么,就是什么。
在构思它的设计理念时,我给自己定了一条死规矩:克制。只做最核心的事,任何会增加记录阻力的功能,一概不加。
打开即写,零学习成本
我把启动速度和输入路径优化到了极致。没有闪屏,没有复杂的欢迎页,没有要求你先创建一个笔记本。双击图标,界面弹出来,光标就已经在输入框里闪烁了。
你不需要思考把它存放在哪里,也不用管排版。大脑的潜意识是流动的,记录的动作也应该是流动的。敲下回车,这段文字就被接住了。整个过程,你的手甚至不需要离开键盘去碰鼠标。
Markdown 支持
作为软件工程专业的学生,Markdown 已经成了我的肌肉记忆。加粗、斜体、代码块、列表,这些基本的格式化需求,通过几个简单的符号就能完成。
我没有做那种复杂的富文本工具栏。当你试图去调整字体大小或者颜色的时候,你的注意力就已经从“写了什么”转移到了“看起来怎么样”上。在 thus-note 里,# 就是标题, ` 就是代码。它保持着一种程序员式的克制和干净。
想法泡泡(类似 flomo 的卡片流)
这是我最依赖的一个功能。很多时候,我们的思考不是一整篇文章,而是碎片的。
大四这年,除了维持 4.02 的绩点和准备两次国奖的答辩,我大部分时间都在写代码和看论文。很多真正的感悟,往往发生在从宿舍走到食堂的那条林荫道上,或者是在深夜洗澡的时候。
我把这些碎片化的记录做成了类似气泡的卡片流。它不需要标题。你可以把它当成一个只有你自己的微信对话框。想到什么,就丢进去。今天丢进去一条关于 TypeScript 泛型推导的疑惑,明天丢进去一句在书上看到的好句子。
它们按照时间线安静地排列在那里。当你回溯的时候,你会发现这些看似不相关的气泡,在某一天会自动连成一条线,变成一个完整的想法。这种感觉,比刻意去构建一个知识图谱要自然得多。
本地优先,可选云同步
我始终对纯云端的应用有一种不安全感。不是怕数据泄露,而是怕失去对数据的控制权。如果哪天服务器宕机了,或者公司倒闭了,我的那些思考去哪了?
所以 thus-note 是 Local-first(本地优先)的。你写下的每一个字,都首先以最纯粹的文本格式存在你自己的硬盘里。不需要网络,你也可以随时打开、搜索、修改。云同步只是一个可选项,它默默地在后台工作,确保你在另一台设备上也能看到最新的状态,但它永远不会反客为主。
就算有一天我不维护这个软件了,你的数据依然在那里,用任何一个文本编辑器都能打开。
暗色模式
写代码的人,大抵都偏爱暗色模式。宿舍晚上熄灯后,只有屏幕散发着光。白色的背景在这个时候显得太过刺眼。
我花了一些时间去调色,没有用纯粹的死黑(#000000),而是选了一种带点灰度的深色(类似 VS Code 的默认暗色主题)。在这个模式下,文字的对比度被调整得刚好,不会产生光晕。深夜里,看着屏幕上的字一行行出现,只有键盘轻微的敲击声和机箱风扇转动的声音,那种沉浸感是非常让人安心的。
在技术实现上,我选择了 TypeScript。
作为一门带类型的语言,TypeScript 在项目规模逐渐变大时,能提供一种难以言喻的安全感。定义好 Interface,处理好状态的流转,每一次编译通过,都像是在给建筑打下一根坚实的桩。
我没有选择现在很火的跨端框架去打包一个庞然大物,而是尽量用 Web 技术栈的轻量化方案。在广州商学院这几年的学习里,我明白了一个道理:技术选型没有绝对的先进与落后,只有适不适合当前的问题。对于一个主打“轻”的笔记应用,冗余的依赖就是原罪。
我在 GitHub 上开源了它的全部代码,采用了 AGPL v3 协议。
敲下 git push 的那个凌晨,我看着终端里滚动的进度条,心里其实很平静。这并不是一个能改变世界的开源项目,它甚至显得有些简陋。但我知道,这是我真正需要的工具。
现在,thus-note 就常驻在我的电脑后台。
有时候在写需求文档,脑子里突然跳出一件要买的东西,我会切到它,敲下“记得买咖啡豆”,然后切回代码编辑器。整个过程不到三秒钟。它不会打断我的心流,就像一个沉默的朋友,帮你接住那些随时可能掉落的念头。
我们这个时代,关于“效率”和“生产力”的讨论太多了。无数的文章教你如何构建第二大脑,如何使用复杂的标签系统管理人生。但很多时候,我们只是在用“整理工具”的忙碌,来掩盖“无法产出”的焦虑。
最好的工具,不是功能最强大的那个,而是你愿意每天用的那个。它不应该要求你去适应它的逻辑,而应该退居幕后,成为你思考的延伸。
就像现在,我在 thus-note 里敲下这篇博客的最后一个字。没有多余的排版,没有复杂的导出选项。我只需要全选,复制,然后关掉它。
屏幕又回到了干净的桌面。而我想说的话,已经全部留存下来了。这就足够了。