Files
carpedkm 0be780052a feat: sync all 4 runtime plugins with full engine surface + fix #52 #58 #62
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>
2026-06-20 11:31:09 +00:00

4.5 KiB
Raw Permalink Blame History

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/ to skills/
  • 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 backend
  • model: "deepseek-v4-pro" — optimizer model
  • edit_budget: 3 — max bounded edits per night
  • gate_mode: "on" — validation-gated (rejects regressions)
  • auto_adopt: false — require Ethan to adopt manually
  • max_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 summary
    • best_skill.md — proposed skill
    • edits.json — bounded edit list
    • before.md / after.md — diffs

Held-Out Test Sets (Phase 2)

Located at tests/<category>-tasks.json. Each task has:

  • prompt — the recurring task
  • reference — exact-match gold answer
  • rubric — 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)