08-differentiated-reflection.md
17.7 KB
8. Agent 自我迭代闭环
每个 Agent 都是一个持续进化的实体。通过四级迭代闭环,从"新手"逐步成长为"专家"。
8.1 Agent 的权限边界:谁能改什么?
Agent 能改的 (自治区) Agent 不能改的 (需要上级)
┌──────────────────────┐ ┌──────────────────────┐
│ memory/ │ │ agent.md ← 宪法│
│ └ memory.md │ │ soul.md ← 灵魂│
│ └ daily/ │ │ identity.md │
│ │ │ user.md │
│ skills/ │ │ │
│ └ 技能代码 │ │ 只有上级 Agent │
│ └ SKILL.md │ │ 才能修改 │
│ │ │ │
│ workspace/ │ │ (上级调用 │
│ └ code/data/assets │ │ updateBootstrap()) │
│ │ │ │
│ knowledge/ │ │ │
└──────────────────────┘ └──────────────────────┘
Agent 可以改自己的记忆、技能代码、工作区。但不能改自己的"宪法"(agent.md / soul.md)。 就像员工可以自学新技能、积累经验,但不能自己改自己的岗位职责 — 那是老板的事。
8.2 四级迭代闭环
┌────────────────────────────────────────────────────────────┐
│ 四级联动飞轮 │
│ │
│ ┌─ L1 Micro Loop ──────────────────────────────────┐ │
│ │ 每次任务后: 写入 memory.md → 下次思维更精准 │ │
│ │ (秒级迭代) │ │
│ └────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─ L2 Skill Loop ──────────────────────────────────┐ │
│ │ 每几轮后: 重写技能代码 → 执行能力结构性提升 │ │
│ │ (分钟级迭代) │ │
│ └────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─ L3 Meta Loop ───────────────────────────────────┐ │
│ │ 累积后: 向上级建议 → 上级改 agent.md → 行为重塑 │ │
│ │ (小时/天级迭代) │ │
│ └────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─ L4 Org Loop ────────────────────────────────────┐ │
│ │ 战略级: CXO 调整 Pipeline → 增减部门 → 组织进化 │ │
│ │ (天/周级迭代) │ │
│ └────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────┘
L1 — Micro Loop(记忆迭代)
触发:每次任务完成后
执行者:Agent 自己
修改目标:memory/memory.md + memory/daily/
执行任务 → 评估结果 → 写入记忆 → 下次任务读取记忆 → 更好的执行
例:
第1次: 爬了 200 条热搜, 有效率只有 15%
↓ Reflect
写入 memory.md:
"含'广告','推广','赞助'的标题应过滤"
"互动量 < 100 的热搜价值低"
↓
第2次: 读取 memory.md → 过滤更精准 → 有效率 35%
↓ 持续积累
第5次: → 有效率 70%
机制: memory.md 每次 session 启动时注入 ACP 上下文。上一轮写入的经验,下一轮变成思维的一部分。
L2 — Skill Loop(技能迭代)
触发:两种路径
- 反馈驱动 — 收到执行反馈,发现 benchmark 不达标,直接修改技能代码
- 创新驱动 — 遗传算法生成变体,验证测试后择优保留
执行者:Agent 自己
修改目标:skills/{name}/ 内的代码和配置
路径 A: 反馈驱动(大部分场景)
┌───────────────────────────────────────────┐
│ 执行 → 结果低于 benchmark → 分析原因 │
│ ↓ │
│ 修改技能代码 (skills/crawler/crawler.js) │
│ 更新 SKILL.md 版本 1.0 → 1.1 │
│ ↓ │
│ 下次执行: 代码级优化 → 指标提升 │
└───────────────────────────────────────────┘
路径 B: 创新驱动(需要突破时)
┌───────────────────────────────────────────┐
│ 当前方案已到瓶颈, 微调无法再提升 │
│ ↓ │
│ 生成多个方案变体 (遗传算法: 交叉 + 变异) │
│ 每个变体独立测试 benchmark │
│ ↓ │
│ 选择最优变体 → 替换当前 SKILL.md │
│ 淘汰劣质变体 │
└───────────────────────────────────────────┘
L3 — Meta Loop(上级重定义)
触发:Agent 向上级 report 建议,或上级主动调整
执行者:上级 Agent
修改目标:agent.md / soul.md
Agent 积累经验后发现根本性问题
→ task.report 建议给上级
→ 上级评估
→ 上级调用 role.redefine → 修改 agent.md
→ Agent 热加载新"宪法" → 行为根本性改变
例:
编剧部执行 20 轮后:
→ "我被限定为'都市爱情',但数据显示'悬疑互动'留存高 3 倍"
→ 向 CEO report + 数据证据
→ CEO 同意 → 修改编剧部 agent.md,扩展题材范围
→ 编剧部下一轮开始创作悬疑剧本
L4 — Org Loop(组织进化)
触发:CXO / Master 的全局反思 执行者:CXO / Master 修改目标:Pipeline + 组织架构(不一定影响单个 Agent 的内部迭代)
CXO 5 分钟心跳 → 扫描全局进度 → 发现瓶颈
→ 调整 Pipeline 顺序
→ 增设 / 裁撤部门
→ 重分资源
例:
CEO 发现"制作部产能跟不上编剧部":
→ role.create("制作二部") ← 不改编剧部, 改组织
→ pipeline.adjust(并行制作) ← 不改部门, 改流程
8.3 四级对比
| 级别 | 频率 | 谁触发 | 改什么 | 本质 |
|---|---|---|---|---|
| L1 Micro | 每次任务 | Agent 自己 | memory.md | 记住经验 |
| L2 Skill | 每几轮 | Agent 自己 | skills/ 代码 | 磨刀(反馈修正 or 创新突破) |
| L3 Meta | 累积后 | 上级 Agent | agent.md / soul.md | 员工建议 → 老板改职责 |
| L4 Org | 天/周级 | CXO / Master | Pipeline + 架构 | 调部门调流程, 不改单个人 |
8.4 四层差异化反思
四层 Agent 的 Reflect 阶段各不同:
| 层级 | 哲学 | 反思内容 | L1 | L2 | L3 | L4 |
|---|---|---|---|---|---|---|
| Master | 道 | 人的意图是否被正确理解? | ✅ | — | — | ✅ |
| CXO | 法 | 战略是否有效?Pipeline 该不该调? | ✅ | — | ✅ | ✅ |
| Role | 术 | 领域产出质量够高吗? | ✅ | ✅ | ✅ | — |
| Skill | 器 | 执行结果正确吗?代码需要优化吗? | ✅ | ✅ | — | — |
- Skill 只做 L1(记忆) + L2(技能优化)
- Role 还做 L3(建议上级)
- CXO 还做 L4(调整组织)
- Master 做 L1(记忆) + L4(顶层调整)
8.5 出生训练:Hunt → Digest → Evolving
Agent 不是创建完就直接上岗的。 创建目录只是"出生",还要经过训练才能成为领域专家。
参考 Innovator 系统的三级训练管线,Agent(尤其是 Skill 和 Role)创建后必须完成以下训练才算就绪:
创建目录 (出生)
│
▼
┌─ Phase 1: Hunt (狩猎 — 采集领域知识) ──────────────────┐
│ │
│ 目标: 把这个领域的最佳实践、标杆案例全部采集回来 │
│ │
│ 1. 搜索该领域的权威资料、方法论、论文 │
│ 2. 爬取行业标杆案例(优秀案例 + 普通案例) │
│ 3. 输出: │
│ └ knowledge/hunt/research.md ← 原始研究资料 │
│ └ knowledge/hunt/toplist.md ← 标杆案例排行 │
│ └ knowledge/hunt/crawl_data/ ← 爬取的原始数据 │
│ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─ Phase 2: Digest (消化 — 提炼领域方法论) ──────────────┐
│ │
│ 目标: 从原始资料中提炼可执行的 knowhow + benchmark │
│ │
│ 1. 分析 hunt 阶段的数据, 提取最佳实践 │
│ 2. 对比 elite vs average, 找出差异化维度 │
│ 3. 输出: │
│ └ knowledge/digest/knowhow.md ← 领域方法论 │
│ └ knowledge/digest/benchmark.md ← 评分标准 │
│ (5-8 个可量化维度, 权重, 详细 Rubric, 通过线 90) │
│ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─ Phase 3: Evolving (进化 — 迭代直到达标) ──────────────┐
│ │
│ 目标: 用 benchmark 反复测试和优化, 直到 score ≥ 90 │
│ │
│ for iteration = 1 to N: │
│ 1. 用当前 SKILL.md / agent.md 执行测试任务 │
│ 2. 用 benchmark 逐维度评分 → score │
│ 3. if score ≥ 90 → 毕业 ✅ → 状态改为 ready │
│ 4. 分析弱项维度 (score < 70 的) │
│ 5. 针对弱项修改 SKILL.md │
│ 6. 保存版本快照到 evolve/v{N}/ │
│ 7. 回到步骤 1 │
│ │
│ 停止条件: │
│ - score ≥ 90 → 毕业 ✅ │
│ - 超过最大迭代次数 → 标记为 needs_help ⚠️ │
│ - 连续 3 次分数变化 < 2 分 → 停滞, 需要上级介入 │
│ │
│ 输出: │
│ └ skills/{name}/evolve/evolve_log.md ← 进化日志 │
│ └ skills/{name}/evolve/v{N}/ ← 版本快照 │
│ └ config.json status: "ready" │
│ │
└─────────────────────────────────────────────────────────┘
│
▼
Agent 就绪 (状态: ready) → 开始正式工作 → 进入四级迭代
训练后的 Agent 目录变化
data/agents/skill-hot-crawler-001/
├── agent.md ← 创建时由上级写入
├── soul.md ← 创建时由上级写入
├── skills/
│ ├── skills.md ← 更新: 技能已通过 benchmark 90 分
│ └── crawler/
│ ├── SKILL.md ← Evolving 反复修改后的最终版 (v1.3.0)
│ ├── crawler.js ← 进化过程中优化的代码
│ └── evolve/ ← 🆕 训练日志
│ ├── evolve_log.md
│ ├── v1/
│ ├── v2/
│ └── v3/ ← 最终通过版本
├── knowledge/ ← 🆕 Hunt + Digest 的产出
│ ├── hunt/
│ │ ├── research.md
│ │ ├── toplist.md
│ │ └── crawl_data/
│ └── digest/
│ ├── knowhow.md ← 领域方法论
│ └── benchmark.md ← 评分标准
├── memory/ ← 🆕 训练过程中的记忆
│ └── memory.md ← "训练期间发现: ..."
└── config.json ← status: "ready" (训练前是 "training")
8.6 完整的 Agent 生命周期
出生 → 训练 → 就绪 → 工作 (四级迭代) → 退休/销毁
┌─────┐ ┌─────────┐ ┌───────┐ ┌───────────────┐ ┌─────────┐
│ 出生 │──→│ 训练 │──→│ 就绪 │──→│ 工作 + 迭代 │──→│ 退休 │
│ │ │ │ │ │ │ │ │ │
│mkdir│ │Hunt │ │status │ │L1: 更新 memory │ │destroy()│
│目录 │ │Digest │ │=ready │ │L2: 优化 skill │ │ │
│ │ │Evolving │ │ │ │L3: 上级重定义 │ │ │
│ │ │score≥90 │ │ │ │L4: 组织调整 │ │ │
└─────┘ └─────────┘ └───────┘ └───────────────┘ └─────────┘
Agent 状态流
| 状态 | 含义 | 触发条件 |
|---|---|---|
created |
目录已创建, 等待训练 | registry.create() |
training |
正在 Hunt/Digest/Evolving | 训练管线启动 |
ready |
已通过 benchmark, 可以工作 | Evolving score ≥ 90 |
running |
正在执行任务 | 收到 task.assign |
reflecting |
正在反思和自我迭代 | Loop 的 Reflect 阶段 |
needs_help |
自我迭代停滞, 需要上级介入 | 连续 3 轮无进展 |
idle |
空闲等待 | 当前无任务 |
retired |
被上级裁撤 | registry.destroy() |
8.7 L2 Skill Loop 的两条路径详解
L2 的两条路径对应不同的触发场景:
路径 A: 反馈修正(Benchmark 修标定)
场景: 工作中收到反馈,发现 benchmark 本身的标准需要修正。
工作执行 → 上级/用户反馈 "这个热搜列表不够精准"
↓
Agent 分析: 不是我执行得不好, 而是评判标准漏掉了"时效性"维度
↓
修改 knowledge/digest/benchmark.md:
新增维度: "时效性" (权重 15%)
调整其他维度权重
↓
用新 benchmark 重新评估自己 → 发现得分从 92 降到 78
↓
进入 Evolving 循环 → 修改 SKILL.md → 直到新 benchmark 下也能 ≥ 90
↓
毕业: 既符合旧标准, 也符合新标准
本质:反馈让我认识到"过去的标准不够好",先修标准再修技能。
路径 B: 创新突破(遗传算法变体)
场景: 当前方案已到瓶颈,常规微调无法再提升分数。
连续 3 轮 score 在 82-84 之间徘徊 (停滞)
↓
Agent 判断: 渐进式优化已到极限, 需要探索性突破
↓
遗传算法:
1. 基于当前 SKILL.md 生成 3-5 个变体
- 变体 A: 改换数据源 (微博→抖音)
- 变体 B: 增加二次验证步骤
- 变体 C: 改换过滤算法
- 变体 D: A+B 的交叉组合
2. 每个变体独立跑 benchmark
3. 选出 score 最高的 → 替换当前版本
4. 淘汰其他变体
↓
如果最优变体 score ≥ 90 → 突破成功
如果仍不够 → 基于最优变体再做一轮遗传
如果连续失败 → status = "needs_help", 等上级介入
本质:像自然界的进化一样,通过"变异 + 选择"实现非线性突破。