self-learning
Autonomous self-learning loop for OpenClaw agents. Auto-captures memories, creates skills from experience, extracts lessons from mistakes, and guards against memory bloat. Inspired by Hermes Agent's l
Files1
View on GitHubSKILL.mdskills/self-learning/SKILL.md
GitHubSelf-Learning Loop for OpenClaw
Autonomous self-improvement system that makes your OpenClaw agent learn from every interaction — without any code changes to OpenClaw itself.
What It Does
- Memory Nudge — Auto-reviews conversations and saves durable facts (user preferences, corrections, discoveries)
- Skill Auto-Creation — Detects novel problem-solving approaches and saves them as reusable skills
- Lesson Extraction — Captures mistakes and corrections, promotes recurring patterns to rules
- Memory Size Guard — Prevents context file bloat that causes silent truncation
- Stale Cleanup — Removes outdated entries from memory files
Architecture
┌─────────────────────────────────────────────────┐
│ HEARTBEAT │
│ (runs every ~30min during active sessions) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Memory │ │ Skill │ │ Lesson │ │
│ │ Review │ │ Check │ │ Extraction │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
│ ┌──────────────────────────────────────────┐ │
│ │ Memory Size Guard (SOUL/USER/MEMORY.md) │ │
│ └──────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ CRON (every 3 hours) │
│ Isolated subagent — catches what heartbeat │
│ misses. Runs independently of active sessions. │
│ │
│ 1. Memory size check + auto-trim │
│ 2. Promote daily notes → MEMORY.md │
│ 3. Lesson pattern detection (3+ = promote) │
│ 4. Skill creation from completed tasks │
│ 5. Stale entry cleanup │
└─────────────────────────────────────────────────┘
Setup
Step 1: Add to HEARTBEAT.md
Add this section to your HEARTBEAT.md file (after your mandatory checks):
## 🧠 Self-Learning Loop (EVERY heartbeat)
### 1. Memory Review (auto-capture from recent conversation)
- Scan the last 10-20 messages in this session
- Did the user reveal preferences, corrections, personal details, or new patterns?
- Did I learn something about the environment, tools, or workflow?
- If YES → write to `memory/YYYY-MM-DD.md` (daily log) AND update `MEMORY.md` if durable
- If NO → skip silently
- **Character limit:** MEMORY.md must stay under 8000 chars. If over, trim oldest/least relevant.
- **SOUL.md and USER.md must also stay under 8000 chars.** Check `wc -c` before editing.
### 2. Skill Auto-Creation Check
- Did I solve a non-trivial problem this session (5+ tool calls, trial-and-error, user correction)?
- Does a skill already exist for this pattern?
- If novel + reusable → create a new skill file in `skills/`
- If existing skill was wrong/incomplete → update it
- **Skip for:** simple one-offs, routine tasks, already documented things
### 3. Lesson Extraction
- Did something break? Did I make a mistake? Did the user correct me?
- If YES → append to `lessons/` with date + pattern + fix
- Search `lessons/` FIRST before doing something tricky (avoid repeat mistakes)
- If same lesson appears 3+ times → promote to AGENTS.md "Promoted Rules"
### 4. Memory Size Guard
- Run: `wc -c SOUL.md USER.md MEMORY.md`
- If ANY file > 8000 bytes → trim it NOW
- Priority: remove duplicates > remove stale info > shorten verbose entries
Step 2: Create the Cron Job
Create a cron job for the background self-learning review. Run this in your OpenClaw chat:
Create a cron job called "Self-Learning Loop" that runs every 3 hours.
It should be an isolated agentTurn on Sonnet that:
1. Checks SOUL.md, USER.md, MEMORY.md sizes (must be under 8000 bytes each)
2. Reviews recent memory/ files for facts worth promoting to MEMORY.md
3. Checks lessons/ for patterns appearing 3+ times (promote to AGENTS.md)
4. Checks tasks/done/ for novel approaches worth saving as skills
5. Removes stale entries from MEMORY.md
Delivery: none. Timeout: 120 seconds.
Step 3: Create Required Directories
mkdir -p memory lessons decisions tasks/active tasks/done skills
Step 4: Seed Memory Files (if they don't exist)
Your workspace should already have:
MEMORY.md— long-term curated memorySOUL.md— agent identity and personalityUSER.md— user profiles and preferencesAGENTS.md— workspace rules and conventionsmemory/— daily log files (YYYY-MM-DD.md)lessons/— mistake patterns and fixesdecisions/— decision logs with reasoning
How It Compares to Hermes Agent
| Feature | Hermes | This Skill (OpenClaw) |
|---|---|---|
| Memory nudge | Every 10 turns (background thread) | Every heartbeat + every 3h cron |
| Skill auto-creation | Every 15 tool calls | Heartbeat + cron checks done tasks |
| Memory flush before compression | Before context compress | Cron + heartbeat guard |
| Memory size guard | 2200 char limit | 8000 byte limit + auto-trim |
| Lesson extraction | ❌ None | ✅ Auto-promote after 3 occurrences |
| User modeling | Honcho (external service) | USER.md + daily memory files |
| Stale cleanup | ❌ None | ✅ Cron removes dead entries |
Advantages Over Hermes
- Lesson extraction — Hermes doesn't learn from mistakes. We track patterns and promote recurring ones to hard rules.
- Memory size guard — Prevents the silent truncation bug where oversized context files get cut mid-session. This is a real problem that causes agents to "forget" their identity.
- Stale cleanup — Active removal of outdated information. Hermes only adds, never cleans.
- No external dependencies — Hermes uses Honcho (Plastic Labs) for user modeling. We use plain files that survive anything.
- Cron isolation — Background reviews run in isolated sessions, never polluting the main conversation context.
File Size Rules (Critical)
These limits prevent silent context truncation:
| File | Max Size | What Happens If Exceeded |
|---|---|---|
| SOUL.md | 8000 bytes | Agent loses personality mid-session |
| USER.md | 8000 bytes | Agent forgets user preferences |
| MEMORY.md | 8000 bytes | Agent loses project context |
The self-learning cron checks these sizes every 3 hours and auto-trims if needed.
Tips
- Daily notes (
memory/YYYY-MM-DD.md) are raw logs. MEMORY.md is curated wisdom. Don't dump everything into MEMORY.md. - Lessons should be actionable. Not "X broke" but "X broke because Y. Fix: do Z instead."
- Skills should be reusable. If you'd do the same thing again for a different user, it's a skill. If it's one-off, it's a lesson.
- Review MEMORY.md weekly. Delete entries about completed projects, deprecated tools, or outdated accounts.