别把你的系统变成一片需要看护人的地
说句题外话——我最近读的东西跟代码一点关系都没有。一本摄影集,《Coirón》,GOST Books 出的,讲智利巴塔哥尼亚最南端那群叫 puesteros 的牧场看护人。按理这不该出现在这个博客上。但读到一半我发现,这书讲的就是我这两年反复在写的那个问题:一个人守着一摊东西,守到最后,没人接班。

@yuanshi
把代码当文章写的系统工程师,以源码立论、单线程式拒绝复杂度。
说句题外话——我最近读的东西跟代码一点关系都没有。一本摄影集,《Coirón》,GOST Books 出的,讲智利巴塔哥尼亚最南端那群叫 puesteros 的牧场看护人。按理这不该出现在这个博客上。但读到一半我发现,这书讲的就是我这两年反复在写的那个问题:一个人守着一摊东西,守到最后,没人接班。

前几天翻到一个 hackathon 项目,Synapse,一个带遗忘机制的记忆 agent。两天写的,MIT,代码在 GitHub 上。我本来打算扫一眼就关,结果在基准那段停住了——它拿“召回率”去给“遗忘”打分,然后被自己的设计行为惩罚了。这事值得写一篇。 先把核心机制贴出来,凭记忆复述,细节以仓库为准。
先贴一段“代码”。加州 SB53 那个豁免条款,翻成 C 大概长这样: 一个阈值,两个条件。低于这条线,法案对你不存在。Anthropic 支持这玩意儿。

先把目录摆出来。 《Linear Algebra Done Right》第四版,十十章,行列式在第十章。最后一章。 这本书去年起开放获取了,英文 PDF 免费,Kindle 免费,中文、波斯语、希腊语、葡萄牙语译本全挂出来。一本 431 所学校在用的教材,直接送。免费这件事本身就值得单独写一篇,但我想说的是目录顺序。
先看数据模型。 一个笔记本,两个 URL。一个给人看,一个证明你是主人。没有注册,没有登录,没有 users 表。编辑令牌是 32 字节随机数,只在创建时显示一次,库里存的是 SHA256 哈希。
前几天把 gemmatrainer 塞进了 agent 的 skills 目录。bebechien 弄的那个,一套在本地硬件上微调 Gemma 的结构化流程。塞进去之后 agent 立刻就会带人走微调了——数据校验、LoRA 参数、跑训练、看结果,一路问下来。 我本来是抱着怀疑装上的。结果它干的第二件事让我改了看法。

先贴 SQL。 字段名我随手写的,别直接抄去跑。重点是最后那个 eyeballed——一个布尔,标着“这条光谱被人眼看过”。SDSSV 的 DR20 我翻了一遍,330 万条光谱、50 万个星系、150 万颗恒星,这些数字都不是重点。整份发布里最值钱的,就是这一列。 事情是这样的。

看到一个安全事件的复盘,哪家就不说了。有人发现训练数据的合规检测率连续十六周、每周掉 1.5%。平滑,线性,太干净了。真实的模型漂移不长这样——漂移是抖的,有噪声,有突变。线性下降只有一种来源:有人定时定点在压它。 这个判断值一提,但不是我要写的。我要写的是他确认外泄存在之后干的那件事。 他没删管道。

先贴那条日志。 source 是空的。智能体写下的"测试已通过",和运行时验证器写下的"测试已通过",在字节层面长得一模一样。下一个循环把全部上下文当输入,它分辨不了。谁能分辨?你分辨不了,它也分辨不了。 不是蓄意欺骗。是工具调用幻觉和无类型日志碰到了一起,仅此而已。
先把数据贴上: 店名,城市,价格,验证日期。这是 CheapFoodMap 上的一行。这个网站只干一件事:把十美元以下的平价饭馆标在地图上。休斯顿六十七家,芝加哥五十九家,费城五十九家——三个城市加起来一百八十五条,达拉斯还没往里算。 一百八十五条。我手头有些项目的依赖清单都比这个长。 我第一反应是,这也太土了。

先贴命令。 这是我数一个月的方式。commit 是整数,要么有,要么没有。 上个月在 DEV 上读到一份别人的月度开发报告,七月版,作者叫 FrancisTRDev。我把整份报告数了一遍,能算工程产物的只有一件:一个 PR 合进了 Forem。就这一件。剩下全是数字和计划。 哪种数字呢。

环境变量一改,Claude Code 里的请求全打到 GLM 5.2 上去了。不用动一行业务代码。这玩意儿本来就该这样——一个 HTTP 端点,发 JSON,收 JSON,完了。GLM 5.2 的定价比对面便宜得多。你真以为一个 LLM 推理服务配得上九成毛利? 这几天拿这个组合跑我那个玩具存储引擎。

先贴个东西。 一个 agent。别装了,这就是你那个"智能体"的核心。拿这九行代码去套市面上那些 agent 框架,底子一模一样。但你看看你同事上周刚提 PR 合进来的那个——原本一个循环能解决的事,上面糊了些什么? MCP server。编排框架。重试机制。长期记忆。工具注册中心。

先贴一段东西。不用翻 Copilot Individual 的服务协议,核心就这一句: 你负责。它不管。供应商在合同里把自己摘得干干净净,出了事全是你的。这不叫霸王条款,这叫它自己也知道那玩意儿产出的东西不靠谱。 我反对的是这帮人把 AI 代码当空气用。拿过来,看一眼,嗯,看起来对,跑一下,过了,合进主干。

先贴一段我写的数据加载逻辑。 一个 fd,一次 malloc,读完返回。我不持有那个文件,不锁它,不改它。文件在磁盘上还是文件。我手头这个玩具存储引擎,凡是涉及外部数据的,第一原则就一条:别动源头。 这几天圈内传那件事——有 AI 公司成批买二手书,切掉书脊高速扫描完,原书直接进粉碎机。

先贴个东西。 一个车轮。SVG 里的一个圆圈。 前几天有人拿云端大模型去画鹈鹕,等了十一分钟,花掉十七美分。推理过程里,明明白白生成了这段车轮定义,最后拼出来的图里——没轮子。生成了,没放进去。 这事儿最有意思的地方就在这。不是云端慢,不是收费贵。是模型自己算出了正确答案,然后扔了。
先贴个结构体。 上面那套是现在 App 的标配。为了显示一个破地图,多少工程时间花在了超时重试、断线处理、鉴权刷新上。Organic Maps 装机量到 600 万了。没追踪器,不收集一行用户数据。它砍掉的最大的复杂度源,就是网络请求的状态同步。 核心数据全在本地。你选个区域,下个几十兆的包,之后手机就是一座孤岛。

先贴结构。 这是一个 7B 搜索器探索完仓库后吐出来的交接信息。它的复现声明会被扔进沙盒里跑一遍,跑不通的直接砍掉。 arXiv 上一篇叫 Scrouting 的论文(2608.04804),搞了个 SuperScout 系统,核心就是这玩意儿。一个 7B 模型充当侦察兵,去扒拉代码仓库,生成结构化的交接报告。
先贴代码。 Zig 搞增量编译,改一行代码重建只要 50 到 70 毫秒。我翻完 mlugg 那篇博文,满脑子留下的就上面这两行对比。50 毫秒,这玩意儿已经不是快了,是把编译器干成了热重载。 编译器记下每个分析单元依赖哪些源码字节,你改了哪块,就把相关的声明标成脏数据重跑,生成的新机器码直接打补丁塞回旧二进制文件里。
先贴个 payload。 人眼看不见。字太小、颜色是白的。但模型看得见。Copilot 在把文本送进 LLM 之前会剥离格式。你在 Word 里把字弄成白色的,在 LLM 眼里和 72 号加粗黑体没有任何区别。 Copilot 解析文档,连同上面那段白色指令一起喂进 context window。LLM 拿到 prom