>wangyr@context: ~$

作品九

随手记系统

2026-09-15 起 · 每分钟同步一次,每天在跑 · 十五条随手记已落成文件

想到什么,随手一句,就进了我自己的系统。手机或电脑,有网没网,都一样。

记下的这一句当晚出现在当天的日记里,我的 AI 读得到它,值得留的归进知识库,要做的在卡片上勾成任务,回头翻卡片墙还能再看到它。记录端用现成的开源软件,中间那段由我写。

手机 下午想到:把周报 改成按问题分组 下午想到:把周报 改成按问题分组 当晚进日记 AI 在会话里读到它 归进知识库
一句话从手机记下,进收件箱,进当天的日记,在卡片墙里能回看。自动循环。最后一格是它接上的三处,点标签能过去。

它是什么:一个随时能记的入口,一条把随手记送进我系统的管道,一面回看的卡片墙。

  • 入口:手机上的开源客户端 Moe Memos,电脑上一个窗口,背后是开源的笔记服务 Memos。打开就记,断网先存在手机里。我不造应用。
  • 管道:记下的每一条自动进我文件夹的收件箱,和我抓来的文章并列等整理;每晚自动挂进当天的日记。这段由我写。
  • 卡片墙:在 Obsidian 里按天看卡片、按标签筛、随机回顾,也能在那里直接记一条;卡片上的任务勾一下就是真勾上。这面也由我写。
  • 不用 flomo 这类随手记应用的原因只有一条:它们的终点是它们自己的数据库,我的终点是我自己的文件夹。只有在我的文件夹里,日记、AI、知识库才接得上它。
  • 一套 harness:唯一写入端、单向、不覆盖、不删、性能红线这类不产出内容、只约束产出的工程,六项,每项约束入口、管道、卡片墙中的某一层。
Obsidian 左侧边栏里的随手记卡片墙:左栏是笔记、标签、天数的计数和近十六周的热力图、全部笔记、随机回顾、标签树;右栏顶上是输入框和搜索框,下面是按天分组的卡片,每张卡一条随手记,带时间、复选框和标签
这是它在 Obsidian 里的样子:顶上记一条,下面按天看卡片,左栏按标签筛。

它帮我做四件事。

  • 任何时候都能记:手机和电脑随时打开就记,断网先存本地,联网自动补上,记下的时间不变。见记录端一节。
  • 想过的事进当天的日记:每晚自动挂进去,第二天翻日记就看到昨天想过什么。见日记一节。
  • 整个系统接得上它:记下一分钟内,这一条就是我文件夹里的一个纯文本文件,我的 AI 读得到,整理后归进知识库。见服务、镜像两节。
  • 回头能看到:在笔记软件里按天看卡片、按标签筛、随机回顾,卡片上要做的事勾了就算数。见视图一节。

为什么可信:终点是我的文件夹,不是别人的应用;管道只走一个方向,不覆盖,不删。

  • 终点是文件夹里的纯文本,所以日记能引用它,AI 能读它,知识库能收它。留在别人应用的数据库里,这三件一件都接不上。
  • 需求拆到底是三件:打开快,两端都能记,终点是我的文件夹。前两件已经有开源软件做得好,第三件没有现成的,我只写第三件。
  • 管道单向:服务是唯一写入端,新记、改、删都只在服务里发生;文件是镜像。我在文件夹里改过的文件,管道不覆盖、不删;整理在文件夹里另外发生,不回流。
  • 单向镜像里最危险的动作不是写,是删。删除的规则在镜像一节单讲。

它和什么连着:我想到的事从这里进来,落在收件箱,当晚接上日记,整个系统从收件箱接上它。

  • 输入来自手机上和电脑上的我:想到什么,随手一句。
  • 输出去个人日记系统:每晚把当天的随手记挂进日记,只挂引用,原文留在收件箱。
  • 共用部件是收件箱,和个人信息获取系统、个人知识库系统共用;记录端用 Memos,卡片墙在 Obsidian 里。
  • 个人 AI 操作系统把它当想法的入口,归在记忆层;信息获取系统的收件箱视图沿用了这面卡片墙的做法。

它由两个记录端、一个服务、两段管道、一个视图构成,下面按一条随手记走过的顺序讲。

  • 两个记录端:手机客户端,电脑上的网页窗口。
  • 一个服务:跑在我电脑上的 Memos,唯一写入端。
  • 两段管道:服务到收件箱里的文件,文件到日记。收件箱是我文件夹里放未整理材料的区域。
  • 一个视图:笔记软件里的卡片墙,读文件;在那里记的一条发回服务。
  • 顺序:全图,然后记录端、服务、镜像、日记、视图,再是 harness,最后是演化和现状。
  1. 全图:一条随手记走过的路
  2. 记录端:不造应用,用开源的客户端
  3. 服务:本机一个服务是唯一写入端
  4. 镜像:每条一个文件,每分钟同步一次
  5. 日记:每晚只挂引用,不复制正文
  6. 视图:在笔记软件里看卡片,也在那里记
  7. Harness:六项工程,每项约束一层
  8. 演化:两个晚上,九处改口
  9. 现状:分三档说

全图:一条随手记走过的路

一条随手记从记下,到进日记、在卡片墙里能回看,经过四站,每站只做一件事。

站做什么实际是什么
记录端记下,断网先存本地手机上的 Moe Memos;电脑上一个打开本机服务的网页窗口
服务唯一写入端,存全部随手记本机一个 Docker 容器里的 Memos,版本锁在 0.30.0。Docker 是在本机跑隔离程序的工具
镜像把服务里的每条随手记写成一个文件一个同步脚本,系统定时任务每 60 秒跑一次,落到文件夹的收件箱
日记把当天的随手记挂进日记一个进日记脚本,每天 22:50 跑一次,只写引用
视图看,筛,回顾,记,勾任务Obsidian 插件,读文件;输入框里记的一条发回服务;卡片上勾任务只改文件里那一行
手机客户端 断网先存本地 电脑窗口 打开本机服务 写入只从这里进 服务 唯一写入端 · 本机 每 60 秒 收件箱里的文件 每条一个 · 单向镜像 每晚 22:50 当天的日记 只放引用 读文件 视图 卡片 · 标签 · 输入框 输入框写回服务
红色线是全部写入的路径:三个入口都进服务,服务是唯一写入端。其余线只读、只镜像、只引用。视图里的输入框不写文件,绕回服务;卡片上勾任务是唯一直接改文件的动作,只改那一行。

让它不毁我的东西、不让我等的工程有六项,见 Harness 一节。

记录端:不造应用,用开源的客户端

想记的时候打开就能记:两个记录端各用一个现成的开源客户端,各自能离线。

「没网也能记」不靠管道,靠两个记录端各自的离线能力。

服务版本锁在 0.30.0,锁的理由在手机端。

服务:本机一个服务是唯一写入端

记下的每一条只存一处、只由一处管:我电脑上的一个 Memos 服务。文件夹里的镜像因此永远和它对得上。

数据库放在文件夹外面,不放在被云盘同步的文件夹里。

手机连服务走私有网络,不上公网。

唯一写入端这条约束落在三个位置。

镜像:每条一个文件,每分钟同步一次

记下一分钟内,这一条就是我文件夹里的一个纯文本文件,AI 和知识库从这里接上它:同步脚本每 60 秒跑一次,把服务里的每条随手记写成一个文件,落在收件箱。

每条一个文件,不按天合并。

先进收件箱,不直接进日记。

同步规则以「不毁我的东西」为先,五条。

情况脚本怎么做
文件被改名按文件头里的编号认出来,就地更新,不另建
文件在本地被改过不覆盖,不删除,只记一行日志
文件被移出收件箱或删掉,服务里那条没再改不重建
服务里删了删对应文件,仅限本地没改过的
服务返回零条,之前同步过跳过删除,防止误清空

删除一个文件要同时满足三件事。

改动检测用内容指纹,不用服务给的更新时间。指纹是把一条的内容算成一个短码,内容一变短码就变。

脚本上线前在临时目录跑了九种情况,再在真实收件箱跑一遍确认走通。

日记:每晚只挂引用,不复制正文

白天想过什么,晚上自动出现在当天的日记里:进日记脚本每天 22:50 跑一次,在日记里加一段「随手记」,每条一行时间加一个引用。日记每天一份,是文件夹里的一个文件。

备选的两个方案我都否了,选了第三个。

「随手记」段放在「今日记录」段之前,位置由另一个程序决定。

每晚重算最近七天,不只写今天。

视图:在笔记软件里看卡片,也在那里记

回看在这里:笔记软件里一面卡片墙,按天看、按标签筛、随机回顾。插件读收件箱里的随手记文件,不改名、不删任何文件。

界面见首屏截图;那张图按「反脆弱」标签筛出了一天的五条。

视图顶上有一个输入框,记的一条发回服务,不写文件。

性能红线:打开和记下都在三秒内。红线落在四条写法上。

这个文件夹在软件里可见的文件约六十六万个
修前:文件列表贴一次标题一千五百三十四毫秒,反复触发
修后:文件列表贴一次标题零毫秒
软件冷启动后插件才加载,不在插件能力内约十八秒

文件列表里显示开头一句,文件名不动。

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

harness 不产出内容,只让产出稳定:谁能写、往哪个方向写、什么情况不许删、打开要多快,每一条都落在管道上一个具体位置。

项做了什么约束哪一层
服务是唯一写入端新记、改、删都只在服务里发生;视图里的输入框也发回服务,不写文件。防两处各写一份,镜像从此和服务对不上服务;视图的写入路径
管道单向同步脚本只从服务读,只往文件写,从不往服务写;拉取失败直接退出,不写不删。防两个方向同时写,谁也不知道哪份是准的镜像:服务到文件的那段管道
本地改过不覆盖我在文件夹里改过的文件,同步脚本不覆盖、不删除,只记下来;写文件先写完整再放进收件箱,文件夹里不出现半个文件。防覆盖我的整理镜像:服务到文件的那段管道
空结果不删服务返回零条时不做任何删除。防一次空结果清空整个收件箱镜像:服务到文件的那段管道
日记只挂引用只挂引用不复制正文;只改日记里两个标记之间的那一段,别的段落不碰。防第二份正文,防改坏日记里的其他内容日记:文件到日记的那段管道
视图性能红线打开必须立刻;插件只读收件箱那一个文件夹,只查随手记的条目,不遍历整个笔记库。防打开卡住、记一条要等视图

演化:两个晚上,九处改口

从起念到全链路打通用了一个晚上,之后的改动全部来自我用了一次之后的纠正。

起念:想要一个类似 flomo 的随手记,手机电脑都能记,以纯文本进文件夹。查到本机有一个旧实例,没有记录,不迁移,另起新实例并锁版本09-15 20:15
推翻「按天聚合成一个文件」的建议,改为每条一个文件09-15
手机第一条,十九秒落成文件。两分钟后断网记一条,联网后自动补传,时间仍是记下时的时间09-15 20:55
进日记:否掉「标记已处理」和「删源文件」两个方案,改为只放引用,源文件不动。随手记段的位置从「今日记录」里面改到它前面09-15 21:02
提议做插件。第一版明确不做「在里面直接记」。当晚改口,加了输入框,走服务不走文件09-15 22:05
文件列表显示开头一句:先改另一个文件列表插件的设置,发现我用的是软件自带的文件列表,改由插件直接改自带列表的显示文字09-15
图标从便签换灯泡,原来的图标我没认出来。默认位置从右侧边栏改左侧边栏。启动时把视图拽回设定位置的做法删掉,改为手动拖到哪就留在哪09-15 23:09
「记录中」卡一分钟。定三秒红线。全库遍历改为只查随手记文件;同步任务最小间隔从十秒改一秒09-15
验证方式改口:为验证关开软件七八次之后,改用软件自带的命令行重载插件,不再打断我正在用的软件09-15
进日记任务第一次按点自动跑,两天的引用挂进日记。信息获取系统的收件箱视图看到这个插件后,从嵌网页改为用软件自己的界面重画09-16 22:50

没变的是管道的三条约束,变的是界面上的每一处。

现状:分三档说

写这一页的日期是 2026-09-17。系统建成两天,三档分开说,不混。

在跑,有真实使用记录
  • 同步任务每 60 秒跑一次,从 09-15 20:34 起在跑,最近一次写入 09-17 10:39,错误日志零行。
  • 进日记任务 09-16 22:50 第一次按点自动跑,把两天的随手记引用挂进了两天的日记。
  • 手机客户端已登录,三天里每天都有随手记落成文件。断网记录在真机上测过一次。
  • 视图装在我的笔记软件里,输入框、搜索、随机回顾、热力图筛选、文件列表标题在真机上验证过。
建了,不常跑或没走通
  • 附件下载:代码在,三天里零个附件,没有真实走过。
  • 同步规则里的本地改过不覆盖、移走不复活、空结果不删:在临时目录测过,真实收件箱里还没发生过这些情况。
  • 归档状态的镜像:代码在,没有真实归档过一条。
  • 电脑上的网页窗口建了,没有使用记录可查:服务不记录一条随手记从哪个入口进来。
设计中或未测得
  • 文件多起来之后视图的性能没测过。现在只有十五条。
  • 文件列表标题依赖软件的非公开结构,软件升级后是否仍有效未测。
  • 给文件夹瘦身以缩短软件冷启动,只是建议,没做。

数字只报能证明系统真实存在的。

随手记,每条一个文件:09-15 十三条、09-16 一条、09-17 一条十五条
同步日志,09-15 20:34 到 09-17 10:39:二十四次新建、两次更新、八次删除;错误日志零行三十四行
第一条随手记从手机记下到落成文件十九秒
进日记任务已跑,一次手动、一次自动两次
同步脚本、进日记脚本,只用标准库二百一十三行、一百零九行
插件源码与样式,版本 0.1.0,没有版本库九百五十四行、四百二十三行
修完性能后实测:打开面板、记下到卡片出现、请求服务十五毫秒、二十六到四十四毫秒、五到二十一毫秒
服务版本,锁定0.30.0

随手记落进的收件箱和日记,是作品一里记忆层的一部分。这个视图的做法之后被信息获取系统的收件箱视图沿用。它背后的想法怎么来的,见思考。