Agent 工厂体检:幽灵注册、版本漂移、文档失联,AI 体系的三种病

Agent 工厂体检:幽灵注册、版本漂移、文档失联,AI 体系的三种病

AI 健康三部曲 · 第 3 篇(Agent 工厂体检)

第一篇,体检"单个 Skill 写得好不好"------看的是文件。

第二篇,体检"一个 Agent 系统架构得好不好"------看的是结构。

这一篇,视角拉到最高:几十个 Skill、10 个域、上千个文件、横跨多个工具的整个体系。

三种失控,全都发生在你眼皮底下:

注册表里有个域------文件系统里没有它;

同一个 Skill------三个地方写着两个版本号;

刚建的 Skill------文档站里搜不到。

没有一个是"报错"的。


一、体系的失控,为什么最难发现

三级视角,三种体检对象,难度是递增的。

微观:单个 Skill。 就是一堆 markdown 文件,扫一遍逐项打勾,谁好谁坏一目了然。

中观:一个 Agent 系统。 它动态执行、错误会传递,但好歹有运行轨迹可查------它跑起来什么样,你盯着看就知道。

宏观:整个体系。 几十个 Skill、10 个域、上千个文件、跨多个工具的调用链。这时候麻烦变了:不是某个东西"坏了",而是没人能一眼看完所有东西。

体系失控有三个特征,一个比一个隐蔽:

特征一:每个局部都是对的。

注册表里那个域的元数据齐全,写得没毛病;文件系统里也确实没有那个目录,干干净净。两边各自都"对"------只有把它们放在一起对照,才能看出问题。

单个 Skill 坏掉,是"写错了";体系失控,是"两边都对,但对不上"。前者的敌人是错误,后者的敌人是差异。

特征二:全部不报错。

跑了不存在的域,路由不会给你弹错误框------它只会静默地找不到东西。

版本号打架,没有任何进程会崩溃------它只会让你在某个脚本里拿到错误的"新旧判断"。

文档站里少了一页,不会 404------因为根本没有页面会去"请求"那一页。

不报错的不一致,才是体系里最贵的债。 因为没有任何机制会提醒你,你只能主动去数。

特征三:它会撒谎,而且你会信。

这是最要命的一条。你把路由交给注册表、把统计交给索引、把导航交给文档站------它们是你的"事实来源"。当这些来源本身开始漂移,你拿到的每个数字都是错的,而你没有理由怀疑。

体系体检要做的,就是定期把这些"事实来源"和现实对一次账。

三种最常见的失控,先给它们起个名字:

  • 幽灵注册------注册表说"这里有个域",文件系统说"没有";
  • 版本漂移------同一个东西,多个地方写着不同的版本号;
  • 文档失联------东西存在,但你的导航系统里找不到它。

今天这台体检器:system-health,全体系健康大总管。下面用一个真实体系(我自己这套:37 个自研 Skill、10 个域)开箱跑一遍。


二、11 项检测,一项都不能跳

体检器的宏观检测有 11 项,每一项盯的都是一个"可能对不上"的位置:

# 检测项 盯什么 这次体检的结果
M1 版本同步 注册表版本 vs SKILL.md frontmatter ⚠️ 3 处漂移
M2 文档站覆盖 文档条目 vs 实际 Skill 清单 ⚠️ 缺 3 个
M3 架构完整性 每个域的三层结构是否齐 ❌ 幽灵注册 1 个
M4 知识库一致性 索引统计 vs 实际文件数 ⚠️ 统计过时
M5 跨域引用完整性 extends / 引用的目标是否存在 ⚠️ 断链 2 条
M6 文档发布状态 滞留超 14 天的草稿 ✅
M7 intents 完整性 每个域的路由意图是否为空 ✅
M8 自评一致性 已知局限表 vs 实际模块(防自评过期) ✅
M9 市场页面同步 展示页列表 vs 注册表 ⚠️ 缺 1 冗余 13
M10 质量评分扫描 100 分制自动化评分 ⚠️ 低分 2 个
M11 文章投喂数据同步 浏览页数据 vs 实际文章数 ✅

首检通过率 4/11,其余 7 项全部带着修复项收尾。这个数字看起来不太好看------但记住,体检的价值不在分数,在"把差异摆到台面上"。7 个 ⚠️ 里有 6 个是几分钟就能修的小问题,唯一真正危险的(M3)藏在最里面。

体检流程分 5 步:

vbnet 复制代码
┌──────────────────────────────────────────────────────┐
│               system-health 体检工作流               │
├──────────────────────────────────────────────────────┤
│                                                      │
│  Step 0  触发     手动发起 / 距上次 >7 天自动提醒    │
│    │                                                 │
│  Step 1  宏观扫描  M1~M11 十一项必检,一项不能跳     │
│    │              版本 / 文档 / 架构 / 一致性 / 评分 │
│    │                                                 │
│  Step 2  域深度    专员在 → 派单;专员缺 → 亲自动手  │
│    │                                                 │
│  Step 3  出报告    一句话结论 + 与上次的增量对比     │
│    │                                                 │
│  Step 4  存档      latest 覆盖 + history 永久归档    │
│                                                      │
└──────────────────────────────────────────────────────┘

两个设计细节单独说。

Step 0 的提醒,不阻断。 距上次体检超过 7 天,体检器只提醒,不强制执行------你可以忽略它。为什么?体检这件事如果变成"强制拦截",你会开始绕过它,然后它就死了。能被忽略的提醒,才能活得久。

Step 4 的存档,只增不减。 每次体检报告同时写两份:latest.md 覆盖更新,history/{日期}.md 永久归档。历史报告永远不删------因为体系健康的判断标准是"跟上次比",没有历史,就没有趋势。

体检器还立了一条硬规矩:11 项宏观检测,任何触发方式下都不允许跳过。 慢一点没关系,漏项的体检等于没检。


三、现场一:幽灵注册------注册表里有个域,现实中没这个东西

先把最危险的说了。

病例: M3 架构完整性检测扫过一个域:business-hub。注册表里它存在------版本号写着 0.2.0,状态标着 stable,模块列表、描述,一应俱全。但文件系统里,business-hub/SKILL.md 不存在。

一个标着"stable"的域,其实从未诞生。

为什么这是检测项里最危险的一个?

因为路由不会报错。用户在对话里说"帮我管理客户交付",meta-hub 查注册表 → 命中 business 域 → 去加载它的 SKILL.md → 撞墙。整个过程没有任何一方会主动喊"这里有问题"------注册表觉得自己信息很全,文件系统觉得自己很干净。

类比一下:户籍系统里有一个完整档案的公民------身份证号、住址、照片齐全------但现实中查无此人。 更迷惑的是他的状态还标着"正常"。

覆盖度雷达图也印证了它的危害:business 域均值 1.0/5,全体系最低------因为它整个是虚的。

修复路径(这个案例里花的时间比想象中多):

  1. 补建 agent/business-hub/:SKILL.md + 4 个模块(交付管理 / Skill 市场 / MCP 集成 / CI-CD 流水线);
  2. 建立软链部署;
  3. 更新注册表(从幽灵变成实体);
  4. 补上市场页面展示;
  5. 全量测试验证:vitest 54/54 通过。

这个病例的心法一句话:注册表和文件系统之间没有"自动对齐"------不查,就永远对不上。

注意最后一步:幽灵注册修复后,是拿测试兜的底。别信"我补完了",信"54 个用例全绿"。


四、现场二:版本漂移------同一个 Skill,三个地方两个版本号

病例: M1 版本同步检测。同一个 meta-hub:

  • skill-registry.json 里写着 2.0.0;
  • hub-registry.json 里写着 2.2.0;
  • 根目录 SKILL.md 的 frontmatter 里也写着 2.2.0。

三个地方,两个版本号。而且这三处没有一处是"错"的------每一处单独看都像刚更新过。

同一次检测还扫出两个更极端的:soul-hub 连 frontmatter 都没有(不存在版本号);test-base-skill 的 SKILL.md 无 version 字段,注册表里却标着 0.1.0。

为什么版本漂移危险?

版本号是所有自动化判断的"第一依据":

  • 你写个脚本盘点"哪些 Skill 三个月没更新了"------版本号漂移,盘点结果全错;
  • 你判断"这个域还是不是活跃维护"------版本号打架,你连信哪个都不知道;
  • 未来做依赖解析(A 需要 B ≥ 2.1)------版本是假的,依赖管理就是假的。

版本是任何入口、任何脚本拿来判断新旧的第一依据。两处打架时,谁也不知道该信哪个------于是所有依赖它的判断,全部失效。

根因不复杂:手工维护 + 多处副本 = 必然漂移。 不是谁粗心,是结构问题。同一个事实存在三个地方,就注定有一天会对不上------就像上一篇文章说的:结构上让错误有路可走。

修复: 统一为 2.2.0;给 soul-hub 补上 frontmatter(version 1.0.0)并同步到注册表;顺带把另一个漂移的(investment-research-assistant 0.1.0 → 1.1.0)一并统一。

心法一句话:版本只在一处维护,其他地方引用它------单一事实源,不是洁癖,是止损。


五、现场三:文档失联------东西存在,但你的导航里没有它

病例: M2 文档站覆盖 + M5 跨域引用,两把尺子同时量,量出两类失联。

第一类:该有的页面不存在。

文档站里 46 个文档,对照实际 Skill 清单,缺 3 个:soul-hub、pm-skill-inspector、design-skill-inspector。其中后两个是同一天刚创建的域专员------建了 Skill,忘了建文档。

另一把尺子(M9 市场页面同步)量出同样的毛病:用户能看到的 Skill 市场页面里,soul-hub 也是缺的。

第二类:地图上有路标,路是断的。

M5 扫出 2 条断链:fe-hub 引用 retrieval-skill-cards、引用 tech-stack-matrix------两个目标文件都不存在。也就是说 fe-hub 的工作流里写着"去找 XX",但 XX 不在那。

为什么文档失联危险?

文档和导航是用户(包括未来的你)唯一的入口。文档失联 = 这个 Skill 对用户来说等于不存在。 功能都在、测试全绿、但它就是"看不见"------而看不见的东西,不会被任何人使用。

顺带说第三类失联:数字和现实失联。

同一次体检的 M4 扫出一个细节:知识库索引的头部统计写着"453 篇",实际数出来是 455 篇;raw 状态声明 8 篇,实际 2 篇。数字不是手写坏的------是手写的,然后文件变了。

数字是最容易被相信的东西,也是漂移后最没人怀疑的东西。 统计口径如果靠手写,每次新增内容都是一次对账风险。

修复: 补建 3 个缺失文档(46 → 49);2 条断链改指向(补占位文件 + 引用改指绝对路径);索引头部统计全量刷新(455 篇逐一验证登记)。

心法一句话:失联不会报 404------没有一个页面会去"请求"那个不存在的页面。只有主动数一遍"该有的 vs 实际有的",才能发现。


六、这台体检器的三个设计

三个现场拆完,说说体检器本身。三个设计点,都是被真实问题逼出来的。

设计 1:动态分工------有专科医生就转诊,没有就全科坐诊。

体检器对每个域先查一件事:这个域有没有自己的专员(域体检 Skill)?

  • 有 → 派单:把深度体检任务发给域专员,等它汇报,体检器负责汇总;
  • 没有 → 亲自动手:体检器自己执行简化版深度检查。

这次的实际情况:10 个域,4 个有专员(元层、前端、产品、设计),其余 6 个由体检器亲自跑。

这个设计的好处不在省事,在于专员的检测标准比"外人"更准------前端域的问题是 fe-skill-inspector 最清楚,让 system-health 隔着域去猜,不如派单。而对没有专员的域,体检器兜底,不留检查盲区。

设计 2:增量审计------只查"变了的东西"。

第一次体检全量扫。但第二次开始,体检器只扫"变更集":两次体检之间动过的文件(git diff 上次体检 commit..HEAD,圈定改动范围内的 skill/agent/knowledge 目录),没动过的部分直接继承上次结论。

为什么?因为体检过一次之后,绝大多数文件在两次体检之间根本没变------全量重扫 90% 的机器时间花在了没变的东西上。这个优化的思路来自代码审查里的"爆炸半径"分析:变更的文件才是审计焦点。

设计 3:报告纪律------不虚构、有对比、说到做到。

三条:

  • 一句话结论必须最先出现------用户可能只看这一句,它必须能独立成立;
  • 必须和上次对比------新增了什么、修好了什么、新出了什么问题、分数怎么动的,四行表格说清楚"这周体系是变好还是变坏";
  • 无法检测就标"无法检测"------不猜、不编、不留白给想象。体检报告的信誉,靠"不确定的地方明确说不确定"积累。

七、体检器自己的坑

按这个系列的规矩,最后自曝。这台体检器有两个坑,都挺典型的。

第一跤:第一次体检,最先查出的问题是"这个体系从来没有体检过"。

首检报告里有一行小字最扎心:health-log/ 此前不存在,本次为首次体检。

也就是说------这个体系功能一直在加、Skill 一直在涨、域一直在扩,但"这个体系健不健康"这个问题,从来没有被问过一次。第一次跑体检,第一件发现的事是体检本身缺席。

像一个人活了三十年,第一次进医院------最大的检查结果,是"你从来没做过检查"。

这个坑的启示:健康是"管理出来的",不是"自然状态"。 你不主动测量,它不会自己好,也不会自己坏------它会自己漂。

第二跤:第一版每次全量重扫,第二次体检时才发现有多蠢。

第一版体检器很实诚:每次从零扫描所有 Skill、所有依赖、所有注册表。第一次跑,15 分钟,感觉很值。

第二次跑的时候发现问题了:两次体检之间,整个体系只改了 6 个文件------剩下的 50 多个文件和 60 多条依赖引用,跟上次一模一样。全量重扫,等于把 90% 的时间花在确认"没变的东西还是没变"。

于是引入增量审计(设计 2)。体检器自己进入了"体检器需要被优化"的循环。

这两个坑的共同点,也是这个系列最想说的那句话:

体检器自己也会腐化,所以它必须接受"被体检"。健康不是一个状态,是一个持续动作。


八、你也能跑一次:三种用法

体检器可以跑任意 AI 体系------多 Skill 的、多域的、跨工具的。三种用法:

1. 完整体检(默认)

复制代码
你:体系自检
或:全体系健康检查

输出:一句话结论 → 11 项宏观检测明细 → 各域深度检测 → 与上次的增量对比 → 建议操作清单(P1/P2/P3 分级)。

2. 定期自动提醒

每次 meta-hub 被唤醒时,自动对比"距上次体检多少天"。超过 7 天 → 提醒你一句,不强制。适合把体检做成习惯,而不是事故后的补救。

3. 专项深挖

复制代码
你:前端域深度体检

指定域直接触发域深度检测(有专员的域走派单模式),输出该域的执行流程 + 架构对照 + 覆盖度评分。

适用 / 不适用

适合 不适合
体检整个 AI 体系(多域、多 Skill、跨工具链的账实核对) 体检单个 Skill 写得怎么样(用 skill-inspector,第 1 篇)
大改前 / 大改后做基线对比("这次重构到底动了什么") 审查一个 Agent 系统的架构设计(用 agent-arch-inspector,第 2 篇)
定期健康巡检,发现"静默漂移" 修 Bug、写功能------那是开发,不是体检
新接手一个 Skill 体系,快速摸清家底 代码级性能优化、安全渗透

九、速记表

你想做什么 用什么
体检整个 AI 体系 system-health(11 项宏观 + 域深度 + 增量对比)
查"注册了但不存在" M3 架构完整性(幽灵注册检测)
查版本号打没打架 M1 版本同步
查文档失没失联 M2 文档站覆盖 + M5 引用完整性 + M9 市场页面
查统计数字准不准 M4 知识库一致性 + M11 文章数据同步
体检单个 Skill skill-inspector(第 1 篇)
审查 Agent 系统架构 agent-arch-inspector(第 2 篇)
让体系定期自检 7 天提醒机制(超期只提醒,不阻断)

这次体检的核心结论一句话 :体系的三种失控------幽灵注册、版本漂移、文档失联------全都是"两边都对,但对不上";治理的起点不是修 Bug,是定期把"事实来源"和现实对一次账。


避坑指南

问题现象 原因 解决方法
路由命中一个"不存在的域" 注册表有、文件系统没有(幽灵注册) 定期对齐"注册表 ↔ 文件系统",用检测项兜底
同一个 Skill 两个版本号 手工维护多处副本,必然漂移 单一事实源:版本只在一处维护,其他地方引用
新 Skill 文档站搜不到 建了 Skill 忘了建文档 把"文档存在"写进新增 Skill 的完成标准
统计数字对不上实际 数字是手写的,文件是自动变的 统计用脚本生成,永不手写
体检报告没人执行 报告只有问题,没有优先级和后果 一句话结论 + P0/P1/P2 + 每项写"为什么"
每次体检都像第一次 全量重扫、无历史对比 增量审计(只扫变更集)+ 与上次对比表
体检报告越写越多没人看 报告不可独立阅读 一句话结论必须最先出现,能独立成立

十、常见问题(Q&A)

Q1:体系体检和 Skill/Agent 体检有什么区别?

Skill 体检看"单个文件写得怎么样",Agent 体检看"一个系统的架构有没有病",体系体检看"整个仓库的账对不对得上"。三者是嵌套关系:体系体检发现问题后,往往会落到某个 Skill 或某个 Agent 上再深查。

Q2:11 项检测必须每次都全跑吗?

必须。这是体系体检的硬规矩------漏一项就可能漏掉一种"不报错的债"。但第二次以后可以用增量审计:只重扫变更集内的域,未变更的项继承上次结论,既全跑又省时间。

Q3:多久体检一次?

手动触发建议每月一次;日常可以打开"7 天提醒"------超过 7 天没体检,入口被唤醒时提醒一句,不强制。频率取决于体系变化速度:大改后立刻跑一次,稳定期每月一次。

Q4:首检通过率很低怎么办?

正常。首检的价值就是"第一次把问题摆到台面上"。4/11 通过不丢人,丢人的是一直不体检。按 P0 修,修完复检,分数会很好看。

Q5:小团队只有十几个 Skill,也需要体系体检吗?

需要,但可以 lightweight。小团队最大的风险不是"问题多",而是"问题发现得太晚"。体系体检帮你建立"事实来源必须和现实对账"的意识,这个意识比任何工具都值钱。

Q6:发现幽灵注册后怎么修?

三步:补建实际文件/目录、更新注册表、补测试或验证命令。不要只改注册表------那就把幽灵注册变成了"合法但不可用"的状态。修完必须能跑通。


写在最后

三部曲的最后,把三级视角合起来看:

第 1 篇(微观):单个 Skill。 腐化在文件里------8 个"假 0 分",评分器自己的盲区。

第 2 篇(中观):Agent 系统。 腐化在结构里------错误有路可走,每一环都在正常工作,整体是错的。

第 3 篇(宏观):整个体系。 腐化在"两本账"之间------注册表和文件系统、版本号和版本号、导航和现实,各自都"对",对不上。

三级体检,同一个立场:

你的 AI 资产(Skill、Agent、知识库、工作流)和代码一样会腐化、会漂移、会负债。区别是代码的债有 CI 盯着你,AI 资产的债只有主动体检才能发现。

所以这个系列从头到尾,教的其实不是"三个工具",是一件事:

定期测量你自己搭的东西。

  • 15 分钟,11 项检测,你可以知道"一个体系的家底"------注册表是不是真的、版本是不是一致的、文档是不是找得到的;
  • 5 个窗口,你可以知道"一个 Agent 系统错在哪里"------它会不会编、错误传不传、记忆贵不贵;
  • 41 项检查,你可以知道"一个 Skill 写得好不好"------边界清不清、护栏有没有、能不能被搬运。

工具都会进化,会像文里写的那样自己摔跤、自己爬起来。但"主动测量"这个习惯,是你自己的。

三部曲到这里收尾。三件工具都在这个体系仓库里开源,愿你的一套 AI 资产,经得起对账。


本文相关产出:

  • 体检器:modules/system-health.md(meta-hub 内置模块:11 项宏观检测 + 域深度分派 + 报告模板)
  • 本次完整体检报告:health-log/latest.md(37 个自研 Skill、10 个域、11 项全量数据)
  • 域专员:4 个(meta / frontend / product / design 各自的 skill-inspector)
  • 系列前篇:skill-inspector(第 1 篇)、agent-arch-inspector(第 2 篇)

想要本文的完整体检脚本?

体系体检器(system-health:11 项宏观检测 + 域深度分派 + 报告模板)+ 本次全量体检数据------都已打包好,评论区留言或私信我,直接发你。

三部曲三件套(Skill / Agent / 体系三个体检器)也可以打包,评论区留言或私信我,一起发你。

相关推荐
龙亘川1 小时前
健康服务规范化背后,数字化如何 “辅助赋能“
大数据·前端·人工智能·智慧城市·数据可视化
逸模2 小时前
主材偏差从 15% 降到 5%:连锁公装算量是怎么做到的
大数据·人工智能·施工·连锁公装·开店
data analyse 4562 小时前
SourceMap 上传版本与报错版本对不上?版本校验与错误还原设计
大数据·前端·人工智能·数据分析
SharpCJ2 小时前
Koog(5) —— Strategy 详解:工作流编排、并行执行与状态传递
llm·agent·koog
ai_xiaogui2 小时前
Panelai 企业级AI基础设施操作系统:AI应用一键部署、私有化交付与算力统一纳管实践
人工智能·私有化部署·一键部署·企业级ai·ai基础设施·多租户隔离·api聚合
墨林陌2 小时前
AI 热点日报(2026-10-16):2026人工智能产业大会开幕,智能体算力需求井喷,AI芯片融资潮汹涌
人工智能
Quz2 小时前
记录第一次使用Pi Agent,以及插件怎么选
agent·ai编程
空堂与归2 小时前
Gemini 4 Argon 发布:物理推理模型控机器人?
人工智能·gpt·ui·ai·机器人
AI小云2 小时前
零基础如何系统学习AI?2026年技术路径与培训选择深度分析
人工智能·学习