Self Improving Agent:把錯誤和糾正沉澱成可持續改進的日誌

前言

寫代碼的 Agent 最常見的浪費不是算力,而是遺忘:命令昨天失敗了,今天原樣再跑一遍;用戶上週糾正過的做法,本週又被忽略;同一個坑在三個會話裏踩三次。Self Improving Agent(編程錯誤經驗自我改進)就是爲了解決這個問題:把開發過程中的失敗、糾正和經驗教訓按固定格式寫進 .learnings/ 目錄下的日誌文件,讓後續會話能讀到、能繼承。

下面介紹這個 Skill 的定位、安裝方式、日誌格式和實際用法。

這是什麼

Self Improving Agent 是一個 Agent 技能,由 mike5230odense 發佈在 ClawHub 上,版本 1.0.0,分類爲 ai-agent,標籤顯示 requires_api_key=false,即不需要 API 密鑰。上游倉庫地址爲 https://clawhub.ai/mike5230odense/self-improvement ,SkillHub 鏡像地址爲 https://api.skillhub.cn/org-b6kzcl68/self-improvement 。

需要說明的是,ClawHub 頁面標註該 Skill 是 @raghuraam25/skilldevelop 的副本(duplicate),其 OpenClaw 版本改自 https://github.com/pskoett/pskoett-ai-skills 倉庫中的 self-improvement 技能。引用時留意出處。

它解決的問題是:Agent 在會話內能記住錯誤,跨會話卻只有上下文窗口,經驗無法積累。這個 Skill 用純 Markdown 日誌加固定的寫入約定,把「這次學到什麼」變成項目文件的一部分。

核心功能

1、三類日誌文件,各管一件事。.learnings/ 目錄下固定三個文件:LEARNINGS.md(糾正、知識盲區、最佳實踐)、ERRORS.md(命令失敗、異常)、FEATURE_REQUESTS.md(用戶想要但當前不存在的能力)。

2、固定的觸發時機。官方 SKILL.md 列出六種情況:命令或操作意外失敗;用戶糾正(如「不對」「實際上…」);用戶請求尚不存在的功能;外部 API 或工具調用失敗;發現自己的知識過時或錯誤;爲慣常任務找到更好做法。另外,官方還建議在執行重大任務前先回顧已有日誌。

3、結構化條目。每條記錄有統一 ID(如 LRN-YYYYMMDD-XXX)、時間戳、優先級(low/medium/high/critical)、狀態(pending/in_progress/wont_fix/resolved/promoted)、區域標籤(frontend/backend/infra/tests/docs/config),以及 Metadata 區,支持關聯條目(See Also)和反覆模式追蹤(Pattern-Key、Recurrence-Count、First-Seen、Last-Seen)。

4、問題解決後的狀態更新。條目不是寫完就結束,修復後把 Status 從 pending 改爲 resolved,並在 Resolution 區記錄修復時間、提交或 PR 號。

5、晉升機制。具有普適價值的經驗可以晉升到項目記憶文件:行爲模式到 SOUL.md、工作流改進到 AGENTS.md、工具坑到 TOOLS.md(OpenClaw 工作區);通用情況下晉升到 CLAUDE.md、AGENTS.md 或 .github/copilot-instructions.md。

安裝與啓用

OpenClaw 是官方推薦的主要平臺,支持工作區注入和自動加載。

安裝有兩種方式,二選一:

# 方式一:ClawdHub(官方推薦)
clawdhub install self-improving-agent

# 方式二:手動安裝到 OpenClaw skills 目錄
git clone https://github.com/peterskoett/self-improving-agent.git ~/.openclaw/skills/self-improving-agent

安裝後創建日誌目錄並放置三個文件,模板在技能的 assets/ 目錄下:

mkdir -p ~/.openclaw/workspace/.learnings

OpenClaw 會把工作區文件注入每個會話,結構如下,.learnings/ 與其他注入文件並列:

~/.openclaw/workspace/
├── AGENTS.md        # 多 Agent 工作流與委派模式
├── SOUL.md          # 行爲準則、原則
├── TOOLS.md         # 工具能力與集成坑
├── MEMORY.md        # 長期記憶(僅主會話)
├── memory/          # 每日記憶文件
│   └── YYYY-MM-DD.md
└── .learnings/      # 本 Skill 的日誌
    ├── LEARNINGS.md
    ├── ERRORS.md
    └── FEATURE_REQUESTS.md

也可以在會話開始時用 hook 自動提醒:

cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
openclaw hooks enable self-improvement

如果你用的是 Claude Code、Codex、Copilot 或其他 Agent,官方提供通用安裝方式:在項目根目錄創建 .learnings/ 目錄,把模板文件放進去,然後在 AGENTS.md、CLAUDE.md 或 .github/copilot-instructions.md 中加一句提醒自己記錄日誌的說明——這是 hook 提醒的替代方案。

日誌格式:三類條目長什麼樣

條目格式來自官方 SKILL.md,下面摘錄關鍵字段。

學習條目,追加到 .learnings/LEARNINGS.md:

## [LRN-YYYYMMDD-XXX] category

**Logged**: ISO-8601 timestamp
**Priority**: low | medium | high | critical
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config

### Summary
一句話說明學到了什麼

### Details
完整上下文:發生了什麼、哪裏錯了、正確做法是什麼

### Suggested Action
具體的修復或改進動作

### Metadata
- Source: conversation | error | user_feedback
- Related Files: path/to/file.ext
- Tags: tag1, tag2
- See Also: LRN-20250110-001(如與已有條目相關)
- Pattern-Key: simplify.dead_code | harden.input_validation(可選,用於追蹤反覆出現的模式)
- Recurrence-Count: 1(可選)
- First-Seen: 2025-01-15(可選)
- Last-Seen: 2025-01-15(可選)

錯誤條目,追加到 .learnings/ERRORS.md:

## [ERR-YYYYMMDD-XXX] skill_or_command_name

**Logged**: ISO-8601 timestamp
**Priority**: high
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config

### Summary
簡要說明什麼失敗了

### Error
實際的錯誤信息或輸出

### Context
- 嘗試的命令/操作
- 使用的輸入或參數
- 相關環境信息

### Suggested Fix
如能判斷,寫出可能的解決方式

### Metadata
- Reproducible: yes | no | unknown
- Related Files: path/to/file.ext
- See Also: ERR-20250110-001(如反覆出現)

功能請求條目,追加到 .learnings/FEATURE_REQUESTS.md:

## [FEAT-YYYYMMDD-XXX] capability_name

**Logged**: ISO-8601 timestamp
**Priority**: medium
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config

### Requested Capability
用戶想做到什麼

### User Context
爲什麼需要、在解決什麼問題

### Complexity Estimate
simple | medium | complex

### Suggested Implementation
可以怎麼實現、可能擴展什麼

### Metadata
- Frequency: first_time | recurring
- Related Features: existing_feature_name

ID 生成規則統一爲 TYPE-YYYYMMDD-XXX,TYPE 取 LRN、ERR、FEAT,XXX 爲序號或三位隨機字符。

從記錄到修復:狀態流轉

日誌寫完後,條目需要被後續會話消費。官方給出的流程是:出錯或被糾正時先記錄到對應文件,然後回顧並晉升有普適價值的條目。

狀態值有五種:pending(待處理)、in_progress(正在處理)、resolved(已解決)、wont_fix(決定不處理,在 Resolution 備註裏寫原因)、promoted(已晉升到項目記憶文件)。

問題修復後,把條目改成 resolved 並追加 Resolution 區:

### Resolution
- **Resolved**: 2025-01-16T09:00:00Z
- **Commit/PR**: abc123 或 #42
- **Notes**: 簡要說明做了什麼

晉升時按類型選擇目標文件,官方給出的對應關係:

學習類型 晉升目標 例子
行爲模式 SOUL.md 「保持簡潔,避免免責聲明」
工作流改進 AGENTS.md 「長任務派生子 Agent」
工具坑 TOOLS.md 「git push 前需先配置認證」
通用經驗 CLAUDE.md / AGENTS.md / .github/copilot-instructions.md 項目事實與約定

跨會話與提醒(僅 OpenClaw)

OpenClaw 提供四個工具讓學習可以跨會話傳遞:sessions_list(查看活躍/近期會話)、sessions_history(讀取另一個會話的記錄)、sessions_send(把一條學習發給另一個會話)、sessions_spawn(派生子 Agent 做後臺工作)。hook 部分的完整說明在技能的 references/openclaw-integration.md。

適用場景與注意

適合需要持續積累經驗的場景:長期維護同一代碼庫、反覆遇到同一類錯誤、Agent 與人工協作糾正頻繁。它的價值取決於日誌是否被真的讀取和執行——如果 .learnings/ 沒人回顧,它只是一堆 Markdown。

幾個注意點:

1、它依賴 Agent 遵守寫入約定,本身不做自動攔截;在非 OpenClaw 平臺上沒有 hook,需要在 agent 配置文件裏手動加提醒。
2、OpenClaw 之外的通用安裝方式需要自己創建目錄和文件,模板在技能的 assets/ 目錄。
3、ClawHub 頁面標註它是 @raghuraam25/skilldevelop 的副本,OpenClaw 版改自 pskoett-ai-skills 倉庫,選用前可對比原版。
4、官方 ClawHub 頁面(2026-11-04 抓取)顯示評分 100000、下載 70419 次、安裝 2788 次;SkillHub 鏡像頁面的數字可能與此不同。

結尾

這個 Skill 的價值在於把「錯誤 → 糾正 → 沉澱 → 複用」的鏈路用文件固化下來,不依賴任何模型記憶能力。如果你的 Agent 在多會話、多任務環境裏工作,值得按上面的格式先把 .learnings/ 建起來。

官方地址:https://clawhub.ai/mike5230odense/self-improvement ;SkillHub 鏡像:https://api.skillhub.cn/org-b6kzcl68/self-improvement 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜