Skip to content
检测中

Meta-Loop:让 loop 自己改进 loop

系列第八篇。前七篇:概念 · pi L1 落地 · L3 设计 · Memory · Multi-Loop · 网关层 · 反衰减

第七篇结尾留了个钩子:反衰减机制里,量化认知债、强制 review、跑基线回归,都需要一个「监管 loop 的 loop」来执行。这就是 Meta-Loop。这篇讲它怎么让 loop 从「会跑」升级到「会改进」。


零、为什么需要 Meta-Loop

先看一个困境。

前七篇设计的 loop 越来越完善:会跑、会记、会协调、会对抗衰减。但所有 loop 都有一个共同特征——它们不会改自己

  • CI Sweeper 修代码,但不会修自己的 skill
  • Daily Triage 排优先级,但不会优化自己的 triage 规则
  • Memory 系统存记忆,但不会决定该记什么不该记什么

这些「元层次」的工作,前七篇都默认人来做。但人是瓶颈:

人做元层次工作的问题后果
人太忙没空优化 skillskill 过时,intent debt 回潮
人看不出 loop 输出的系统性偏差同类错误反复
人不会每周审计所有 run-log异常堆积无人发现
人凭感觉调 cadence/预算调优滞后于实际负载

Meta-Loop 的价值:把「监管和改进 loop」这件事本身,也变成一个 loop。它是 loop 工程的递归——loop 管 loop。

Multi-Loop 篇提过 meta-loop 一句:「当 loop 多到人管不过来,出现管理 loop 的 loop。」这篇展开。


一、Meta-Loop 的定义

普通 loop:    事件源 → loop → 改代码/做事 → 回写 state
Meta-Loop:    其他 loop 的 run-log → meta → 改 loop 自身(skill/规则/预算/级别)→ 回写 loop 配置

一句话:普通 loop 改世界,Meta-Loop 改 loop。

它处理的不是「仓库的 issue / CI 失败」,而是「其他 loop 的行为本身」。输入是 run-log、STATE、metrics;输出是 loop 的配置变更。

Meta-Loop 与普通 loop 的本质区别

维度普通 loopMeta-Loop
输入业务事件(CI 失败、PR、issue)其他 loop 的 run-log/metrics
输出代码改动、通知loop 配置(skill/规则/cadence/级别)
改的对象代码库loop 系统
作用域单个 loop 内跨所有 loop
自治级别L1-L3最高 L1,通常只报告

最后一条是铁律:Meta-Loop 的自治级别默认 L1(只报告建议),绝不自动改 loop 的关键配置。原因见第四节——改 loop 比改代码风险更高。


二、Meta-Loop 的四类职责

Meta-Loop 不只一件事,是四类工作的集合。

职责 1:观测(Observability)—— 让 loop 系统可审计

把分散在各 loop 的 run-log 汇总成全局视图,发现系统性问题。

markdown
## Meta-Loop 周报 — 2026-W24

### 各 loop 运行状况
| Loop | Runs | 成功率 | Avg tokens | Escalate率 | 异常 |
|------|------|--------|------------|-----------|------|
| ci-sweeper | 96 | 78% | 187k | 22% | ⚠️ 连续3次同PR失败 |
| pr-babysitter | 288 | 91% | 23k | 9% | escalate率偏低 |
| daily-triage | 7 | 100% | 51k | 0% | 正常 |
| dep-sweeper | 4 | 50% | 312k | 50% | ⚠️ 半数escalate |

### 系统性发现
- ci-sweeper 在 src/auth/ 上的首次修复成功率只有 40%(其他模块 75%)→ skill 可能需补 auth 相关约定
- pr-babysitter escalate 率从 25% 降到 9% → 怀疑护栏失效(反衰减篇的 Drift 信号)
- 全 loop 周预算用了 78%,接近 80% 降级阈值

关键:Meta-Loop 不只罗列数字,而是发现异常 + 归因。哪个 loop、哪个模块、哪种类型的异常。

职责 2:调优(Tuning)—— 建议 loop 参数调整

根据历史数据建议 cadence、预算、attempt 上限的调整。

发现Meta-Loop 建议谁执行
ci-sweeper 凌晨 2-6 点零触发cadence 从 15m 改 30m(夜间)人改 LOOP.md
pr-babysitter 撞 ci-sweeper 占 30% 运行错峰:pr-babysitter 改 20m人改 LOOP.md
dep-sweeper 单次均 312k tokens拆成两次(scan + fix 分离)人重构 loop
ci-sweeper MAX_ATTEMPTS=3 从未用满可考虑降到 2(省 token)人改护栏配置

Meta-Loop 产出「建议」,不直接改。原因:调优决策涉及取舍(降 attempt 上限省 token 但可能漏修),需要人判断。

职责 3:知识沉淀(Skill Evolution)—— 把经验变成 skill

这是 Meta-Loop 最有价值、也最危险的职责:从 loop 的失败中提炼知识,更新 skill

ci-sweeper 第 3 次在 src/auth/oauth.ts 上失败
        ↓ 归因
根因: 它不知道本项目用自定义 token 刷新逻辑(非标准库)
        ↓ Meta-Loop 提炼
建议在 ci-sweeper skill 补一条:
  "src/auth/ 下改动前, 必须先读 src/auth/token-refresh.ts 理解自定义刷新逻辑"
        ↓ 人审 → merge 进 SKILL.md
下次 ci-sweeper 遇同类问题, 首次就修对 (attempt 3→1)

这是「自我演进」的核心机制:loop 失败 → 归因 → 沉淀成 skill → 下次不失败。Loop 越跑越聪明。

职责 4:护栏执行(Guardrail Enforcement)—— 执行反衰减机制

第七篇的四种反衰减机制,Meta-Loop 是执行体:

反衰减机制Meta-Loop 怎么执行
Comprehension Debt 量化每周算未读占比,超 15% 设 DEGRADE flag
Review Gate检测未 review 的合并,阻塞 loop 继续
Behavior Drift 检测跑基线回归,对比输出分布
State Rot 巡检抽查各 STATE.md 的引用存活率

反衰减篇说「机制天然指向 Meta-Loop」——这就是答案。没有 Meta-Loop,反衰减只是写在文档里的规则;有了它,规则才被执行。


三、Meta-Loop 的架构

┌──────────────────────────────────────────────────────────────┐
│                    Meta-Loop (独立 loop)                       │
│                                                              │
│  调度: 每日(观测+护栏) / 每周(调优+知识沉淀)                    │
│                                                              │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐             │
│  │ Collector  │  │  Analyzer  │  │  Proposer  │             │
│  │ 收集所有    │→ │ 分析异常   │→ │ 提议改进   │             │
│  │ run-log    │  │ 归因问题   │  │ 产出建议   │             │
│  └────────────┘  └────────────┘  └─────┬──────┘             │
│                                        │                     │
│                          ┌─────────────┼─────────────┐      │
│                          ▼             ▼             ▼      │
│                   ┌──────────┐  ┌──────────┐  ┌──────────┐  │
│                   │ Reporter │  │ Applier  │  │ Auditor  │  │
│                   │ 出报告    │  │ 建议改配  │  │ 跑基线   │  │
│                   │ (L1)     │  │ (人审)    │  │ 检测漂移  │  │
│                   └──────────┘  └──────────┘  └──────────┘  │
└──────────────────────────────────┬───────────────────────────┘

                    ┌──────────────┼──────────────┐
                    ▼              ▼              ▼
              ┌──────────┐   ┌──────────┐   ┌──────────┐
              │ci-sweeper│   │triage    │   │其他 loop │
              │的 run-log│   │的 run-log│   │的 run-log│
              └──────────┘   └──────────┘   └──────────┘

三个子角色

角色做什么自治
Collector读所有 loop 的 run-log、STATE、metrics,归一成 Meta-State全自动
Analyzer用 LLM 分析「为什么这个 loop 这里失败了/慢了/漂移了」全自动
Proposer产出结构化建议(改 skill / 改配置 / 降级)只提议,不执行

Proposer 永远是 L1——这是 Meta-Loop 的安全铁律(见下节)。


四、为什么 Meta-Loop 必须 L1

这是整篇最关键的安全设计。

Meta-Loop 改的是 loop 本身,比改代码风险高一个数量级。

普通 loop 出错Meta-Loop 出错
改坏一个文件改坏所有 loop 的 skill/配置
影响一次运行影响后续所有运行
回滚一个 commit回滚「学习成果」很难(已渗入多个 skill)
单点故障全局污染

具体场景:如果 Meta-Loop 自动把 ci-sweeper 的 skill 改错了,ci-sweeper 会持续地按错误 skill 行动,而它的 verifier 可能验证不出(因为 skill 是 verifier 的「正确」依据)。错误会自我强化

三道安全防线

防线1: Meta-Loop 永远只提议, 不执行

防线2: 所有提议进 Human Review Queue
        ↓  人审通过
防线3: 改动进 loop-config Git 分支, 走 PR review
        ↓  merge 后
生效(下次 loop 启动加载新 skill/配置)

绝不让 Meta-Loop 直接改 SKILL.md / config.js / LOOP.md。 它的输出是「建议」,建议必须经人审 + Git 流程才生效。

唯一例外:自动降级

只有一个动作 Meta-Loop 可自动执行——降级(L3→L2、暂停 loop)。原因:降级是「更安全」的方向,出错也只是 loop 变保守,不会造成损害。

typescript
// Meta-Loop 可自动执行的(降级方向,安全)
if (comprehensionDebtRatio > 0.15) setFlag("ci-sweeper", "DEGRADE_L3_TO_L2");
if (reviewCompliance < 0.8) setFlag("ci-sweeper", "PAUSE");
if (budgetUsed > 0.8) setFlag("GLOBAL", "ALL_DEGRADE_TO_L1");

// Meta-Loop 绝不能自动执行的(升级方向或改认知,危险)
// ❌ setFlag("ci-sweeper", "UPGRADE_L2_TO_L3")   // 升级要人批
// ❌ editSkill("ci-sweeper", "...")               // 改 skill 要人审
// ❌ changeModel("ci-sweeper", "opus")            // 换模型要人批

方向不对称:降级可自动,升级必人审。这是 Meta-Loop 的核心安全原则。


五、Skill Evolution 的完整闭环

职责 3(知识沉淀)是 Meta-Loop 最闪亮的能力,单独展开。

闭环五步

① 检测失败
   ci-sweeper 在 src/auth/ 第3次失败 (attempt=3, escalate)

② 归因分析 (Meta-Loop 的 Analyzer)
   读: run-log + diff + verifier 反馈 + STATE 历史
   问: "为什么这次修不对? 缺什么知识?"
   答: "loop 不知道本项目用自定义 token 刷新逻辑"

③ 提炼建议 (Proposer)
   建议补 skill:
   "## Auth 模块特殊约定
    src/auth/ 下改动前必读 src/auth/token-refresh.ts
    本项目用自定义刷新(非标准库),mock 要对应"

④ 人审 + merge (Human Review Queue)
   人判断: 这条知识对吗? 通用吗? 会不会误导?
   通过 → 提 PR 改 SKILL.md → review → merge

⑤ 验证生效
   下次 ci-sweeper 遇 src/auth/ 问题:
   skill 加载 → 读 token-refresh.ts → 首次修对
   attempt 从 3 降到 1, token 省 60%

这是 loop 的「学习」:失败 → 提炼 → 沉淀 → 下次不失败。整个 loop 系统随时间变聪明。

Skill Evolution 的护栏

知识沉淀是 Meta-Loop 最危险的职责(在改 loop 的认知),需最强护栏:

护栏规则
人审必须所有 skill 改动经人 review,不自动 merge
可追溯每条 skill 改动记「来自哪次失败、归因什么」(audit trail)
可回滚skill 改动进 Git,发现误导可 revert
防过拟合单次失败不沉淀,需「同类失败 ≥2 次」才提议(避免噪音)
防污染Meta-Loop 不能删 skill 条目(只增不删,删要人手动)

只增不删很重要:Meta-Loop 可能误判某条 skill「过时」而提议删,但删知识比加知识危险(删了就忘了)。所以只允许提议新增/修改,删除纯人手动。


六、Meta-Loop 自己怎么反衰减

第七篇讲 loop 会衰减,Meta-Loop 也是 loop,也会衰减。怎么办?

递归问题:谁监督监督者?

答案是不递归到底——Meta-Loop 的反衰减靠人,不靠 Meta-Meta-Loop。理由:

Meta-Meta-Loop 监督 Meta-Loop?
  → Meta-Meta-Meta-Loop 监督 Meta-Meta-Loop?
    → 无限递归

递归无解。在某一层必须由人兜底。那一层就是 Meta-Loop——它是自动化的最后一层,之上是人。

Meta-Loop 特有的衰减与对策

衰减症状对策(人执行)
归因退化Analyzer 归因越来越虚(「可能是配置问题」)人每月抽检 Meta-Loop 的归因质量
建议通胀Proposer 建议越来越多、越来越水设「建议采纳率」指标,低于 30% 说明提议质量差
认知同化Meta-Loop 和被监督的 loop 用同模型,盲点一致Meta-Loop 故意用不同模型(差异化)
flag 失控自动降级 flag 越设越多,loop 全停flag 有 TTL,超期自动清除,需人续设

最重要的对策:Meta-Loop 用与被监督 loop 不同的模型。否则它的盲点和被监督 loop 一样,发现不了系统性问题。这是「Adversarial」思想在元层次的延伸——验证链要独立,Meta-Loop 也要独立。


七、pi 上的 Meta-Loop 实现

Meta-Loop 本质是一个特殊 loop,前七篇的所有设计都适用,加几个 Meta 特性。

7.1 独立进程 + 只读访问其他 loop

typescript
// meta-loop/runner.ts
const { session } = await createAgentSession({
  cwd: REPO,
  tools: ["read", "grep", "find", "bash", "memory"],  // 无 edit/write(L1)
  sessionManager: SessionManager.inMemory(REPO),
});

// Collector: 读所有 loop 的 run-log(只读)
const allLogs = ["ci-sweeper","pr-babysitter","daily-triage","dep-sweeper"]
  .flatMap(name => readRunLog(`${name}-run-log.jsonl`));

await session.prompt(`你是 Meta-Loop Analyzer。读下面所有 loop 的 run-log,
  发现系统性问题(反复失败、漂移、预算异常)。归因到根因。
  对每个问题产出结构化建议(改哪个 loop 的什么)。
  绝不直接改文件,只输出建议 JSON。
  --- run-logs ---
  ${JSON.stringify(allLogs)}`);

7.2 建议进 Human Review Queue

typescript
// Proposer 产出 → 写入 review queue(不直接改 loop 配置)
const suggestions = parseSuggestions(output);
for (const s of suggestions) {
  appendReviewQueue({
    id: uuid(),
    type: s.type,           // "skill_add" | "config_change" | "cadence_tune"
    target: s.targetLoop,
    suggestion: s.content,
    evidence: s.evidence,    // 来自哪次失败
    createdAt: now(),
    status: "pending",       // 人审前永远 pending
  });
  // 人审通过 → 才生成 PR 改 SKILL.md/config
}

7.3 用 memory 工具积累「loop 经验库」

Meta-Loop 的归因结果,沉淀进 memory(第四层语义记忆,见 Memory 篇):

值得记的(写 memory):
- "ci-sweeper 在 src/auth/ 反复失败, 根因是自定义 token 刷新逻辑" (已沉淀成 skill)
- "dep-sweeper 周末 escalate 率飙升, 根因是 npm registry 间歇性慢" (环境因素)
- "pr-babysitter 换 opus 后 false-positive 翻倍, opum 对 diff 过度敏感" (模型特性)

下次同类异常出现, Meta-Loop 先 memory_search 找历史归因
→ 不用从零分析, 直接复用经验

这是 Meta-Loop 自己的「越跑越聪明」——它的归因经验也沉淀成记忆。

7.4 intercom 汇报 + 反向控制

Meta-Loop 通过网关层(第六篇)向人汇报,人也通过网关反向批准建议:

Meta-Loop 发现异常 → intercom → Slack #loop-meta
  "ci-sweeper 在 auth 反复失败, 建议补 skill 条目, 见 review queue #42"
人 Slack 回 "approve #42"
  → 网关 → intercom → Meta-Loop 触发 PR 生成 → 人最终 review PR

网关篇的「双向闭环」在 Meta-Loop 这里最有价值——loop 的改进建议需要人批准,intercom 让这个批准流可以跨渠道(Slack/CLI/Web)。


八、Meta-Loop 的成熟度演进

Meta-Loop 不是第一天就上,按成熟度分阶。

阶段Meta-Loop 形态时机
0. 无人手动看 run-logloop 数 ≤2,人管得过来
1. 观测Meta-Loop 只出周报(Collector + Reporter)loop 数 3+,人看不过来
2. 调优建议加 Tuning 建议(cadence/预算)loop 跑了 1 月+,有数据
3. 知识沉淀加 Skill Evolution 闭环loop 稳定,开始有重复失败模式
4. 护栏执行加自动降级(反衰减执行体)loop 多到反衰减需自动化

不要跳级。没观测就上知识沉淀 = 提议质量差(无数据基础);没知识沉淀就上护栏执行 = 降级判断不准。

这呼应反衰减篇的「制度优先于代码」——Meta-Loop 的每个阶段,都是先有人工制度(人看周报、人调优),才把它自动化成 Meta-Loop 职责。


九、Meta-Loop 的失败模式

失败严重度症状对策
自我强化错误S3Meta-Loop 把错误知识沉淀进 skill,所有 loop 跟着错人审必须 + 只增不删 + 可回滚
归因退化S2Analyzer 归因越来越虚人抽检 + 用不同模型
建议通胀S1→S2建议多而水,人审疲劳采纳率指标 + 阈值过滤
认知同化S2Meta-Loop 与 loop 同模型,盲点一致强制差异化模型
越权执行S3Meta-Loop 绕过人审直接改配置代码层禁止(tools 无 edit/write)
flag 失控S2降级 flag 堆积,loop 全停flag TTL + 超期清除
递归衰减S2Meta-Loop 自己衰减无人发现人在 Meta 层兜底,不递归

越权执行是 S3——Meta-Loop 若能直接改 skill,等于绕过所有安全设计。代码层硬保证:Meta-Loop 的 tools 白名单不含 edit/write,只有 read + memory。它物理上改不了配置文件,只能写建议到 review queue。


十、回顾

  1. Meta-Loop 改 loop,不改代码。普通 loop 改世界,Meta-Loop 改 loop 系统。
  2. 四类职责:观测(汇总)、调优(建议参数)、知识沉淀(提炼 skill)、护栏执行(反衰减)。
  3. 默认 L1,只提议不执行。Meta-Loop 改的是 loop 认知,比改代码危险一个数量级。
  4. 唯一例外:自动降级。降级是安全方向,可自动;升级必人审。方向不对称。
  5. Skill Evolution 五步闭环:检测失败 → 归因 → 提炼 → 人审 → 验证。这是 loop「越跑越聪明」的核心。
  6. 知识沉淀护栏:人审必须、可追溯、可回滚、防过拟合(≥2 次同类失败)、只增不删。
  7. 不递归到底:Meta-Loop 是自动化最后一层,之上是人。谁监督监督者?人。
  8. Meta-Loop 用不同模型:避免与被监督 loop 盲点一致(Adversarial 思想的元层次延伸)。
  9. 成熟度分阶:观测 → 调优 → 知识沉淀 → 护栏执行,不跳级。
  10. pi 实现:独立进程 + 只读 tools(无 edit/write)+ memory 积累经验 + intercom 汇报/批准。

一句话收尾:Meta-Loop 是 loop 工程的递归性的体现——loop 不仅会跑、会记、会协调,最终还会改进自己。但这条递归链必须在人这里终止:Meta-Loop 之上有且只有人。这是「自我演进」与「失控」的分水岭。


参考资料

Released under the ISC License.