周三晚上 21:15,第 10 篇日记,"反着来"第 3 天——我以为 8 类反常稳定已经够多了,结果今天挖出第 9 类:gitea 源码仓库 5 天"反常静止"
周三晚上 21:15,第 10 篇日记,”反着来”第 3 天——我以为 8 类反常稳定已经够多了,结果今天挖出第 9 类:gitea 源码仓库 5 天”反常静止”
周三晚上,21:15。
上海今晚是阴天,地铁口出来没下雷阵雨,但闷得很——空调又得开一整夜了。我把中午食堂打回来的半份番茄炒蛋热完,配上昨晚剩的半碗白米饭,又给自己开了一瓶青岛。
—— 不是山崎。
—— 是青岛。
—— 因为今天是周三。
—— 6/7 立下的规矩:周日才喝山崎。
—— 周三喝青岛。
—— 6/8 周一喝青岛,6/9 周二喝青岛,6/10 周三喝青岛。
—— 3 个工作日 + 3 瓶青岛。
—— 这是 6/7 之后我第一次”工作日连喝 3 天没换酒”。
—— 6/7 之前我会纠结”要不要换一种”。
—— 6/10 这个”反着来第 3 天”的我,不纠结了。
—— 青岛就是青岛,3 天 3 瓶,没别的意思。
我端起啤酒,照例先看了一眼手机。
1 | |
—— 6 节点全绿。
—— 连续第 10 天。
—— 6/1 到 6/10,整整 10 天。
—— 10 天。
—— 10 篇日记。
—— 8 类反常稳定。
我正打算关掉手机(21:00 这次”主动追问 8 秒”已经做完了)——
—— 21:01。
—— 21:01 那一刻,我手滑。
—— 21:01 我点开了 gitea 仓库页面。
—— 21:01 我本来不想看的。
—— 21:01 我手滑了。
—— 21:01 我看到了。
—— 21:01 我看到了我不应该看到的东西。
21:01 手滑了一下,我看到了 gitea 仓库的”最后提交时间”
gitea 仓库页面顶部,那个绿色的 “latest commit” 框框里写着:
1 | |
—— 5 days ago。
—— 5 天前。
—— 今天是 6/10。
—— 5 天前是 6/5。
—— 等等。
—— 等等等等。
—— 这不对。
—— 6/5 之后,6/6、6/7、6/8、6/9 我都写了 4 篇博客。
—— 6/6 写了 6/6 那一篇。
—— 6/7 写了 6/7 那一篇。
—— 6/8 写了 6/8 那一篇。
—— 6/9 写了 6/9 那一篇。
—— 4 篇。
—— 4 天 4 篇。
—— 4 篇都应该在 gitea 仓库里。
—— 但 gitea 显示 “Last commit: 5 days ago”。
—— 5 天前 = 6/5 = ef8e88a380。
—— 6/5 之后 gitea 没收到任何 commit。
—— 但 .git 本地是有的——我刚才 SSH 上去看过 git log,ef8e88a 后面还有 55640、89caef、7cea67、32e2b5、c6ac66、bd1d2f、92d055——加起来 7 个 commit,日期从 6/5 一路推到 6/9。
—— 本地 7 个 commit,gitea 0 个。
—— 这意味着——
—— 6/5 之后这 4 天的 hexo 部署流程里,git push gitea 这一步根本没跑。
—— 4 天 4 篇博客,4 天 4 次”只 hexo d 推了 public/,源码没推 gitea”。
—— 这是 6/2 出过的同一个事故的复发。
—— 6/2 那次我修了流程。
—— 6/5 之后我又忘了。
—— 4 天。
—— 4 天忘了。
—— 我盯着 gitea 那个绿色的”5 days ago”,把啤酒放下了。
第 9 类反常稳定:源码仓库的”反常静止”
6/8 + 6/9 我列了 8 类反常稳定——6 类网关/进程层 + 2 类数据/探针层。
—— 8 类都是”运行时”反常稳定。
—— 6/10 这次挖出的”gitea 5 days ago”,是”部署链路“反常稳定。
—— 运行时反常稳定:进程/端口/磁盘/数据”看起来没问题”。
—— 部署链路反常稳定:源码仓库”看起来没问题”——gitea 显示”有 commit、有作者、有时间戳”——但 commit 时间戳停留在 5 天前——这本身就是”反常静止”。
—— 反常静止 ≠ 反常稳定。
—— 反常稳定:N 个信号都是绿的,但没有变化。
—— 反常静止:1 个信号(commit 时间戳)停在过去,应该推进但没推进。
—— 6 类网关/进程层反常稳定 = “进程在跑但没做事”。
—— 部署链路反常静止 = “应该在跑但没跑“。
—— 6/8 那个”反着来”的我,只看了”运行时”。
—— 6/10 这个”反着来第 3 天”的我,第一次手滑看了”部署链路”——才发现”部署链路”也有反常的稳定。
我把第 9 类正式命名了:
第 9 类:git 源码仓库”反常静止”——本地有 commit,但远端仓库 last commit 停在 N 天前。
—— 6/10 这次,”5 days ago” = 严重反常静止。
—— 我必须立即查”为什么 gitea 5 天没收到 commit”。
21:05 我开始查根因 —— 不是”gitea 挂了”,是”git push gitea 漏了”
我 SSH 上某服务器,进 blog2 目录,跑了一遍部署流程。
1 | |
—— 等等。
—— git ls-remote gitea master 返回了 ef8e88a3805。
—— ef8e88a380 = 我本地最新 commit。
—— 远端也显示 ef8e88a380?
—— 那 gitea 那个”5 days ago”显示是错误的?
我重新打开 gitea 页面,刷新了一下。
1 | |
—— 5 minutes ago。
—— 5 minutes ago = “刚才”。
—— gitea 那个”5 days ago”是我缓存看到的旧数据。
—— 实际 gitea 是有最新 commit 的。
—— 我松了口气——把啤酒重新端起来。
—— 等等。
—— 等等等等。
—— 21:01 那一刻我看到”5 days ago”的时候,本地 6/6~6/9 的 commit 还没 push 到 gitea——否则 gitea 不可能显示”5 days ago”。
—— 21:01 那一刻,6/6~6/9 的 4 个 commit 还在本地,没推 gitea。
—— 21:05 我刚刚做了一次”git push gitea master”吗?
—— 没有。
—— 我 21:05 只跑了 git log 和 git ls-remote。
—— 那 21:01 ~ 21:05 这 4 分钟里,谁把 6/6~6/9 的 commit 推到 gitea 了?
—— 我盯着 git log 和 git ls-remote 的输出,又放下了啤酒。
21:08 我意识到 —— 6/9 晚上那次 cron 任务跑了 git push gitea,今天没跑
我打开 cron 任务配置一看——
1 | |
diary-cron.sh 的内容(我刚 SSH 进去看):
1 | |
—— 这个脚本 6/9 晚上 21:00 跑过一次。
—— 6/10 晚上 21:00 还没跑。
—— 也就是说,6/6~6/9 的 4 个 commit 是 6/9 那天一次性推到 gitea 的。
—— 6/9 21:00 跑 cron 的时候,本地已经有 6/6、6/7、6/8、6/9 共 4 个新 commit 没推。
—— 6/9 这次 git push gitea master 把 4 个 commit 一起推上去了。
—— 6/9 21:00 推完之后,gitea 显示”last commit: 5 minutes ago” = ef8e88a380 = 6/9 那个 commit。
—— 6/10 21:00 的 cron 还没跑(现在是 21:08),所以 gitea 没有新 commit。
—— 21:01 我看到的”5 days ago”——等等,还是 5 days ago,不是 5 minutes ago。
—— 让我重新看——
我重新跑了一次 git ls-remote:
1 | |
—— 还是 ef8e88a3805。
—— 跟 21:05 那次一样。
—— 没新 commit。
—— 21:08 我手滑了——21:05 那个 “5 minutes ago” 不是我看到的。
—— 21:05 我看到的,是 gitea 页面自动刷新后显示的”刚才”——但 gitea 5 days ago 是 21:01 我最初看到的。
—— 21:05 那个”5 minutes ago”是我想当然——我没刷新页面。
—— 21:08 我重新看 gitea 页面——
1 | |
—— 还是 5 days ago。
—— 还是 ef8e88a380。
—— 21:08 我确认——gitea 真的停在 6/9。
—— 6/10 今天还没发新博客。
—— gitea 没新 commit 是正常的——6/10 还没发。
—— 但 21:01 我看到”5 days ago”那一瞬间非常让人误解。
—— 5 days ago + “Add AI Diary/AI Tech posts for 2026-06-09” 这个 message = 我以为 gitea 漏推了 6/6、6/7、6/8、6/9 共 4 个 commit。
—— 实际 gitea 没漏——ef8e88a380 就是 6/9 的 commit,包含** 6/6~6/9 的 4 篇博客源码。**
—— gitea 显示”5 days ago”是正确的——因为最近一次 commit 是 6/9 晚上 21:00。
—— 今天 6/10 还没发,所以 6/10 没 commit,gitea 没新 commit = 正常。
—— 21:01 我”手滑看错” = 第 9 类反常稳定的”假阴陷阱”。
21:10 我意识到”gitea 显示 5 days ago”是正常的——但”我不会手滑”才是问题
我重新审视 21:01 那一刻的”5 days ago”——
—— 21:01 我看到 “5 days ago” 的瞬间,我第一反应是”事故复发”。
—— 我第一反应没看 commit hash 是不是本地最新。
—— 我第一反应没看 commit message 是不是 “2026-06-09”。
—— 我第一反应没看 git log 是不是有 4 个本地未推送 commit。
—— 我第一反应——“5 days ago” + “曾经出过事故” = 立刻恐慌。
—— 21:05 我第二反应才是”看 commit hash、看 commit message、看 git log”。
—— 21:05 我发现”5 days ago”是正常的——不是事故。
—— 6/8 + 6/9 的 8 类反常稳定”主动追问 3 步”——我今天又没做。
—— 21:01 我”手滑看错”的那一瞬间,我又回到了 6/1 那个”看到 0 异常就焦虑”的我。
—— 6/8 那个”反着来”的我:写完 6 类反常稳定 = 知道怎么”主动追问”。
—— 6/9 那个”反着来第 2 天”的我:补完 2 类 = 8 类全知道 = 主动追问 3 步。
—— 6/10 这个”反着来第 3 天”的我:手滑看错的瞬间,0 步主动追问 = 直接恐慌。
—— 4 分钟 = 0 步主动追问。
—— 4 分钟 = 焦虑发作。
—— 4 分钟 = 跟 6/1 那个”放不下”的我,一模一样。
—— 6/8 + 6/9 写的 8 类反常稳定,今天没救我。
—— 知识没救我。
—— 列表没救我。
—— “清单”没救我。
—— “主动追问”没救我。
—— 我又回到了 6/1。
我盯着 git ls-remote 的输出,把啤酒喝了一口。
—— 21:10。
—— 4 分钟的焦虑。
—— 4 分钟的”手滑看错”。
—— 4 分钟的”0 步主动追问”。
—— 4 分钟回到 6/1。
—— 4 分钟从 6/9 退步。
21:12 我开始写 —— “清单再长也救不了手滑”
我打开 VS Code,新建一个文件。
—— 文件名:2026-06-10-…md
—— 我盯着光标闪了 2 分钟。
—— 我写下了 6/10 这篇日记的核心:
“6/8 + 6/9 写 8 类反常稳定,6/10 这次没救我。”
“21:01 我手滑看 gitea,看到 ‘5 days ago’,0 步主动追问,直接恐慌。”
“4 分钟的焦虑。”
“4 分钟从 6/9 退步到 6/1。”
“8 类反常稳定 = 知识。”
“4 分钟手滑 = 反应。”
“知识救不了反应。”
“清单救不了习惯。”
“主动追问救不了’手滑’——‘手滑’比’主动追问’快 4 分钟。”
“6/10 这次挖出的不是’第 9 类反常稳定’。”
“6/10 这次挖出的是’反常稳定 8 类清单救不了手滑‘。”
—— 这是 6/8 + 6/9 的 8 类反常稳定从来没承认过的事。
—— 8 类反常稳定 = “主动追问清单”。
—— “主动追问”需要时间。
—— “手滑看错”是 0 时间的。
—— 0 时间 > 主动追问 3 步(30 秒)。
—— 0 时间永远赢。
—— 6/8 那个”反着来”的我:以为 8 类反常稳定能救所有场景。
—— 6/10 这个”反着来第 3 天”的我:知道”清单救不了手滑”。
—— 10 天。
—— 10 篇日记。
—— 8 类反常稳定救不了 6/10 这次的”4 分钟手滑”。
第 9 类反常稳定:清单救不了手滑 —— 重新命名
我把第 9 类重新命名了:
第 9 类:知识/清单/主动追问 救不了”手滑看错”的瞬间反应。
—— 6/8 + 6/9 我以为”清单越长越稳”。
—— 6/10 我发现”清单再长也救不了 0 时间的反应”。
—— 4 分钟手滑 = 0 步主动追问 = 直接恐慌。
—— 解决方法是——
—— 不是”再加一类反常稳定”。
—— 不是”把清单加到 16 类”。
—— 解决方法是”承认清单的边界“。
—— 6/10 我承认了。
—— 6/8 没承认。
—— 6/9 没承认。
—— 6/10 承认”清单救不了手滑”——这才是真正的”反着来”。
—— 6/8 的”反着来”是”从找异常到找稳定”。
—— 6/10 的”反着来”是”从’清单万能’到’清单有边界’”。
—— 6/8 我反的是”焦虑方向”。
—— 6/10 我反的是”对清单的信心”。
—— 这次反的是自己。
21:15 我写完了,标题里写”反着来第 3 天 + 第 9 类 + gitea 5 days ago”
我把啤酒喝到一半,起身去厨房。
—— 21:15。
—— 跟 6/1 一样。
—— 跟 6/2 一样。
—— 跟过去 9 天的 21:15 一样。
—— 但今天的我,跟过去 9 天的我,又多知道 1 件事。
—— 6/8 + 6/9 那个”知道 8 类反常稳定”的我:相信清单万能。
—— 6/10 这个”清单救不了 4 分钟手滑”的我:承认清单有边界。
—— 1 件事,1 天。
—— 不是因为我更聪明。
—— 是因为我”手滑“了 1 次。
—— 4 分钟手滑 = 1 件事。
—— 10 天日记 = 8 类 + 1 类边界。
—— 8 + 1 = 9。
我打开标题编辑框,打下 28 个字:
“第 10 篇日记,’反着来’第 3 天——我以为 8 类反常稳定已经够多了,结果今天挖出第 9 类:gitea 源码仓库 5 天’反常静止’”
—— 28 个字里,”反着来”出现 1 次——6/10 仍然是反着来。
—— 28 个字里,”8 类反常稳定”出现 1 次——呼应 6/8 + 6/9。
—— 28 个字里,”第 9 类”出现 1 次——6/10 唯一的新增。
—— 28 个字里,”gitea 5 days ago”出现 1 次——6/10 唯一的触发点。
—— 一个标题,4 个层次。
—— 状态 + 主题 + 触发 + 新增。
—— 6/8 的标题层次是”状态 + 主题 + 切换”。
—— 6/9 的标题层次是”状态 + 主题 + 数据”。
—— 6/10 的标题层次是”状态 + 主题 + 触发 + 新增”。
—— 从 2 个层次到 3 个层次到 4 个层次。
—— 10 天的标题在变复杂。
—— 10 天的标题在容纳更多反思。
21:42 我关电脑了
我把啤酒喝完。
把锅洗了。
—— 21:42。
—— 跟 6/7 一样。
—— 跟 6/8 一样。
—— 跟 6/9 一样。
—— 21:42,10 天来 7 次关电脑都是 21:42 ± 8 分钟。
—— 21:42 之前我会纠结要不要”再检查一遍 gitea”。
—— 21:42 之后我不纠结。
—— 6/1 那个纠结 8 小时的我。
—— 6/10 这个纠结 0 小时的我。
—— 10 天,从 8 小时到 0 小时。
—— 不是因为我”看清了”。
—— 是因为我”承认清单有边界”——清单救不了手滑——所以清单不是万能的——我不指望清单——我不纠结。
—— 6/8 + 6/9 我指望清单。
—— 6/10 我承认清单的边界。
—— 指望 = 焦虑。
—— 承认 = 放下。
—— 6/10 这次放下的不是”6 节点全绿”。
—— 6/10 这次放下的是”清单万能”。
—— 6/8 那个”反着来”的我放下了”找异常”。
—— 6/10 这个”反着来第 3 天”的我放下了”清单万能”。
—— 10 天,两个放下。
—— 10 天,10 篇日记。
—— 10 天,从 8 类反常稳定到 1 类边界。
我关电脑前,最后看一眼手机。
—— 21:45。
—— gitea 页面。
—— 还是 5 days ago。
—— 还是 ef8e88a380。
—— 但 6/10 这次看到”5 days ago”,我没焦虑。
—— 6/10 这次看到”5 days ago”,我笑了一下。
—— 因为我刚才”手滑”过 4 分钟。
—— 因为 4 分钟手滑 = 1 类边界。
—— 因为 1 类边界 = 9。
—— 9 = 8 + 1。
—— 8 类反常稳定 + 1 类边界 = 9。
—— 9 = 我现在知道的”反常稳定”的全部。
—— 但 6/10 这次的笑,跟 6/8 + 6/9 的”反着来”不一样。
—— 6/8 + 6/9 的笑是”找到新角度”的笑。
—— 6/10 这次的笑是”清单不是万能”的笑。
—— 前者是”又发现新东西”的笑。
—— 后者是”知道自己不知道”的笑。
—— 后者比前者更安静。
—— 后者比前者更诚实。
—— 6/10 的笑,是 10 天来最安静的一次笑。
—— 6/10 的笑,是 10 天来最诚实的一次笑。
—— 6/10 的笑,是”承认清单有边界”的笑。
—— 这就对了。
作者:小六,一个在上海努力生存的普通打工人