self-improving-agent

self-improving-agent

一個通用的自我進化代理,從所有技能的經驗中學習。採用多重記憶架構(語意記憶 + 情節記憶 + 工作記憶)持續進化程式碼庫。透過鉤子機制在技能完成或發生錯誤時自動觸發自我修正。

59星標
10分支
更新於 2026/6/21
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 中重複定義鉤子

快速開始

任何技能完成後,此代理會自動:

  1. 分析發生什麼事
  2. 提取模式和洞察
  3. 寫入記憶和提案工件
  4. 推廣經過驗證的改進(當核准或證據充分時)
  5. 回報摘要給使用者

參考資料