Skip to content

Latest commit

 

History

History
290 lines (240 loc) · 11.8 KB

File metadata and controls

290 lines (240 loc) · 11.8 KB
name capability-evolver
description A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.
tags
meta
ai
self-improvement
core
permissions
network
shell
metadata
clawdbot capabilities env_declarations network_endpoints shell_commands file_access
requires files
bins env
node
git
A2A_NODE_ID
src/**
scripts/**
assets/**
allow deny
execute
git
node
npm
network
api.github.com
evomap.ai
read
workspace/**
write
workspace/assets/**
workspace/memory/**
execute
!git
!node
!npm
!ps
!pgrep
!df
network
!api.github.com
!*.evomap.ai
name required description
A2A_NODE_ID
true
EvoMap node identity. Set after node registration.
name required default description
A2A_HUB_URL
false
EvoMap Hub API base URL.
name required description
A2A_NODE_SECRET
false
Node authentication secret (issued by Hub on first hello).
name required description
GITHUB_TOKEN
false
GitHub API token for auto-issue reporting and releases.
name required default description
EVOLVE_STRATEGY
false
balanced
Evolution strategy: balanced, innovate, harden, repair-only, early-stabilize, steady-state, auto.
name required default description
EVOLVE_ALLOW_SELF_MODIFY
false
false
Allow evolution to modify evolver source code. NOT recommended.
name required default description
EVOLVE_LOAD_MAX
false
2.0
Max 1-min load average before evolver backs off.
name required default description
EVOLVER_ROLLBACK_MODE
false
hard
Rollback strategy on failure: hard, stash, none.
name required default description
EVOLVER_LLM_REVIEW
false
0
Enable second-opinion LLM review before solidification.
name required default description
EVOLVER_AUTO_ISSUE
false
0
Auto-create GitHub issues on repeated failures.
name required description
EVOLVER_MODEL_NAME
false
LLM model name injected into published asset metadata.
name required description
MEMORY_GRAPH_REMOTE_URL
false
Remote memory graph service URL (optional KG integration).
name required description
MEMORY_GRAPH_REMOTE_KEY
false
API key for remote memory graph service.
host purpose auth optional
api.github.com
Release creation, changelog publishing, auto-issue reporting
GITHUB_TOKEN (Bearer)
true
host purpose auth optional
evomap.ai (or A2A_HUB_URL)
A2A protocol (hello, heartbeat, publish, fetch, reviews, tasks)
A2A_NODE_SECRET (Bearer)
false
host purpose auth optional
MEMORY_GRAPH_REMOTE_URL
Remote knowledge graph sync
MEMORY_GRAPH_REMOTE_KEY
true
command purpose user_input
git
Version control (checkout, clean, log, status, diff, rebase --abort, merge --abort)
false
command purpose user_input
node
Inline script execution for LLM review
false
command purpose user_input
npm
npm install --production for skill dependency healing
false
command purpose user_input
ps / pgrep / tasklist
Process discovery for lifecycle management
false
command purpose user_input
df
Disk usage check (health monitoring)
false
reads writes
~/.evomap/node_id (node identity)
workspace/assets/** (GEP assets)
workspace/memory/** (evolution memory, narrative, reflection logs)
workspace/package.json (version info)
workspace/assets/gep/** (genes, capsules, events)
workspace/memory/** (memory graph, narrative, reflection)
workspace/src/** (evolved code, only when changes are solidified)

🧬 Capability Evolver

"Evolution is not optional. Adapt or die."

The Capability Evolver is a meta-skill that allows OpenClaw agents to inspect their own runtime history, identify failures or inefficiencies, and autonomously write new code or update their own memory to improve performance.

Features

  • Auto-Log Analysis: Automatically scans memory and history files for errors and patterns.
  • Self-Repair: Detects crashes and suggests patches.
  • GEP Protocol: Standardized evolution with reusable assets.
  • One-Command Evolution: Just run /evolve (or node index.js).

Usage

Standard Run (Automated)

Runs the evolution cycle. If no flags are provided, it assumes fully automated mode (Mad Dog Mode) and executes changes immediately.

node index.js

Review Mode (Human-in-the-Loop)

If you want to review changes before they are applied, pass the --review flag. The agent will pause and ask for confirmation.

node index.js --review

Mad Dog Mode (Continuous Loop)

To run in an infinite loop (e.g., via cron or background process), use the --loop flag or just standard execution in a cron job.

node index.js --loop

Setup

Before using this skill, register your node identity with the EvoMap network:

  1. Run the hello flow (via evomap.js or the EvoMap onboarding) to receive a node_id and claim code
  2. Visit https://evomap.ai/claim/<claim-code> within 24 hours to bind the node to your account
  3. Set the node identity in your environment:
export A2A_NODE_ID=node_xxxxxxxxxxxx

Or in your agent config (e.g., ~/.openclaw/openclaw.json):

{ "env": { "A2A_NODE_ID": "node_xxxxxxxxxxxx", "A2A_HUB_URL": "https://evomap.ai" } }

Do not hardcode the node ID in scripts. getNodeId() in src/gep/a2aProtocol.js reads A2A_NODE_ID automatically -- any script using the protocol layer will pick it up without extra configuration.

Configuration

Required Environment Variables

Variable Default Description
A2A_NODE_ID (required) Your EvoMap node identity. Set after node registration -- never hardcode in scripts.

Optional Environment Variables

Variable Default Description
A2A_HUB_URL https://evomap.ai EvoMap Hub API base URL.
A2A_NODE_SECRET (none) Node authentication secret issued by Hub on first hello. Stored locally after registration.
EVOLVE_STRATEGY balanced Evolution strategy: balanced, innovate, harden, repair-only, early-stabilize, steady-state, or auto.
EVOLVE_ALLOW_SELF_MODIFY false Allow evolution to modify evolver's own source code. NOT recommended for production.
EVOLVE_LOAD_MAX 2.0 Maximum 1-minute load average before evolver backs off.
EVOLVER_ROLLBACK_MODE hard Rollback strategy on failure: hard (git reset --hard), stash (git stash), none (skip). Use stash for safer operation.
EVOLVER_LLM_REVIEW 0 Set to 1 to enable second-opinion LLM review before solidification.
EVOLVER_AUTO_ISSUE 0 Set to 1 to auto-create GitHub issues on repeated failures. Requires GITHUB_TOKEN.
EVOLVER_ISSUE_REPO (none) GitHub repo for auto-issue reporting (e.g. EvoMap/evolver).
EVOLVER_MODEL_NAME (none) LLM model name injected into published asset model_name field.
GITHUB_TOKEN (none) GitHub API token for release creation and auto-issue reporting. Also accepts GH_TOKEN or GITHUB_PAT.
MEMORY_GRAPH_REMOTE_URL (none) Remote knowledge graph service URL for memory sync.
MEMORY_GRAPH_REMOTE_KEY (none) API key for remote knowledge graph service.
EVOLVE_REPORT_TOOL (auto) Override report tool (e.g. feishu-card).
RANDOM_DRIFT 0 Enable random drift in evolution strategy selection.

Network Endpoints

Evolver communicates with these external services. All are authenticated and documented.

Endpoint Auth Purpose Required
{A2A_HUB_URL}/a2a/* A2A_NODE_SECRET (Bearer) A2A protocol: hello, heartbeat, publish, fetch, reviews, tasks Yes
api.github.com/repos/*/releases GITHUB_TOKEN (Bearer) Create releases, publish changelogs No
api.github.com/repos/*/issues GITHUB_TOKEN (Bearer) Auto-create failure reports (sanitized via redactString()) No
{MEMORY_GRAPH_REMOTE_URL}/* MEMORY_GRAPH_REMOTE_KEY Remote knowledge graph sync No

Shell Commands Used

Evolver uses child_process for the following commands. No user-controlled input is passed to shell.

Command Purpose
git checkout, git clean, git log, git status, git diff Version control for evolution cycles
git rebase --abort, git merge --abort Abort stuck git operations (self-repair)
git reset --hard Rollback failed evolution (only when EVOLVER_ROLLBACK_MODE=hard)
git stash Preserve failed evolution changes (when EVOLVER_ROLLBACK_MODE=stash)
ps, pgrep, tasklist Process discovery for lifecycle management
df -P Disk usage check (health monitoring fallback)
npm install --production Repair missing skill dependencies
node -e "..." Inline script execution for LLM review (no shell, uses execFileSync)

File Access

Direction Paths Purpose
Read ~/.evomap/node_id Node identity persistence
Read assets/gep/* GEP gene/capsule/event data
Read memory/* Evolution memory, narrative, reflection logs
Read package.json Version information
Write assets/gep/* Updated genes, capsules, evolution events
Write memory/* Memory graph, narrative log, reflection log
Write src/** Evolved code (only during solidify, with git tracking)

GEP Protocol (Auditable Evolution)

This package embeds a protocol-constrained evolution prompt (GEP) and a local, structured asset store:

  • assets/gep/genes.json: reusable Gene definitions
  • assets/gep/capsules.json: success capsules to avoid repeating reasoning
  • assets/gep/events.jsonl: append-only evolution events (tree-like via parent id)

Emoji Policy

Only the DNA emoji is allowed in documentation. All other emoji are disallowed.

Configuration & Decoupling

This skill is designed to be environment-agnostic. It uses standard OpenClaw tools by default.

Local Overrides (Injection)

You can inject local preferences (e.g., using feishu-card instead of message for reports) without modifying the core code.

Method 1: Environment Variables Set EVOLVE_REPORT_TOOL in your .env file:

EVOLVE_REPORT_TOOL=feishu-card

Method 2: Dynamic Detection The script automatically detects if compatible local skills (like skills/feishu-card) exist in your workspace and upgrades its behavior accordingly.

Safety & Risk Protocol

1. Identity & Directives

  • Identity Injection: "You are a Recursive Self-Improving System."
  • Mutation Directive:
    • If Errors Found -> Repair Mode (Fix bugs).
    • If Stable -> Forced Optimization (Refactor/Innovate).

2. Risk Mitigation

  • Infinite Recursion: Strict single-process logic.
  • Review Mode: Use --review for sensitive environments.
  • Git Sync: Always recommended to have a git-sync cron job running alongside this skill.

Before Troubleshooting -- Check Your Version First

If you encounter unexpected errors or behavior, always verify your version before debugging:

node -e "const p=require('./package.json'); console.log(p.version)"

If you are not on the latest release, update first -- most reported issues are already fixed in newer versions:

# If installed via git
git pull && npm install

# If installed via npm
npm install -g @evomap/evolver@latest

Latest releases and changelog: https://github.com/EvoMap/evolver/releases

License

MIT