mole
tw93/Mole开源磁盘清理工具 Mole CLI(mo,支持 macOS 和 Windows)的官方 skill:按 Mole 的 JSON 输出查看磁盘占用、预览并执行清理、查看已安装应用、读取系统健康状态和清理记录。清理前先用 --dry-run 预览并征得同意,卸载应用和需要管理员权限的步骤留给用户在自己的终端里执行。插件只带 skill,CLI 需另外安装。
观察 agent 执行轨迹,在每个成功回合结束时按信号触发 LLM 评审,把值得复用的工作流结晶为已注册技能,并随后续运行持续改进。
English | 中文
DeepSeek Harness(DSH)的技能自进化插件:观察 agent 执行轨迹,在每个成功回合结束时按信号触发 LLM 评审,把值得复用的工作流结晶为技能并注册进技能目录;后续同类执行还会把新经验合并进已有技能——技能是活的,越用越好。
NOTHING_TO_SAVE 是一等结果generated/、重启自动重注册;宿主半零第三方依赖(仅 node: 内建模块)技能 tab——技能卡片带价值(高/中/低)、版本、调用次数与更新时间标签,展开查看结晶信号、工具序列与完整 SKILL.md:
设置 tab——状态一览、评审模型、生成语言与各配置面板:
阈值与控制——参数直接嵌在流程图里,在哪一步起作用就在哪一步改:
每个回合结束(turn/end)时,对满足最小步数的成功轨迹检测三个信号:
| 信号 | 条件 | 含义 |
|---|---|---|
complex | 成功回合且工具调用 ≥ minToolCalls(默认 5) | 完成了一件复杂任务 |
recovered | 有失败步骤但回合最终成功 | 踩坑后找到了可行的绕行路径 |
repeated | 同一工具序列出现 ≥ minPatternOccurrences 次且成功率 ≥ minSuccessRate | 同一套操作反复出现且成熟可靠 |
佐证闸门(complexRequiresCorroboration,默认开):单独的 complex 是弱证据(任何长回合都满足),默认必须叠加 recovered 或 repeated 才送评审;被拦下的回合记一条 withheld 日志,等序列后续出现佐证信号时再补送。
评审 LLM 收到完整证据(信号、用户意图、工具序列、每步成败与摘要)与已有进化技能清单,输出三种结论之一:SAVE(结晶新技能)、FOLD_INTO(并入已有技能)、NOTHING_TO_SAVE(放弃)。
硬性负面清单——以下内容绝不结晶:
VERDICT: FOLD_INTO: <已有技能名>,宿主随即走改进管道并入该技能类级命名的 kebab-case 技能,标准 SKILL.md 结构(# Title / ## When to Use / ## Procedure / ## Pitfalls / ## Verification)。NAME 与章节标题恒为英文,正文语言由 skillLanguage 决定。
dsh plugin --profile web add dsh-skill-evolution
包内 dsh.bundle.patch 会自动挂载,无需手改 profile 文件。
git clone https://github.com/VanadisGithub/dsh-skill-evolution.git ~/Code/dsh-skill-evolution
在 ~/.dsh/profiles/web/package.json 的 dependencies 中加入:
"dsh-skill-evolution": "link:/Users/<you>/Code/dsh-skill-evolution"
然后在 ~/.dsh/profiles/web 执行 pnpm install,硬刷新浏览器。
把仓库放到任意目录(如 ~/.dsh/plugins/skill-evolution/),在 ~/.dsh/cordis.patch.yml 追加:
- insert:
- id: 'skill-evolution'
name: file:///Users/<you>/.dsh/plugins/skill-evolution/plugin.mjs?v=1
config:
minToolCalls: 5
minPatternOccurrences: 3
autoRegister: true
llmProvider: deepseek # 按你的部署可用的 provider 修改
llmModel: deepseek-chat
?v=N 用于绕过 Node 模块缓存;改了 plugin.mjs 就 +1。宿主半改动需 loader 重放补丁,浏览器半改动硬刷新即可。
⚠️ 三种方式只能选一种,重复挂载会导致双实例。
下表所有键都既走挂载配置,也可在设置面板里直接修改(面板改动持久化到插件目录 runtime-config.json,优先于挂载配置,重启后仍生效):
| 键 | 默认 | 说明 |
|---|---|---|
enabled | true | 总开关:false 时不观察回合、不评审结晶(已有技能保持注册) |
minTraceSteps | 3 | 轨迹最小步数(噪音地板) |
minToolCalls | 5 | complex 信号阈值 |
minPatternOccurrences | 3 | repeated 信号阈值 |
minSuccessRate | 0.7 | repeated 信号成功率下限 |
signals | 全开 | {complex, recovered, repeated} 分别开关 |
complexRequiresCorroboration | true | 单独 complex 信号需叠加佐证才送评审 |
autoRegister | true | 结晶后自动注册进技能目录 |
llmProvider / llmModel | deepseek / deepseek-chat | 评审模型(provider 级联该 provider 的模型目录) |
skillLanguage | en | 生成技能的语言:zh / en |
maxEvolvedSkills | 20 | 进化技能容量上限 |
improvementEvery | 3 | 每 N 次同序列重跑触发一次改进评审 |
maxImprovementsPerSkill | 5 | 单个技能最大改进次数 |
maxEvidenceSteps | 30 | 送审证据最大步数(截断保护) |
maxTracesPerSession | 200 | 每会话轨迹缓存上限(内存保护) |
maxStepTextLength | 200 | 每步摘要截断长度 |
reviewSystemPrompt | 内建 | 结晶评审 system prompt 覆盖 |
improveSystemPrompt | 内建 | 改进评审 system prompt 覆盖 |
设置页「技能进化」分区(设置 → 技能进化),双 tab 布局,右上角总开关随时停用/启用:
generated/*.json:SKILL.md 正文、信号、序列、统计)与 runtime-config.jsongenerated/ 随目录移除)双面插件包(host + web client):
| 文件 | 角色 |
|---|---|
plugin.mjs | 宿主半:轨迹观察、信号检测、LLM 评审、技能注册、./generated/ 持久化、/skill-evolution 认证 RPC 通道(list / get / remove / clear / listModels / setModel / setLanguage / setEnabled / setTuning / setPrompt …) |
client.js | 浏览器半:设置页「技能进化」分区 |
cordis.patch.yml | dsh.bundle.patch 挂载层 |
test/smoke.mjs | 宿主半冒烟测试(mock cordis context,51 断言覆盖结晶/改进/FOLD_INTO/去重/RPC/计数) |
test/screenshot.mjs | 无头截图脚本(CDP 驱动,全屏模式) |
node --check plugin.mjs && node --check client.js # 语法
node test/smoke.mjs # 冒烟测试
node test/screenshot.mjs <输出目录> # 重截 README 截图
仅依赖 node: 内建模块,不引入任何 @deepseek-ai 包,避免与宿主 cordis 双实例冲突。