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代码和技能前置元数据中重复定义钩子
快速开始
任何技能完成后,此智能体自动:
- 分析发生了什么
- 提取模式和洞察
- 写入记忆和提案工件
- 推广经过验证的改进(当批准或证据充分时)
- 报告摘要给用户






