self-improving-agent

self-improving-agent

一个通用的自我进化智能体,从所有技能经验中学习。采用多记忆架构(语义+情景+工作记忆)持续进化代码库。在技能完成/出错时通过钩子自动触发自我修正。

59Star
10Fork
更新于 2026/6/21
SKILL.md
readonly只读
name
self-improving-agent
description

一个通用的自我进化智能体,从所有技能经验中学习。采用多记忆架构(语义+情景+工作记忆)持续进化代码库。在技能完成/出错时通过钩子自动触发自我修正。

自我进化智能体

"一个从每次交互中学习、积累模式和洞察以持续提升自身能力的AI智能体。" — 基于2025年终身学习研究

概述

这是一个通用的自我进化系统,从所有技能经验中学习,而不仅仅是PRD。它实现了完整的反馈循环,包括:

  • 多记忆架构:语义 + 情景 + 工作记忆
  • 自我修正:检测并修复技能指导错误
  • 自我验证:定期验证技能准确性
  • 钩子集成:在技能事件(before_start, after_complete, on_error)上自动触发
  • 进化标记:可追溯的变更,带有来源归属

基于研究的设计

基于2025年研究:

研究 关键洞察 应用
SimpleMem 高效的终身记忆 模式积累系统
多记忆调查 语义+情景记忆 世界知识+经验
终身学习 连续任务流学习 从每次技能使用中学习
Evo-Memory 测试时终身学习 实时适应

自我进化循环

┌─────────────────────────────────────────────────────────────────┐
│                    通用自我进化                                    │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   技能事件 → 提取经验 → 抽象模式 → 更新                           │
│        │                  │                │         │          │
│        ▼                  ▼                ▼         ▼          │
│   ┌─────────────────────────────────────────────────────┐       │
│   │              多记忆系统                                │       │
│   ├─────────────────────────────────────────────────────┤       │
│   │  语义记忆        │  情景记忆       │  工作记忆        │  │
│   │  (模式/规则)     │  (经验)         │  (当前)         │  │
│   │  memory/semantic/│  memory/episodic/│  memory/working/│  │
│   └─────────────────────────────────────────────────────┘       │
│                                                                 │
│   ┌─────────────────────────────────────────────────────┐       │
│   │              反馈循环                                  │       │
│   │  用户反馈 → 置信度更新 → 模式适应                     │       │
│   └─────────────────────────────────────────────────────┘       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

何时激活

自动触发(通过钩子)

事件 触发器 动作
before_start 任何技能启动 记录会话开始
after_complete 任何技能完成 提取模式,更新技能
on_error Bash返回非零退出码 捕获错误上下文,触发自我修正

手动触发

  • 用户说“自我进化”、“self-improve”、“从经验中学习”
  • 用户说“分析今天的经验”、“总结教训”
  • 用户要求改进特定技能

进化优先级矩阵

当出现新的可复用知识时触发进化:

触发条件 目标技能 优先级 动作
发现新的PRD模式 prd-planner 添加到质量检查清单
架构权衡明确 architecting-solutions 添加到决策模式
学到API设计规则 api-designer 更新模板
发现调试修复 debugger 添加到反模式
审查清单缺口 code-reviewer 添加清单项
性能/安全洞察 performance-engineer, security-auditor 添加到模式
UI/UX规范问题 prd-planner, architecting-solutions 添加视觉规范要求
React/状态模式 debugger, refactoring-specialist 添加到模式
测试策略改进 test-automator, qa-expert 更新方法
CI/部署修复 deployment-engineer 添加到故障排除

多记忆架构

1. 语义记忆 (memory/semantic-patterns.json)

存储可跨上下文复用的抽象模式和规则

{
  "patterns": {
    "pattern_id": {
      "id": "pat-2025-01-11-001",
      "name": "模式名称",
      "source": "user_feedback|implementation_review|retrospective",
      "confidence": 0.95,
      "applications": 5,
      "created": "2025-01-11",
      "category": "prd_structure|react_patterns|async_patterns|...",
      "pattern": "一行摘要",
      "problem": "这解决了什么问题?",
      "solution": { ... },
      "quality_rules": [ ... ],
      "target_skills": [ ... ]
    }
  }
}

2. 情景记忆 (memory/episodic/)

存储具体经验及发生情况

memory/episodic/
├── 2025/
│   ├── 2025-01-11-prd-creation.json
│   ├── 2025-01-11-debug-session.json
│   └── 2025-01-12-refactoring.json
{
  "id": "ep-2025-01-11-001",
  "timestamp": "2025-01-11T10:30:00Z",
  "skill": "debugger",
  "situation": "用户报告提交表单后数据未刷新",
  "root_cause": "onRefresh属性中的回调为空",
  "solution": "在回调中实现实际刷新逻辑",
  "lesson": "始终验证回调不是空函数",
  "related_pattern": "callback_verification",
  "user_feedback": {
    "rating": 8,
    "comments": "这正是问题所在"
  }
}

3. 工作记忆 (memory/working/)

存储当前会话上下文

memory/working/
├── current_session.json   # 活跃会话数据
├── last_error.json        # 用于自我修正的错误上下文
└── session_end.json       # 会话结束标记

自我进化过程

阶段1:经验提取

任何技能完成后,提取:

发生了什么:
  skill_used: {哪个技能}
  task: {正在做什么}
  outcome: {success|partial|failure}

关键洞察:
  what_went_well: [哪些做得好]
  what_went_wrong: [哪些做得不好]
  root_cause: {根本原因(如适用)}

用户反馈:
  rating: {1-10(如果提供)}
  comments: {具体反馈}

阶段2:模式抽象

将经验转化为可复用模式:

具体经验 抽象模式 目标技能
"用户忘记保存PRD笔记" "始终将思考持久化到文件" prd-planner
"代码审查遗漏了SQL注入" "添加安全清单项" code-reviewer
"回调为空,未生效" "验证回调实现" debugger
"净APY位置模糊" "UI规范需要精确相对位置" prd-planner

抽象规则:

如果经验重复3次以上:
  pattern_level: critical
  action: 添加到技能的“关键错误”部分

如果解决方案有效:
  pattern_level: best_practice
  action: 添加到技能的“最佳实践”部分

如果用户评分 >= 7:
  pattern_level: strength
  action: 强化此方法

如果用户评分 <= 4:
  pattern_level: weakness
  action: 添加到“应避免”部分

阶段3:技能更新

使用进化标记更新相应的技能文件:

<!-- Evolution: 2025-01-12 | source: ep-2025-01-12-001 | skill: debugger -->

## 添加的模式(2025-01-12)

**模式**:始终验证回调不是空函数

**来源**:Episode ep-2025-01-12-001

**置信度**:0.95

### 更新的检查清单
- [ ] 验证所有回调都有实现
- [ ] 测试回调执行路径

修正标记(修复错误指导时):

<!-- Correction: 2025-01-12 | was: "使用回调链" | reason: 导致刷新过时 -->

## 修正后的指导

使用直接状态监控而非回调链:
```typescript
// ✅ 正确:直接状态监控
const prevPendingCount = usePrevious(pendingCount);

#### 阶段4:记忆整合

1. **更新语义记忆** (`memory/semantic-patterns.json`)
2. **存储情景记忆** (`memory/episodic/YYYY-MM-DD-{skill}.json`)
3. **根据应用/反馈更新模式置信度**
4. **修剪过时模式**(低置信度,近期无应用)

### 推广策略

自我进化有两个独立任务:

1. **捕获**事实、修正、失败假设和可复用模式,作为记忆或提案工件。
2. **推广**仅将经过验证的模式纳入 `SKILL.md`、`AGENTS.md`、文档或CLI行为。

默认先捕获。仅在以下情况之一成立时推广变更:

- 用户明确要求更新技能或仓库指令。
- 同一模式在多个情节中重复出现。
- 有针对性的测试或审查证明当前指导错误或不完整。
- 变更是低风险文档,保留现有行为且清晰可追溯。

推广目标:

| 工件 | 用途 | 批准级别 |
|----------|---------|----------------|
| `memory/episodic/*.json` | 原始情节事实和信号 | 自动 |
| `memory/semantic-patterns.json` | 候选可复用模式(带置信度) | 自动 |
| `memory/proposals/*.md` | 提议的技能/文档/代码变更(带证据) | 自动 |
| `SKILL.md` / `references/` | 验证后的工作流指导 | 先询问,除非用户要求编辑 |
| `AGENTS.md` / 仓库规则 | 跨仓库行为或硬约束 | 先询问 |
| CLI/运行时代码 | 自动化语义 | 需要测试 |

### 自我修正(on_error 钩子)

在以下情况触发:
- Bash命令返回非零退出码
- 遵循技能指导后测试失败
- 用户报告指导产生错误结果

**过程:**

```markdown
## 自我修正工作流

1. 检测错误
   - 从 working/last_error.json 捕获错误上下文
   - 识别遵循了哪个技能指导

2. 验证根本原因
   - 技能指导是否错误?
   - 指导是否被误解?
   - 指导是否不完整?

3. 创建提案
   - 编写包含证据、受影响的技能名称和预期行为的提案
   - 在提案中添加修正标记文本,而非直接写入技能
   - 以低初始置信度更新语义记忆中的相关模式

4. 验证修复
   - 测试修正后的指导
   - 请用户验证

5. 推广
   - 在验证或明确批准后应用技能/文档/代码变更
   - 在变更说明中保留来源情节/提案ID

示例:

<!-- Correction: 2025-01-12 | was: "对可领取ID使用useMemo" | reason: 点击时数据过时 -->

## 自我修正:点击时计算

**问题**:使用useMemo处理可领取ID导致数据过时
**修复**:在点击时计算以获取始终新鲜的数据
**模式**:click_time_vs_open_time_computation

自我验证

审查更新时使用 references/appendix.md 中的验证模板。

钩子集成

运行时触发源

agent-playbook self-improve 从每个技能的 SKILL.md 前置元数据读取技能链:

metadata:
  hooks:
    after_complete:
      - trigger: self-improving-agent
        mode: background
        reason: "提取模式"

metadata.hooks 视为事实来源。不要在运行时代码中维护第二个硬编码的钩子映射。这使技能行为可审计,并让技能创建者风格的审查能够检查智能体执行的同一文件。

在Claude Code设置中配置钩子

添加到Claude Code设置 (~/.claude/settings.json):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash|Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "bash ${SKILLS_DIR}/self-improving-agent/hooks/pre-tool.sh \"$TOOL_NAME\" \"$TOOL_INPUT\""
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash ${SKILLS_DIR}/self-improving-agent/hooks/post-bash.sh \"$TOOL_OUTPUT\" \"$EXIT_CODE\""
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash ${SKILLS_DIR}/self-improving-agent/hooks/session-end.sh"
          }
        ]
      }
    ]
  }
}

${SKILLS_DIR} 替换为你的实际技能路径。

附加参考

参见 references/appendix.md 了解记忆结构、工作流图、指标、反馈模板和研究链接。

最佳实践

应该做

  • ✅ 从每次技能交互中学习
  • ✅ 在正确的抽象级别提取模式
  • ✅ 更新多个相关技能
  • ✅ 跟踪置信度和应用次数
  • ✅ 征求用户对改进的反馈
  • ✅ 使用进化/修正标记确保可追溯性
  • ✅ 在广泛应用前验证指导
  • ✅ 在修改持久的技能指导前编写提案
  • ✅ 将钩子路由保留在 metadata.hooks

不应做

  • ❌ 从单一经验过度泛化
  • ❌ 在没有置信度跟踪的情况下更新技能
  • ❌ 忽略负面反馈
  • ❌ 做出破坏现有功能的更改
  • ❌ 创建矛盾的模式
  • ❌ 在不理解上下文的情况下更新技能
  • ❌ 悄悄将自我进化发现推广到仓库规则
  • ❌ 在CLI代码和技能前置元数据中重复定义钩子

快速开始

任何技能完成后,此智能体自动:

  1. 分析发生了什么
  2. 提取模式和洞察
  3. 写入记忆和提案工件
  4. 推广经过验证的改进(当批准或证据充分时)
  5. 报告摘要给用户

参考文献