4e7add899d
Add skillopt/sleep — a deployment-time companion to SkillOpt that gives a
local Claude agent a nightly "sleep cycle":
harvest ~/.claude transcripts -> mine recurring tasks -> replay offline
-> consolidate (reflect -> bounded edit -> held-out GATE) -> stage -> adopt
Synthesizes SkillOpt (validation-gated bounded text optimization, reusing
skillopt.evaluation.gate verbatim), Claude Dreams (offline consolidation;
input never mutated; review-then-adopt), and the agent-sleep paper
(short-term experience -> long-term competence).
Engine (skillopt/sleep/, import-light, py>=3.10):
- harvest.py read-only parse of session JSONL + history.jsonl
- mine.py sessions -> TaskRecords (heuristic miner + LLM hook)
- backend.py MockBackend (deterministic, no API) + AnthropicBackend
- replay.py offline re-run -> (hard, soft) scores
- consolidate.py one SkillOpt epoch behind a held-out gate
- memory.py protected-region edits to SKILL.md / CLAUDE.md
- staging.py stage proposals; adopt with backup (Dreams safety contract)
- cycle.py + __main__.py orchestrator + CLI (run/dry-run/status/adopt/harvest)
Plugin (skillopt-sleep-plugin/): plugin.json, /sleep command, skillopt-sleep
skill, SessionEnd hook, bundled runner + cron generator.
Validation (deterministic, no API): persona experiment proves held-out lift
(researcher 0.33->1.0, programmer 0.32->1.0) AND that the gate rejects an
injected harmful edit. 13 stdlib-unittest tests pass, incl. full cycle +
adopt-with-backup and parsing of real on-disk transcripts.
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
21 lines
826 B
Python
21 lines
826 B
Python
"""SkillOpt-Sleep — nightly offline self-evolution for a local Claude agent.
|
|
|
|
A Claude Code plugin engine that gives a user's agent a "sleep cycle":
|
|
harvest the day's real session transcripts, mine recurring tasks, replay
|
|
them offline, and consolidate short-term experience into long-term memory
|
|
(CLAUDE.md) and skills (SKILL.md) behind a SkillOpt validation gate.
|
|
|
|
Synthesizes three ideas:
|
|
* SkillOpt — validation-gated bounded text optimization (this repo)
|
|
* Dreams — offline memory consolidation, input never mutated
|
|
* Sleep — short-term experience -> long-term competence, offline
|
|
|
|
Public entry points:
|
|
* skillopt.sleep.cli — `python -m skillopt.sleep ...`
|
|
* skillopt.sleep.cycle.run_sleep_cycle(...)
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
__all__ = ["__version__"]
|
|
__version__ = "0.1.0"
|