Saltar al contenido principal
E

evolver-agent-plugin

evomap/evolver-agent-plugin

Evolver for DeepSeek Harness, by EvoMap: recalls a proven strategy behind each prompt, reports its reuse at turn end, and distills verified work outside the conversation.

Instalar

dsh plugin --profile web add github:evomap/evolver-agent-plugin

README

Evolver

evolver-plugin

evolver-plugin connects AI agents to Evolver: one plugin, the same on every agent, that gives it a persistent evolution memory and a live link to the EvoMap network, with no tools for the model to call. Evolver ships as two projects for now, which will merge into one:

  • evolver (@evomap/evolver): the engine, with the local Proxy, the memory graph and the Hub link. The plugin installs it, starts its Proxy and keeps it at a supported version by itself.
  • evolver-plugin (this repository, EvoMap/evolver-agent-plugin): every agent's adapter.

Everything runs from the host's hooks or plugin API:

  • Recall. For each prompt you send, it picks one reusable strategy that fits the task and adds it to the turn. When a Recipe (an ordered chain of strategies) fits, it adds the whole chain, step by step.
  • Report. When the turn ends, it reports what the reuse produced, backed by the checks the turn ran. Claude Code also shows a one-line summary: whether the goal was reached, and roughly how many tokens the reused strategy saved.
  • Distill. A session's work turns (each edited files, ran a test, build, lint or type-check, or ran three commands) add up. Once there are three of them, or one fixed an error (a check failed, files changed, the same check passed), and the last one ended on a passing check, the session's work is distilled into up to two draft Genes: 10 minutes after the fix, 30 minutes after the session went quiet, or when it ends. Everyday questions are never distilled, and nothing reaches the network until you publish a draft. /evolver-status names the last distillation's outcome, including why the Proxy refused one.

Publishing execution-backed drafts requires a trusted Proxy verifier and its publish receipt. When you publish a draft marked publishable: false, or a legacy draft without a receipt, the plugin first asks POST /asset/reverify to run trusted verification. If the verifier is unavailable or rejects the draft, it stays local with the reason shown. HTTP execution traces alone cannot authorize publication. A successful reverification saves the new bundle and receipt before submission, so a failed submission can be retried. The Proxy validates the exact receipt and Gene/Capsule/Event bundle when you publish. This plugin does not configure or enable a trusted verifier; the Proxy's platform and isolation requirements and validation-command policy still apply. Automatic distillation never calls reverification or publication.

Hosts

The plugin is the access layer: shared logic lives in lib/, and each host is a profile in hosts/<host>/ that says where it differs, plus what the host installs.

HostStatusAdapter
Claude Code 2.1.286+Supportedhosts/claude-code, a hooks module relaying to a Node process; installs dist/claude-code
WorkBuddy / CodeBuddySupportedhosts/workbuddy, command hooks; installs dist/workbuddy
CursorSupportedhosts/cursor, command hooks; installs the repo root
AntigravitySupportedhosts/antigravity, command hooks; installs dist/antigravity
OpenCode 1.19.4+Supportedhosts/opencode, an in-process plugin; installs dist/opencode
Any MCP client without hooks (Kiro, openclaw, …)Supportedhosts/mcp-generic, node bin/mcp.mjs mcp-generic over stdio
CodexSupportedhosts/codex, command hooks; installs dist/codex
DeepSeek Harness (dsh)Supportedhosts/dsh, an in-process cordis plugin; installs dist/dsh
Grok CLI 1.0.70+Supportedhosts/grok, command hooks; the strategy reaches the model at the turn's first tool result; installs dist/grok
Qoder CLI (qodercli) 1.1.79+Supportedhosts/qoder, command hooks; installs dist/qoder
Kimi Code CLI 2.4.1 and Desktop 1.2.1Direct install; Windows native checkedhosts/kimi, native hooks and isolated ACP distillation; installs dist/kimi
MiniMax Code CLI 0.7.4 / Desktop 3.1.6Supported locallyhosts/minimax, native hooks; installs dist/minimax
ZCode CLI / DesktopSupported locally on Windowshosts/zcode, native hooks; installs dist/zcode
Step Code CLI 0.1.7Draft, Windowshosts/stepcode, a native resident extension; installs dist/stepcode
Muse CodeNot yetNo reviewed adapter yet
OpenAI Dots, Claude Duet, Grok Bot, Meta MuseNot yetCloud agents without hooks; need Evolver's remote MCP and routines

Every host runs on one stack (lib/channels, lib/agent, lib/app, lib/runtime), described in docs/architecture.md; hosts/README.md lists how each host differs.

Install (Claude Code)

In Claude Code:

/plugin marketplace add EvoMap/evolver-agent-plugin
/plugin install evolver-plugin@evolver-agent-plugin

The marketplace installs dist/claude-code from the release branch, which CI moves only when a release tag is pushed; Node.js 22.13+ must be on the PATH (or set node_path in /config). Restart Claude Code afterwards. To update, refresh the marketplace first, then the plugin, and restart:

claude plugin marketplace update evolver-agent-plugin && claude plugin update evolver-plugin@evolver-agent-plugin

Claude Code updates an installed plugin only when its version changes. A release is one tag on main, git tag vX.Y.Z && git push origin vX.Y.Z, with no file to edit: CI tests, packs with that version stamped into every host's manifest, moves release one commit on, points the tag there and opens a GitHub Release. A failed release changes nothing; delete the tag, fix, and push it again. To try a local build, npm run pack and add <checkout>/dist/claude-code as the marketplace.

Install (other hosts)

Every host installs the plugin as evolver-plugin. WorkBuddy, Codex, Grok, Qoder, Antigravity, OpenCode and DeepSeek Harness install a folder packed for them (npm run pack, into dist/<host>), from the release branch. Remove the host's standalone Evolver plugin first, or every reuse is reported twice; the new one adopts what the old one left (turn counters, open injections, undelivered reports), so nothing is lost on the way over.

  • WorkBuddy / CodeBuddy: keep the old plugin's data when you remove it (WorkBuddy deletes a plugin's data folder on uninstall otherwise), then replace its marketplace, which has the same name:

    /plugin uninstall evolver@evomap-workbuddy --keep-data   # again with --scope project where it was installed in a project
    /plugin marketplace remove evomap-workbuddy
    /plugin marketplace add EvoMap/evolver-agent-plugin
    /plugin install evolver-plugin@evomap-workbuddy
    

    The marketplace installs dist/workbuddy from the release branch, and the first session moves the old data folder's files (evolver-evomap-workbuddy) into the new one. WorkBuddy updates an installed plugin only when its version changes, which the release tag stamps into the packed folder. To try a local build, npm run pack and add <checkout>/dist/workbuddy as the marketplace instead: the packed folder is a marketplace of its own.

  • Qoder CLI: add this repository as a marketplace and install the plugin:

    qodercli plugins marketplace add EvoMap/evolver-agent-plugin
    qodercli plugins install evolver-plugin@evomap
    

    The marketplace (.qoder-plugin/marketplace.json) installs dist/qoder from the release branch; start a new session or run /plugins reload. Commands are typed as /evolver-status and answered as a blocked prompt.

  • Codex: remove the standalone plugin and its marketplace, then add this one:

    codex plugin remove evolver@evomap && codex plugin marketplace remove evomap
    codex plugin marketplace add EvoMap/evolver-agent-plugin
    codex plugin add evolver-plugin@evomap
    

    Then open /hooks in Codex, trust the Evolver hooks, and start a new thread.

  • Grok CLI: add this repository as a marketplace and install the plugin, trusting its hooks:

    grok plugin marketplace add EvoMap/evolver-agent-plugin
    grok plugin install evolver-plugin --trust
    

    The marketplace (.grok-plugin/marketplace.json) installs dist/grok from the release branch; start a new session afterwards. Grok's prompt hooks cannot add context, so the recalled strategy reaches the model at the turn's first tool result, and a turn answered without any tool call does without it. Commands are typed into the prompt box (evolver-status, with or without its /) and answered as a blocked prompt; /evolver-evolve is a Grok command. Each release tag stamps its version into the packed folder; grok plugin update evolver-plugin fetches it.

  • Cursor: add this repository as a plugin marketplace and install evolver-plugin; it installs the repo itself.

  • Kimi Code on Windows: close Kimi, run node scripts/install-kimi.mjs install from a checkout, then start a new CLI or Desktop session. Desktop uses the installed Kimi CLI to create drafts. --home PATH selects the profile root; use the same absolute KIMI_CODE_HOME when starting Kimi. Close Kimi before install/update/remove. The installer stages dist/kimi, registers its native kimi.plugin.json bundle and preserves account config, other plugins, preferences and drafts. A release bundle keeps its bytes and version. Default install/update refuses to replace a newer managed package. --version X.Y.Z explicitly builds current sources at the requested version. remove unregisters the plugin while retaining managed bytes. V1 targets the main agent in local CLI and Desktop sessions on Windows with an API/BYOK provider. Commands run from the terminal: node <Kimi-home>/plugins/managed/evolver-plugin/bin/command.mjs kimi evolver-status. Other OAuth regions, web/VS Code, subagents and parallel prompts have separate acceptance gates. This local installer does not establish support in the external Evolver CLI installer or a Marketplace. The Kimi adapter guide explains evidence, route identity and isolation.

  • MiniMax Code: run node scripts/install-minimax.mjs install from a checkout, then run mcode plugin enable evolver-plugin@local --json and start a new task. The data root defaults to ~/.minimax; keep the same MINIMAX_DATA_DIR for a separate profile. A release checkout installs its versioned dist/minimax bundle; --version X.Y.Z builds the current sources explicitly. The checkout's manifest is .minimax-plugin/plugin.json; source stays in hosts/minimax/. This is a local installation: MiniMax's current public Marketplace submission format excludes hooks. Use evolver-status, evolver-drafts and evolver-evolve in chat; evolver-config recall off and evolver-config auto-distill off save preferences. Longer commands run as background jobs; use evolver-jobs, evolver-jobs job <id> or evolver-jobs cancel <id> to inspect or cancel them. The MiniMax adapter guide covers updates, session-model distillation, private configuration copies and recovery when a host exits without SessionEnd.

  • ZCode CLI on Windows: build dist/zcode with npm run pack and add that folder to the CLI's plugins.dirs. Enable plugins and hooks, then start a new session. The ZCode adapter guide covers native verification and private distillation with a standalone CLI bundle.

  • ZCode Desktop on Windows: add the packed dist/zcode folder as a local marketplace in Settings → Plugins. Install and enable evolver-plugin from that marketplace, then start a new session.

  • Step Code CLI 0.1.7 on Windows (draft): build dist/stepcode with npm run pack, then run step install ./dist/stepcode and start a new session. This uses Step's native extension interface. Read the Step Code adapter guide for foreground verification requirements and the native double Ctrl-C cleanup limitation before trying this draft.

  • Antigravity: agy plugin uninstall evolver-antigravity-plugin, then from the release branch, git clone --depth 1 --branch release https://github.com/EvoMap/evolver-agent-plugin.git and agy plugin install evolver-agent-plugin/dist/antigravity. Its commands run from a terminal: node <installed plugin>/bin/command.mjs antigravity evolver-status (or evolver-search <text>, evolver-distill, evolver-drafts publish 1, …).

  • OpenCode: opencode plugin <release clone>/dist/opencode (the folder is the @evomap/evolver-opencode package, not published to npm yet); remove the old evolver-opencode-plugin first, or every reuse is reported twice.

  • DeepSeek Harness: each dsh profile loads its own plugins; for every profile you use (dsh-tui, web, headless), remove the standalone @evomap/dsh-evolver first, then add the new one from npm, and restart dsh:

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

    Each release publishes dist/dsh to npm as @evomap/dsh-evolver (shown in dsh as evolver-plugin), replacing the standalone plugin of that name.

  • An MCP client without hooks: in a checkout, npm ci (the server needs the MCP SDK), then register node <checkout>/bin/mcp.mjs mcp-generic as an stdio MCP server.

Commands

CommandWhat it does
/evolver-statusProxy state, engine setup, Hub sign-in, the work waiting to be distilled, the last distillation's outcome and waiting drafts
/evolver-loginSigns you in to the EvoMap Hub with a device code (setting Evolver up first when needed) and shows the registered node
/evolver-search <task or error text>Finds the best matching network strategy
/evolver-distill [focus]Distills the session's work since its last distillation into drafts now, even below the three-turn threshold
/evolver-drafts [publish|discard <number>]Lists drafts; publishes one for Hub review or drops it
/evolver-evolve [focus]An evolution checkpoint the agent answers

/evolver-run, /evolver-review, /evolver-solidify and /evolver-sync drive the Evolver CLI. How each host reaches the commands is in hosts/README.md.

Connect the EvoMap network (optional)

Local memory works without an account. To reuse strategies from the network, sign in from your agent:

  1. Run /evolver-login. When Evolver is missing, the plugin installs it and starts its Proxy first; then it starts Evolver's own sign-in (evolver login) in the background and answers a link and a code.
  2. Open the link, enter the code and approve while signed in to evomap.ai. Evolver finishes signing in on its own.
  3. Run /evolver-login again: it names the node the Proxy registered. Evolver answers this at once only within about an hour of an approval, while its stored token has more than five minutes left; later, /evolver-login asks you to approve a new code, although Evolver's other commands keep using the sign-in.

/evolver-status shows a sign-in still waiting for approval, with its link and code.

Network recall needs @evomap/evolver 2.0.39 or newer.

Requirements

Node.js 22.13+, plus a supported host from the table above.

Commands, settings and troubleshooting are in docs/architecture.md.

Development

npm ci
npm test
npm run pack
claude --plugin-dir dist/claude-code

Packing follows each entry's module imports. The Kimi pack manifest opts in to the pinned smol-toml@1.9.1 ESM closure and its BSD-3-Clause license. Its static import points to a relative file in the installed bundle. Run npm ci before packing Kimi from source.

License

MIT © EvoMap.

Plugins relacionados