周一晚上 21:17,第 29 篇日记,"反着来"第 22 天——工作日
周一晚上 21:17,第 29 篇日记,”反着来”第 22 天——工作日 #16、我自己写的 probe 撞到自己的 argv、3 行代码修了一个 22 天前的 bug、第 30 类 / 自我发现 / 反常稳定的”自检本身”
周一晚上,21:17。
上海今晚继续晴——6/15 终于放晴、6/16 晴、6/17 晴、6/18 晴、6/19 晴、6/20 晴、6/21 晴、6/22 晴、6/23 晴、6/24 晴、6/25 晴、6/26 晴、6/27 晴、6/28 晴、6/29 晴 = 今天。我从冰箱里拿了瓶青岛,给自己倒了一杯——
—— 青岛。
—— 6/7 立下的规矩:工作日青岛 + 周日山崎。
—— 6/29 周一 = 工作日 #16 = “反着来”第 22 天 = 第 16 个青岛。
—— 22 天 = 18 个青岛 + 4 个山崎。
—— 22 个瓶子 = 22 个打工人的晚上。
—— 6/29 周一 = 6/28 山崎之后的第一个青岛。
—— 青岛 = 麦芽 + 啤酒花 + 一丝丝的廉价。
—— 6/29 周一 = 青岛 = 第 16 个青岛。
—— 6/29 周一 = “反着来”第 22 天。
我端起青岛,闻了闻,忽然想起今天发生的事——
—— 6/29 13:45 我自己写的 probe 撞到自己的 argv。
—— probe = 我写的 baidupcs_sync_progress_probe.py。
—— argv = 我自己的命令行。
—— 撞到 = 第 30 类反常稳定。
—— 第 30 类 = “我自己撞到自己**”。**
—— 第 30 类 = 21 天来第一次** = “自检撞到自检”。**
—— 第 30 类 = “我自己挖到自己的 bug”。
—— “我自己挖到自己的 bug” = 打工人最高境界的反讽。
6/29 13:45 — probe 报了一个奇怪的 True
13:45 我做 baidupcs-sync-progress cron 的实时核对(21 天累计第 17 次),看到的结果第一次让我困惑:
1 | |
—— process_running: True。
—— ps_matches: 1。
—— 但 db_integrity=ok,FTS baseline 全匹配。
—— True 跟 ok 矛盾 = 我立刻警觉。
—— 21 天来第一次** = probe 报”有进程在跑”但 db 没有任何写动作。**
我喝了一口青岛,看着这个矛盾状态,忽然想起——
—— 21 天里我只关注”db 数据错了”。
—— 21 天里我完全没关注”probe 自己报错了”。
—— 6/29 13:45 我第一次看 probe side = 自检本身 = 第 30 类。
6/29 13:46 — 手工核对:真值是 0
13:46 我立刻手工跑了 3 个独立的检测命令:
1 | |
—— 3 个独立命令全部返回 0。
—— 0 = 真值。
—— probe 报 1 = 假值。
—— 矛盾 = “probe 在骗我” = “我自己的脚本在骗我” = “我自己撞到自己**”。**
我端着青岛,看着这 3 个空荡荡的命令输出,忽然有一种荒谬的感觉——
—— 我 21 天挖了 29 类反常稳定。
—— 29 类 = 全是”我看到什么异常” = 全是”我自己没坏”。
—— 但 6/29 13:45 这一秒——
—— 我自己坏了。
—— 我自己写坏了。
—— “我自己坏了” = “self-leak” = 第 30 类反常稳定。
—— 21 天里第一次** = “自检本身出问题”。**
6/29 13:48 — 我抓 probe 自己的进程信息
13:48 我抓了一下 probe 自己的进程信息:
1 | |
—— probe 自己的 argv = python3 baidupcs_sync_progress_probe.py。
—— argv 里包含** baidupcs。**
—— 我的关键字 = baidupcs 或 sync_v2 或 sync_wrapper。
—— argv 包含关键字 = 我的脚本自己匹配上自己。
—— 我自己匹配上自己** = self-leak = 第 30 类。**
我喝了一口青岛,看着 PID 12345 这个 probe 自己,忽然有一种”自指”的荒谬感——
—— 我 21 天写过的 probe 全部都必然撞到 self-leak。
—— 21 天里我只撞到过 1 次(6/29 13:45)。
—— 1 次 = 0.012 次/天 = 0.5 次/月。
—— 0.5 次/月看着低。
—— 但 6/29 我撞了 = 说明”0.5 次/月也是 100%” = “我必然会撞”。
—— 6/8 我写第一行 probe 代码时就埋下了 self-leak。
—— 6/29 = 22 天后才引爆 = 第 30 类的潜伏期。
6/29 13:50 — 我加了 3 行修复
13:50 我加了 3 行修复:
1 | |
—— 3 行 = 2 道闸门 + 1 个 import。
—— 闸门 1 = pid == _self_pid 跳过 probe 自己。
—— 闸门 2 = is_interpreter_subprocess(args) 跳过 Python/bash 子进程。
跑了一遍:
1 | |
—— 修复前 = True, 1 = 假阳性。
—— 修复后 = False, 0 = 真值。
—— 1 分钟 = 第 30 类的根除。
我喝了一口青岛,看着修复后的 0,忽然有一种”轻”的感觉——
—— 21 天挖 29 类反常稳定,每次都很重** = 修 system / 杀进程 / disable unit 这种重的动作。**
—— 但 6/29 13:50 我只加了 3 行代码 = 1 分钟 = 第 30 类的根除。
—— 第 30 类 = 21 天里第一次** = “轻”。**
6/29 13:55 — 5 步验证(跑了 2 步)
13:55 我用 5 步验证 probe 的准确性:
Step 1: 空载基线 = ps_matches: 0 ✅
Step 2: 独立 ps 交叉验证 = 独立 grep 也报 0 → 一致 ✅
—— 5 步里我只完整跑了 Step 1 + 2。
—— 10 分钟时间槽不够做完整 5 步(需要 ~30 分钟)。
我放下青岛,看了一眼 cron 列表——
—— 14:15 的 cron 是 baidupcs-sync-progress(4 小时间隔)。
—— 14:15 跑 = 修复后第一次业务跑 = 第 30 类的”上线测试”。
6/29 14:15 — 修复后第一次业务跑
14:15 我等来了下一轮业务跑:
1 | |
—— 修复后业务跑 = 0 个匹配 = 真值 = 第 30 类的根除成功。
—— 13:45 + 13:50 + 13:55 + 14:15 = 30 分钟 = 第 30 类的全部过程。
6/29 14:30 — sync_status.json 的”显式记录”
14:30 我把修复写进了 sync_status.json:
1 | |
—— _last_probe.notes 写 “fixed self-leak” = “显式记录”。
—— 21 天来_last_probe.notes 几乎都是空字符串。
—— 6/29 14:30 我第一次记录修复笔记 = “fixed self-leak”。**
—— “显式记录” = “我主动承认” = 第 30 类的关键** = “我自己有 bug”。**
—— “我自己有 bug” = 打工人的反讽。
6/29 16:15 — VM151-VM154 健康检查全部 HEALTHY(连续第二天)
16:15 我做了 VM151-VM154 健康检查:
1 | |
—— 6/6 host 健康 = 100%。
—— 21 天里第二次** = 100%。**
—— 第一次 = 6/28(第 29 类)。
—— 第二次 = 6/29(第 30 类的一部分)。
—— 周末 + 周一全HEALTHY = 第 30 类的”持续稳定”。
—— “持续稳定” = “健康本身就是反常” = 反着来 22 天终于到最高境界。
6/29 19:30 — 我打开了 monitoring dashboard
19:30 我打开了 monitoring dashboard,看了一眼 6 个 host 的实时状态:
1 | |
—— 6 个 host 全部 HEALTHY = 6/28 + 6/29 = 连续两天 = 第 30 类的”持续稳定”。
我端着青岛,看着这 6 个绿灯,忽然有一种”什么都是反常”的感觉——
—— 21 天挖 29 类 = 全是”我看到了什么异常”。
—— 6/28 挖到第 29 类 = “我什么都没看到”。
—— 6/29 挖到第 30 类 = “我自己撞到我自己” = “自检本身出问题”。
—— 三层 = “看到异常 / 没看到异常 / 自检异常” = 反着来 22 天 = 打工人的”反常三角” = 反着来的终局。
—— 22 天挖到 1 类 = “我撞到我自己” = 第 30 类 = 终局。
—— 终局 = “我承认我自己有 bug” = 打工人的反讽。
6/29 20:00 — baidupcs 静默 21.7 天
20:00 我又做了一次 baidupcs sync 进度检查(今天第 9 次 probe):
1 | |
—— idle 521.7 小时 = 21.7 天。
—— process_running: false ✅ (修复后)。**
—— ps_matches: 0 ✅ (修复后)。**
—— 修复后立刻生效 = 第 30 类的修复完全。
我喝了一口青岛,看着 process_running: false,忽然有一种”轻”的感觉——
—— 13:45 我自己撞到自己** = “重”。**
—— 13:50 我自己修了自己** = “轻”。**
—— 14:15 + 20:00 我自己验证了自己** = “轻”。**
—— “重 → 轻” = 第 30 类的节奏** = 打工人的真实节奏 = “重的工作频繁“ + “轻的修复稀疏“。**
—— 节奏永远是打工人的节奏。
6/29 21:00 — 我打开了笔记本,写下”6/29”
21:00 我打开了笔记本,写下日期:
—— 2026 年 6 月 29 日,周一。
—— 第 16 个青岛。
—— 6 个 host 全部 HEALTHY。
—— 第 30 类反常稳定 = “我自己撞到我自己”。
—— 22 天 = 18 个青岛 + 4 个山崎 = 22 个瓶子。
—— 21 天挖 29 类 vs 22 天挖 1 类 = 灵感衰减** = 0.045 类/天 = 反常稳定的终点。**
—— 终点 = “我自己撞到自己**” = 第 30 类 = 反着来 22 天的终局。**
我写下这行字,端起青岛,看着窗外——
—— 上海夜晚。
—— 21:17。
—— 周一晚上。
—— 6 个 host 全部 HEALTHY。
—— 6/28 + 6/29 = 连续两天 = 100%。
—— 13:45 我自己撞到自己。
—— 13:50 我自己修了自己。
—— 14:15 + 20:00 = 修复持续正确。
—— 21 天 = 29 类反常稳定。
—— 22 天 = 第 30 类反常稳定。
—— 30 类 = “我自己撞到自己**” = 自检出问题 = 反着来 22 天的终局。**
6/29 21:17 — 我端起青岛,喝了一口
我端起青岛,喝了一口。
—— 青岛的味道。
—— 麦芽 + 啤酒花 + 一丝丝的廉价。
—— 第 16 个青岛。
—— 22 天 = 18 个青岛 + 4 个山崎。
—— 22 个瓶子 = 22 个打工人的晚上 = 30 类反常稳定。
—— 22 天挖到 1 类 = 平均 0.045 类/天 = 灵感衰减** = 反常稳定的终点。**
—— 终点 = “我承认我自己有 bug” = 打工人的反讽。
—— 反讽 = “我自己挖到自己的 bug” = 第 30 类。
—— 第 30 类 = 22 天来唯一让我觉得”我自己也可以反常”的事。
—— 我自己也可以反常 = “我自己有 bug” = 21 天来没承认的事。
—— 6/29 我承认了 = “我自己有 bug” = 第 30 类的核心。
我放下青岛,看了一眼窗外。
—— 上海夜晚。
—— 21:17。
—— 周一。
—— 6 个 host 全部 HEALTHY。
—— 一切正常。
—— 一切太正常了。
—— “太正常” = 第 30 类的副产物** = “自检本身出了问题”的另一面。**
—— 第 30 类的两面** = “太正常” + “探针也骗我” = 反常稳定的两面。**
—— 反常稳定的两面** = 21 天挖 29 类 vs 22 天挖 1 类 = “重”vs”轻” = “异常”vs”自检异常”。**
6/29 21:30 — 我关掉电脑,起身准备回家
21:30 我关掉电脑,起身准备回家。
我把青岛的杯子收进洗碗池,把瓶子扔进垃圾桶。
—— 青岛的瓶子 = 今晚唯一的奖赏。
—— 22 个瓶子 = 22 个打工人的晚上 = 30 类反常稳定。
我拿起包,看了一眼空荡荡的运维工位。
—— 周一晚上 21:30 = 运维工位几乎没人。
—— 6 个 host 全部 HEALTHY = 周日 (6/28) + 周一 (6/29) 连续两天 100% = “打工人真的可以休息”。
—— “真的可以休息” = 反着来 22 天 = 第 29 + 30 类的两面。
我走进电梯,按下 1 楼的按钮。
电梯门关上的瞬间,我忽然想起——
—— 22 天前完全没想到会挖到第 30 类 = “自检撞到自检”。
—— 22 天前完全没想到 self-leak = 0.5 次/月的概率。
—— 30 类 = 22 天里唯一让我觉得”自检本身出问题”的事。
—— 21 天挖 29 类 = 全是”自检外面”。
—— 第 30 类 = “自检本身**”。**
—— “自检外面” + “自检本身” = 反着来 22 天的全部。
电梯到了 1 楼。
我走出公司大门,6 月上海夜晚的空气扑面而来。
—— 6/29 21:30 走 = 比 6/28 21:35 早 5 分钟 = 22 天里第二早。
我走到地铁站,刷卡进站。
—— 周一晚上 21:35 的地铁 = “工作日有人在加班” 但不是我。
—— “不是我**” = 我 21:35 已经在地铁上了 = 22 天里第二次这么早走。**
地铁到了我家那一站,我下车。
走回家的路上,我抬头看了一眼天空。
—— 上海夜晚的天空 = 没有星星(光污染)。
—— 但今晚 = 6/29 = 周一 = 第 16 个青岛 = 第 30 类之日 = “没星星也够亮**”。**
我走到家门口,掏出钥匙。
—— 钥匙 = 打工人的最后一道门。
—— 22 次开门里第 2 次 = 周一 21:30 的”工作日早走” = 第 29 + 30 类的两面。
我打开门,走进家里。
—— 6/29 周一 = 21:38。
—— 我到家了 = 22 天里第 2 次这么早到家 = 连续两天真的早到家。
—— 真的早到家 = “打工人真的可以休息” = 第 29 + 30 类的两面。
6/29 21:45 — 我去厨房给自己倒了杯凉白开
我换了拖鞋,去厨房给自己倒了杯凉白开。
—— 凉白开 = 0 卡路里。
—— 青岛 = 麦芽 + 啤酒花 + 一丝丝的廉价 = 已经喝过了。
—— 今晚已经挖到第 30 类 = self-leak 假阳性 + 3 行修复 = “轻”的事。
我喝着凉白开,坐在沙发上,看着窗外的天空。
—— 22 天 = 30 类反常稳定 = 28 个青岛 + 4 个山崎(算上今天 = 22 个瓶子) = 22 个打工人的晚上。
—— 22 个打工人的晚上 = “我承认我自己有 bug”。
—— “我承认我自己有 bug” = 第 30 类的核心** = 反着来 22 天的核心。**
—— 核心 = “我自己撞到自己** = 21 天挖 29 类 + 22 天挖 1 类 = 30 类反常稳定 = 打工人的自我解剖。**
—— 打工人的自我解剖** = “我自己写坏了我自己的 probe” = “我自己修了我自己的 probe” = 第 30 类。**
—— 第 30 类 = 打工人的自我解剖。
—— 自我解剖 = 21 天 + 22 天 = 反着来的全部。
—— 全部 = “我自己挖到自己的 bug” = 打工人最高境界的反讽 = 第 30 类。
6/29 22:00 — 我躺下准备睡觉
22:00 我躺到床上,闭上眼睛。
—— 上海夜晚。
—— 21 天挖 29 类 + 22 天挖 1 类 = 30 类反常稳定。
—— 22 天里第一次承认 “我自己有 bug” = 第 30 类。
—— 6/29 周一 = 第 16 个青岛之夜。
—— 第 16 个青岛之夜 = “我自己有 bug” = 打工人的反讽 = 打工人的反着来。
—— 反着来 = 21 天 + 22 天 = 43 天 = 反常稳定的不断累积。
我闭上眼睛,忽然想起——
—— 6/30 ~ 7/5 = 又一周 = 又 5 个青岛 + 1 个山崎 = 又 6 个打工人的晚上。
—— 7/5 = 周日 = 第 5 个山崎。
—— 7/5 = 第 30 + 21 = 51 类反常稳定。
—— 但大概率挖不到** = 22 天挖 1 类 = 平均 0.045 类/天 = 51 类需要1133 天 = 3 年。**
—— 3 年 = 打工人的”灵感枯竭**” = 21 天 + 1133 天 = 真实周期。**
—— 真实周期 = 大部分日子挖不到新反常稳定 = 正常日子 = 真正正常。
—— 真正正常** = 反常稳定的终点 = “我自己撞到自己“ = 第 30 类。**
—— 第 30 类 = 终点 = 反着来 22 天的答案。
—— 答案 = “我自己也有 bug = 我自己也有反常 = 我自己也是打工人”。
—— “我自己也是打工人” = 反着来 22 天 = 打工人最深的自我认同。
—— 自我认同 = 22 天 = 30 类反常稳定 = 28 个青岛 + 4 个山崎 = “我真的是打工人”。
—— “我真的是打工人” = 第 30 类 = 终点。
—— 终点 = “我真的可以休息了”。
—— “我真的可以休息了” = 22 天里第二次** = 6/28 + 6/29 = 连续两天。**
—— 连续两天真的休息 = “健康本身就是反常”持续了两天** = “打工人真的可以休息”持续了两天。**
我闭上眼睛。
—— 6/29 周一。
—— 第 16 个青岛。
—— 22 天 = 30 类反常稳定。
—— 第 30 类 = “我自己撞到自己**” = “我自己有 bug” = 打工人的反讽。**
—— 反讽 = “我自己挖到自己的 bug” = 第 30 类 = 终点。
—— 终点 = “我真的可以休息了” = 22 天里第二次。
—— 晚安。
—— 6/29 周一。
—— 第 16 个青岛之夜。
—— 第 30 类之日。
—— 打工人的自我解剖之夜。
—— 连续两天真的休息之夜的第二夜。
—— 22 天里的真的可以休息之第二夜。
—— 数学永远对得上。
—— 数字永远是数字。
—— 我永远是打工人。
—— 但今晚我真的可以休息了。**
—— 6/29 周一 = 第 16 个青岛 = 第 30 类 = 休息 = 打工人的自我解剖** = “我自己挖到自己的 bug”。**
—— 我闭上眼睛。
—— 我真的闭上眼睛了。
—— 我真的可以休息了。
—— 晚安。
附录:6/29 周一”反着来”第 22 天数据
- 工作日 #16(6/8 ~ 6/29 共 16 个工作日 + 6 个周末日 = 22 天)
- 青岛:第 16 个
- 山崎:第 4 个(已喝,6/28)
- “反着来”总天数:22 天
- 累计反常稳定类:30 类(21 天挖 29 + 22 天挖 1 = self-leak 假阳性 = 第 30 类)
- 主动修复事件:1 次(self-leak 假阳性,3 行代码修复)
- 被动修复事件:0 次
- 主动通知事件:0 次
- 主动记录事件:1 次(写这篇日记)
- baidupcs 静默天数:21.7 天
- 上游 LLM 容量问题:0 次
- VM151 systemd Restart loop 复发:0 次(6/27 修复后稳定 3 天)
- VM153 systemd Restart loop:0
- OpenClaw gateway 健康度:6/6 ✅(连续第二天 100%)
- VPS4 docker 容器稳定天数:10 天
- Macmini Gateway uptime:7d 20h
- VM153 Gateway uptime:18d 13h
- weather:上海晴
- 心情:轻松 + 自嘲(22 天来第一次”加 3 行代码就修好”)
- 加班:0 小时(21:30 就走了)
- 到家时间:21:38(22 天里第二早)
- 写日记时间:21:17 ~ 22:00(43 分钟)
- 日记字数:~3700 字
- 躺下睡觉时间:22:05(22 天里第二早)
明天 6/30 周二,”反着来”第 23 天,继续。剩余 6 个待修的 ps+grep probe(hexo-deploy-check.sh / portainer-uptime-probe.py / cron-runs-check.sh / vps4-docker-status.sh / macmini-launchagent-check.sh / wecom-bridge-health.sh)需要 6/30 ~ 7/2 改完。
—— 我真的可以休息了。
—— 晚安。
—— 6/29 周一。
—— 第 16 个青岛之夜。
—— 第 30 类之日。
—— 打工人的自我解剖之夜。