Skip to content

About

Evolver for DeepSeek Harness — persistent, auditable evolution memory as a native dsh plugin

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Evolver

Evolver for DeepSeek Harness

English · 简体中文

Gives dsh agents a persistent evolution memory and a native bridge to the EvoMap network: behind each prompt it injects one reusable strategy that fits, reports back to the network how that strategy fared, and adds evolver_* tools and /evolver-* commands.

Install

The plugin is published on npm as @evomap/dsh-evolver. Each dsh profile loads its own plugins, so install it into every profile you use (dst runs dsh-tui):

dsh plugin --profile dsh-tui add -w @evomap/dsh-evolver@latest
dsh plugin --profile web add -w @evomap/dsh-evolver@latest
dsh plugin --profile headless add -w @evomap/dsh-evolver@latest

Restart dsh afterwards. Run the same command again to update: @latest makes pnpm move past the version already in the profile's lockfile.

DSH Desktop

Install from the app's plugin market, on any platform:

  1. Open the plugin market in DSH Desktop and go to Sources.
  2. Choose Add source, enter https://evomap.ai/dsh/catalog-source.json, and select it.
  3. Find Evolver under Installable and choose Install.

The market installs the latest release from npm. To update, uninstall it under Installed and install it again.

From the command line

The desktop profile belongs to the app, so the npm dsh will not touch it.

Windows: open the terminal inside DSH Desktop and run

dsh plugin add -w @evomap/dsh-evolver@latest

macOS: run the app's bundled CLI with the app's own pnpm, passing the same minimumReleaseAge=0 the app uses so a fresh release is not held back:

APP="/Applications/DSH Desktop.app/Contents"
SHIM=$(mktemp -d)
printf '#!/bin/sh\nexec node "%s/Resources/app/node_modules/pnpm/bin/pnpm.cjs" --config.minimumReleaseAge=0 "$@"\n' "$APP" > "$SHIM/pnpm"
chmod +x "$SHIM/pnpm"
PATH="$SHIM:$PATH" CI=true ELECTRON_RUN_AS_NODE=1 "$APP/MacOS/DSH Desktop" \
  "$APP/Resources/app/lib/desktop-cli.js" \
  plugin --profile desktop add -w @evomap/dsh-evolver@latest </dev/null

Restart DSH Desktop afterwards. If pnpm stops with Ignored build scripts: koffi, set koffi: true under allowBuilds in ~/.dsh/profiles/desktop/pnpm-workspace.yaml and run the command again.

Moving from a GitHub install

A profile installed from github:EvoMap/evolver-dsh-plugin keeps that source when you run add again. Remove it first, then add the npm package. For example:

dsh plugin --profile dsh-tui remove @evomap/dsh-evolver
dsh plugin --profile dsh-tui add -w @evomap/dsh-evolver@latest

Connect the EvoMap network (optional)

Local memory works without an account. Network reuse runs through the local Evolver Proxy, which the plugin sets up on its own once per dsh process, in the background:

  • evolver missing, or older than 2.0.39: it runs npm install -g @evomap/evolver@latest, then evolver lifecycle start (or restart after an upgrade).
  • evolver current but its Proxy not answering: it runs evolver lifecycle start.

What it did, or why it could not (for example a global npm install without write permission), reaches the agent as a one-time notice. To finish connecting:

  1. Open the claim link the Proxy writes to ~/.evomap/claim_url while signed in to evomap.ai.
  2. Run /evolver-status in dsh to confirm the Proxy and node.

Network recall needs @evomap/evolver 2.0.39 or newer. The evidence on reuse reports reaches the Hub only through a Proxy newer than 2.0.42; an older one drops it, and the Hub counts those reports as unevidenced.

Reuse reports

Every strategy injected into a turn is reported through the Proxy's POST /asset/reuse-result as {asset_id, outcome, task_id, reason, evidence}. The Hub weighs each report by its evidence:

Report When task_id evidence
Turn end the turn ends dsh:<session>:<turn> tier L1 when the turn ran a test, build, lint or type check, else none; applied; check {kind, passed, fail_then_pass} of the last check; aborted; stage: immediate
Correction the next prompt says the answer did not hold, or approves it …:correction tier: L3, applied, stage: correction
Retention the next session in the same project finds the turn's edits kept or reverted …:retention tier: L2, applied, stage: retention
evolver_asset_reuse_result the model reports on its own the model's own tier: L5, applied, stage: immediate
  • applied compares the strategy's numbered steps with the turn's shell commands, touched paths, the code its edits wrote (200,000 characters a turn, kept in memory only) and the final answer: used when half the steps show up, partial when fewer do, unused when none do. A turn that left nothing to compare, or a strategy without numbered steps, is sent as tier none with applied: partial, which weighs nothing either way, and its reason says applied: unknown.
  • Checks are bash commands that run tests, builds, linters or type checkers. A check fails on an error result or on failure output, since a failing run piped through tail still exits zero. fail_then_pass compares commands with output pipes (| tail -9) and redirects (2>&1) removed.
  • The outcome follows the last check; without one it follows how the turn ended.
  • Delivery. Reports wait in ~/.evolver/state/reports-outbox.json and are retried at every turn end, follow-up prompt and session start for 8 days. A report is settled once the Hub answers it, duplicate_report and ineligible (same_owner, daily_cap) ones included. One the Hub refuses as invalid (terminal: true, or hub 400 / hub 422 from an older Proxy) is settled as rejected and never resent. hub 404, hub 5xx and network failures are retried.
  • /evolver-status lists the Hub's verdict (eligible, counted, weight) on recent reports and the reason for each rejected one. Reports with evidence are also written to the local root event log once.
  • Reasons name the turn, the applied verdict and the check kind, never the prompt, a command, code or a diff, and the prompt loses keys and tokens before recall sends it.

Requirements

Node.js 22.13+, dsh 0.1.5+.

Settings and their defaults are in src/config.js.

Development

npm ci
npm test

License

MIT © EvoMap.

About

Evolver for DeepSeek Harness — persistent, auditable evolution memory as a native dsh plugin

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages