Bug fixes: - #52: bundle run-sleep.sh in Claude Code plugin + 4-level fallback - #58: add skillopt-sleep console script entry point in pyproject.toml - #62: filter headless claude -p replay sessions from harvest Plugin sync (Claude Code / Codex / Copilot / OpenClaw): - Document all 22 CLI flags, 7 actions, 4 backends across all SKILL.md files - Document config keys (preferences, gate_mode, dream_rollouts, etc.) - Document memory consolidation (evolve_memory / evolve_skill) - Add schedule/unschedule to all plugins - Copilot MCP: expand schema from 3 → 16 params + schedule tools - OpenClaw: add schedule/unschedule subcommands via shared scheduler Tests: - Cross-plugin parity test (prevents future feature drift) - MCP schema completeness test Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.5 KiB
name, description
| name | description |
|---|---|
| skillopt-sleep | Validate and refine agent skills through nightly sleep cycles with held-out gates. Wraps Microsoft's SkillOpt-Sleep engine for the OpenClaw/DeepSeek stack. |
skillopt-sleep — OpenClaw Adaptation of Microsoft SkillOpt-Sleep
A nightly self-improvement loop that reads our session transcripts, mines recurring workflow patterns, replays them with proposed skill edits, and gates the proposals against a held-out test set. Only improvements that beat baseline are staged for human adoption.
When To Use
- After Hermes's Weekly Skill Review (or as its replacement)
- When a skill is being used 10+ times/week and could be tighter
- Before promoting a new skill from
skill-proposals/toskills/ - When a skill regresses in observed quality
What It Does (One Cycle)
harvest session transcripts -> mine recurring task patterns
-> replay each pattern (current skill vs proposed)
-> GATE: must improve held-out score
-> stage proposal
-> Ethan adopts (manual)
Nothing live changes until Ethan adopts. Every adopt backs up first.
Architecture
skills/skillopt-sleep/
├── SKILL.md # this file
├── config.json # engine config (backend, budgets, etc.)
├── run_sleep.py # entry point
└── skillopt_sleep_openclaw.py # DeepSeek/Ollama backend
The engine itself is at ~/.openclaw/workspace/SkillOpt/skillopt_sleep/ (cloned from microsoft/SkillOpt).
Usage
# Run one cycle with current config
cd ~/.openclaw/workspace/skills/skillopt-sleep
python3 run_sleep.py
# Dry run (report only, no staging)
python3 run_sleep.py --dry-run
# Use a pre-built task set (recommended for testing)
python3 run_sleep.py --tasks tests/research-cron-tasks.json
Scheduling
python3 slash_sleep.py schedule --hour 3 --minute 17
python3 slash_sleep.py unschedule
python3 slash_sleep.py unschedule --all
Installs a nightly cron entry using the shared SkillOpt-Sleep scheduler. This is an alternative to the external run_sleep_cron.sh script.
Alternative backends
While OpenClaw defaults to openclaw-deepseek (DeepSeek V4 Pro + Ollama), the shared engine also supports:
--backend mock— deterministic, no API spend (for testing)--backend claude— uses the Claude CLI--backend codex— uses the Codex CLI--backend copilot— uses the GitHub Copilot CLI
These can be used via the engine directly (python -m skillopt_sleep).
Shared-engine flags
When invoking the engine directly, all standard flags are available:
--source codex/--source auto— harvest from Codex Desktop sessions--tasks-file PATH— use a pre-built task set--target-skill-path PATH— explicit SKILL.md target--max-tasks N/--max-sessions N— cap workload--progress— print phase progress--json— machine-readable output--auto-adopt— auto-adopt if gate passes
Config keys: preferences, gate_mode, gate_metric, dream_rollouts, recall_k, evolve_memory, evolve_skill.
Config (config.json)
Key knobs:
backend: "openclaw-deepseek"— our custom backendmodel: "deepseek-v4-pro"— optimizer modeledit_budget: 3— max bounded edits per nightgate_mode: "on"— validation-gated (rejects regressions)auto_adopt: false— require Ethan to adopt manuallymax_tasks_per_night: 12— cap to control cost
Cost Estimate
Per night: 12 tasks × (1 attempt + 1 judge + 1 reflect) × ~$0.005/1K tokens × ~3K tokens/call ≈ $0.50-2.00/night.
Outputs
- Report:
~/.skillopt-sleep/state.json(running totals) - Staging:
~/.skillopt-sleep/staging/<night>/report.md— readable summarybest_skill.md— proposed skilledits.json— bounded edit listbefore.md/after.md— diffs
Held-Out Test Sets (Phase 2)
Located at tests/<category>-tasks.json. Each task has:
prompt— the recurring taskreference— exact-match gold answerrubric— soft score rubric (0-1)domain— research/devops/wiki/etc.
Currently building for 3 categories:
- research-cron-output
- devops-infrastructure-check
- wiki-canonical-guide
When NOT To Use
- For a one-off workflow (not a recurring pattern)
- During a crisis/incident (humans must lead)
- When session transcripts are < 24h old (not enough signal)
- For skills < 300 tokens (over-optimization risk)