From 239c50435eae3d0a7517f9a38dcd215a40b64dda Mon Sep 17 00:00:00 2001 From: WODE25500 <318555974+WODE25500@users.noreply.github.com> Date: Fri, 9 Oct 2026 22:47:52 +0800 Subject: [PATCH] fix(dsh): support @deepseek-ai/dsh-tools 0.2.x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `plugins/dsh` declared `@deepseek-ai/dsh-tools` only as an optional peer at `^0.1.0-rc.8` while importing it directly at runtime. That range admits neither `0.1.1-rc.2` nor `0.2.0-rc.2` (npm does not match prereleases of a tuple the range never names), so under the current harness the plugin's requirement conflicts with the tool runtime the harness installs: @deepseek-ai/dsh 0.2.0-rc.2 ships dsh-tools 0.2.0-rc.2. Declare it as a direct dependency with the range this plugin is tested against — `>=0.1.1-rc.2 <0.2.0 || >=0.2.0-rc.1 <0.3.0` — keeping the optional `cordis` peer, and align the package version and README prerequisites with the standalone dsh-skillopt package. No source change: `defineTool` is identical in both lines and the packed canary (40 checks) passes against dsh-tools 0.2.0-rc.2. --- plugins/dsh/README.md | 17 ++++++++++++++--- plugins/dsh/package.json | 11 ++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/plugins/dsh/README.md b/plugins/dsh/README.md index ea0348149..92f2921e8 100644 --- a/plugins/dsh/README.md +++ b/plugins/dsh/README.md @@ -3,14 +3,24 @@ Give your **DeepSeek Harness** agent a nightly **sleep cycle**: it reviews past sessions offline, replays your recurring tasks on your own API budget, and consolidates what it learns into validated skills behind a held-out gate. Same -engine as the Claude Code / Codex / Cursor integrations (`skillopt_sleep`), -wired into dsh's plugin system as native tools plus a bundled skill. +engine as the Claude Code / Codex / Cursor integrations +([skillopt_sleep](https://github.com/microsoft/SkillOpt)), wired into dsh's +plugin system as native tools plus a bundled skill. DeepSeek Harness is the "everything is a plugin" agent framework ([deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)). Plugins are TypeScript modules exporting an `apply(ctx)` function that register capabilities (tools, services, events, settings) on the Cordis context. +## Why a sleep cycle? + +Skills improve when an agent re-examines its own sessions — not just when you +hand-tune a prompt. The sleep cycle turns your everyday usage into a nightly, +validation-gated skill-improvement loop: harvest what you actually did, replay +the recurring tasks on your own API budget, and keep only the changes that pass +a held-out gate. It's the same engine as the Claude Code / Codex / Cursor +integrations, wired into dsh as native tools plus a bundled skill. + ## What this integration adds | Component | Purpose | @@ -34,7 +44,8 @@ capabilities (tools, services, events, settings) on the Cordis context. ## Prerequisites -- DeepSeek Harness (dsh) installed +- DeepSeek Harness (dsh) installed — dsh 0.1.x and 0.2.x are supported + (`@deepseek-ai/dsh-tools` 0.1.1-rc.2, 0.2.0-rc.2) - Python 3.10+ with the SkillOpt-Sleep engine: ```bash diff --git a/plugins/dsh/package.json b/plugins/dsh/package.json index ce6245da4..17b24cd87 100644 --- a/plugins/dsh/package.json +++ b/plugins/dsh/package.json @@ -1,6 +1,6 @@ { "name": "dsh-skillopt", - "version": "0.1.0", + "version": "0.2.1", "description": "Microsoft SkillOpt-Sleep integration for DeepSeek Harness: give your dsh agent a nightly sleep cycle that harvests past sessions, replays recurring tasks, and consolidates validated skills behind a held-out gate.", "type": "module", "main": "src/index.js", @@ -30,14 +30,15 @@ } }, "dependencies": { + "@deepseek-ai/dsh-tools": ">=0.1.1-rc.2 <0.2.0 || >=0.2.0-rc.1 <0.3.0", "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" + "@deepseek-ai/cordis": "^4.0.1" }, "peerDependenciesMeta": { - "@deepseek-ai/cordis": { "optional": true }, - "@deepseek-ai/dsh-tools": { "optional": true } + "@deepseek-ai/cordis": { + "optional": true + } } }