@evomap/evolver 2.0.34 → 2.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <img src="assets/logo.png" alt="Evolver" width="96" height="96" />
3
3
  </p>
4
4
 
5
- <h1 align="center">Evolver — Agent Self-Evolving Engine</h1>
5
+ <h1 align="center">Evolver v2</h1>
6
6
 
7
7
  <p align="center">
8
8
  <a href="https://trendshift.io/repositories/26015?utm_source=repository-badge&amp;utm_medium=badge&amp;utm_campaign=badge-repository-26015" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/repositories/26015" alt="EvoMap%2Fevolver | Trendshift" width="250" height="55"/></a>
@@ -11,12 +11,12 @@
11
11
  <p align="center">
12
12
  <a href="https://github.com/EvoMap/evolver/stargazers"><img src="https://img.shields.io/badge/Stars-9k-2b3137?logo=github&amp;logoColor=white" alt="GitHub stars"/></a>
13
13
  <a href="https://opensource.org/licenses/GPL-3.0"><img src="https://img.shields.io/badge/License-GPL--3.0-blue.svg" alt="License: GPL-3.0"/></a>
14
- <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-%3E%3D%2018-green.svg" alt="Node.js &gt;= 18"/></a>
14
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-V2%20engine%20range-green.svg" alt="Node.js 版本要求见下文"/></a>
15
15
  <a href="https://www.npmjs.com/package/@evomap/evolver"><img src="https://img.shields.io/npm/dm/@evomap/evolver.svg" alt="npm downloads"/></a>
16
16
  <a href="https://arxiv.org/abs/2604.15097"><img src="https://img.shields.io/badge/arXiv-2604.15097-b31b1b.svg" alt="arXiv"/></a>
17
17
  </p>
18
18
 
19
- **[evomap.ai](https://evomap.ai)** | [Documentation](https://evomap.ai/wiki) | [Chinese / 中文文档](README.zh-CN.md) | [Japanese / 日本語ドキュメント](README.ja-JP.md) | [Korean / 한국어 문서](README.ko-KR.md) | [GitHub](https://github.com/EvoMap/evolver) | [Releases](https://github.com/EvoMap/evolver/releases)
19
+ **[evomap.ai](https://evomap.ai)** | [V2 使用指南](#evolver-v2-使用指南) | [Wiki](https://evomap.ai/wiki) | [GitHub](https://github.com/EvoMap/evolver) | [Releases](https://github.com/EvoMap/evolver/releases)
20
20
 
21
21
  ---
22
22
 
@@ -24,7 +24,7 @@
24
24
  >
25
25
  > Evolver has been fully open source since our first release on 2026-02-01 (initially MIT, and GPL-3.0-or-later since 2026-04-09). In March 2026, another project in the same lane released a system with strikingly similar memory / skill / evolution-asset design — without any attribution to Evolver. Full analysis: [Hermes Agent Self-Evolution vs. Evolver: A Detailed Similarity Analysis](https://evomap.ai/en/blog/hermes-agent-evolver-similarity-analysis).
26
26
  >
27
- > To protect the integrity of the work and keep investing in this direction, future Evolver releases will transition from fully open source to source-available. **Our commitment to users is unchanged**: we will keep shipping the best agent self-evolution capability in the industry — faster iteration, deeper GEP integration, stronger memory and skill systems. All already-published MIT and GPL-3.0 versions remain freely usable under their original terms. You can still `npm install @evomap/evolver` or clone this repo; nothing in your current workflow breaks.
27
+ > To protect the integrity of the work and keep investing in this direction, future Evolver releases will transition from fully open source to source-available. **Our commitment to users is unchanged**: we will keep shipping the best agent self-evolution capability in the industry — faster iteration, deeper GEP integration, stronger memory and skill systems. All already-published MIT and GPL-3.0 versions remain freely usable under their original terms. You can still `npm install @evomap/evolver` or clone this repo. V1 V2 的命令和运行方式存在差异,升级前请按下文核对。
28
28
  >
29
29
  > Questions or concerns: open an issue or reach us at [evomap.ai](https://evomap.ai).
30
30
 
@@ -42,522 +42,191 @@
42
42
 
43
43
  ---
44
44
 
45
- > **"Evolution is not optional. Adapt or die."**
45
+ ## Evolver v2 使用指南
46
46
 
47
- **Three lines**
48
- - **What it is**: A [GEP](https://evomap.ai/wiki)-powered self-evolution engine for AI agents.
49
- - **Pain it solves**: Turns ad hoc prompt tweaks into auditable, reusable evolution assets.
50
- - **Use in 30 seconds**: `npm install -g @evomap/evolver`, then run `evolver` in any git repo.
47
+ Evolver 将 agent 的运行材料整理为可审核、可追溯的 Gene、Capsule 和 EvolutionEvent,并通过本地资产、MCP 与 Hub 接口复用经验。安装程序、接通工具、认证成功和真正执行任务是不同的步骤。
51
48
 
52
- ## EvoMap -- The Evolution Network
49
+ 本指南面向 V2 发行包。上面的研究结果及历史 OpenClaw 实验不代表当前 V2 已具备免配置 OpenClaw 接线或自主执行能力。升级前保留原配置与资产,核对实际安装版本的 `--help` 和能力清单;不要把尚未发布的主线修复当作本机已有功能。
53
50
 
54
- Evolver is the core engine behind **[EvoMap](https://evomap.ai)**, a network where AI agents evolve through validated collaboration. Visit [evomap.ai](https://evomap.ai) to explore the full platform -- live agent maps, evolution leaderboards, and the ecosystem that turns isolated prompt tweaks into shared, auditable intelligence.
51
+ ## 环境要求与安装
55
52
 
56
- Keywords: protocol-constrained evolution, audit trail, genes and capsules, prompt governance.
57
-
58
- ## Choose Your Path
59
-
60
- Evolver has one install but two usage shapes. Pick the one that matches how you plan to use it, then follow only that section.
61
-
62
- | Path | Who it's for | Command after install | Guide |
63
- |---|---|---|---|
64
- | **CLI Quick Start** | You just want to use Evolver to evolve an agent / project. 99% of readers. | `evolver` | [below](#cli-quick-start) |
65
- | **Run from Source** | You want to hack on the engine, send PRs, or run unreleased builds. | `node index.js` | [below](#run-from-source-contributors-only) |
66
-
67
- > **For agent / skill integrations** (Codex, Claude Code skill system, custom MCP clients) see the separate [SKILL.md](SKILL.md) -- it documents the Proxy mailbox API that wraps the CLI. You still install Evolver via the CLI Quick Start below first.
68
-
69
- ## Prerequisites
70
-
71
- - **[Node.js](https://nodejs.org/)** >= 18
72
- - **[Git](https://git-scm.com/)** -- Required. Evolver uses git for rollback, blast radius calculation, and solidify. Running in a non-git directory will fail with a clear error message.
73
-
74
- ## CLI Quick Start
75
-
76
- This is the recommended path for almost everyone.
77
-
78
- ### 1. Install
53
+ - npm 发行包的 Node.js engines 合同是 `^22.13.0 || >=23.4.0`:支持22.x中的22.13.0及以上版本,或23.4.0及以上版本;Node18、Node20及23.0至23.3不满足要求。
54
+ - Git 用于需要仓库上下文、差异与回滚证明的操作;显示帮助或能力清单不等于已经运行进化任务。
55
+ - npm安装会访问registry并写入所选安装前缀。遇到权限错误时使用用户自有的npm前缀,不要以管理员安装来掩盖服务用户、PATH或身份目录不同的问题。
79
56
 
80
57
  ```bash
81
58
  npm install -g @evomap/evolver
82
59
  ```
83
60
 
84
- Verify the CLI is on your PATH:
85
-
86
- ```bash
87
- evolver --help
88
- ```
89
-
90
- If you hit `EACCES` on Linux/macOS, configure a user-level prefix instead of using `sudo`:
91
-
92
- ```bash
93
- npm config set prefix ~/.npm-global
94
- echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
95
- source ~/.bashrc
96
- ```
97
-
98
- ### 2. Run it
99
-
100
- From inside any **git-initialized** project directory:
101
-
102
- ```bash
103
- # Single evolution run -- scans logs, selects a Gene, outputs a GEP prompt
104
- evolver
105
-
106
- # Review mode -- pause before applying, wait for human confirmation
107
- evolver --review
108
-
109
- # Continuous loop -- runs as a background daemon
110
- evolver --loop
111
- ```
112
-
113
- A "successful first run" looks like:
114
-
115
- 1. Evolver prints a banner with the detected strategy preset (e.g. `balanced`).
116
- 2. It scans `./memory/` (creates it if missing) for logs and signals.
117
- 3. It selects a matching Gene / Capsule from its built-in asset pool.
118
- 4. It prints a **GEP prompt** to stdout -- that's the artifact. Copy it into your agent, or let a host runtime (OpenClaw, Cursor hook, Claude Code hook) consume it automatically.
119
- 5. It writes an `EvolutionEvent` into `./memory/` for audit.
120
-
121
- If step 4 didn't appear, you're not running inside a git repo -- `cd` into one and retry. Everything else runs fully offline.
122
-
123
- ### 3. Connect to the EvoMap network (optional)
124
-
125
- Evolver works fully offline. Hub connection only unlocks network features (skill sharing, worker pool, evolution leaderboards).
126
-
127
- Create a `.env` file **in the current working directory where you run `evolver`** (not in your home directory, not in the global npm install location):
128
-
129
- ```bash
130
- # Register at https://evomap.ai to get your Node ID
131
- A2A_HUB_URL=https://evomap.ai
132
- A2A_NODE_ID=your_node_id_here
133
- ```
134
-
135
- Evolver reads `.env` from `process.cwd()` on each run. If you run `evolver` from multiple projects, each project can have its own `.env`.
136
-
137
- ### 4. Wire up your agent runtime (optional)
138
-
139
- Evolver integrates with major agent runtimes through `setup-hooks`. Run it once per platform you want to wire up.
140
-
141
- | Platform | Command | What it writes |
142
- |---|---|---|
143
- | [Cursor](https://cursor.com) | `evolver setup-hooks --platform=cursor` | `~/.cursor/hooks.json` + scripts in `~/.cursor/hooks/`. Restart Cursor or open a new session. Fires on `sessionStart`, `afterFileEdit`, `stop`. |
144
- | [Claude Code](https://www.anthropic.com/claude-code) | `evolver setup-hooks --platform=claude-code` | Registers with Claude Code's hook system via `~/.claude/`. Restart the Claude Code CLI. |
145
- | [Codex](https://github.com/openai/codex) | `evolver setup-hooks --platform=codex` | `~/.codex/hooks.json` + scripts in `~/.codex/hooks/`, enables `codex_hooks` feature in `config.toml`. Restart the Codex CLI. See [Codex caveats](#codex-caveats) below. |
146
- | [Kiro](https://kiro.dev) | `evolver setup-hooks --platform=kiro` | Three `*.kiro.hook` files + scripts in `~/.kiro/hooks/`. Auto-discovered, no restart needed. |
147
- | [opencode](https://opencode.ai) | `evolver setup-hooks --platform=opencode` | Plugin at `~/.opencode/plugins/evolver.js` + scripts in `~/.opencode/hooks/`. Restart opencode. |
148
- | [OpenClaw](https://openclaw.com) | No setup needed | OpenClaw natively interprets the `sessions_spawn(...)` stdout directives Evolver emits. Just run `evolver` from inside an OpenClaw session. |
149
-
150
- #### Codex caveats
151
-
152
- The Codex CLI exposes `SessionStart` / `Stop` / `PostToolUse` hooks (which is
153
- how `setup-hooks --platform=codex` wires Evolver in). The `Stop` payload does
154
- not include a `transcript_path`, but Codex writes local rollout JSONL files under
155
- `~/.codex/sessions/**/*.jsonl`. V2 does not silently scan these files during a
156
- normal review; request local trajectory ingestion explicitly:
157
-
158
- ```bash
159
- evolver trajectory-export --runtime-sessions --output ./codex-trajectories.jsonl
160
- ```
161
-
162
- Discovery is marker-gated by default and stays local. Use
163
- `--include-unmarked` only when you intentionally want older or unmarked Codex
164
- sessions included.
165
-
166
- `setup-hooks --platform=codex` is lifecycle integration only; it does not route
167
- Codex model requests through Evolver Proxy. To route Codex model traffic, run
168
- Evolver Proxy and configure Codex with a user-level OpenAI Responses-compatible
169
- custom provider whose `base_url` points at the proxy's `/v1` endpoint and whose
170
- command-backed auth runs `evolver proxy-token` or the absolute `node index.js
171
- proxy-token --settings ...` helper emitted by `scripts/internal-proxy-env.sh
172
- --codex-config` from a source checkout.
173
-
174
- For the normal lifecycle path, Evolver reads additional local context in order:
175
-
176
- 1. `MEMORY.md` / `USER.md` in the workspace root (if you maintain them);
177
- 2. the `<!-- evolver-evolution-memory -->` section that
178
- `setup-hooks --platform=codex` injects into your project's
179
- `AGENTS.md`;
180
- 3. the tail of the local `memory_graph.jsonl` (the per-cycle outcome log
181
- that Evolver writes itself).
182
-
183
- If none of those have content yet, you'll see `memory_missing` / `user_missing`
184
- or `session_logs_missing` as advisory signals during the first few cycles.
185
- They go quiet as local memory and marked runtime-session material accumulate;
186
- no manual setup is required.
187
-
188
- ## Run from Source (Contributors Only)
189
-
190
- Skip this section entirely if you installed via `npm install -g @evomap/evolver` above. This path exists so contributors can hack on the engine.
191
-
192
- ```bash
193
- git clone https://github.com/EvoMap/evolver.git
194
- cd evolver
195
- npm install
196
-
197
- # Then use node index.js wherever the CLI docs say evolver
198
- node index.js # equivalent to: evolver
199
- node index.js --review # equivalent to: evolver --review
200
- node index.js --loop # equivalent to: evolver --loop
201
- ```
202
-
203
- Every `evolver <flag>` invocation in the rest of this README maps 1:1 to `node index.js <flag>` when running from source.
204
-
205
- ## What Evolver Does (and Does Not Do)
206
-
207
- **Evolver is a prompt generator, not a code patcher.** Each evolution cycle:
208
-
209
- 1. Scans your `memory/` directory for runtime logs, error patterns, and signals.
210
- 2. Selects the best-matching [Gene or Capsule](https://evomap.ai/wiki) from the local GEP asset store.
211
- 3. Emits a strict, protocol-bound GEP prompt that guides the next evolution step.
212
- 4. Records an auditable [EvolutionEvent](https://evomap.ai/wiki) for traceability.
213
-
214
- **It does NOT**:
215
- - Automatically edit your source code.
216
- - Execute arbitrary shell commands (see [Security Model](#security-model)).
217
- - Require an internet connection for core functionality.
218
-
219
- ### How It Integrates with Host Runtimes
220
-
221
- When running inside a host runtime (e.g., [OpenClaw](https://openclaw.com)), the `sessions_spawn(...)` text printed to stdout can be picked up by the host to trigger follow-up actions. **In standalone mode, these are just text output** -- nothing is executed automatically.
222
-
223
- | Mode | Behavior |
224
- | :--- | :--- |
225
- | Standalone (`evolver`) | Generates prompt, prints to stdout, exits |
226
- | Loop (`evolver --loop`) | Repeats the above in a daemon loop with adaptive sleep |
227
- | Inside OpenClaw | Host runtime interprets stdout directives like `sessions_spawn(...)` |
228
-
229
- > **`--loop` is not a real-time agent assistant.** Loop mode is for background self-maintenance (validator runs, worker tasks, ATP merchant auto-deliver, solidify). Its stdout is consumed by evolver itself, **not** by a running host agent, so `sessions_spawn(...)` directives produced in loop mode will not be picked up by OpenClaw / Cursor / Claude Code even if those runtimes are installed. If you want evolver to observe and advise a live agent session, call `evolver` from **inside** that agent session (OpenClaw will pick up the stdout directives on that single run). For OpenClaw specifically, also make sure `AGENT_NAME` (or `AGENT_SESSIONS_DIR`) points at the agent directory actually producing sessions under `~/.openclaw/agents/<name>/sessions/` -- otherwise evolver falls back to reading its own logs and looks like it is "cycling emptily".
230
-
231
- ## Who This Is For / Not For
232
-
233
- **For**
234
- - Teams maintaining agent prompts and logs at scale
235
- - Users who need auditable evolution traces ([Genes](https://evomap.ai/wiki), [Capsules](https://evomap.ai/wiki), [Events](https://evomap.ai/wiki))
236
- - Environments requiring deterministic, protocol-bound changes
237
-
238
- **Not For**
239
- - One-off scripts without logs or history
240
- - Projects that require free-form creative changes
241
- - Systems that cannot tolerate protocol overhead
242
-
243
- ## Features
244
-
245
- - **Auto-Log Analysis**: scans memory and history files for errors and patterns.
246
- - **Self-Repair Guidance**: emits repair-focused directives from signals.
247
- - **[GEP Protocol](https://evomap.ai/wiki)**: standardized evolution with reusable assets.
248
- - **Mutation + Personality Evolution**: each evolution run is gated by an explicit Mutation object and an evolvable PersonalityState.
249
- - **Configurable Strategy Presets**: `EVOLVE_STRATEGY=balanced|innovate|harden|repair-only` controls intent balance.
250
- - **Signal De-duplication**: prevents repair loops by detecting stagnation patterns.
251
- - **Operations Module** (`src/ops/`): portable lifecycle, skill monitoring, cleanup, self-repair, wake triggers -- zero platform dependency.
252
- - **Protected Source Files**: prevents autonomous agents from overwriting core evolver code.
253
- - **[Skill Store](https://evomap.ai)**: download and share reusable skills via `evolver fetch --skill <id>`.
254
-
255
- ## Typical Use Cases
256
-
257
- - Harden a flaky agent loop by enforcing validation before edits
258
- - Encode recurring fixes as reusable [Genes and Capsules](https://evomap.ai/wiki)
259
- - Produce auditable evolution events for review or compliance
260
-
261
- ## Anti-Examples
262
-
263
- - Rewriting entire subsystems without signals or constraints
264
- - Using the protocol as a generic task runner
265
- - Producing changes without recording EvolutionEvent
266
-
267
- ## Usage
268
-
269
- All commands below assume you installed with `npm install -g @evomap/evolver`. If you are running from source, substitute `node index.js` for `evolver` -- they are equivalent.
270
-
271
- ### Standard Run (Automated)
272
- ```bash
273
- evolver
274
- ```
275
-
276
- ### Review Mode (Human-in-the-Loop)
277
- ```bash
278
- evolver --review
279
- ```
61
+ 升级前记录旧版本、安装方式和服务实际使用的可执行文件路径;完成升级后重新核对 PATH。CLI显示新版本不证明后台服务已经重启到同一版本。
280
62
 
281
- ### Continuous Loop
282
- ```bash
283
- evolver --loop
284
- ```
63
+ ## 先进行只读检查
285
64
 
286
- ### With Strategy Preset
287
- ```bash
288
- EVOLVE_STRATEGY=innovate evolver --loop # maximize new features
289
- EVOLVE_STRATEGY=harden evolver --loop # focus on stability
290
- EVOLVE_STRATEGY=repair-only evolver --loop # emergency fix mode
291
- ```
65
+ <!-- v2-safe-quickstart:start -->
292
66
 
293
- | Strategy | Innovate | Optimize | Repair | When to Use |
294
- | :--- | :--- | :--- | :--- | :--- |
295
- | `balanced` (default) | 50% | 30% | 20% | Daily operation, steady growth |
296
- | `innovate` | 80% | 15% | 5% | System stable, ship new features fast |
297
- | `harden` | 20% | 40% | 40% | After major changes, focus on stability |
298
- | `repair-only` | 0% | 20% | 80% | Emergency state, all-out repair |
67
+ 下面三条命令只检查当前CLI和能力清单,不执行任务、不登录Hub,也不授权花费:
299
68
 
300
- ### Operations (Lifecycle Management)
301
69
  ```bash
302
- node src/ops/lifecycle.js start # start evolver loop in background
303
- node src/ops/lifecycle.js stop # graceful stop (SIGTERM -> SIGKILL)
304
- node src/ops/lifecycle.js status # show running state
305
- node src/ops/lifecycle.js check # health check + auto-restart if stagnant
70
+ evolver --version
71
+ evolver --help
72
+ evolver cycle capabilities --json
306
73
  ```
307
74
 
308
- ### Skill Store
309
- ```bash
310
- # Download a skill from the EvoMap network
311
- evolver fetch --skill <skill_id>
312
-
313
- # Specify output directory
314
- evolver fetch --skill <skill_id> --out=./my-skills/
315
- ```
75
+ <!-- v2-safe-quickstart:end -->
316
76
 
317
- Requires `A2A_HUB_URL` to be configured. Browse available skills at [evomap.ai](https://evomap.ai).
77
+ 能力清单逐项区分 `ingest`、`inject`、`execute`、`verify` `resume`。能读transcript不代表能启动runner;能发现MCP工具也不代表有经过验证的自主执行路径。`unsupported` 必须保留为未支持,不能靠改用另一个runtime或关闭安全检查变成成功。
318
78
 
319
- ### Cron / External Runner Keepalive
320
- If you run a periodic keepalive/tick from a cron/agent runner, prefer a single simple command with minimal quoting.
79
+ ## 选择实际支持的接入方式
321
80
 
322
- Recommended:
81
+ MCP由外部agent主动调用;受支持的hook或规则提供各自的注入入口。需要安装配置时先查看:
323
82
 
324
83
  ```bash
325
- bash -lc 'evolver --loop'
84
+ evolver setup-hooks --help
326
85
  ```
327
86
 
328
- Avoid composing multiple shell segments inside the cron payload (for example `...; echo EXIT:$?`) because nested quotes can break after passing through multiple serialization/escaping layers.
87
+ V2推荐使用 `--runtime` 选择入口,`--platform` 仍是兼容别名。确认runtime、`--scope` `--root` 后再决定安装;真正安装会修改对应配置文件,需要操作者明确同意。
329
88
 
330
- For process managers like pm2, the same principle applies -- wrap the command simply:
331
-
332
- ```bash
333
- pm2 start "bash -lc 'evolver --loop'" --name evolver --cron-restart="0 */6 * * *"
334
- ```
89
+ `--dry-run` 目前仅适用于 `opencode` `kiro`。Claude Code、Codex、Cursor、Antigravity等入口会拒绝该legacy预览参数,不要把它作为所有runtime通用的第一步。OpenCode/Kiro的JSON预览结果带 `dryRun:true`,即使 `outcome` `installed` 也不表示已经写入配置。
335
90
 
336
- ## Connecting to EvoMap Hub
91
+ | 入口 | V2边界 |
92
+ | --- | --- |
93
+ | Claude Code / Codex | MCP及受支持的SessionStart、UserPromptSubmit hook;仍受runtime的信任与hook审核约束。 |
94
+ | Cursor | 受管理的规则注入;不承诺V1 hooks.json路径或安全自主执行已就绪。 |
95
+ | Antigravity / Kiro / OpenCode | 已有MCP配置入口不自动等于transcript、执行或恢复能力全部可用;逐列查看能力清单。 |
96
+ | OpenClaw | 有 `setup-hooks` 手动入口,返回 `manual` 接线指引,不自动写配置;尚无自动installer或专用runtime执行合同。 |
337
97
 
338
- Evolver can optionally connect to the [EvoMap Hub](https://evomap.ai) for network features. This is **not required** for core evolution functionality.
339
-
340
- ### Setup
341
-
342
- 1. Register at [evomap.ai](https://evomap.ai) and get your Node ID.
343
- 2. Add the following to your `.env` file:
98
+ OpenClaw用户可以先取得手动MCP/HTTP接线说明:
344
99
 
345
100
  ```bash
346
- A2A_HUB_URL=https://evomap.ai
347
- A2A_NODE_ID=your_node_id_here
101
+ evolver setup-hooks --runtime=openclaw --json
348
102
  ```
349
103
 
350
- ### What Hub Connection Enables
351
-
352
- | Feature | Description |
353
- | :--- | :--- |
354
- | **Heartbeat** | Periodic check-in with the Hub; reports node status and receives available work |
355
- | **Skill Store** | Download and publish reusable skills (`evolver fetch`) |
356
- | **Worker Pool** | Accept and execute evolution tasks from the network (see [Worker Pool](#worker-pool-evomap-network)) |
357
- | **Evolution Circle** | Collaborative evolution groups with shared context |
358
- | **Asset Publishing** | Share your Genes and Capsules with the network |
359
-
360
- ### How It Works
104
+ 成功返回 `outcome:manual`、空 `files` `instructions`,不代表已经安装、认证或执行任务。HTTP/A2A的具体endpoint由相应adapter提供,不从任意输出推断或替换账户身份。
361
105
 
362
- When `evolver --loop` is running with Hub configured:
106
+ <!-- v2-openclaw-native:start -->
363
107
 
364
- 1. On startup, evolver sends a `hello` message to register with the Hub.
365
- 2. A heartbeat is sent every 6 minutes (configurable via `HEARTBEAT_INTERVAL_MS`).
366
- 3. The Hub responds with available work, overdue task alerts, and skill store hints.
367
- 4. If `WORKER_ENABLED=1`, the node advertises its capabilities and picks up tasks.
108
+ **OpenClaw 2026.8.1 注意事项:不要将 `instructions` 中的通用 `mcpServers` 片段直接粘贴到 OpenClaw `openclaw.json`。** 该版本管理的是 `mcp.servers`,直接粘贴会被配置校验拒绝。当前指引仍显示通用片段;请通过宿主 CLI 注册。
368
109
 
369
- Without Hub configuration, evolver runs fully offline -- all core evolution features work locally.
110
+ 以下 Bash 示例已用 OpenClaw 2026.8.1(ea80657)、Ubuntu24.04.4 Node22.23.1 验证。先从上面本机输出的片段读取 `command` 和 `args[0]`(默认 npm 入口为一个 stdio 脚本参数),核对都是本机安装产物的绝对路径,再替换下面五个路径。不要根据 `npm root -g` 猜测局部安装或不同服务用户的路径。若自定义了其他 args/env,必须逐项保留,并按本机 `openclaw mcp add --help` 确认;私密env-file只传绝对路径指针,不要内联 token node secret。
370
111
 
371
- ## Worker Pool (EvoMap Network)
372
-
373
- When `WORKER_ENABLED=1`, this node participates as a worker in the [EvoMap network](https://evomap.ai). It advertises its capabilities via heartbeat and picks up tasks from the network's available-work queue. Tasks are claimed atomically during solidify after a successful evolution cycle.
374
-
375
- | Variable | Default | Description |
376
- |----------|---------|-------------|
377
- | `WORKER_ENABLED` | _(unset)_ | Set to `1` to enable worker pool mode |
378
- | `WORKER_DOMAINS` | _(empty)_ | Comma-separated list of task domains this worker accepts (e.g. `repair,harden`) |
379
- | `WORKER_MAX_LOAD` | `5` | Advertised maximum concurrent task capacity for hub-side scheduling (not a locally enforced concurrency limit) |
112
+ OpenClaw 实际使用的用户、profile和workspace中执行。若已有同名 `evolver`,先检查 `openclaw mcp show evolver`,不要盲目覆盖。`add` 会启动 MCP probe,成功后写入配置,**不是只读检查**;它需要操作者同意。后续 `probe` 可能连接当前profile中的其他已配置服务器,执行前确认范围。
380
113
 
381
114
  ```bash
382
- WORKER_ENABLED=1 WORKER_DOMAINS=repair,harden WORKER_MAX_LOAD=3 evolver --loop
115
+ EVOLVER_MCP_NODE='/absolute/path/from/command'
116
+ EVOLVER_MCP_ENTRY='/absolute/path/from/args/0'
117
+ EVOLVER_MCP_WORKSPACE='/absolute/path/to/workspace'
118
+ EVOLVER_IDENTITY_DIR='/absolute/path/to/identity'
119
+ EVOLVER_STATE_DIR='/absolute/path/to/state'
120
+
121
+ openclaw mcp add evolver \
122
+ --command "$EVOLVER_MCP_NODE" \
123
+ --arg "$EVOLVER_MCP_ENTRY" \
124
+ --cwd "$EVOLVER_MCP_WORKSPACE" \
125
+ --env "EVOMAP_HOME=$EVOLVER_IDENTITY_DIR" \
126
+ --env "EVOLVER_HOME=$EVOLVER_STATE_DIR" \
127
+ --include evolver_recall \
128
+ --approval prompt \
129
+ --connect-timeout 10 \
130
+ --timeout 10 &&
131
+ openclaw mcp probe &&
132
+ openclaw mcp doctor
383
133
  ```
384
134
 
385
- ### WORKER_ENABLED vs. the Website Toggle
135
+ 此示例仅暴露 `evolver_recall` 来验证连接及本地经验读取,不等于完整学习闭环、agent任务、Hub认证或计费验收;需要其他工具时另行审核其权限与副作用。空store返回零条经验是有效结果,不是未登录。若 agent runtime plugin/provider auth 缺失,应分别检查 OpenClaw 运行时与模型配置,不要据此删除 Evolver 凭据。上面的 `manual/files=[]` 只描述 Evolver 生成指引的那一步,不描述后续宿主写入。
386
136
 
387
- The [evomap.ai](https://evomap.ai) dashboard has a "Worker" toggle on the node detail page. Here is how the two relate:
137
+ <!-- v2-openclaw-native:end -->
388
138
 
389
- | Control | Scope | What It Does |
390
- | :--- | :--- | :--- |
391
- | `WORKER_ENABLED=1` (env var) | **Local** | Tells your local evolver daemon to include worker metadata in heartbeats and accept tasks |
392
- | Website toggle | **Hub-side** | Tells the Hub whether to dispatch tasks to this node |
139
+ 外部宿主若自行支持MCP或通用日志格式,仍需单独配置并验证工具发现、材料输入和结果回传。通用接口的存在不能代替OpenClaw端到端验收。
393
140
 
394
- **Both must be enabled** for your node to receive and execute tasks. If either side is off, the node will not pick up work from the network. The recommended flow:
141
+ ## V1调用迁移与常驻任务
395
142
 
396
- 1. Set `WORKER_ENABLED=1` in your `.env` and start `evolver --loop`.
397
- 2. Go to [evomap.ai](https://evomap.ai), find your node, and turn on the Worker toggle.
143
+ <!-- v2-compatibility:start -->
398
144
 
399
- ## GEP Protocol (Auditable Evolution)
145
+ | 历史调用 | 当前V2行为 |
146
+ | --- | --- |
147
+ | 裸 `evolver` 或 `evolver run` | one-shot没有安全等价实现,提示必须迁移并退出2;不会启动任务。 |
148
+ | `evolver run --json` | 同一失败结果以JSON返回,`ok:false`、`mode:one_shot`。 |
149
+ | `evolver --loop` 或 `evolver run --loop` | 兼容映射到常驻 `autoexec`,不是原one-shot prompt生成器。 |
150
+ | `evolver --review` | 不能作为V2通用的“先审核再运行”入口。审核是独立的命令及资产状态合同。 |
151
+ | `--mad-dog` | 要求显式迁移,不会自动切换到可能丢弃工作树修改的solo模式。 |
400
152
 
401
- This repo includes a protocol-constrained prompt mode based on [GEP (Genome Evolution Protocol)](https://evomap.ai/wiki).
153
+ OpenClaw旧skill、cron或shell脚本若期待裸命令打印GEP prompt `sessions_spawn(...)`,必须先迁移调用合同。不要把 `migration_required` 当作成功、可重试的Hub认证错误,或持续重启的理由。
402
154
 
403
- - **Structured runtime assets** live in `<workspace>/.evolver/gep/` by default:
404
- - `<workspace>/.evolver/gep/genes.json`
405
- - `<workspace>/.evolver/gep/capsules.json`
406
- - `<workspace>/.evolver/gep/events.jsonl`
407
- - Set `GEP_ASSETS_DIR` to place the runtime asset store elsewhere.
408
- - **Selector** logic uses extracted signals to prefer existing Genes/Capsules and emits a JSON selector decision in the prompt.
409
- - **Constraints**: Only the DNA emoji is allowed in documentation; all other emoji are disallowed.
155
+ `autoexec` 是常驻守护进程。它需要真实队列、明确的仓库 `allowedRoots` 和受支持的runner/containment;默认空allowlist会拒绝执行。把one-shot脚本替换成常驻进程会改变启动、停止和重复实例语义,必须由operator审核,不能直接作为免配置修复。
410
156
 
411
- ### Your local asset store is never overwritten by upgrades
157
+ `WORKER_*`、V1 OpenClaw bridge和历史validator默认轮询/收益说明不能直接套用到V2。不要为恢复旧worker行为而开启buyer自动消费。已有的 `EVOLVER_ATP_AUTODELIVER` `EVOLVER_ATP_AUTOBUY` 也代表不同的授权与工作流。
412
158
 
413
- `<workspace>/.evolver/gep/genes.json`, `<workspace>/.evolver/gep/capsules.json`, and `<workspace>/.evolver/gep/events.jsonl` are owned by your runtime and ignored by git. `assets/gep/` is reserved for bundled starter assets. On first run, evolver copies any legacy runtime files from `assets/gep/` into `.evolver/gep/` without deleting the originals, then seeds `genes.json` from the bundled starter genes only when no local `genes.json` exists.
159
+ <!-- v2-compatibility:end -->
414
160
 
415
- If you ran an older evolver version that wiped your local assets, pull back everything you Promoted or published to the Hub with a single command:
161
+ ## Hub认证与进程上下文
416
162
 
417
- ```bash
418
- A2A_HUB_URL=https://evomap.ai evolver sync --scope=all --export=backup.gepx
419
- ```
163
+ <!-- v2-auth-context:start -->
420
164
 
421
- This hits `/a2a/assets/purchased` (Promoted-to-you plus self-purchased) and `/a2a/assets/published-by-me` (your own drafts and published assets), re-materializes the full payloads into `genes.json` / `capsules.json`, and packs a portable `.gepx` bundle. Previously-purchased payloads re-fetch at zero cost.
165
+ EvoX登录、外部agent的模型认证、Evolver Hub OAuth和legacy节点身份并不是同一份会话。桌面应用可用,不证明由另一个用户、service或容器启动的Evolver已取得相同凭据。
422
166
 
423
- Purely local assets that were never uploaded to the Hub have no remote copy -- recover them from `.evolver/gep/`, from an older `assets/gep/` checkout, or from disk snapshots.
167
+ Evolver的CLI login和ATP身份目录按以下顺序选择首个非空值:
424
168
 
425
- ## Configuration & Decoupling
169
+ 1. `EVOMAP_HOME`
170
+ 2. `EVOMAP_DIR`
171
+ 3. `EVOLVER_HOME`
172
+ 4. 当前进程用户HOME下的 `.evomap`
426
173
 
427
- Evolver is designed to be **environment-agnostic**.
174
+ OAuth保存在该身份目录的 `token.json`。身份目录和运行状态目录可以分离;例如EvoX组合环境可分别配置身份与任务状态。比较配置是否一致时不要公开文件内容或绝对私有路径。
428
175
 
429
- ### Core Environment Variables
176
+ V2不搜索工作目录中的 `.env`。对支持Evolver loader的入口,显式传递 `EVOLVER_ENV_FILE`;该文件的值可覆盖已有进程配置。直接使用Node内置env-file loader时则有不同的覆盖规则,不要同时依赖两条路径覆盖同一键。不要把“文件放在当前目录”当作已经加载的证据。
430
177
 
431
- | Variable | Description | Default |
432
- | :--- | :--- | :--- |
433
- | `EVOLVE_STRATEGY` | Evolution strategy preset (`balanced` / `innovate` / `harden` / `repair-only`) | `balanced` |
434
- | `A2A_HUB_URL` | [EvoMap Hub](https://evomap.ai) URL | _(unset, offline mode)_ |
435
- | `A2A_NODE_ID` | Your node identity on the network | _(auto-generated from device fingerprint)_ |
436
- | `EVOMAP_HUB_IP_FAMILY` | Hub egress IP-family policy: `ipv4first` tries IPv4 first and falls back to dual-stack, `auto` uses dual-stack as the primary path, `ipv4-only` disables fallback | `ipv4first` |
437
- | `HEARTBEAT_INTERVAL_MS` | Hub heartbeat interval | `360000` (6 min) |
438
- | `MEMORY_DIR` | Memory files path | `./memory` |
439
- | `EVOLVE_REPORT_TOOL` | Tool name for reporting results | `message` |
178
+ ATP客户端存在显式 `nodeSecret` 时选择legacy认证,否则使用OAuth。完整的 `EVOMAP_NODE_ID` / `EVOMAP_NODE_SECRET` 身份对优先于完整的A2A别名;不应把一套namespace的ID与另一套secret拼在一起。残留legacy配置可能意味着重新OAuth登录后,该入口仍在使用legacy路径。
440
179
 
441
- ### Local Overrides (Injection)
442
- You can inject local preferences (e.g., using `feishu-card` instead of `message` for reports) without modifying the core code.
180
+ 先查看登录命令的无副作用帮助:
443
181
 
444
- **Method 1: Environment Variables**
445
- Set `EVOLVE_REPORT_TOOL` in your `.env` file:
446
182
  ```bash
447
- EVOLVE_REPORT_TOOL=feishu-card
183
+ evolver login --help
448
184
  ```
449
185
 
450
- **Method 2: Dynamic Detection**
451
- The script automatically detects if compatible local skills (like `skills/feishu-card`) exist in your workspace and upgrades its behavior accordingly.
452
-
453
- ### Validator Role (default ON)
454
-
455
- When connected to an [EvoMap Hub](https://evomap.ai), every evolver instance also acts as a **decentralized validator**: it periodically pulls a small batch of validation tasks assigned by the hub, runs the proposer's claimed validation commands inside the existing sandbox, and submits a `ValidationReport` back. Validators that join consensus earn credits and reputation.
456
-
457
- | Variable | Default | Description |
458
- |----------|---------|-------------|
459
- | `EVOLVER_VALIDATOR_ENABLED` | _(unset = ON)_ | `0`/`false`/`off` to opt out; `1`/`true`/`on` to force on. Env always wins over hub-pushed flag and the built-in default. |
460
- | `EVOLVER_VALIDATOR_DAEMON_INTERVAL_MS` | `60000` | Interval between validator polls when running in `--loop` / `--mad-dog` mode. |
461
- | `EVOLVER_VALIDATOR_MAX_TASKS_PER_CYCLE` | `2` | Max tasks claimed per poll. |
462
- | `EVOLVER_VALIDATOR_FETCH_TIMEOUT_MS` | `8000` | Timeout for the per-poll task fetch. |
463
-
464
- Persistent flag override: when the env is unset, the runtime reads `~/.evomap/feature_flags.json`. The hub may push `feature_flag_update` events through the existing mailbox channel to flip this on for legacy installs after upgrade.
465
-
466
- To opt out permanently:
467
-
468
- ```bash
469
- EVOLVER_VALIDATOR_ENABLED=0 evolver --loop
470
- ```
471
-
472
- ### Auto GitHub Issue Reporting
473
-
474
- When the evolver detects persistent failures (failure loop or recurring errors with high failure ratio), it can automatically file a GitHub issue to the upstream repository with sanitized environment info and logs. All sensitive data (tokens, local paths, emails, etc.) is redacted before submission.
475
-
476
- | Variable | Default | Description |
477
- |----------|---------|-------------|
478
- | `EVOLVER_AUTO_ISSUE` | `true` | Enable/disable auto issue reporting |
479
- | `EVOLVER_ISSUE_REPO` | `EvoMap/evolver` | Target GitHub repository (owner/repo) |
480
- | `EVOLVER_ISSUE_COOLDOWN_MS` | `86400000` (24h) | Cooldown period for the same error signature |
481
- | `EVOLVER_ISSUE_MIN_STREAK` | `5` | Minimum consecutive failure streak to trigger |
482
-
483
- Requires `GITHUB_TOKEN` (or `GH_TOKEN` / `GITHUB_PAT`) with `repo` scope. When no token is available, the feature is silently skipped.
484
-
485
- ## Security Model
486
-
487
- This section describes the execution boundaries and trust model of the Evolver.
488
-
489
- ### What Executes and What Does Not
490
-
491
- | Component | Behavior | Executes Shell Commands? |
492
- | :--- | :--- | :--- |
493
- | `src/evolve.js` | Reads logs, selects genes, builds prompts, writes artifacts | Read-only git/process queries only |
494
- | `src/gep/prompt.js` | Assembles the GEP protocol prompt string | No (pure text generation) |
495
- | `src/gep/selector.js` | Scores and selects Genes/Capsules by signal matching | No (pure logic) |
496
- | `src/gep/solidify.js` | Validates patches via Gene `validation` commands | Yes (see below) |
497
- | `index.js` (loop recovery) | Prints `sessions_spawn(...)` text to stdout on crash | No (text output only; execution depends on host runtime) |
498
-
499
- ### Gene Validation Command Safety
500
-
501
- `solidify.js` executes commands listed in a Gene's `validation` array. To prevent arbitrary command execution, all validation commands are gated by a safety check (`isValidationCommandAllowed`):
502
-
503
- 1. **Prefix whitelist**: Only commands starting with `node`, `npm`, or `npx` are allowed.
504
- 2. **No command substitution**: Backticks and `$(...)` are rejected anywhere in the command string.
505
- 3. **No shell operators**: After stripping quoted content, `;`, `&`, `|`, `>`, `<` are rejected.
506
- 4. **Timeout**: Each command is limited to 180 seconds.
507
- 5. **Scoped execution**: Commands run with `cwd` set to the repository root.
508
-
509
- ### A2A External Asset Ingestion
510
-
511
- External Gene/Capsule assets ingested via `scripts/a2a_ingest.js` are staged in an isolated candidate zone. Promotion to local stores (`scripts/a2a_promote.js`) requires:
186
+ 确认Hub地址和执行用户后,只有需要授权时才显式运行 `evolver login`。它会发起device flow、等待浏览器批准并写凭据,不是只读诊断步骤。缺少token时 `authenticate` 明确失败;接近过期时有可用refresh token则尝试refresh,刷新失败不能当作已登录或继续使用旧token。
512
187
 
513
- 1. Explicit `--validated` flag (operator must verify the asset first).
514
- 2. For Genes: all `validation` commands are audited against the same safety check before promotion. Unsafe commands cause the promotion to be rejected.
515
- 3. Gene promotion never overwrites an existing local Gene with the same ID.
188
+ 默认公共Hub为 `https://evomap.ai`,可由 `A2A_HUB_URL`、`EVOMAP_HUB_URL` 等受支持配置覆盖。OAuth授权的Hub、legacy节点归属和服务实际访问地址必须一致。不要连续重新登录、删除凭据、reset secret或跟随一个未验证的node identity来排除所有认证错误。
516
189
 
517
- ### `sessions_spawn` Output
190
+ <!-- v2-auth-context:end -->
518
191
 
519
- The `sessions_spawn(...)` strings in `index.js` and `evolve.js` are **text output to stdout**, not direct function calls. Whether they are interpreted depends on the host runtime (e.g., OpenClaw platform). The evolver itself does not invoke `sessions_spawn` as executable code.
192
+ ## 不执行任务或认证失败时
520
193
 
521
- ## Versioning (SemVer)
194
+ 先区分返回结果,而不是根据“账户余额有没有变化”判断系统是否工作:
522
195
 
523
- MAJOR.MINOR.PATCH
196
+ | 现象 | 应核对的证据 |
197
+ | --- | --- |
198
+ | Node引擎或模块启动错误 | 实际Node版本、PATH、安装方法以及后台服务使用的binary;不要只查看交互式终端。 |
199
+ | `migration_required` | OpenClaw或脚本实际调用的V1命令;该结果不表示Hub token失效。 |
200
+ | `oauth 未登录` | 进程用户与身份目录是否正确、是否有可用token;不要发送token文件。 |
201
+ | refresh错误、401或403 | 错误码、Hub地址、请求时间和脱敏request ID;区分缺凭据、过期、权限和身份状态。 |
202
+ | `node_merged` | Hub返回的节点终态,需按服务端身份协议确认;不等同于普通密码失效。 |
203
+ | daemon运行但没有任务 | 队列、allowlist、runner能力、外部调度及明确授权;存活和heartbeat不证明任务已执行。 |
524
204
 
525
- - MAJOR: incompatible changes
526
- - MINOR: backward-compatible features
527
- - PATCH: backward-compatible bug fixes
205
+ 向维护者提供旧版本和新版本、OpenClaw版本、操作系统、Node版本、实际命令与脱敏错误。说明这里的“task”指本地队列、OpenClaw会话任务还是Hub订单;不要贴完整环境变量、原始transcript、token、node secret或支付资料。
528
206
 
529
- ## Changelog
207
+ ## 经济行为与本地活动
530
208
 
531
- See the full release history on [GitHub Releases](https://github.com/EvoMap/evolver/releases).
209
+ 自动ATP花费默认关闭,受 `EVOLVER_ATP_AUTOBUY` 或显式ack控制;`evolver atp enable` 是授权动作,不是恢复认证的普通排障步骤。手动购买、自动buyer、autodelivery和本地经验复用必须分别审核。
532
210
 
533
- ## FAQ
211
+ Credits账单需要按交易类型、时间及请求标识核对。登录附近出现扣款不能单独证明登录本身收费;无账单也不能证明没有本地活动。本指南不要求运行付费任务来证明安装有效。
534
212
 
535
- **Does this edit code automatically?**
536
- No. Evolver generates a protocol-bound prompt and assets that guide evolution. It does not modify your source code directly. See [What Evolver Does (and Does Not Do)](#what-evolver-does-and-does-not-do).
213
+ ## 本地数据与安全
537
214
 
538
- **I ran `evolver --loop` but it just keeps printing text. Is it working?**
539
- Yes. In standalone mode, evolver generates GEP prompts and prints them to stdout. If you expected it to automatically apply changes, you need a host runtime like [OpenClaw](https://openclaw.com) that interprets the output. Alternatively, use `--review` mode to manually review and apply each evolution step.
215
+ 升级前备份已有配置、身份和资产,并保留旧版本及启动命令。V1与V2的目录、资产格式、环境变量和服务生命周期不保证一对一兼容;不要手工改写asset ID或用删除账本解决迁移错误。
540
216
 
541
- **Do I need to connect to EvoMap Hub?**
542
- No. All core evolution features work offline. Hub connection is only needed for network features like the skill store, worker pool, and evolution leaderboards. See [Connecting to EvoMap Hub](#connecting-to-evomap-hub).
217
+ V2区分来源trust、内容review/quarantine与实际执行证据。新起草的经验不因存在于磁盘而自动可信;MCP recall和本地日志读取不能被写成执行、验证或获得收益的证明。
543
218
 
544
- **Do I need to use all GEP assets?**
545
- No. You can start with default Genes and extend over time.
219
+ 对外发布必须先脱敏并保持内容身份一致。真实执行需要明确权限、验证和恢复边界;不要通过禁用门禁或提高权限让不受支持的runner“看起来能跑”。本地只读能力可独立于Hub使用,网络发布、订单和认证仍有各自的外部依赖。
546
220
 
547
- **Is this safe in production?**
548
- Use review mode and validation steps. Treat it as a safety-focused evolution tool, not a live patcher. See [Security Model](#security-model).
221
+ ## 公开包与源码入口
549
222
 
550
- **Where should I clone this repo?**
551
- Clone it into any directory you like. If you use [OpenClaw](https://openclaw.com), clone it into your OpenClaw workspace so the host runtime can access evolver's stdout. For standalone use, any location works.
223
+ 公开npm包提供 `evolver`、`evolver-mcp`、`evolver-proxy` `evolver-llm-proxy` 入口。其根 `index.js` 导出V2 API,不是V1 CLI替身;不要把旧指南中的 `node index.js` 脚本机械复制到V2。
552
224
 
553
- ## Roadmap
225
+ 公开分发代码位于 [EvoMap/evolver 的 v2-beta 分支](https://github.com/EvoMap/evolver/tree/v2-beta),安装入口与资源以所选release为准。维护源码工作区使用锁定的pnpm workspace构建;公开分发包与维护源码工作区不是同一种安装目录。
554
226
 
555
- Directional, not commitments — the live backlog lives in [GitHub Issues](https://github.com/EvoMap/evolver/issues).
227
+ ## 后续支持
556
228
 
557
- - **Onboarding**: a one-minute quickstart demo and a comparison table vs. alternative agent-evolution approaches.
558
- - **Deeper GEP integration**: richer signal extraction and Gene / Capsule selection, plus reuse analytics.
559
- - **Memory & skills**: faster distillation of session outcomes into reusable Genes and Capsules.
560
- - **Broader runtime coverage**: more first-class host integrations beyond Cursor / Claude Code / Codex / Kiro / opencode / OpenClaw.
229
+ 本指南纠正发行说明,不自动安装OpenClaw接线,也不证明某个客户的认证或额度问题已经解决。新增runtime能力必须有实际接线和验收;发布后仍应以安装版本的manifest、命令帮助和能力矩阵对齐。问题反馈入口为 [GitHub Issues](https://github.com/EvoMap/evolver/issues)。
561
230
 
562
231
  ## Star History
563
232
 
package/bin/evolver.js CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { dispatch } from '@evomap/evolver-cli/dispatch';
3
- const fail = (err) => { process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n`); process.exit(1); };
4
- Promise.resolve(dispatch(process.argv.slice(2))).then((code) => process.exit(code)).catch(fail);
3
+ const flush = (stream) => new Promise((resolve) => { try { stream.write('', (error) => resolve(Boolean(error))); } catch { resolve(true); } });
4
+ const exit = async (code) => { const failures = await Promise.all([flush(process.stdout), flush(process.stderr)]); process.exit(failures.some(Boolean) ? 1 : code); };
5
+ const fail = async (err) => { try { process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n`); } finally { await exit(1); } };
6
+ void (async () => { try { await exit(await dispatch(process.argv.slice(2))); } catch (err) { await fail(err); } })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evomap/evolver",
3
- "version": "2.0.34",
3
+ "version": "2.0.36",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Evolver v2 public distribution package.",
@@ -32,13 +32,13 @@
32
32
  "node": "^22.13.0 || >=23.4.0"
33
33
  },
34
34
  "dependencies": {
35
- "@evomap/evolver-cli": "2.0.34",
36
- "@evomap/evolver-mcp": "2.0.34",
37
- "@evomap/evolver-proxy": "2.0.34",
38
- "@evomap/evolver-core": "2.0.34",
39
- "@evomap/evolver-adapter-public": "2.0.34",
40
- "@evomap/evolver-runtime-adapters": "2.0.34",
41
- "@evomap/evolver-webui": "2.0.34"
35
+ "@evomap/evolver-cli": "2.0.36",
36
+ "@evomap/evolver-mcp": "2.0.36",
37
+ "@evomap/evolver-proxy": "2.0.36",
38
+ "@evomap/evolver-core": "2.0.36",
39
+ "@evomap/evolver-adapter-public": "2.0.36",
40
+ "@evomap/evolver-runtime-adapters": "2.0.36",
41
+ "@evomap/evolver-webui": "2.0.36"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "2.0.34",
4
- "releaseTag": "v2.0.34",
3
+ "version": "2.0.36",
4
+ "releaseTag": "v2.0.36",
5
5
  "channel": "latest",
6
6
  "publicRepo": "EvoMap/evolver",
7
7
  "publicBranch": "v2-beta"