mcpField
S
skillopt-sleep

skillopt-sleep

github.com/microsoftAgent 工作流18.8k232 次安装3 天前更新
代码仓库

关于 skillopt-sleep

SkillOpt-Sleep 是面向本地 Claude Agent、依据使用记录进行改进的技能。它重放过往会话中的重复任务,为 CLAUDE.md 或 SKILL.md 提出可评估的修改,并暂存变更供审核后采纳。

主要功能

  1. 01只读采集过往会话
  2. 02通过后端重放重复任务
  3. 03使用留出集验证修改提案
  4. 04暂存记忆和技能变更以供审核
  5. 05显式采纳并备份原文件
  6. 06通过 cron 安排夜间运行

适用场景

  1. 01将重复工作沉淀到 Agent 记忆中
  2. 02采纳前审核技能修改提案
  3. 03安排离线改进周期
  4. 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)或采纳暂存的提案

周期(六个阶段)

  1. 收集 — 读取 ~/.claude/projects/*/<session>.jsonl + ~/.claude/history.jsonl(只读)→ 会话摘要。
  2. 挖掘 — 将摘要转化为 TaskRecord(重复意图 + 结果标签 + 尽可能附上可核查的引用)。
  3. 重放 — 在当前技能和记忆的基础上,通过选定的后端重新执行任务 →(硬性、软性)评分。
  4. 整合 — 反思失败 → 提出有界编辑 → 在留出切片上进行验证;启用默认验证关卡后,只有评分严格提高才会接受。
  5. 暂存 — 将已接受的 proposed_CLAUDE.md 和/或 proposed_SKILL.md,以及 report.md、report.json、manifest.json 和 diagnostics.json 写入 <project>/.skillopt-sleep/staging/<timestamp>/。 不会更改任何实时文件。 被拒绝的运行仍会生成报告,但不会提出替换实时文件的方案。
  6. 采纳 — 明确采纳(或选择启用自动采纳):先备份,再将暂存文件复制到实时文件。

如何使用

建议使用 /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 PATHcwd要改进的项目目录
--scope all|invokedinvoked收集范围
--backend mock|claude|codex|copilot|handoff|azure_openaimock后端(mock = 不调用提供方)
--model NAMEbackend default覆盖用于回放的模型
--source claude|codex|autoclaude对话记录来源
--lookback-hours N72收集时间范围
--max-sessions Nderived限制收集的会话数;默认为最大任务数的 3 倍(使用当前默认值时为 120)
--max-tasks N40限制挖掘的任务数
--target-skill-path PATH~/.claude/skills/skillopt-sleep-learned/SKILL.md指定要改进的 SKILL.md
--tasks-file PATH—已审核的 TaskRecord JSON(跳过收集)
--progressoff将各阶段的进度打印到 stderr
--auto-adoptoff如果通过门槛,则自动采用
--edit-budget N4每晚最多进行的有限编辑次数
--preferences TEXTempty将项目规则添加到优化器的反思先验中
--jsonoff输出机器可读的 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 文档。

评论

支持 Markdown