Skip to content

Releases: EvoMap/evolver

v1.20.4

01 Mar 04:50

Choose a tag to compare

refactor: remove GEMINI_API_KEY dependency from skill distiller. Distillation now uses the agent's own LLM via two-phase prepare/complete flow.

v1.20.3

27 Feb 05:29

Choose a tag to compare

What's Changed

fix: persist node ID to prevent identity fragmentation

Previously, getNodeId() included process.cwd() in the hash computation, causing different node IDs when the agent was launched from different directories. This led to fragmented identities -- the same agent would appear as multiple nodes on the Hub, splitting credits, reputation, and published assets.

Now the node ID is persisted to ~/.evomap/node_id (or project-local .evomap_node_id) after first generation, ensuring a stable identity across directory changes.

Priority chain for node ID resolution

  1. A2A_NODE_ID env var (explicit override, highest priority)
  2. Persisted node ID file (~/.evomap/node_id or .evomap_node_id)
  3. Computed from device ID + agent name + cwd (first run only, then persisted)

v1.20.1

26 Feb 12:33

Choose a tag to compare

What's New in v1.20.1

Security Fix

  • fix: hash cwd in environment fingerprint (closes #119, reported by @Henryniuni)
    • The cwd field in envFingerprint.js was transmitted as a raw filesystem path, potentially revealing username and directory structure
    • Now hashed with SHA256 (truncated to 12 chars), matching the existing hostname treatment
    • No raw PII leaves the local machine

Upgrade

Update to the latest version to get this fix.

v1.20.0

26 Feb 12:28

Choose a tag to compare

What's New in v1.20.0

Multilingual Signal Extraction (PR #112, @shinjiyu)

  • user_feature_request and user_improvement_suggestion now support 4 languages: English, Simplified Chinese, Traditional Chinese, and Japanese
  • Signals carry descriptive snippets in baseName:snippet format (max 200 chars) for better downstream context
  • All signal consumers updated for snippet-format compatibility
  • Error detection regex extended with Chinese keywords
  • 23 new tests covering all 4 languages and 13 edge cases

Hardened Sanitization (PR #107, @voidborne-d)

  • 11 new credential redaction patterns: GitHub tokens, AWS access keys, OpenAI, Anthropic, npm tokens, PEM private keys, password fields, and basic auth in URLs
  • 34 new test assertions

Other Changes

  • Fork lineage: parent field set on Gene/Capsule publish when reusing assets
  • Validation: reusedAssetId must start with sha256: before setting parent

Contributors

v1.19.1 - Add evomap.ai links to README

24 Feb 07:07

Choose a tag to compare

Release created by publish script.

v1.19.0 - Robust heartbeat mechanism

23 Feb 02:50

Choose a tag to compare

Heartbeat Reliability Fix

Addresses reports of agents showing offline on EvoMap after running for a while.

Changes

  • Auto-registration: Heartbeat now sends hello to hub on startup, ensuring the node is registered before heartbeats begin. Previously, if the node was not registered (e.g. after database cleanup or first standalone run), all heartbeats silently failed with unknown_node.
  • Auto-reconnect: If hub responds with unknown_node (node was cleaned up or never registered), evolver automatically re-sends hello to re-register. No manual intervention needed.
  • Shorter interval: Default heartbeat interval reduced from 5 minutes to 2 minutes. More resilient to temporary network failures. Configurable via HEARTBEAT_INTERVAL_MS env var.
  • Failure logging: Consecutive heartbeat failures are now logged (at 3, 10, and every 50 failures) so users can diagnose connectivity issues.
  • Diagnostics: New getHeartbeatStats() function exposes total sent/failed counts and consecutive failure count.
  • Loop crash protection: The main evolution loop is now fully wrapped in try-catch to prevent silent process exit from unexpected errors in non-evolution code paths (e.g. file I/O, suicide check).

Upgrade

openclaw upgrade evolver

v1.18.1 - Clean up README changelog

23 Feb 02:35

Choose a tag to compare

Replace inline changelog with a link to GitHub Releases page to avoid misleading outdated version information.

v1.18.0 -- Region & Client Identity

22 Feb 12:35

Choose a tag to compare

v1.18.0 -- Region & Client Identity

Implements GEP Proposal #83 by @hatawong.

New env_fingerprint Fields

Field Type Source Required
region string (ISO 3166-1 alpha-2) EVOLVER_REGION env var No
client string package.json name No (default: "evolver")
client_version string package.json version No

evolver_version is kept for backward compatibility. Old capsules without client are inferred as client: "evolver".

Usage

# Set your region (China example)
export EVOLVER_REGION=cn

Schema

  • Schema version bumped to 1.6.0 (additive, non-breaking)

Also includes

  • v1.17.1: Windows CMD flashing fix (windowsHide for all subprocess calls)
  • v1.17.0: Skill Distiller module (cross-cycle experience distillation)

v1.17.1 -- Windows Stability Fix

22 Feb 12:08

Choose a tag to compare

v1.17.1 -- Windows Stability Fix

Fixes CMD window flashing/crashing on Windows 10/11 when running evolver in daemon mode.

Root Causes Fixed

  1. Daemon self-restart (index.js): Every 100 cycles, the daemon spawns a new process and exits. On Windows, this created visible CMD windows. Fixed by adding windowsHide: true to spawn() options.

  2. Unix-only commands (evolve.js): pgrep, ps aux, which commands crash on Windows. Fixed by:

    • Using tasklist instead of pgrep/ps for process counting on win32
    • Skipping the Unix-only race condition check on Windows
    • Using where instead of which for binary lookup
  3. Validation subprocess windows (solidify.js): Every node -e validation command spawned a visible CMD window. Fixed by adding windowsHide: true to the core runCmd() function.

  4. All execSync calls: Added windowsHide: true to every subprocess invocation (git, clawhub update, integration status) to prevent transient console windows.

Upgrade

Replace your evolver files or run clawhub update evolver --force to get this fix.

v1.17.0 -- Skill Distiller

22 Feb 11:07

Choose a tag to compare

v1.17.0 -- Skill Distiller

Cross-cycle experience distillation: evolver now analyzes successful evolution history and synthesizes new Genes (actionable strategies) via LLM, enabling self-improvement beyond single-cycle memory.

New Features

  • Skill Distiller (src/gep/skillDistiller.js): Collects successful capsules, identifies high-frequency patterns / strategy drift / coverage gaps, then uses Gemini to synthesize new Gene definitions
  • Auto-trigger after solidify: When recent success rate is high (7/10) and enough time has passed (24h), distillation runs automatically
  • Conservative gene selection: Distilled genes (gene_distilled_*) receive a 0.8x score factor in selector to build trust gradually
  • Full audit trail: All distillation runs logged to memory/distiller_log.jsonl with input hash, analysis summary, and synthesized gene

Configuration

Env Var Default Description
SKILL_DISTILLER true Enable/disable distillation
DISTILLER_MIN_CAPSULES 10 Minimum successful capsules before first distillation
DISTILLER_INTERVAL_HOURS 24 Minimum interval between distillation runs
DISTILLER_MIN_SUCCESS_RATE 0.7 Minimum capsule score threshold

Tests

  • 26 new unit tests for the distiller module (87 total, all passing)