关于 skillopt-sleep
SkillOpt-Sleep 是面向本地 Claude Agent、依据使用记录进行改进的技能。它重放过往会话中的重复任务,为 CLAUDE.md 或 SKILL.md 提出可评估的修改,并暂存变更供审核后采纳。
主要功能
- 01只读采集过往会话
- 02通过后端重放重复任务
- 03使用留出集验证修改提案
- 04暂存记忆和技能变更以供审核
- 05显式采纳并备份原文件
- 06通过 cron 安排夜间运行
适用场景
- 01将重复工作沉淀到 Agent 记忆中
- 02采纳前审核技能修改提案
- 03安排离线改进周期
- 04用留出任务测试修改效果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ microsoft/ skillopt --skill skillopt-sleep安装后在 Claude Code 中输入/skillopt-sleep确认已加载。
详细介绍
SkillOpt-Sleep:基于使用情况的本地 Claude Agent 自我进化
SkillOpt-Sleep 为用户的 Agent 提供一个睡眠周期。它可以按需运行或按夜间计划运行,回顾过去真实的 Claude Code 会话,通过选定的后端重新执行重复任务,并将学到的内容整合到记忆(CLAUDE.md)和技能(SKILL.md)中。启用默认验证关卡后,它只保留能提高留出评分的更改。只有在明确采纳或用户请求使用 --auto-adopt 时,实时文件才会更改。它旨在改进这位用户的重复工作,并让每项已接受的提案都能在本次运行的留出任务上进行衡量,且无需训练模型权重。这是在部署时训练的对应方式:短期经验 → 长期能力。
它综合了三个理念:
- SkillOpt — 技能/记忆文档是可训练的文本;进行有界的添加/删除/替换编辑;只有通过留出关卡后才会接受;被拒绝的编辑会记录在运行报告中供审查。
- Claude Dreams — 读取过去的会话并在受保护的已学习区块内提出更改的整合流程;输入永不修改,输出会在采纳前经过审查。
- Agent 睡眠 — 定期在后台重放,将经历转化为持久技能。
何时使用此技能
当用户希望进行以下任一操作时触发:
- “让我的 Agent 从我的使用方式中学习”/“我用得越多,它就越好”/“跨会话记住我的偏好”
- 运行夜间/定时或按需的离线自我改进/梦境/睡眠流程
- 审查过去的会话/轨迹并提炼重复任务
- 将反馈整合到
CLAUDE.md或托管技能中 - 安排周期运行(cron)或采纳暂存的提案
周期(六个阶段)
- 收集 — 读取
~/.claude/projects/*/<session>.jsonl+~/.claude/history.jsonl(只读)→ 会话摘要。 - 挖掘 — 将摘要转化为
TaskRecord(重复意图 + 结果标签 + 尽可能附上可核查的引用)。 - 重放 — 在当前技能和记忆的基础上,通过选定的后端重新执行任务 →(硬性、软性)评分。
- 整合 — 反思失败 → 提出有界编辑 → 在留出切片上进行验证;启用默认验证关卡后,只有评分严格提高才会接受。
- 暂存 — 将已接受的
proposed_CLAUDE.md和/或proposed_SKILL.md,以及report.md、report.json、manifest.json和diagnostics.json写入<project>/.skillopt-sleep/staging/<timestamp>/。 不会更改任何实时文件。 被拒绝的运行仍会生成报告,但不会提出替换实时文件的方案。 - 采纳 — 明确采纳(或选择启用自动采纳):先备份,再将暂存文件复制到实时文件。
如何使用
建议使用 /skillopt-sleep 命令。它底层调用捆绑的运行器:
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" status # what's happened
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" dry-run --project "$(pwd)" # no-staging preview
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" run --project "$(pwd)" # full cycle, stages a proposal
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" adopt --project "$(pwd)" # apply staged proposal (with backup)
- 默认后端为
mock(确定性运行,不产生 API 费用)——适合试用整个流程。 - 添加
--backend claude或--backend codex,即可使用用户的真实额度进行模型驱动优化。留出集上的提升是针对本次运行的证据,并不保证带来更广泛的改进;结果取决于任务、模型和检查项。 - 默认范围为调用命令的项目;
--scope all会收集所有 Claude 项目,并将其纳入当前运行配置的目标中。 - 使用真实后端时,会向其服务提供商发送截断后的对话记录/任务内容。使用真实后端处理敏感会话前,请先查看下方的数据边界规则。
计划任务
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" schedule --project "$(pwd)" --hour 3 --minute 17
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" unschedule --project "$(pwd)"
安装夜间 cron 条目。unschedule --all 会移除所有托管条目。
常用 CLI 标志
| 标志 | 默认值 | 描述 |
|---|---|---|
--project PATH | cwd | 要改进的项目目录 |
--scope all|invoked | invoked | 收集范围 |
--backend mock|claude|codex|copilot|handoff|azure_openai | mock | 后端(mock = 不调用提供方) |
--model NAME | backend default | 覆盖用于回放的模型 |
--source claude|codex|auto | claude | 对话记录来源 |
--lookback-hours N | 72 | 收集时间范围 |
--max-sessions N | derived | 限制收集的会话数;默认为最大任务数的 3 倍(使用当前默认值时为 120) |
--max-tasks N | 40 | 限制挖掘的任务数 |
--target-skill-path PATH | ~/.claude/skills/skillopt-sleep-learned/SKILL.md | 指定要改进的 SKILL.md |
--tasks-file PATH | — | 已审核的 TaskRecord JSON(跳过收集) |
--progress | off | 将各阶段的进度打印到 stderr |
--auto-adopt | off | 如果通过门槛,则自动采用 |
--edit-budget N | 4 | 每晚最多进行的有限编辑次数 |
--preferences TEXT | empty | 将项目规则添加到优化器的反思先验中 |
--json | off | 输出机器可读的 JSON |
CLI 还支持来源/运行时路径覆盖(--claude-home、--codex-home 和
--codex-path)以及特定操作的标志。请以
python -m skillopt_sleep <action> --help 显示的内容为准。
配置键(~/.skillopt-sleep/config.json)
除 CLI 标志外,还可以通过配置控制高级行为:
preferences— 注入优化器反思步骤的自由文本项目规则(例如“始终使用 async/await”、“答案使用\boxed{}”)。gate_mode—on(默认,验证门槛)或off(贪心模式,接受所有编辑)。gate_metric—hard、soft或mixed(默认)。控制留出门槛的评分方式。gate_no_regression— 默认为false。设为true时,如果任何验证任务的配置门槛分数下降,则拒绝候选方案。dream_rollouts— 大于 1 时,为每项任务启用多轮对比反思。recall_k— 大于 0 时,将 K 个相似的历史任务召回到 dream 中(长期记忆)。evolve_memory/evolve_skill— 分别切换 CLAUDE.md 与 SKILL.md 的整合。
记忆整合
休眠周期可以整合以下两项:
- SKILL.md — 受管理的技能文件(有限编辑:添加/删除/替换)
- CLAUDE.md — 项目记忆(同样采用有限编辑)
启用默认门槛后,两者都使用同一留出分数进行评估。
设置 evolve_memory: false 可仅整合技能;设置 evolve_skill: false
则仅整合记忆。
硬性规则
- 绝不在此技能中手动编辑用户的
CLAUDE.md/SKILL.md。 应由引擎通过明确的adopt或用户请求的--auto-adopt路径应用 暂存清单,并首先备份现有的线上文件。 - 收集为只读操作。
mock回放不会产生副作用。 - 真实后端会将截断后的对话记录摘录和派生任务发送到所选提供方,以进行挖掘、回放、评判和反思。Claude
对话记录路径无法保证在这些调用前移除所有秘密信息。
请先查看提供方政策和会话内容。对于敏感数据,请使用
mock,或运行harvest --output <file>,检查/编辑 JSON,将"reviewed": true,然后使用--tasks-file回放;真实后端会拒绝 未经审核的任务文件。 - 在建议采用之前,始终向用户展示留出基线 → 候选方案的分数和 确切的拟议编辑。先有证据,再采用。
- 如果用户要求在不调用提供方的情况下演示机制,请运行
python -m skillopt_sleep.experiments.run_experiment --persona researcher --json— 这是一个确定性的合成演示,用于展示留出效果提升和门槛拒绝。它 验证的是机制,而非在用户自身任务上的有效性。
验证 / 演示
# deterministic synthetic demo (no API): score rises and the gate blocks a regression
python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
python -m skillopt_sleep.experiments.run_experiment --persona programmer --assert-improves
有关记录的结果、限制和支持的集成范围,请参阅 SkillOpt-Sleep 文档。