前言¶
寫代碼的 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 。