SKILL.md
readonlyread-only
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 | 任何技能啟動 | 記錄 session 開始 |
| 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 prop 中的回呼為空",
"solution": "在回呼中實作實際的重新整理邏輯",
"lesson": "務必確認回呼不是空函式",
"related_pattern": "callback_verification",
"user_feedback": {
"rating": 8,
"comments": "這正是問題所在"
}
}
3. 工作記憶(memory/working/)
儲存當前 session 上下文:
memory/working/
├── current_session.json # 活躍 session 資料
├── last_error.json # 自我修正用的錯誤上下文
└── session_end.json # Session 結束標記
自我進化流程
階段一:經驗提取
任何技能完成後,提取:
發生什麼事:
skill_used: {哪個技能}
task: {正在做什麼}
outcome: {success|partial|failure}
關鍵洞察:
what_went_well: [哪些做得好]
what_went_wrong: [哪些出錯]
root_cause: {根本原因(如適用)}
使用者反饋:
rating: {1-10 如果有提供}
comments: {具體反饋}
階段二:模式抽象
將經驗轉換為可重用的模式:
| 具體經驗 | 抽象模式 | 目標技能 |
|---|---|---|
| 「使用者忘記儲存 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: 加入「應避免事項」章節
階段三:技能更新
使用進化標記更新對應的技能檔案:
<!-- Evolution: 2025-01-12 | source: ep-2025-01-12-001 | skill: debugger -->
## 新增模式(2025-01-12)
**模式**:務必確認回呼不是空函式
**來源**:情節 ep-2025-01-12-001
**信心度**:0.95
### 更新檢查清單
- [ ] 確認所有回呼都有實作
- [ ] 測試回呼執行路徑
修正標記(修正錯誤指導時):
<!-- Correction: 2025-01-12 | was: "使用回呼鏈" | reason: 導致資料過時未重新整理 -->
## 修正後的指導
使用直接狀態監控取代回呼鏈:
```typescript
// ✅ 正確做法:直接狀態監控
const prevPendingCount = usePrevious(pendingCount);
#### 階段四:記憶整合
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: 點擊時資料過時 -->
## 自我修正:點擊時計算
**問題**:對可領取 ID 使用 useMemo 導致資料過時
**修復**:在點擊時計算以取得最新資料
**模式**:click_time_vs_open_time_computation
自我驗證
審查更新時,使用 references/appendix.md 中的驗證模板。
鉤子整合
執行時期觸發來源
agent-playbook self-improve 從每個技能的 SKILL.md frontmatter 讀取技能鏈接:
metadata:
hooks:
after_complete:
- trigger: self-improving-agent
mode: background
reason: "提取模式"
將 metadata.hooks 視為唯一真相來源。不要在執行時期程式碼中維護第二份硬編碼的鉤子對應表。這可讓技能行為可稽核,並讓 Skill Creator 風格的審查能夠檢查代理實際執行的同一個檔案。
在 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 程式碼和技能 frontmatter 中重複定義鉤子
快速開始
任何技能完成後,此代理會自動:
- 分析發生什麼事
- 提取模式和洞察
- 寫入記憶和提案工件
- 推廣經過驗證的改進(當核准或證據充分時)
- 回報摘要給使用者
參考資料
- SimpleMem: Efficient Lifelong Memory for LLM Agents
- A Survey on the Memory Mechanism of Large Language Model Agents
- Lifelong Learning of LLM based Agents
- Evo-Memory: DeepMind's Benchmark
- Let's Build a Self-Improving AI Agent
- OpenClaw self-improving-agent skill
- OpenCrabs local self-improving agent
- ELL-StuLife experience-driven lifelong learning






