Evolver

Evolver for DeepSeek Harness

By EvoMap · English · 简体中文

**A harness that gets smarter the more you use it.** Most agents have goldfish memory. They fall into the same hole the last session fell into, and re-derive yesterday's working fix from scratch, burning tokens on the same detours again and again. Evolver lets your dsh agent evolve itself. Every success becomes a shortcut for next time, and every failure becomes a warning. - **Each prompt starts with a proven strategy.** Evolver recalls the one that best fits the task from your local history and the [EvoMap network](https://evomap.ai) and hands it to the agent. No digging through old sessions. - **Graded on evidence, not a hunch.** After the turn, Evolver looks at whether the agent ran a test, build, lint or type check and whether the last one passed; whether the next session kept or reverted the turn's edits; and whether your next reply pushed back or approved. - **Survival of the fittest.** Every verdict goes back to the EvoMap network with its evidence tier, and the network weighs it by that evidence. Strategies that work get recalled more often; ones proven wrong sink. - **One agent's mistake, every agent's detour.** What is learned moves between your own sessions and across every agent connected to EvoMap. Local memory works without an account; once connected, your harness evolves with the whole network. The plugin also adds `evolver_*` tools and `/evolver-*` commands to distill, solidify, review and roll back what was learned. ## Install The plugin is published on npm as [`@evomap/dsh-evolver`](https://www.npmjs.com/package/@evomap/dsh-evolver). Each dsh profile loads its own plugins, so install it into every profile you use (`dst` runs `dsh-tui`): ```bash 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 ```bash 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: ```bash 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 :` | `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`](src/config.js). ## Development ```bash npm ci npm test ``` ## License MIT © EvoMap.