同步台账的损坏是无声的。数据库说有 763 条。我们不再相信它,用浏览器逐个登录 21 个 AI 平台,在页面内调用各平台自己的 API,按 ID 逐条比对——真实存在的约 400 条。
这是那道缺口的审计记录。数字来自 2026-08-18 对真实账号的测量,没有任何假设。
对象是从一个实际使用的账号里采集的 AI 智能体资产台账,共 763 行——对话、项目、技能、指令文件、记忆,横跨 Claude、ChatGPT、Gemini、Grok、Perplexity、Kimi、Qwen 等 21 个平台。
验证方法比工具更重要,先写方法。
fetch(credentials: 'include')调用该平台自己的列表 API,分页翻到底数量一致,内容仍可能是两份不同的清单。只有 ID 差分能告诉你那里到底有什么。
763 与 400 之间的差距不是一个 bug,而是三种相互独立的故障模式,每一种在仪表盘上都显得一切正常。
| 故障模式 | 发生了什么 | 确认行数 |
|---|---|---|
| 幽灵 | 平台上已删除,台账里还活着 | 至少 173 |
| 漏采 | 平台上存在,却从未进入台账 | 至少 63 |
| 误报 | 平台发给所有人的默认内容被当成用户资产 | 至少 109 |
注意这个结构:幽灵和误报把台账吹大,漏采把它缩小,两者部分抵消。所以总数是唯一保证能把三种故障全部藏起来的指标。
分页上限变成了数量。 某平台的技能栏在台账里是 100 条。用户实际安装的是 4 条。其余 96 条是平台向所有用户展示的公共目录,而"100"这个数字本身,就是列表 API 的 page_size 上限被原样记成了账号的事实。
设置页的示例文字变成了记忆。 用户实际保存了 8 条信息,采集器一条都没拿到,反而把设置页占位符("例:……"两行)当成用户数据存了进去。只看台账,这个格子像是正常工作的那一类。
从未存在过的文件占了 42 行。 42 行指令文件指向的本地规则目录,在这台机器上根本不存在。不是被删了,是从来就没有过。采集器照样写下了 42 行。
以上每一行,都是由报告了成功的任务写入的。这才是重点。
不是改良采集器,而是把回读审计(read-back audit)变成一等操作:每次同步后重新读取目标平台,把 ID 向两个方向做 diff;把"平台发给所有人的默认内容"当作匹配器必须认识的类别;并且按计划反复跑,而不是只跑一次。
如果你也在多个工具上运行智能体,建议亲手数一次:挑一个平台,写下台账的说法,然后把那个平台自己的 API 翻到最后一页。第一份 diff 通常十分钟就能出来,而且很少是空的。
*这份审计来自 untactit——统一管理 AI 智能体技能、规则与记忆的控制平面(尚未正式发布)——的开发过程。文中的回读验证已经成为产品的设计原则:不回读目标的分发,正是台账腐烂的路径。*