DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
S

dsh-self-evolve

Self Evolve

Agent-authored procedural memory for DeepSeek Harness: a guarded skill_manage tool, an opt-in post-turn reviewer, and an optional Jev decision gate.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:Kosello/dsh-self-evolve#ce43a82ab89cd79c9aa18fc8b0f208751bf2dfa7
READMECompatibilityVersions

Compatibility and provenance

Self Evolve is published as dsh-self-evolve and currently resolves to version 0.4.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/28/2026

Versions

0.4.0stable
10/28/2026

Related plugins

Loading related plugins…

Latest
0.4.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/28/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in memory-context.

Hindsight Coding Agents@vectorize-io/hindsight-coding-agentsReflect-only Hindsight long-term memory for coding agents (harness-pluggable: opencode, …), with automatic background ingestion (no setup CLI).Contextdsh-contextA DeepSeek Harness plugin for context insight and management, with context dashboard and context command, for understanding how the context is made of, and how it evolves.Memory Plugin@openviking/dsh-memory-pluginOpenViking memory and context bundle for DeepSeek HarnessMnemondsh-mnemonComposable, view-based context for DeepSeek Harness. Pluggable sources and strategies, with layered memory and self-evolving skills out of the box.

README

dsh-self-evolve

Agent-authored procedural memory for DeepSeek Harness. The agent saves a proven procedure as a SKILL.md in a root the harness already scans, and future sessions follow it instead of rediscovering it — with the guards, budgets and approvals an unattended self-improvement loop needs.

This is a fork of jianghuife/dsh-self-evolve (MIT), ported to DSH 0.2.1-rc.2 and extended. The upstream proof of concept was a single 0.1.0 release; this fork keeps its small core and adds the missing safety rails plus the automatic half of the loop.

Status: 0.4.0, 106 tests, typechecked against DSH 0.2.1-rc.2. Not published to npm; install from GitHub or a local checkout.

What it does

CapabilityDetails
skill_manage toollist, create, patch, edit, delete (archives), write_file, remove_file, pin, unpin
User + project scope~/.dsh/skills and <project>/.dsh/skills, plus flat <name>.md skills
Read before writea skill must be loaded with the skill tool before it can be patched, edited, deleted or pinned
Duplicate refusalcreate rejects near-duplicates and names the skill to patch instead
Credential + lint scanblocks credential-shaped text; warns on oversized bodies, incident-log shape, references sprawl, destructive shell idioms
Staged approvalsoptional writeApproval; review diffs with /skills pending, settle with approve/reject
Post-turn revieweropt-in fork of the finished turn that patches or creates skills, isolated from the main transcript
Jev gateoptional TypeSafe Jev call that can cancel a pointless review, with deterministic fallback
Curatormechanical aging: stale after 30 days, archived after 90, pinned skills exempt, only agent-authored skills, never hard-deleted
Usage ledgerrecords loads and review-gate decisions for tuning

Requirements

  • DeepSeek Harness 0.2.1-rc.2 (the tested target; other 0.2.x may work).
  • Node.js 22.19 or newer.
  • Optional: a TypeSafe API key (TYPESAFE_API_KEY) only if you enable the Jev gate.

Install

From GitHub (once the repository is published):

dsh plugin --profile web add github:Kosello/dsh-self-evolve

From a local checkout:

git clone https://github.com/Kosello/dsh-self-evolve.git
cd dsh-self-evolve
npm ci
npm run build          # produces dist/ (also committed for GitHub installs)
dsh plugin --profile web add "$PWD"

Then restart the profile. The plugin activates as the self-evolve row and adds skill_manage together with the /skills command. See docs/installation.md for manual wiring, environment files, verification and uninstall.

Configure

Everything is optional; defaults keep the plugin useful and quiet. Put overrides on the row in your profile's cordis.patch.yml:

- id: self-evolve
  config:
    readBeforeWrite: true        # default
    writeApproval: false         # set true to review every write
    review:
      enabled: true              # the reviewer spends tokens; opt in
      turnInterval: 10
      toolCallThreshold: 15
      gate: jev                 # counters (default) or jev
      jev:
        model: jev-latest
        apiKeyEnv: TYPESAFE_API_KEY
        confidentNo: 0.75

The full key reference, including the reviewer and gate budgets, is in docs/configuration.md.

Enabling the Jev gate

The gate is off unless you ask for it, and it degrades to counters when it cannot run. Give the harness the key through a dedicated env file rather than the profile YAML:

install -m 600 /dev/null ~/.dsh/typesafe.env
printf 'TYPESAFE_API_KEY=%s\n' "$YOUR_KEY" >> ~/.dsh/typesafe.env
mkdir -p ~/.config/systemd/user/deepseek-harness.service.d
printf '[Service]\nEnvironmentFile=%%h/.dsh/typesafe.env\n' \
  > ~/.config/systemd/user/deepseek-harness.service.d/typesafe.conf
systemctl --user daemon-reload
systemctl --user restart deepseek-harness.service

Use

The model gets one new tool:

ActionPurpose
listskills across both scopes, with uses and layout
createnew skill; scope: "user" | "project"
patchexact-text replace inside SKILL.md (preferred update)
editreplace body/description wholesale
deletearchive (never hard-delete)
write_file / remove_filesupporting files under the skill directory
pin / unpinexempt a skill from curator aging

Humans get the /skills command:

/skills pending | diff <id> | approve <id|all> | reject <id|all>
/skills approval on|off
/skills review on|off|now

Worked examples are in docs/usage.md.

How the loop fits together

turn ends ──▶ counters due? ──▶ (optional) Jev gate ──▶ fork reviewer
                                                        │
                                          skill_manage ─┴─▶ ~/.dsh/skills/<name>/SKILL.md
                                                        │
                                          next session ─┴─▶ skill catalog (progressive disclosure)

The reviewer and gate are described in docs/review-loop.md; the module map is in docs/architecture.md.

Safety model

  • No secrets in the repository. API keys are read from the process environment; the profile YAML holds names, never values.
  • The gate is advisory. It can only cancel a review it is confident is pointless; permissions, approvals and write guards stay deterministic.
  • The reviewer writes through skill_manage, so read-before-write, duplicate refusal, credential scanning and staged approval all still apply.
  • The review child inherits the parent toolset, but its scope is narrowed to skill + skill_manage right after activation; DSH has no per-activation tool filter, so this is defence in depth, not a sandbox. Run with writeApproval: true when reviewing untrusted conversations.
  • Outbound data: only the Jev gate sends anything off-machine — a bounded digest (user message, assistant message, tool count, loaded skill names, turn index), never tool output.

Details and threat model: docs/security.md.

Development

npm ci
npm run check       # tsc against DSH 0.2.1-rc.2
npm test            # 106 unit/integration tests
npm run build       # dist/index.js
npm run smoke       # built tool → real dsh-skill + dsh-skill-filesystem catalog
npm run gate-stats  # summarize ~/.dsh/self-evolve/gates.jsonl
npm run verify      # check + test + build + smoke

CI runs the same checks on every push (.github/workflows/ci.yml).

Compatibility and known limits

  • Built and tested against DSH 0.2.1-rc.2; the plugin API is young and may move.
  • The reviewer needs the subagent service and a provider (fork by default).
  • Tool narrowing for the review child is post-hoc; see the security doc.
  • Review children run on the parent's model, so the reviewer is the expensive part of the loop. Counters, cooldown and per-session caps bound it.
  • No memory store: durable facts belong to whatever memory layer your profile composes (for example an MCP memory server), not to this plugin.

License and attribution

MIT. The upstream copyright notice is retained in LICENSE; this fork's changes are offered under the same terms. Upstream: jianghuife/dsh-self-evolve.