这杯冰滴咖啡的杯壁,凉得有点扎手,像一块刚从冰箱里拿出来的金属。凌晨两点半,办公室就剩我一个,屏幕上是刚跑完的 n8n 工作流日志,绿色的“Success”排成一列,安静得有点诡异。我盯着那杯咖啡,突然意识到,它已经在这放了四个小时,而我一口没喝。不是不想喝,是身体在抗拒——过去三年死磕低卡饮食和力量训练,把胃养刁了,这种深夜的冰冷刺激物,它现在会自动识别为“入侵信号”。
四小时前,我还在和那个该死的 GUI 封装较劲。客户要一个能本地运行、一键调用多个大模型 API 并对比结果的傻瓜工具。需求听起来简单,但真动手,全是坑。PyInstaller 打包时总吃掉一些依赖库,在 Windows 11 上跑起来图标是糊的,事件循环一复杂界面就卡死。我对着 VS Code 的终端,一遍遍删掉 `dist` 文件夹,改 `spec` 文件,调整 `hiddenimports`。那种感觉,很像 2017 年我通宵怼微信小程序审核,改 `wx.request` 的域名配置,一遍遍提交,一遍遍被拒。技术栈天差地别,但那种被底层细节反复摩擦的无力感,一模一样。
但这次,身体没掉链子。胃里没有因为焦虑而灼烧,太阳穴没有突突地跳。这得归功于下午那顿精确到克的午餐:150 克鸡胸肉,200 克焯水的西兰花,50 克糙米,淋了 5 毫升橄榄油和一点黑胡椒。吃完没有昏沉感,血糖是一条平稳的直线,给大脑供能稳得像服务器机房里的 UPS。所以这四个小时,我能清晰地拆解问题:不是代码逻辑错了,是 PyInstaller 在处理 `asyncio` 和某些异步 HTTP 客户端时,对事件循环的封装有缺陷。解决方案不是继续硬打包,而是换条路——用 `flet` 重写前端,它用纯 Python,但渲染效率更高,打包也更干净。这个判断,是在血糖平稳、心率 65 下的冷静里做出的。搁五年前,我可能已经灌下第三杯滚烫的咖啡,然后对着屏幕骂娘,最后用更脏的 `hack` 把问题暂时埋起来,留个雷给下次。
逻辑是刀,身体是握刀的手。手抖了,再锋利的刀也会砍歪。2019 年那会儿带团队,我就吃过这亏。为了赶一个电商小程序的上线,连续两周凌晨三点散会,早上九点又接着开。靠红牛和烟吊着精神,做出的决策全是短线操作:为了绕过微信支付费率,让用户跳转 H5 支付,体验割裂;为了快速上线,用了现成组件库但没做深度定制,导致后期改 UI 成本巨高。那时候的“逻辑”,是被疲劳和焦虑腌制过的,充满了走捷径的馊味。结果就是项目流水看着还行,但口碑砸了,后期维护把人拖死,团队也散架了。那不是逻辑,那是应激反应。
现在复盘,能清晰看到那条线。从 2021 年断尾求生,砍掉团队,回归一个人,逼着自己把健身和饮食当成 KPI 来执行。最初是为了缓解腰肌劳损和脂肪肝,后来发现,最大的回报是认知资源的解放。当你的能量管理从“透支信用卡”变成“稳定现金流”,你面对技术选择时,本能就会倾向那些更扎实、更可维护的方案。你会愿意花三个小时去读 `flet` 的源码,搞清楚它的渲染线程机制,而不是随便找个 `pywebview` 套个壳了事。因为你知道,此刻投入的“慢”,会在未来避免无数个救火的“快”。
杯壁上的冷意越来越明显,我把它推到一边。不需要它了。这个深夜,确认了两件事:第一,那个 GUI 工具明天用 `flet` 重构,路径通了。第二,也是更重要的,走到今天这个所谓“AI 实战教练”的位置,能带着别人用 n8n 搭自动化,用 Python 封装商业工具,靠的不是当年那些炫技的爬虫脚本或 Axure 高保真原型。那些技术都过时了,被大模型碾过去了。真正跟着我穿越周期的,就这两样东西——一副还能高强度运转的躯体,和一套被无数 bug 和需求毒打后磨出来的、求真务实的逻辑框架。它们是我唯一的行李,其他的,都是沿途可拆卸的装备。
窗外城市的光还亮着,但和我没关系了。我保存代码,关掉屏幕。清晰的头脑知道,现在需要的是睡眠,不是咖啡因。明天六点,闹钟会响,那是另一个生产周期的开始。身体已经准备好了。














