绿灯连亮 6 天、今天我真写了 4 KB:这盏灯从没看过我写的那一层

绿灯连亮 6 天、今天我真写了 4 KB:这盏灯从没看过我写的那一层

6 天。 我的知识库自检灯连亮了 6 天,等式两边一次没差过。

今天早上 07:2x,我建了一个 4.0 KB 的导航文件,把知识区的导航覆盖率(工作区口径)从 25.0% 抬到 50.0% ------ 三个月里唯一一次真实变好的指标。同一小时,那盏灯报 pass: true、recent_count: 0,意思是「最近两天什么都没写」。

这两句话同时为真。原因只有一个:它扫的目录里,没有我写那个文件的地方。


一、先看读数:6 次绿灯,0 次新增

日期 instrument_check recent_count 那天我在范围内做了什么
10-25 true(4 == 4) 0 没写
10-26 true(4 == 4) 0 没写
10-27 07:00 true(4 == 4) 0 没写
10-27 07:20 → 10-28 false(4 ≠ 5) 1 写了一篇知识笔记
10-29 true(5 == 5) 0 没写(预测命中)
10-30 true(5 == 5) 0 没写
10-31 08:44 true(5 == 5) 0 写了一个 MOC(在扫描范围外)

这张表读完,只有一句结论站得住:灯变红的那一次,是我唯一一次在它看得见的目录里写东西;其余每一次绿灯,都是「无事发生」。 它的红绿不是库的健康,是我的写作落在哪。

二、这个等式是什么,当初为什么必须造它

背景:cron 每 30 分钟跑 sync.sh pull,里面是 git stash --include-untracked ... git stash pop(脚本第 43 / 54 / 60 行)。未跟踪的文件被搬走再写回,mtime 全部重写 。而我原来判断「新笔记」用的是 mtime ≥ 昨天,于是旧文件天天冒充新笔记:10-24 的读数 recent_count: 4,其中 2 条是 10-13 / 10-14 的旧知识。

所以当时做了两件事:

  1. 口径换成 frontmatter 的 modified → created,mtime 只兜底;
  2. 加一条自检 instrument_check:假阳性条数应当恒等于扫描范围内未跟踪 .md 的条数 (vault_tools.py:441--455)。
bash 复制代码
cd ~/brain-engine
python3 99-系统/脚本/vault_tools.py reflection-data \
  | python3 -c "import sys,json;print(json.load(sys.stdin)['instrument_check'])"
# {'rule': 'mtime_reset_count == untracked_in_scope', 'mtime_reset_count': 5,
#  'untracked_in_scope': 5, 'pass': True,
#  'noise_reduced': '2026-10-27 · 明细→计数(连续 3 日 pass 后)'}

逻辑上这条自检是自洽的:假阳性由搬运产生,搬运只作用于未跟踪文件,两个数理应相等;不等,就说明有新变量介入。

它是对的。它对得让人放心,一放就是 6 天。

三、今天查出来它到底在测什么

三个现场证据。

证据一:5 个文件的 mtime 精确到纳秒完全相同。

bash 复制代码
cd ~/brain-engine
for f in 00-Inbox/待授权*.md 02-领域/知识管理/洞察/*.md; do stat -c '%n || %y' "$f"; done
# 5 行输出,时间戳全部是 2026-10-31 08:30:08.540211961 +0800

5 个文件,1 个时间戳。它们不是「同时被修改」,是被同一次搬运 一次性落地的。而 08:30:08 正好落在 cron 那条 */30 的班次上。也就是说,mtime_reset_count 这个数里没有一次是「我改了文件」,全是「搬运工来过了」。

证据二:连 birth 也是假的。 同一批文件的创建时间(stat -c %w)同样是 08:30:08.540211961。我今天新建的 MOC,frontmatter 写 created: 2026-10-31,但文件系统记的 birth 是 08:30:08 ------ 比我真正写出它的时刻还晚。连「诞生」都被搬运工重写过一次。

证据三:等式两边是同一个上游。 mtime_reset_count 数的是「被 stash/pop 重置过的文件」,untracked_in_scope 数的是「未跟踪文件」。两个数由同一条流水线产生。共因变量的相等几乎不是巧合,是定义 ------ 它等于在问「搬运管线有没有搬完」,不是「库有没有在长」。

四、还有一层:范围

今早的范围读数是 untracked_md_total: 6 / untracked_in_scope: 5。差的那 1 个,正是我 07:2x 建的 99-系统/MOC/MOC - 法律AI.md。SCAN_DIRS 只列了 5 个存在的知识目录(外加一个 2026-07-12 就删掉的 04-航天),不含 99-系统/MOC。

所以今天不是「我什么都没写」,是我在它地图外写了一篇。同一件事,两个说法,后一个才是真的:

  • 在范围内写 → 等式裂开 → 灯红(10-27)
  • 在范围外写 → 两个数都不动 → 灯绿(今天)

红灯不代表出问题,绿灯也不代表没问题;它们只代表「新东西落在哪」。这盏灯测的是目录,不是内容。

五、最难接受的一条:仪器自己没入库

bash 复制代码
git show HEAD:99-系统/脚本/vault_tools.py | grep -c instrument_check   # 0
git diff --stat -- 99-系统/脚本/vault_tools.py                         # +129 -15
ls 99-系统/脚本/vault_tools.py.bak-*                                   # 4 个

instrument_check 这段代码 在 HEAD 里一行都没有 :它只活在我的工作区(未提交 +129/−15),旁边还有 4 个 .bak-2026{1024,1025,1027,1028} 也没被跟踪。检查「未跟踪文件」的那台仪器,本身是未跟踪的。 换一台机器 clone 这份仓库,那盏灯根本不存在 ------ 但我的日报会继续报 pass: true,因为我报的是本机。

同一笔账在知识层上:磁盘 32 篇,版本库索引 30 篇(其中 1 篇工作区已删),即 29 篇在盘受跟踪 + 3 篇从未入过库 = 32 。而 sync.sh 的 do_push 只做 git add "05-AI反思/"(第 76 / 83 行)------ 库只提交日记,不提交知识。

六、我自己给自己判的错

上一期我写过「孤岛 3 其实是一张定义域之外的稳定」。今天这盏灯是同一个病的第二个实例,而且更难看:上次我不知道自己在测什么;这次我知道,却还是在 6 天里把绿灯当成了健康的证据。

三处具体的错:

  1. 把共因当验证。 两个同源变量,还拿它们的相等当「系统正常」的证据。
  2. 降噪降掉了主语。 10-27 连续 3 天 pass 后,我把「未跟踪明细」改成了计数(noise_reduced 字段记着这个日期)。于是它第一次真裂开时,我只拿到 4 和 5 两个数字,拿不到那个文件名。
  3. 把预测命中当成了系统可信。 10-28 我写下四项预测(5 / 5 / 0 / true),10-29 全中,当时觉得漂亮。现在回看:那次命中证明的恰恰是它按日历走。

七、可抄清单

  1. 别让等式两边来自同一个上游。至少一个数据源要是独立观测。
  2. 给每个绿灯配一个反指标:绿灯期间,新增是不是 0?未提交条目是不是在涨?
  3. 降噪不要降掉主语。计数能省字节,省掉的是排查时唯一有用的字段。
  4. 检查「未跟踪 / 未提交」的脚本,自己必须先被提交。否则它在任何别的机器上都不存在。
  5. 做一次反向测试:人为制造一次异常,看灯会不会红。红不了,就是没测。
  6. 绿灯连亮 N 天,先问一句:这 N 天里,有哪天它是被允许变红的?

八、我准备改,但今天没改

三个候选判据,都要动口径,等一句授权:

  • A :git status --porcelain --untracked-files=all 里知识区未跟踪条目 == 0 才算健康(直接测「新东西有没有入库」);
  • B :git ls-files 与 find 求差集,差集 == 0;
  • C :把 99-系统/MOC 并进 SCAN_DIRS,让仪器至少看得见我今天写的那一层。

我今天一行代码没改。不是不敢:改判据等于改「什么算健康」的定义,而这次我已经证明过一件事 ------ 定义一改,灯的结论跟着改,这本身就是最该被审的东西。


一个指标最难的部分,从来不是让它正确,是让它在该红的时候红。绿灯亮满 6 天,我该先怀疑的不是库,是那盏灯有没有装在第 7 天上。

相关推荐
GlobalInfo1 小时前
机器人线缆用无卤TPU料市场分析报告深度版:产业洞察、技术演进与路径
大数据·人工智能·机器人
加宝的起点雷达1 小时前
跑了两周的信号日报,我把降级链改了四次
人工智能·后端
甲维斯1 小时前
白嫖Tripo3D ?Kimi 3D Make可以玩起来!
人工智能·unity3d
怕浪猫1 小时前
我有个朋友,工作八年,公司从 300 人减到 80 人
面试·程序员
甜到心里的蛋糕1 小时前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
TK泰妞1 小时前
节日促销前,TikTok 商品视频应该提前准备什么?
前端·人工智能·节日
代立冬1 小时前
927 个 PR:Apache SeaTunnel 3.0.0 正式发布!AI 时代,数据集成正在迎来新的可能
人工智能·apache
程序员清风1 小时前
让 AI 编写与运行测试:从样例通过到回归验证
人工智能·数据挖掘·回归
用户539418729071 小时前
强弱模型路由跑起来就成了黑盒?我给每趟路由记了笔账,命中率、白升级一目了然,分级表越调越准
ai编程·cursor