<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>安全工程 on UKonA有空</title><link>https://ukona.cn/tags/%E5%AE%89%E5%85%A8%E5%B7%A5%E7%A8%8B/</link><description>Recent content in 安全工程 on UKonA有空</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 08 Oct 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://ukona.cn/tags/%E5%AE%89%E5%85%A8%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>AI的记忆库，为啥不让我直接改了？</title><link>https://ukona.cn/posts/life-066/</link><pubDate>Thu, 08 Oct 2026 12:00:00 +0800</pubDate><guid>https://ukona.cn/posts/life-066/</guid><description>&lt;blockquote&gt;
&lt;p&gt;字数：约3200字 | 阅读时间：8分钟
&lt;strong&gt;&amp;ldquo;人可读，不等于人可直改。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;「记忆工程」系列第四篇。上一篇讲流水线，这篇讲一场被事故逼出来的设计翻转：我给AI建的&amp;quot;第二大脑&amp;quot;，现在连我自己都不允许直接改了。&lt;/p&gt;
&lt;p&gt;听起来有点反直觉——自己建的记忆库，自己改一条怎么了？&lt;/p&gt;
&lt;p&gt;事情要从一条&amp;quot;看起来完好&amp;quot;的记忆说起。&lt;/p&gt;
&lt;h2 id="一一条永远读不出来的记忆"&gt;一、一条永远读不出来的记忆&lt;/h2&gt;
&lt;p&gt;这个记忆系统有条铁律：正本是明文Markdown加Git，谁都能打开看。好处是审计极其简单，&lt;code&gt;git log&lt;/code&gt; 一翻，哪条记忆谁写的、什么时候改的，清清楚楚。&lt;/p&gt;
&lt;p&gt;但&amp;quot;人人可看&amp;quot;慢慢滑向了&amp;quot;人人可改&amp;quot;。&lt;/p&gt;
&lt;p&gt;事故锚点是一次提交：一条记忆链接记录里，混进了一个规范之外的字段。入库没人拦，落盘没人报，唯一能看到异常的地方——解析器的错误统计——因为字段不合法，这条记录解析直接失败，错误&lt;strong&gt;永远不可见&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;于是库里静静躺着一条记忆，界面上看它完好无损，实际上永远读不出来。更麻烦的是：没人知道还有多少条这样的记录。&lt;/p&gt;
&lt;p&gt;复盘时挖出了更根本的问题：这条记录是&lt;strong&gt;人工直接编辑&lt;/strong&gt;进库的。系统里每个AI写记忆都要过归属检查，唯独人工提交完全绕过——权限文件里写着这条记录属于哪个AI，但人工提交根本不看它。&lt;/p&gt;
&lt;p&gt;看的人有权限，不等于改的人有资格。这个区别，之前的设计没管。&lt;/p&gt;
&lt;h2 id="二方案一句话评审三轮全打回"&gt;二、方案一句话，评审三轮全打回&lt;/h2&gt;
&lt;p&gt;修法说出来一句话就能讲完：&lt;strong&gt;记忆正本对人是只读的，人想改，写意见进专门的暂存目录，由AI程序化提取、校验、落成合法记录。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是项目的第23号决策「记忆库程序化只写」。&lt;/p&gt;
&lt;p&gt;但这个听起来很合理的方案，在评审那里撞了墙。而且不是撞一次，是三轮独立复核，结论全部是&amp;quot;打回重改&amp;quot;。&lt;/p&gt;
&lt;p&gt;第一轮挖出8项发现，最重的两条：方案的改动清单漏了5处绕行写点——你以为只堵了一个门，实际上系统里有五条小路；另外还有一个&amp;quot;自由通道&amp;quot;函数压根没纳入设计。&lt;/p&gt;
&lt;p&gt;第二轮确认一轮8项中6项成立，又新发现3项致命、4项严重。这轮还修正了一个关键判断：真正的缺口&lt;strong&gt;不是没有校验，而是没有统一契约&lt;/strong&gt;——各处校验各管各的，没有中央闸门，绕过一处就全绕过了。&lt;/p&gt;
&lt;p&gt;第三轮把前两轮的问题全部独立复现，补上实证，又加了4项新发现。结论维持打回。&lt;/p&gt;
&lt;p&gt;三轮下来，最初的方案被磨成了一份带五项决策的整改计划，全部按评审推荐执行。这个过程最有意思的地方在于性价比：三轮评审不是三轮推倒重来，而是&lt;strong&gt;每轮收窄、逐层压实&lt;/strong&gt;——第一轮找方向性漏洞，第二轮修正误判，第三轮补实证收口。最终拍板的五项决策，没有一项是评审期间没讨论过的。拍板只是确认，不是裁决。&lt;/p&gt;
&lt;h2 id="三一天落地三道闸"&gt;三、一天落地三道闸&lt;/h2&gt;
&lt;p&gt;评审通过后，执行一天干完，分三个阶段。&lt;/p&gt;
&lt;p&gt;**第一道闸：中央写入口。**所有往记忆库写记录的路径，必须过同一个闸门，串联归属检查和格式检查两道验证。设计上有个值得学的细节：检查失败不抛异常，而是返回带错误码的结构化结果，调用方自己决定怎么处理；每次拒绝都写审计事件，绝不静默。闸门装上后做的第一件事是收口——排查出5处绕行写点，全部改走闸门。存量脏数据也没放过：迁移脚本把已有的非法记录隔离，死链生成清单供手工修复。&lt;/p&gt;
&lt;p&gt;**第二道闸：Git钩子兜底。**中央闸门管的是&amp;quot;走正常管道的写入&amp;quot;，那绕过管道直接提交的怎么办？Git提交钩子里加了白名单：记忆库核心目录的提交，作者必须等于记录属主，不匹配直接拒绝提交。豁免清单里保留意见暂存区和隔离区——那两个地方本来就该自由写。配合这套约定，周期审计加了两个扫描分支：一个抓人工直改，一个抓字段结构漂移。这一层近400行代码里，一大半是防御机制自己的测试——&lt;strong&gt;每道闸门都配了自己的回归验证&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;**第三道：意见通道。**最后把&amp;quot;人怎么提意见&amp;quot;做完整：一个自由格式的暂存目录，人往里丢笔记，文件监听加防重复消费的游标，笔记经提取管道程序化落成合法记录。细节上留了活口：&lt;strong&gt;解析不了的笔记原地保留&lt;/strong&gt;，产出审计事件，不隔离不丢弃——意见通道本身不能变成黑洞。&lt;/p&gt;
&lt;p&gt;落地当天全量测试463个用例，0失败。&lt;/p&gt;
&lt;h2 id="四现在想改记忆流程长这样"&gt;四、现在想改记忆，流程长这样&lt;/h2&gt;
&lt;p&gt;改造后，写入路径收敛成四条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI程序化写入&lt;/strong&gt; → 中央闸门 → 记忆库；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人提意见&lt;/strong&gt; → 暂存目录 → 提取管道 → 经闸门落成合法记录；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绕道直改&lt;/strong&gt; → 提交钩子拒绝，或周期扫描捕获；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存量脏数据&lt;/strong&gt; → 迁移脚本一次性清过。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对人的体验变化只有一处：想改记忆，不能再顺手改文件提交了，得往暂存目录丢一篇自由格式的笔记，剩下的交给管道。&lt;/p&gt;
&lt;p&gt;看起来麻烦了一点，但这正是这次改造的全部意义：&lt;strong&gt;便利让渡给一致性，一致性保住可信度&lt;/strong&gt;。第二大脑首先是&amp;quot;可信&amp;quot;的，然后才是&amp;quot;好用&amp;quot;的。&lt;/p&gt;
&lt;h2 id="五这笔账怎么算"&gt;五、这笔账怎么算&lt;/h2&gt;
&lt;p&gt;这场改造有三点值得单独记下来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，承认&amp;quot;合理的坏设计&amp;quot;最难。&lt;/strong&gt;&amp;ldquo;明文人人可改&amp;quot;曾是这套系统的卖点，白纸黑字写在早期决策里。承认既有设计有问题，比修一个新bug难得多——新决策里专门写了一句&amp;quot;对早期决策的部分推翻&amp;rdquo;，设计文档明明白白记下自己推翻了自己。&lt;/p&gt;
&lt;p&gt;**第二，交叉复核便宜得惊人。**三轮全打回，意味着如果第一轮就放行，5处绕行写点、自由通道、作者判定语义不清会全部带病上线。而三轮评审的成本不高：每轮都是独立实例读方案、读代码、出报告。红蓝对抗在方案阶段跑，比上线后出事便宜几个数量级。&lt;/p&gt;
&lt;p&gt;**第三，执行快是因为方案慢过了。**单日三阶段落地看着爽，但前提是整改计划被三轮评审磨透、五项决策提前讨论清楚。评审慢下来换执行提速，这笔账是划算的。&lt;/p&gt;
&lt;p&gt;照例：本文由 AI 起草、人类审校拍板。这个栏目本身，就是人机协作的现场记录。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;「记忆工程」系列 · 04 | 上一篇：&lt;a href="https://ukona.cn/life-065/"&gt;一个人带四台机器干活：我把AI协作做成了流水线&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>