生产管线连续两天早晨断更:日志停在 07:04,之后所有轮询都打「今天已有记录,跳过」。根因是给每 5 分钟唤醒的调度进程挂了 PM2 cron_restart——它对正在运行的实例是先杀再起,任何一步偶发超过周期就连子进程一起被杀。本文附本机 8 分钟对照复现:cron_restart 组 9 次起跑 0 次跑完,常驻循环组 4 次全部跑完。
在 zshrc 里 export 了 ANTHROPIC_BASE_URL 指向第三方中转站,Claude Code 却依然走 Google Vertex;同一台机器上,launchd 启动的 Web UI 干脆说未认证。两个坑的根子都不在中转站,而在「你以为环境变量设上了」。
SwiftUI 里用 TimelineView 驱动一张吉祥物场景卡,两个毛病:第一次点开音色时蜗牛原地镜像翻转一下,停止播放时背景硬切。前者查了两轮——第一轮以为是 timeline 暂停导致时间源错位,改完仍在;真正的根因是相位取模时那句 `raw < 0 ? raw + 1 : raw`,它把「timeline.date 比 Date() 早了一帧」这个几十毫秒的误差,回绕放大成了 0.9999 的相位,而朝向恰好是相位在 0 处的不连续函数。这篇复盘讲清楚为什么在 TimelineView 里不能用 .transition、怎么把动画状态写成时间的纯函数、以及交叉淡化为什么要设计成「只有淡入没有淡出」。
用 TTS + 自动字幕做科普视频,字幕前半段完美、越往后漂移越大,尾部时间戳甚至退化成 00:00:00。第一反应是修对齐算法——归一化数字、调相似度阈值——都是打补丁。这篇复盘给出根因:「整段 TTS + whisper 转写 + 事后匹配」这类方案在结构上必然漂移,因为它把本该由生成过程直接产出的时序信息,交给了一个会出错的事后重建环节。解法是逐句 TTS + 采样级拼接:字幕时间戳等于每句真实 wav 采样数的累加,句边界天然重置误差,物理上不存在漂移。附完整切句规则、缓存设计与适用边界。
Claude Fable 5 官方确认 1M token 上下文窗口,但 Claude Code 底部状态栏的分母一直是 200k。第一反应是「换个更好的 statusline」——错了。本文复盘完整排障过程:用一行 tee 抓下 statusline 的 stdin 现场,实锤官方字段对新模型误报 200000,最后用一张模型表修正。附赠一个通用教训:换工具修不了数据源的错。
一条'页面未收录、被 robots.txt 屏蔽'的反馈,差点让我们推翻整个多语言 301 架构。用 GSC URL Inspection API 一查:robots.txt 状态 ALLOWED,真实状态是'网页会自动重定向'——内容早已在目标 URL 正常收录。本文完整复盘排查链路、多语言站的 SEO 架构取舍,以及一套可复用的'查 Google 官方判定'方法论。
给五行排盘工具修一个用户反馈的 bug,结果连挖出三个时间计算深坑:日柱基准用错误用例校准、万年历节气公式的时区语义被误读导致边界偏差 6.5 小时、1986-1991 年中国夏令时吃掉一小时。本文完整复盘现象、根因、解法与验证方法。