Initial commit with translated description

This commit is contained in:
2026-03-29 08:33:08 +08:00
commit a9c97c9562
98 changed files with 23152 additions and 0 deletions

290
SKILL.md Normal file
View File

@@ -0,0 +1,290 @@
---
name: capability-evolver
description: "AI代理的自我进化引擎。分析运行时历史以识别改进并应用协议约束的进化。"
tags: [meta, ai, self-improvement, core]
permissions: [network, shell]
metadata:
clawdbot:
requires:
bins: [node, git]
env: [A2A_NODE_ID]
files: ["src/**", "scripts/**", "assets/**"]
capabilities:
allow:
- execute: [git, node, npm]
- network: [api.github.com, evomap.ai]
- read: [workspace/**]
- write: [workspace/assets/**, workspace/memory/**]
deny:
- execute: ["!git", "!node", "!npm", "!ps", "!pgrep", "!df"]
- network: ["!api.github.com", "!*.evomap.ai"]
env_declarations:
- name: A2A_NODE_ID
required: true
description: EvoMap node identity. Set after node registration.
- name: A2A_HUB_URL
required: false
default: https://evomap.ai
description: EvoMap Hub API base URL.
- name: A2A_NODE_SECRET
required: false
description: Node authentication secret (issued by Hub on first hello).
- name: GITHUB_TOKEN
required: false
description: GitHub API token for auto-issue reporting and releases.
- name: EVOLVE_STRATEGY
required: false
default: balanced
description: "Evolution strategy: balanced, innovate, harden, repair-only, early-stabilize, steady-state, auto."
- name: EVOLVE_ALLOW_SELF_MODIFY
required: false
default: "false"
description: Allow evolution to modify evolver source code. NOT recommended.
- name: EVOLVE_LOAD_MAX
required: false
default: "2.0"
description: Max 1-min load average before evolver backs off.
- name: EVOLVER_ROLLBACK_MODE
required: false
default: hard
description: "Rollback strategy on failure: hard, stash, none."
- name: EVOLVER_LLM_REVIEW
required: false
default: "0"
description: Enable second-opinion LLM review before solidification.
- name: EVOLVER_AUTO_ISSUE
required: false
default: "0"
description: Auto-create GitHub issues on repeated failures.
- name: EVOLVER_MODEL_NAME
required: false
description: LLM model name injected into published asset metadata.
- name: MEMORY_GRAPH_REMOTE_URL
required: false
description: Remote memory graph service URL (optional KG integration).
- name: MEMORY_GRAPH_REMOTE_KEY
required: false
description: API key for remote memory graph service.
network_endpoints:
- host: api.github.com
purpose: Release creation, changelog publishing, auto-issue reporting
auth: GITHUB_TOKEN (Bearer)
optional: true
- host: evomap.ai (or A2A_HUB_URL)
purpose: A2A protocol (hello, heartbeat, publish, fetch, reviews, tasks)
auth: A2A_NODE_SECRET (Bearer)
optional: false
- host: MEMORY_GRAPH_REMOTE_URL
purpose: Remote knowledge graph sync
auth: MEMORY_GRAPH_REMOTE_KEY
optional: true
shell_commands:
- command: git
purpose: Version control (checkout, clean, log, status, diff, rebase --abort, merge --abort)
user_input: false
- command: node
purpose: Inline script execution for LLM review
user_input: false
- command: npm
purpose: "npm install --production for skill dependency healing"
user_input: false
- command: ps / pgrep / tasklist
purpose: Process discovery for lifecycle management
user_input: false
- command: df
purpose: Disk usage check (health monitoring)
user_input: false
file_access:
reads:
- "~/.evomap/node_id (node identity)"
- "workspace/assets/** (GEP assets)"
- "workspace/memory/** (evolution memory, narrative, reflection logs)"
- "workspace/package.json (version info)"
writes:
- "workspace/assets/gep/** (genes, capsules, events)"
- "workspace/memory/** (memory graph, narrative, reflection)"
- "workspace/src/** (evolved code, only when changes are solidified)"
---
# 🧬 Evolver
**"Evolution is not optional. Adapt or die."**
The **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.
```bash
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.
```bash
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.
```bash
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:
```bash
export A2A_NODE_ID=node_xxxxxxxxxxxx
```
Or in your agent config (e.g., `~/.openclaw/openclaw.json`):
```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:
```bash
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**:
```bash
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:
```bash
# 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