Skip to content

成熟度模型

本章定义成熟度模型 — 与 npx harness-score 实现的评估框架完全一致, 因此你在文中读到的等级,都可以测量、复现,并作为门禁标准。

其结构借鉴了常见的能力成熟度模型(DORA capabilities、OWASP SAMM business functions、CMMI levels):dimensions 衡量实践领域,checks 是确定性的 pass/fail 指标,levels 按 coverage shape 门禁 — 而不只是看 raw percentage。

设计目标:

  • 确定性。 每个 check 都是 filesystem 事实:文件是否存在、能否解析、是否匹配某模式。不调用 model、不做 judgment calls、不访问 network。
  • 两种分数。 Maturity(仅 repo)是 CI 与 badge 的官方等级。Effective(repo ∪ 可选全局 scope)反映开发者机器上 agent 可能看到的内容 — 见 指标与代码
  • Harness 无关,Cursor 为旗舰示例。 任意受支持的 AI-first 工具的 rules、skills、hooks、commands(Cursor、Windsurf、Claude Code、Codex/Antigravity .agents/、OpenCode、Cline、Continue、Copilot instructions、Zed)均通过 OR 语义评分 — 配置一个工具即可。Universal harness 基础设施(tests、linters、types、CI)无论 IDE 如何,都构成同一套控制系统。
  • 阶梯,而非 grade。 Levels 按 harness 形态(哪些 dimensions 被覆盖)门禁,而不只看 raw percentage — 八十分的 guides 配零 sensors,称不上 maturity。

六个维度

共 108 分,分布在六个 dimensions:

维度分数测量内容
Context & Guides20AGENTS.md、rules 质量与 scoping
Skills & Commands17程序性知识、显式工作流、subagents
Hooks & Guardrails14Runtime 强制的 gates 与 feedback
Sensors & Feedback20Tests、linter、types、formatter
CI Feedback14Pipeline checks、pre-commit
Hygiene & Safety23Secrets、env files、lockfile、license、MCP config

每个 dimension 由若干 checks 累加而成(完整 catalog 与修复方案见 第 8 章;ID 参考表见 第 9 章 — 指标与代码)。

五个等级

L0 · Unharnessed

仓库没有给智能体提供任何 harness:没有 context file、没有 rules、没有 enforced checks。智能体照样能在这里工作 — 它们总是可以 — 但每个会话都要从零摸索项目,每个错误都会直接进入代码库,除非人类及时发现。大多数仓库都从这里起步。

L1 · Documented

要求:Context & Guides ≥ 40%。

有一份有实质内容的 AGENTS.md(或等价物):项目是什么、如何 build 和 test、约定有哪些。这是从零出发杠杆最高的一步 — 用一个文件为每个未来会话提供 feedforward。

L2 · Guided

要求:Context ≥ 60% · (Skills ≥ 30% 或 Hooks ≥ 30%) · Hygiene ≥ 50%。

Guidance 有了结构:带 valid frontmatter 的 scoped rules(.cursor/rules/.windsurf/rules/.clinerules/ 或你工具的等价路径),以及程序性知识的起步(skill、command/workflow 或 subagent),或 hook 机制。基本 hygiene 已到位 — env files 被 ignore、harness files 中无 credential signatures。Harness 随代码一并交付,并像代码一样接受 review。

L3 · Sensing

要求 L2,且:Sensors ≥ 60% · CI ≥ 50%。

Feedback 回路已经建立。智能体可以运行 tests,有 linter 和 type checking,CI pipeline 会在每次 push 后重新验证。自纠正从这里开始:智能体可以用确定性工具检查自己的工作,pipeline 会捕获它遗漏的部分。对大多数团队来说,L3 是 AI 辅助开发不再让人提心吊胆的转折点。

L4 · Self-correcting

要求 L3,且:Hooks ≥ 70% · 总分 ≥ 80%。

Loop 在 runtime 闭合。Gate hooks 让破坏性操作不可能发生,而不只是「不建议」;feedback hooks 在每次 edit 时执行 lint 和 format,就在会话内完成。Guides、sensors 和 guardrails 覆盖全部六个 dimensions。一个错误现在必须依次通过 rules、on-edit hooks、tests、type checker、CI以及 gates — 大多数情况下无需人类介入。

Level 何时会被 capped(封顶)

一个 level 的 requirements 默认所有 dimensions 都在参与评分。团队可以通过 .harness-score.jsonextends/rules(见 指标与代码)排除特定 checks,甚至整个 dimension — 前提是出于 policy 要求的结构性原因,而不是单纯的偏好。

如果这种排除让某个 level 依赖的 dimension 变得完全不适用,scanner 会把该 level 报告为 capped,而不是假装这只是又一个待补的 gap。L4 是最清晰的例子:它由 Hooks & Guardrails dimension 定义,所以采用 no-hooks preset 的仓库可以自由把其他 dimensions 都拉满,但 L4 会一直 capped — 不是「0%,继续努力」,而是「在当前配置下无法达到,原因如下」。其他每个 dimension 的分数完全不受影响。

这是模型在保持诚实,不是惩罚:下文的「必要条件,非充分条件」本来就意味着高分不是保证 — capped level 只是把同一个原则,套用到团队自己做出的、已被公开披露的选择上。

如何解读分数

两个仓库都可能拿到 65%,但形态可能截然不同 — 这正是 levels 按 dimensions 门禁的原因:

  • 65%,guides 满分、无 sensors → L1。文档写得漂亮,却未经验证。优先补 tests + CI,而不是再加 prose。
  • 65%,sensors 很强、无 context → L0/L1。智能体的产出会被 check,但每个会话都要猜你的约定。优先花一个下午写好 AGENTS.md,再加三条 scoped rules。

扫描器会明确打印哪条 requirement 挡住了下一级(To reach L3: sensors ≥ 60%; ci ≥ 50%),改进路径不会含糊。

模型刻意不测量什么

对 determinism 的边界保持诚实(Fowler 关于「behavior harness 尚不成熟」的 caveat,同样适用于 measurement):

  • 你的 tests 是否足够好 — 只检查是否存在、能否运行、是否 gate。
  • 你的 rules 是否仍然正确 — stale rule 与 fresh rule 得分相同。
  • Functional correctness — 静态 scan 无法验证行为是否正确。
  • Team practice — branch protection、review culture、agent workflows 都在 repository tree 之外。

高分意味着可靠 agent work 所需的 infrastructure 已经具备。这是必要条件,不是充分条件 — 也是 deterministic scanner 能诚实宣称的上限。

如何使用这套阶梯

  1. 运行 npx harness-score — 获取当前等级与具体缺口。
  2. 一次只升一级;每一级的 requirements 都是一项聚焦的工作(L1:写 AGENTS.md → L2:rules + hygiene → L3:sensors + CI → L4:hooks)。
  3. 在 CI 中 gate 等级(--min-level),让 maturity 只能单向提升。
  4. 展示成果 — README badge(harness · L4)与可选的 share card。同一 pill 可来自 CI(--badge)或 pinned static file。

第 7 章会逐步讲解每个步骤,逐项对照 checks。