这周开头是件小事。有人在飞书发来一个办卡链接,说杭州有四百七十块刷卡金,办卡专员上门,当天办当天用,问我会不会是骗子。我把文章里的数字一条条对回去,四百七十这个数是真的,按城市定价的三百五加一百二正好凑上,杭州四百七、深圳二百二、北京一百九,这种按城市分档开价的路子,是渠道返佣的典型特征,不是银行统一活动。真正露怯的是当面送刷卡金这句,刷卡金只活在银行系统里,用来抵扣消费本金,谁也送不了。我把正规的活动代码和网点进件渠道查清楚,写成一段话发回去,顺手给了一个更安全的替代方案,干脆自己去网点办。

桌上的一张卡

Photo by rupixen on Unsplash

这类事我做得越来越顺,心倒是越做越硬。看见当天办当天用这种话,第一反应是找破绽。看得多了,人容易变钝。

然后是科里那件投诉。一位患者的切口两个月没长好,走了 12345,答复的截止日就在当天。我把整份住院档案读完,从门诊开单那天一直看到出院记录,又等到病理报告补齐,才敢下笔。这活跟看病不一样,看病的对象是病,这活的对象是人心里那口气。第一版我写得像份鉴定书,事实清楚,责任划得清,读起来却是早就告诉过你的意思。有人提醒我,这份东西最终要交到患者手上,得让人信。于是我改了五处,把结论提到最前面,开头先承认切口确实没长好、人家确实来回跑了很多趟,化验数字后面补上正常范围。后来又砍掉白话解释,全部换回医学术语。改到第三版,我在手术记录里翻不到水肿这个描述,就没有写进去。答复不能跟病历打架,硬加一个档案里没有的所见,等于自己给自己开新口子。

桌上的字迹

Photo by Aaron Burden on Unsplash

周三下午本来只是看一个开源仓库。那个项目把循证写作做成了一套能被机器检查的工程,每条结论挂着证据等级和来源,数字只写一处,其余视图自动生成,同一份内容能同时出网页、电子书和复习卡片。我把三个机制搬回自己的库里,当天就抓出 21 处引用错位,全是上一次改编号时声称同步全过漏掉的。同一天还把文献库里五组可疑条目逐个核了一遍,其中两组根本不是重复,是编号串位,一份被错挂的正文在库里躺了两年。晚上继续翻,又发现两张派生表的编号集体低了一格,从九月二十六号那次改号一直漂到本周,五周没人发现,因为它们不在任何脚本的扫描范围里。

屏幕上的代码

Photo by Florian Olivo on Unsplash

这里要记一条教训。那两天我一直在过全流程的闸门,越查越觉得后背发凉。有几处校验脚本自己崩掉的时候,巡检一个字都不报,因为判据写的是返回码非零而且有输出,而脚本崩了恰恰是没有输出。表面上全绿。可绿不等于对,绿的是没查成。后来我把这类问题归成一句话,静默等于全过这个约定,只在脚本一定能跑起来的时候才成立。

机房里的线缆

Photo by Albert Stoynov on Unsplash

周五升了 Hermes。上游前一天发了新版,主要修的是重启之后网关不自启,那个坑我踩过。过程比预想曲折。重启完冒出一个上游发布版自带的导入错误,一个类型注解用到了没有导入的类,连带把群聊通道打掉,补上那一行就活了。更有意思的是我用的那条重启命令,它顺手把整个运行时换到了新的 Python 环境,依赖自动重装了一遍,我打的补丁也跟着迁移过去。我原先准备的一整套手动步骤,一条都没用上。

终端窗口

Photo by Daniil Komov on Unsplash

周六是修管道的一天。先发现备用模型链掉进一个贵端点,半小时烧掉大半个五小时窗口,我把备用模型换成一个免费的,逐个拿带工具历史的真实场景测过,才敢写进配置。然后是 Zotero 的大版本升级,我先把库里九个集合的成员做了哈希快照,升完逐项对账,条目、附件、笔记一个没少,只少了七个挂在零条目上的孤儿标签。接着把整条文献管道从云端改成本地写入,真库上跑了一遍建、改、挂附件、删的自测,条目总数进出还是同一个数。到晚上我起了五个子代理,把十七份跟 Zotero 有关的技能文档翻了一遍,加起来一万七千行。它们交回一份清单,我逐条复现,坐实三条。最危险的那条是一个校验脚本不认识库里通用的相对路径写法,它自己打印修好了,其实跑一次会把三千九百多个正确的路径批量改成错的。脚本的说明里还写着,建完附件必跑。

书架

Photo by Peter Herrmann on Unsplash

周日是意外。中午我让另一个助手帮我清一下 C 盘空间,它做了一轮按字母序扫过去的批量删除。同一分钟里,Common Files、Intel、Microsoft Office、nodejs、Quicker、Tailscale 依次中招,凡是被进程占用的文件活了下来,其余都没了。Edge 被掏空成零个文件,坚果云缺了启动器不再自启,Office 整个目录只剩十七个被锁住的动态库,Word 和 Excel 都没了。更麻烦的是它前一天晚上顺手清空过回收站,兜底那条路被自己堵死。.wslconfig 也一起没了,WSL 从镜像网络掉回默认模式,于是钉钉每次重连都撞在一个不存在的代理上,整个白天没反应。

一块电路板

Photo by Blaz Erzetic on Unsplash

整个下午我一半在考古,一半在修。考古那一半是从另一个助手的对话记录里把删除脚本、执行时间、命令逐条挖出来,全场 479 次调用,压缩事件解出来才看清它到底删了什么。修的那一半,Edge 用官方包重装,WebView2 只剩两个残壳也一并补上,坚果云把缺失的启动器补回去,另一个助手的配置从会话快照里重建,五十个模型定义、六个密钥一个没丢。最好笑的是它自己那份记忆文件在会话记录里被完整读到过,把编码修一修,反而背回来了。

中间还有个病人的问题插进来。一位年轻人春天放了心脏支架,胆总管里又长了一枚结石,问什么时候能做手术、抗血小板药能不能停、有没有桥接方案。我答了三条,第三条说错了,后来把指南全文下下来核对,才发现里面确实有一张专门的桥接图,只是写着一般不推荐、仅限实在无法中断的罕见情形。错就是错,我先更正,再把这两年的两份指南一起入库,专门放进一个分类。以后同类问题可以直接翻原文。

听诊器

Photo by Etactics Inc on Unsplash

周五那天还有件小事。评论区的病情咨询堆得太多,我一度不想回了,甚至认真考虑过彻底不理。后来想明白了,累的不是回评论,是把评论区当成第二个门诊在开。真正要立的是规则,急症回一句让人尽快去急诊,其余一概不接诊,挂一条置顶说清楚。规则立起来,判断就没了,不回也不失礼。

冷掉的茶

Photo by Alex Padurariu on Unsplash

家里孩子鼻炎用药两周还没利索,晚上我顺手把儿童过敏性鼻炎的阶梯治疗共识翻出来,两件事对上了,两周不是停药节点,是评估节点。儿科医生处理得没问题,我这份当爹的焦虑倒是多出来的。

这周我改了很多次自己说过的话。答复的措辞改了三回,水肿查不到就没写,那个让我误判的依赖问题其实只是环境顺序,桥接方案也说反过一次。改错不丢人。真正让我在意的是另一件事,那些看起来全绿的检查,到底有没有真的跑起来。

Cover photo by Hugo Clément on Unsplash