Feedback Learning
by @surdeddd
Zero-LLM feedback learning system for OpenClaw agents. Detects user feedback (emoji reactions, text signals like "переделай"/"круто"), logs events, discovers...
clawhub install feedback-learning📖 About This Skill
name: feedback-learning version: 1.0.0 description: Zero-LLM feedback learning system for OpenClaw agents. Detects user feedback (emoji reactions, text signals like "переделай"/"круто"), logs events, discovers recurring patterns, auto-promotes rules, and generates weekly reports. Use when setting up agent self-improvement, configuring feedback detection, or building a learning pipeline. Supports Russian and English. No API keys needed — runs entirely on shell scripts and Python. tags: [learning, feedback, self-improvement, patterns, analytics]
Feedback Learning System
A complete pipeline for agents to learn from user feedback without spending tokens on analysis.
Architecture
User feedback → detect-feedback.py → log-event.sh → events.jsonl
↓
weekly-report.py ← analyze-patterns.py
↓
patterns.json
↓ (≥3 occurrences)
genes.json (promoted rules)
Setup
1. Install files
Copy the skill contents to your shared learning directory:
DEST="$HOME/.openclaw/shared/learning"
mkdir -p "$DEST/reports"
cp scripts/* "$DEST/"
chmod +x "$DEST/log-event.sh"
touch "$DEST/events.jsonl"
2. Initialize data files
If they don't exist, create empty JSON stores:
cat > "$DEST/patterns.json" << 'EOF'
{"version": "2.0", "updated": "", "patterns": []}
EOFcat > "$DEST/genes.json" << 'EOF'
{"version": "2.0", "rules": []}
EOF
cat > "$DEST/capsules.json" << 'EOF'
{"version": "2.0", "capsules": []}
EOF
3. Create LEARNINGS.md for each agent
Add to each agent's workspace:
# LEARNINGS.md
Last Updated: YYYY-MM-DD
Total: 0🟢 Что работает (положительный фидбек)
(пока пусто)🔴 Что НЕ работает (отрицательный фидбек)
(пока пусто)🧠 Извлечённые правила
(пока пусто)🔁 Повторяющиеся паттерны
(пока пусто)💡 Feature Requests
(пока пусто)
4. Add to AGENTS.md
Add this block to each agent's AGENTS.md boot sequence:
## Feedback Learning
On positive feedback (👍❤️🔥👏💯 or words like "круто","топ","зашло"):
Run: bash ~/.openclaw/shared/learning/log-event.sh positive user_emoji "" ""
On negative feedback (👎🤦😤 or words like "фигня","переделай"):
Run: bash ~/.openclaw/shared/learning/log-event.sh correction user_nlp "" "" ""
On exec errors:
Run: bash ~/.openclaw/shared/learning/log-event.sh error exec_fail "" "" ""
5. Set up crons
Pattern analysis (daily):
schedule: cron 30 3 * * * @
payload: python3 ~/.openclaw/shared/learning/analyze-patterns.py
Weekly report (Sundays):
schedule: cron 30 4 * * 0 @
payload: python3 ~/.openclaw/shared/learning/weekly-report.py
Usage
Log an event manually
bash log-event.sh anton error exec_fail "config update" "trailing comma in JSON" "Validate JSON before writing"
bash log-event.sh anton positive user_emoji "sent report" "🔥"
bash log-event.sh anton correction user_nlp "sent message" "переделай, не тот формат" "Confirm format before sending"
Detect feedback from text (no LLM)
echo "круто, зашло!" | python3 detect-feedback.py
→ {"type": "positive", "source": "user_nlp", "signal": "круто", "confidence": 0.8}
python3 detect-feedback.py "переделай это"
→ {"type": "correction", "source": "user_nlp", "signal": "переделай", "confidence": 0.8}
Run pattern analysis
python3 analyze-patterns.py
Outputs: pattern count, promotion status. Updates patterns.json. Auto-promotes to genes.json when a pattern hits ≥3 occurrences in 30 days.
Generate weekly report
python3 weekly-report.py
Saves to reports/WEEKLY_REPORT_YYYY_WNN.md with stats by agent, source, top patterns, and newly promoted rules.
Data Files
| File | Purpose |
|------|---------|
| events.jsonl | Append-only event log (all feedback) |
| patterns.json | Grouped recurring patterns with counts |
| genes.json | Promoted rules (≥3 occurrences → active rule) |
| capsules.json | Successful reasoning paths (avoid re-computation) |
| reports/ | Weekly synthesis reports |
Event Schema
{
"ts": "2026-03-20T12:00:00Z",
"agent": "anton",
"type": "error|correction|positive|pattern|requery",
"source": "exec_fail|user_nlp|user_emoji|requery|auto",
"context": "what agent was doing",
"signal": "the trigger text or emoji",
"hint": "suggested fix or rule",
"heat": 1
}
Promotion Flow
1. Events accumulate in events.jsonl
2. analyze-patterns.py groups similar events by signal text (≥60% similarity)
3. Patterns with ≥3 occurrences in 30 days are promoted to genes.json
4. Agents read genes.json at boot to apply learned rules
5. weekly-report.py synthesizes progress for human review
Supported Languages
Feedback detection supports:
💡 Examples
Log an event manually
bash log-event.sh anton error exec_fail "config update" "trailing comma in JSON" "Validate JSON before writing"
bash log-event.sh anton positive user_emoji "sent report" "🔥"
bash log-event.sh anton correction user_nlp "sent message" "переделай, не тот формат" "Confirm format before sending"
Detect feedback from text (no LLM)
echo "круто, зашло!" | python3 detect-feedback.py
→ {"type": "positive", "source": "user_nlp", "signal": "круто", "confidence": 0.8}
python3 detect-feedback.py "переделай это"
→ {"type": "correction", "source": "user_nlp", "signal": "переделай", "confidence": 0.8}
Run pattern analysis
python3 analyze-patterns.py
Outputs: pattern count, promotion status. Updates patterns.json. Auto-promotes to genes.json when a pattern hits ≥3 occurrences in 30 days.
Generate weekly report
python3 weekly-report.py
Saves to reports/WEEKLY_REPORT_YYYY_WNN.md with stats by agent, source, top patterns, and newly promoted rules.
⚙️ Configuration
1. Install files
Copy the skill contents to your shared learning directory:
DEST="$HOME/.openclaw/shared/learning"
mkdir -p "$DEST/reports"
cp scripts/* "$DEST/"
chmod +x "$DEST/log-event.sh"
touch "$DEST/events.jsonl"
2. Initialize data files
If they don't exist, create empty JSON stores:
cat > "$DEST/patterns.json" << 'EOF'
{"version": "2.0", "updated": "", "patterns": []}
EOFcat > "$DEST/genes.json" << 'EOF'
{"version": "2.0", "rules": []}
EOF
cat > "$DEST/capsules.json" << 'EOF'
{"version": "2.0", "capsules": []}
EOF
3. Create LEARNINGS.md for each agent
Add to each agent's workspace:
```markdown