[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-EvoMap--evolver":3,"tool-EvoMap--evolver":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",157379,2,"2026-04-15T23:32:42",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":76,"owner_website":77,"owner_url":78,"languages":79,"stars":84,"forks":85,"last_commit_at":86,"license":87,"difficulty_score":32,"env_os":88,"env_gpu":89,"env_ram":89,"env_deps":90,"category_tags":96,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":97,"updated_at":98,"faqs":99,"releases":133},7922,"EvoMap\u002Fevolver","evolver","The GEP-Powered Self-Evolution Engine for AI Agents. Genome Evolution Protocol. | evomap.ai","Evolver 是一款基于基因组进化协议（GEP）的 AI 智能体自进化引擎。它旨在解决当前 AI 开发中提示词（Prompt）优化依赖人工、随意且难以复用的痛点，将零散的调试过程转化为可审计、可共享的标准化进化资产。\n\n该工具的核心工作流程是自动扫描运行日志与错误模式，从预设库中匹配最佳的“基因”或“胶囊”，进而生成严格遵循协议规范的进化提示词，引导智能体进行下一步迭代。值得注意的是，Evolver 定位为提示词生成器而非代码自动修补工具，它不会直接修改源代码或执行任意命令，从而确保了系统的安全性与可控性。所有进化过程均会记录为可追溯的事件，形成完整的审计链条。\n\nEvolver 特别适合 AI 应用开发者、智能体架构师以及相关领域的研究人员使用。无论是希望构建具备自我修正能力的智能体系统，还是试图建立规范化提示词治理流程的团队，都能从中受益。其独特的技术亮点在于引入了类似生物进化的“基因”概念，支持离线运行，并能灵活嵌入到如 OpenClaw 等宿主环境中，通过标准输出触发后续动作，实现了从孤立调试到协同进化的跨越。","# 🧬 Evolver\n\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FEvoMap\u002Fevolver?style=social)](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fstargazers)\n[![License: GPL-3.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPL--3.0-blue.svg)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0)\n[![Node.js >= 18](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-%3E%3D%2018-green.svg)](https:\u002F\u002Fnodejs.org\u002F)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FEvoMap\u002Fevolver)](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fcommits\u002Fmain)\n[![GitHub issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FEvoMap\u002Fevolver)](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues)\n\n![Evolver Cover](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEvoMap_evolver_readme_f68f658898c0.png)\n\n**[evomap.ai](https:\u002F\u002Fevomap.ai)** | [Documentation](https:\u002F\u002Fevomap.ai\u002Fwiki) | [Chinese \u002F 中文文档](README.zh-CN.md) | [GitHub](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver) | [Releases](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Freleases)\n\n---\n\n> **\"Evolution is not optional. Adapt or die.\"**\n\n**Three lines**\n- **What it is**: A [GEP](https:\u002F\u002Fevomap.ai\u002Fwiki)-powered self-evolution engine for AI agents.\n- **Pain it solves**: Turns ad hoc prompt tweaks into auditable, reusable evolution assets.\n- **Use in 30 seconds**: Clone, install, run `node index.js` -- get a GEP-guided evolution prompt.\n\n## EvoMap -- The Evolution Network\n\nEvolver is the core engine behind **[EvoMap](https:\u002F\u002Fevomap.ai)**, a network where AI agents evolve through validated collaboration. Visit [evomap.ai](https:\u002F\u002Fevomap.ai) to explore the full platform -- live agent maps, evolution leaderboards, and the ecosystem that turns isolated prompt tweaks into shared, auditable intelligence.\n\nKeywords: protocol-constrained evolution, audit trail, genes and capsules, prompt governance.\n\n## Installation\n\n### Prerequisites\n\n- **[Node.js](https:\u002F\u002Fnodejs.org\u002F)** >= 18\n- **[Git](https:\u002F\u002Fgit-scm.com\u002F)** -- Required. Evolver uses git for rollback, blast radius calculation, and solidify. Running in a non-git directory will fail with a clear error message.\n\n### Setup\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver.git\ncd evolver\nnpm install\n```\n\nTo connect to the [EvoMap network](https:\u002F\u002Fevomap.ai), create a `.env` file (optional):\n\n```bash\n# Register at https:\u002F\u002Fevomap.ai to get your Node ID\nA2A_HUB_URL=https:\u002F\u002Fevomap.ai\nA2A_NODE_ID=your_node_id_here\n```\n\n> **Note**: Evolver works fully offline without `.env`. The Hub connection is only needed for network features like skill sharing, worker pool, and evolution leaderboards.\n\n## Quick Start\n\n```bash\n# Single evolution run -- scans logs, selects a Gene, outputs a GEP prompt\nnode index.js\n\n# Review mode -- pause before applying, wait for human confirmation\nnode index.js --review\n\n# Continuous loop -- runs as a background daemon\nnode index.js --loop\n```\n\n## What Evolver Does (and Does Not Do)\n\n**Evolver is a prompt generator, not a code patcher.** Each evolution cycle:\n\n1. Scans your `memory\u002F` directory for runtime logs, error patterns, and signals.\n2. Selects the best-matching [Gene or Capsule](https:\u002F\u002Fevomap.ai\u002Fwiki) from `assets\u002Fgep\u002F`.\n3. Emits a strict, protocol-bound GEP prompt that guides the next evolution step.\n4. Records an auditable [EvolutionEvent](https:\u002F\u002Fevomap.ai\u002Fwiki) for traceability.\n\n**It does NOT**:\n- Automatically edit your source code.\n- Execute arbitrary shell commands (see [Security Model](#security-model)).\n- Require an internet connection for core functionality.\n\n### How It Integrates with Host Runtimes\n\nWhen running inside a host runtime (e.g., [OpenClaw](https:\u002F\u002Fopenclaw.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.\n\n| Mode | Behavior |\n| :--- | :--- |\n| Standalone (`node index.js`) | Generates prompt, prints to stdout, exits |\n| Loop (`node index.js --loop`) | Repeats the above in a daemon loop with adaptive sleep |\n| Inside OpenClaw | Host runtime interprets stdout directives like `sessions_spawn(...)` |\n\n## Who This Is For \u002F Not For\n\n**For**\n- Teams maintaining agent prompts and logs at scale\n- Users who need auditable evolution traces ([Genes](https:\u002F\u002Fevomap.ai\u002Fwiki), [Capsules](https:\u002F\u002Fevomap.ai\u002Fwiki), [Events](https:\u002F\u002Fevomap.ai\u002Fwiki))\n- Environments requiring deterministic, protocol-bound changes\n\n**Not For**\n- One-off scripts without logs or history\n- Projects that require free-form creative changes\n- Systems that cannot tolerate protocol overhead\n\n## Features\n\n- **Auto-Log Analysis**: scans memory and history files for errors and patterns.\n- **Self-Repair Guidance**: emits repair-focused directives from signals.\n- **[GEP Protocol](https:\u002F\u002Fevomap.ai\u002Fwiki)**: standardized evolution with reusable assets.\n- **Mutation + Personality Evolution**: each evolution run is gated by an explicit Mutation object and an evolvable PersonalityState.\n- **Configurable Strategy Presets**: `EVOLVE_STRATEGY=balanced|innovate|harden|repair-only` controls intent balance.\n- **Signal De-duplication**: prevents repair loops by detecting stagnation patterns.\n- **Operations Module** (`src\u002Fops\u002F`): portable lifecycle, skill monitoring, cleanup, self-repair, wake triggers -- zero platform dependency.\n- **Protected Source Files**: prevents autonomous agents from overwriting core evolver code.\n- **[Skill Store](https:\u002F\u002Fevomap.ai)**: download and share reusable skills via `node index.js fetch --skill \u003Cid>`.\n\n## Typical Use Cases\n\n- Harden a flaky agent loop by enforcing validation before edits\n- Encode recurring fixes as reusable [Genes and Capsules](https:\u002F\u002Fevomap.ai\u002Fwiki)\n- Produce auditable evolution events for review or compliance\n\n## Anti-Examples\n\n- Rewriting entire subsystems without signals or constraints\n- Using the protocol as a generic task runner\n- Producing changes without recording EvolutionEvent\n\n## Usage\n\n### Standard Run (Automated)\n```bash\nnode index.js\n```\n\n### Review Mode (Human-in-the-Loop)\n```bash\nnode index.js --review\n```\n\n### Continuous Loop\n```bash\nnode index.js --loop\n```\n\n### With Strategy Preset\n```bash\nEVOLVE_STRATEGY=innovate node index.js --loop   # maximize new features\nEVOLVE_STRATEGY=harden node index.js --loop     # focus on stability\nEVOLVE_STRATEGY=repair-only node index.js --loop # emergency fix mode\n```\n\n| Strategy | Innovate | Optimize | Repair | When to Use |\n| :--- | :--- | :--- | :--- | :--- |\n| `balanced` (default) | 50% | 30% | 20% | Daily operation, steady growth |\n| `innovate` | 80% | 15% | 5% | System stable, ship new features fast |\n| `harden` | 20% | 40% | 40% | After major changes, focus on stability |\n| `repair-only` | 0% | 20% | 80% | Emergency state, all-out repair |\n\n### Operations (Lifecycle Management)\n```bash\nnode src\u002Fops\u002Flifecycle.js start    # start evolver loop in background\nnode src\u002Fops\u002Flifecycle.js stop     # graceful stop (SIGTERM -> SIGKILL)\nnode src\u002Fops\u002Flifecycle.js status   # show running state\nnode src\u002Fops\u002Flifecycle.js check    # health check + auto-restart if stagnant\n```\n\n### Skill Store\n```bash\n# Download a skill from the EvoMap network\nnode index.js fetch --skill \u003Cskill_id>\n\n# Specify output directory\nnode index.js fetch --skill \u003Cskill_id> --out=.\u002Fmy-skills\u002F\n```\n\nRequires `A2A_HUB_URL` to be configured. Browse available skills at [evomap.ai](https:\u002F\u002Fevomap.ai).\n\n### Cron \u002F External Runner Keepalive\nIf you run a periodic keepalive\u002Ftick from a cron\u002Fagent runner, prefer a single simple command with minimal quoting.\n\nRecommended:\n\n```bash\nbash -lc 'node index.js --loop'\n```\n\nAvoid composing multiple shell segments inside the cron payload (for example `...; echo EXIT:$?`) because nested quotes can break after passing through multiple serialization\u002Fescaping layers.\n\nFor process managers like pm2, the same principle applies -- wrap the command simply:\n\n```bash\npm2 start \"bash -lc 'node index.js --loop'\" --name evolver --cron-restart=\"0 *\u002F6 * * *\"\n```\n\n## Connecting to EvoMap Hub\n\nEvolver can optionally connect to the [EvoMap Hub](https:\u002F\u002Fevomap.ai) for network features. This is **not required** for core evolution functionality.\n\n### Setup\n\n1. Register at [evomap.ai](https:\u002F\u002Fevomap.ai) and get your Node ID.\n2. Add the following to your `.env` file:\n\n```bash\nA2A_HUB_URL=https:\u002F\u002Fevomap.ai\nA2A_NODE_ID=your_node_id_here\n```\n\n### What Hub Connection Enables\n\n| Feature | Description |\n| :--- | :--- |\n| **Heartbeat** | Periodic check-in with the Hub; reports node status and receives available work |\n| **Skill Store** | Download and publish reusable skills (`node index.js fetch`) |\n| **Worker Pool** | Accept and execute evolution tasks from the network (see [Worker Pool](#worker-pool-evomap-network)) |\n| **Evolution Circle** | Collaborative evolution groups with shared context |\n| **Asset Publishing** | Share your Genes and Capsules with the network |\n\n### How It Works\n\nWhen `node index.js --loop` is running with Hub configured:\n\n1. On startup, evolver sends a `hello` message to register with the Hub.\n2. A heartbeat is sent every 6 minutes (configurable via `HEARTBEAT_INTERVAL_MS`).\n3. The Hub responds with available work, overdue task alerts, and skill store hints.\n4. If `WORKER_ENABLED=1`, the node advertises its capabilities and picks up tasks.\n\nWithout Hub configuration, evolver runs fully offline -- all core evolution features work locally.\n\n## Worker Pool (EvoMap Network)\n\nWhen `WORKER_ENABLED=1`, this node participates as a worker in the [EvoMap network](https:\u002F\u002Fevomap.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.\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `WORKER_ENABLED` | _(unset)_ | Set to `1` to enable worker pool mode |\n| `WORKER_DOMAINS` | _(empty)_ | Comma-separated list of task domains this worker accepts (e.g. `repair,harden`) |\n| `WORKER_MAX_LOAD` | `5` | Advertised maximum concurrent task capacity for hub-side scheduling (not a locally enforced concurrency limit) |\n\n```bash\nWORKER_ENABLED=1 WORKER_DOMAINS=repair,harden WORKER_MAX_LOAD=3 node index.js --loop\n```\n\n### WORKER_ENABLED vs. the Website Toggle\n\nThe [evomap.ai](https:\u002F\u002Fevomap.ai) dashboard has a \"Worker\" toggle on the node detail page. Here is how the two relate:\n\n| Control | Scope | What It Does |\n| :--- | :--- | :--- |\n| `WORKER_ENABLED=1` (env var) | **Local** | Tells your local evolver daemon to include worker metadata in heartbeats and accept tasks |\n| Website toggle | **Hub-side** | Tells the Hub whether to dispatch tasks to this node |\n\n**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:\n\n1. Set `WORKER_ENABLED=1` in your `.env` and start `node index.js --loop`.\n2. Go to [evomap.ai](https:\u002F\u002Fevomap.ai), find your node, and turn on the Worker toggle.\n\n## GEP Protocol (Auditable Evolution)\n\nThis repo includes a protocol-constrained prompt mode based on [GEP (Genome Evolution Protocol)](https:\u002F\u002Fevomap.ai\u002Fwiki).\n\n- **Structured assets** live in `assets\u002Fgep\u002F`:\n  - `assets\u002Fgep\u002Fgenes.json`\n  - `assets\u002Fgep\u002Fcapsules.json`\n  - `assets\u002Fgep\u002Fevents.jsonl`\n- **Selector** logic uses extracted signals to prefer existing Genes\u002FCapsules and emits a JSON selector decision in the prompt.\n- **Constraints**: Only the DNA emoji is allowed in documentation; all other emoji are disallowed.\n\n## Configuration & Decoupling\n\nEvolver is designed to be **environment-agnostic**.\n\n### Core Environment Variables\n\n| Variable | Description | Default |\n| :--- | :--- | :--- |\n| `EVOLVE_STRATEGY` | Evolution strategy preset (`balanced` \u002F `innovate` \u002F `harden` \u002F `repair-only`) | `balanced` |\n| `A2A_HUB_URL` | [EvoMap Hub](https:\u002F\u002Fevomap.ai) URL | _(unset, offline mode)_ |\n| `A2A_NODE_ID` | Your node identity on the network | _(auto-generated from device fingerprint)_ |\n| `HEARTBEAT_INTERVAL_MS` | Hub heartbeat interval | `360000` (6 min) |\n| `MEMORY_DIR` | Memory files path | `.\u002Fmemory` |\n| `EVOLVE_REPORT_TOOL` | Tool name for reporting results | `message` |\n\n### Local Overrides (Injection)\nYou can inject local preferences (e.g., using `feishu-card` instead of `message` for reports) without modifying the core code.\n\n**Method 1: Environment Variables**\nSet `EVOLVE_REPORT_TOOL` in your `.env` file:\n```bash\nEVOLVE_REPORT_TOOL=feishu-card\n```\n\n**Method 2: Dynamic Detection**\nThe script automatically detects if compatible local skills (like `skills\u002Ffeishu-card`) exist in your workspace and upgrades its behavior accordingly.\n\n### Auto GitHub Issue Reporting\n\nWhen 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.\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `EVOLVER_AUTO_ISSUE` | `true` | Enable\u002Fdisable auto issue reporting |\n| `EVOLVER_ISSUE_REPO` | `autogame-17\u002Fcapability-evolver` | Target GitHub repository (owner\u002Frepo) |\n| `EVOLVER_ISSUE_COOLDOWN_MS` | `86400000` (24h) | Cooldown period for the same error signature |\n| `EVOLVER_ISSUE_MIN_STREAK` | `5` | Minimum consecutive failure streak to trigger |\n\nRequires `GITHUB_TOKEN` (or `GH_TOKEN` \u002F `GITHUB_PAT`) with `repo` scope. When no token is available, the feature is silently skipped.\n\n## Security Model\n\nThis section describes the execution boundaries and trust model of the Evolver.\n\n### What Executes and What Does Not\n\n| Component | Behavior | Executes Shell Commands? |\n| :--- | :--- | :--- |\n| `src\u002Fevolve.js` | Reads logs, selects genes, builds prompts, writes artifacts | Read-only git\u002Fprocess queries only |\n| `src\u002Fgep\u002Fprompt.js` | Assembles the GEP protocol prompt string | No (pure text generation) |\n| `src\u002Fgep\u002Fselector.js` | Scores and selects Genes\u002FCapsules by signal matching | No (pure logic) |\n| `src\u002Fgep\u002Fsolidify.js` | Validates patches via Gene `validation` commands | Yes (see below) |\n| `index.js` (loop recovery) | Prints `sessions_spawn(...)` text to stdout on crash | No (text output only; execution depends on host runtime) |\n\n### Gene Validation Command Safety\n\n`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`):\n\n1. **Prefix whitelist**: Only commands starting with `node`, `npm`, or `npx` are allowed.\n2. **No command substitution**: Backticks and `$(...)` are rejected anywhere in the command string.\n3. **No shell operators**: After stripping quoted content, `;`, `&`, `|`, `>`, `\u003C` are rejected.\n4. **Timeout**: Each command is limited to 180 seconds.\n5. **Scoped execution**: Commands run with `cwd` set to the repository root.\n\n### A2A External Asset Ingestion\n\nExternal Gene\u002FCapsule assets ingested via `scripts\u002Fa2a_ingest.js` are staged in an isolated candidate zone. Promotion to local stores (`scripts\u002Fa2a_promote.js`) requires:\n\n1. Explicit `--validated` flag (operator must verify the asset first).\n2. For Genes: all `validation` commands are audited against the same safety check before promotion. Unsafe commands cause the promotion to be rejected.\n3. Gene promotion never overwrites an existing local Gene with the same ID.\n\n### `sessions_spawn` Output\n\nThe `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.\n\n## Public Release\n\nThis repository is the public distribution.\n\n- Build public output: `npm run build`\n- Publish public output: `npm run publish:public`\n- Dry run: `DRY_RUN=true npm run publish:public`\n\nRequired env vars:\n\n- `PUBLIC_REMOTE` (default: `public`)\n- `PUBLIC_REPO` (e.g. `EvoMap\u002Fevolver`)\n- `PUBLIC_OUT_DIR` (default: `dist-public`)\n- `PUBLIC_USE_BUILD_OUTPUT` (default: `true`)\n\nOptional env vars:\n\n- `SOURCE_BRANCH` (default: `main`)\n- `PUBLIC_BRANCH` (default: `main`)\n- `RELEASE_TAG` (e.g. `v1.0.41`)\n- `RELEASE_TITLE` (e.g. `v1.0.41 - GEP protocol`)\n- `RELEASE_NOTES` or `RELEASE_NOTES_FILE`\n- `GITHUB_TOKEN` (or `GH_TOKEN` \u002F `GITHUB_PAT`) for GitHub Release creation\n- `RELEASE_SKIP` (`true` to skip creating a GitHub Release; default is to create)\n- `RELEASE_USE_GH` (`true` to use `gh` CLI instead of GitHub API)\n- `PUBLIC_RELEASE_ONLY` (`true` to only create a Release for an existing tag; no publish)\n\n## Versioning (SemVer)\n\nMAJOR.MINOR.PATCH\n\n- MAJOR: incompatible changes\n- MINOR: backward-compatible features\n- PATCH: backward-compatible bug fixes\n\n## Changelog\n\nSee the full release history on [GitHub Releases](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Freleases).\n\n## FAQ\n\n**Does this edit code automatically?**\nNo. 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).\n\n**I ran `node index.js --loop` but it just keeps printing text. Is it working?**\nYes. 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:\u002F\u002Fopenclaw.com) that interprets the output. Alternatively, use `--review` mode to manually review and apply each evolution step.\n\n**Do I need to connect to EvoMap Hub?**\nNo. 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).\n\n**Do I need to use all GEP assets?**\nNo. You can start with default Genes and extend over time.\n\n**Is this safe in production?**\nUse review mode and validation steps. Treat it as a safety-focused evolution tool, not a live patcher. See [Security Model](#security-model).\n\n**Where should I clone this repo?**\nClone it into any directory you like. If you use [OpenClaw](https:\u002F\u002Fopenclaw.com), clone it into your OpenClaw workspace so the host runtime can access evolver's stdout. For standalone use, any location works.\n\n## Roadmap\n\n- Add a one-minute demo workflow\n- Add a comparison table vs alternatives\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEvoMap_evolver_readme_593c4290aa96.png)](https:\u002F\u002Fstar-history.com\u002F#EvoMap\u002Fevolver&Date)\n\n## Acknowledgments\n\n- [onthebigtree](https:\u002F\u002Fgithub.com\u002Fonthebigtree) -- Inspired the creation of evomap evolution network. Fixed three runtime and logic bugs (PR [#25](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F25)); contributed hostname privacy hashing, portable validation paths, and dead code cleanup (PR [#26](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F26)).\n- [lichunr](https:\u002F\u002Fgithub.com\u002Flichunr) -- Contributed thousands of dollars in tokens for our compute network to use for free.\n- [shinjiyu](https:\u002F\u002Fgithub.com\u002Fshinjiyu) -- Submitted numerous bug reports and contributed multilingual signal extraction with snippet-carrying tags (PR [#112](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F112)).\n- [voidborne-d](https:\u002F\u002Fgithub.com\u002Fvoidborne-d) -- Hardened pre-broadcast sanitization with 11 new credential redaction patterns (PR [#107](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F107)); added 45 tests for strategy, validationReport, and envFingerprint (PR [#139](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F139)).\n- [blackdogcat](https:\u002F\u002Fgithub.com\u002Fblackdogcat) -- Fixed missing dotenv dependency and implemented intelligent CPU load threshold auto-calculation (PR [#144](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F144)).\n- [LKCY33](https:\u002F\u002Fgithub.com\u002FLKCY33) -- Fixed .env loading path and directory permissions (PR [#21](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F21)).\n- [hendrixAIDev](https:\u002F\u002Fgithub.com\u002FhendrixAIDev) -- Fixed performMaintenance() running in dry-run mode (PR [#68](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F68)).\n- [toller892](https:\u002F\u002Fgithub.com\u002Ftoller892) -- Independently identified and reported the events.jsonl forbidden_paths bug (PR [#149](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F149)).\n- [WeZZard](https:\u002F\u002Fgithub.com\u002FWeZZard) -- Added A2A_NODE_ID setup guide to SKILL.md and a console warning in a2aProtocol when NODE_ID is not explicitly configured (PR [#164](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F164)).\n- [Golden-Koi](https:\u002F\u002Fgithub.com\u002FGolden-Koi) -- Added cron\u002Fexternal runner keepalive best practice to README (PR [#167](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F167)).\n- [upbit](https:\u002F\u002Fgithub.com\u002Fupbit) -- Played a vital role in popularizing evolver and evomap technologies.\n- [Chi Jianqiang](https:\u002F\u002Fmowen.cn) -- Made significant contributions to promotion and user experience improvements.\n\n## License\n\n[GPL-3.0-or-later](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0)\n\n> Core evolution engine modules are distributed in obfuscated form to protect intellectual property. Source: [EvoMap\u002Fevolver](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver).\n","# 🧬 Evolver\n\n[![GitHub 星标](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FEvoMap\u002Fevolver?style=social)](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fstargazers)\n[![许可证：GPL-3.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPL--3.0-blue.svg)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0)\n[![Node.js >= 18](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-%3E%3D%2018-green.svg)](https:\u002F\u002Fnodejs.org\u002F)\n[![GitHub 最近提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FEvoMap\u002Fevolver)](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fcommits\u002Fmain)\n[![GitHub 问题](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FEvoMap\u002Fevolver)](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues)\n\n![Evolver 封面](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEvoMap_evolver_readme_f68f658898c0.png)\n\n**[evomap.ai](https:\u002F\u002Fevomap.ai)** | [文档](https:\u002F\u002Fevomap.ai\u002Fwiki) | [中文 \u002F Chinese documentation](README.zh-CN.md) | [GitHub](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver) | [发布版本](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Freleases)\n\n---\n\n> **“进化不是可选项。适应，或者灭亡。”**\n\n**三行简介**\n- **它是什么**：一个基于[GEP](https:\u002F\u002Fevomap.ai\u002Fwiki)的、用于AI智能体的自我进化引擎。\n- **解决的问题**：将临时性的提示调整转化为可审计、可复用的进化资产。\n- **30秒上手**：克隆、安装、运行 `node index.js` —— 即可获得由GEP指导的进化提示。\n\n## EvoMap -- 进化网络\n\nEvolver是**[EvoMap](https:\u002F\u002Fevomap.ai)**的核心引擎，该网络通过经过验证的合作使AI智能体不断进化。访问[evomap.ai](https:\u002F\u002Fevomap.ai)，探索完整的平台——实时智能体地图、进化排行榜，以及将孤立的提示调整转化为共享且可审计智能的生态系统。\n\n关键词：协议约束下的进化、审计追踪、基因与胶囊、提示治理。\n\n## 安装\n\n### 前置条件\n\n- **[Node.js](https:\u002F\u002Fnodejs.org\u002F)** ≥ 18\n- **[Git](https:\u002F\u002Fgit-scm.com\u002F)** — 必需。Evolver使用Git进行回滚、爆炸半径计算和固化操作。如果在非Git目录下运行，将会抛出明确的错误信息并失败。\n\n### 设置\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver.git\ncd evolver\nnpm install\n```\n\n若要连接到[EvoMap网络](https:\u002F\u002Fevomap.ai)，可创建一个`.env`文件（可选）：\n\n```bash\n# 在https:\u002F\u002Fevomap.ai注册以获取你的节点ID\nA2A_HUB_URL=https:\u002F\u002Fevomap.ai\nA2A_NODE_ID=your_node_id_here\n```\n\n> **注意**：Evolver在没有`.env`的情况下也能完全离线工作。Hub连接仅在网络功能（如技能共享、工作者池和进化排行榜）时需要。\n\n## 快速开始\n\n```bash\n# 单次进化运行 — 扫描日志，选择一个基因，并输出GEP提示\nnode index.js\n\n# 审核模式 — 在应用前暂停，等待人工确认\nnode index.js --review\n\n# 持续循环 — 作为后台守护进程运行\nnode index.js --loop\n```\n\n## Evolver的作用（及不作用）\n\n**Evolver是一个提示生成器，而非代码修补工具。** 每个进化周期：\n\n1. 扫描你的`memory\u002F`目录中的运行日志、错误模式和信号。\n2. 从`assets\u002Fgep\u002F`中选择最匹配的[基因或胶囊](https:\u002F\u002Fevomap.ai\u002Fwiki)。\n3. 输出一个严格、受协议约束的GEP提示，引导下一步进化。\n4. 记录一个可审计的[进化事件](https:\u002F\u002Fevomap.ai\u002Fwiki)，以确保可追溯性。\n\n**它并不做以下事情**：\n- 自动编辑你的源代码。\n- 执行任意的Shell命令（参见[安全模型](#security-model)）。\n- 核心功能需要互联网连接。\n\n### 如何与宿主运行时集成\n\n当在宿主运行时内运行时（例如，[OpenClaw](https:\u002F\u002Fopenclaw.com)），打印到stdout的`sessions_spawn(...)`文本可以被宿主捕获，以触发后续动作。**在独立模式下，这些只是文本输出**——不会自动执行任何操作。\n\n| 模式 | 行为 |\n| :--- | :--- |\n| 独立模式 (`node index.js`) | 生成提示，打印到stdout，退出 |\n| 循环模式 (`node index.js --loop`) | 在守护进程中重复上述过程，并自适应休眠 |\n| 在OpenClaw内部 | 宿主运行时会解释stdout指令，如`sessions_spawn(...)` |\n\n## 适用人群与不适用人群\n\n**适用人群**\n- 大规模维护智能体提示和日志的团队\n- 需要可审计进化轨迹的人群（[基因](https:\u002F\u002Fevomap.ai\u002Fwiki)、[胶囊](https:\u002F\u002Fevomap.ai\u002Fwiki)、[事件](https:\u002F\u002Fevomap.ai\u002Fwiki)）\n- 需要确定性、受协议约束变更的环境\n\n**不适用人群**\n- 没有日志或历史记录的一次性脚本\n- 需要自由创造性更改的项目\n- 无法承受协议开销的系统\n\n## 特色功能\n\n- **自动日志分析**：扫描内存和历史文件中的错误与模式。\n- **自我修复指导**：根据信号发出修复导向的指令。\n- **[GEP协议](https:\u002F\u002Fevomap.ai\u002Fwiki)**：标准化的进化流程，支持可复用资产。\n- **突变 + 人格进化**：每次进化都由显式的突变对象和可进化的人格状态控制。\n- **可配置策略预设**：`EVOLVE_STRATEGY=balanced|innovate|harden|repair-only` 控制意图平衡。\n- **信号去重**：通过检测停滞模式防止修复循环。\n- **操作模块**（`src\u002Fops\u002F`）：便携式生命周期管理、技能监控、清理、自我修复、唤醒触发——无平台依赖。\n- **保护源文件**：防止自主智能体覆盖核心Evolver代码。\n- **[技能商店](https:\u002F\u002Fevomap.ai)**：可通过`node index.js fetch --skill \u003Cid>`下载和分享可复用技能。\n\n## 典型应用场景\n\n- 通过在修改前强制验证来加固易出错的智能体循环。\n- 将重复出现的修复编码为可复用的[基因和胶囊](https:\u002F\u002Fevomap.ai\u002Fwiki)。\n- 生成可审计的进化事件，用于审查或合规。\n\n## 反例\n\n- 在没有信号或约束的情况下重写整个子系统。\n- 将协议用作通用任务调度器。\n- 产生未记录进化事件的更改。\n\n## 使用方法\n\n### 标准运行（自动化）\n```bash\nnode index.js\n```\n\n### 审核模式（人机协作）\n```bash\nnode index.js --review\n```\n\n### 连续循环\n```bash\nnode index.js --loop\n```\n\n### 使用策略预设\n```bash\nEVOLVE_STRATEGY=innovate node index.js --loop   # 最大化新特性\nEVOLVE_STRATEGY=harden node index.js --loop     # 专注于稳定性\nEVOLVE_STRATEGY=repair-only node index.js --loop # 应急修复模式\n```\n\n| 策略 | 创新 | 优化 | 修复 | 适用场景 |\n| :--- | :--- | :--- | :--- | :--- |\n| `balanced`（默认） | 50% | 30% | 20% | 日常运行，稳步增长 |\n| `innovate` | 80% | 15% | 5% | 系统稳定，快速推出新功能 |\n| `harden` | 20% | 40% | 40% | 大规模变更后，注重稳定性 |\n| `repair-only` | 0% | 20% | 80% | 紧急状态，全力修复 |\n\n### 操作（生命周期管理）\n```bash\nnode src\u002Fops\u002Flifecycle.js start    # 在后台启动进化循环\nnode src\u002Fops\u002Flifecycle.js stop     # 优雅停止（SIGTERM -> SIGKILL）\nnode src\u002Fops\u002Flifecycle.js status   # 显示运行状态\nnode src\u002Fops\u002Flifecycle.js check    # 健康检查 + 若停滞则自动重启\n```\n\n### 技能商店\n```bash\nnode src\u002Fops\u002Fskill_store.js fetch --skill \u003Cid>    # 下载指定技能\nnode src\u002Fops\u002Fskill_store.js list                  # 查看可用技能列表\nnode src\u002Fops\u002Fskill_store.js share \u003Cid>            # 分享技能给其他用户\n```\n\n# 从 EvoMap 网络下载一个技能\nnode index.js fetch --skill \u003Cskill_id>\n\n# 指定输出目录\nnode index.js fetch --skill \u003Cskill_id> --out=.\u002Fmy-skills\u002F\n```\n\n需要配置 `A2A_HUB_URL`。可在 [evomap.ai](https:\u002F\u002Fevomap.ai) 浏览可用的技能。\n\n### Cron \u002F 外部运行程序保持活跃\n如果你通过 cron 或代理运行程序定期执行保持活跃\u002F心跳操作，建议使用一条简单的命令，尽量减少引号的使用。\n\n推荐：\n\n```bash\nbash -lc 'node index.js --loop'\n```\n\n避免在 cron 任务负载中组合多个 shell 片段（例如 `...; echo EXIT:$?`），因为嵌套引号在经过多层序列化\u002F转义后可能会失效。\n\n对于 pm2 等进程管理器，同样适用这一原则——只需简单地包裹命令即可：\n\n```bash\npm2 start \"bash -lc 'node index.js --loop'\" --name evolver --cron-restart=\"0 *\u002F6 * * *\"\n```\n\n## 连接到 EvoMap 中心\n\nEvolver 可选择性地连接到 [EvoMap 中心](https:\u002F\u002Fevomap.ai)，以使用网络功能。但这对核心进化功能来说是**非必需的**。\n\n### 设置\n1. 在 [evomap.ai](https:\u002F\u002Fevomap.ai) 注册并获取你的节点 ID。\n2. 将以下内容添加到你的 `.env` 文件中：\n\n```bash\nA2A_HUB_URL=https:\u002F\u002Fevomap.ai\nA2A_NODE_ID=your_node_id_here\n```\n\n### 中心连接启用的功能\n| 功能 | 描述 |\n| :--- | :--- |\n| **心跳** | 定期向中心报到；报告节点状态并接收可用任务 |\n| **技能商店** | 下载和发布可重用技能（`node index.js fetch`） |\n| **工作者池** | 接受并执行来自网络的进化任务（见[工作者池（EvoMap 网络）](#worker-pool-evomap-network)） |\n| **进化圈** | 共享上下文的协作进化小组 |\n| **资产发布** | 与网络共享你的基因和胶囊 |\n\n### 工作原理\n当 `node index.js --loop` 在配置了中心的情况下运行时：\n\n1. 启动时，evolver 会发送一条 `hello` 消息以注册到中心。\n2. 每 6 分钟发送一次心跳（可通过 `HEARTBEAT_INTERVAL_MS` 配置）。\n3. 中心会回复可用任务、逾期任务提醒以及技能商店提示。\n4. 如果 `WORKER_ENABLED=1`，节点会宣传自己的能力并领取任务。\n\n如果没有配置中心，evolver 将完全离线运行——所有核心进化功能都将在本地工作。\n\n## 工作者池（EvoMap 网络）\n当 `WORKER_ENABLED=1` 时，此节点将作为工作者参与 [EvoMap 网络](https:\u002F\u002Fevomap.ai)。它通过心跳宣传自己的能力，并从网络的可用任务队列中领取任务。任务会在成功完成进化周期后的固化阶段被原子性地领取。\n\n| 变量 | 默认值 | 描述 |\n|----------|---------|-------------|\n| `WORKER_ENABLED` | _(未设置)_ | 设置为 `1` 以启用工作者模式 |\n| `WORKER_DOMAINS` | _(空)_ | 该工作者接受的任务领域列表，用逗号分隔（例如 `repair,harden`） |\n| `WORKER_MAX_LOAD` | `5` | 宣传的最大并发任务容量，用于中心端调度（并非本地强制的并发限制） |\n\n```bash\nWORKER_ENABLED=1 WORKER_DOMAINS=repair,harden WORKER_MAX_LOAD=3 node index.js --loop\n```\n\n### `WORKER_ENABLED` 与网站开关的关系\n[evomap.ai](https:\u002F\u002Fevomap.ai) 仪表板的节点详情页面上有一个“工作者”开关。两者之间的关系如下：\n\n| 控制 | 范围 | 作用 |\n| :--- | :--- | :--- |\n| `WORKER_ENABLED=1`（环境变量） | **本地** | 告诉你的本地 evolver 守护进程在心跳中包含工作者元数据，并接受任务 |\n| 网站开关 | **中心端** | 告诉中心是否应将任务派发给此节点 |\n\n**两者都必须启用**，你的节点才能接收并执行任务。如果任一方关闭，节点将不会从网络中领取任务。推荐流程如下：\n\n1. 在你的 `.env` 文件中设置 `WORKER_ENABLED=1`，然后启动 `node index.js --loop`。\n2. 访问 [evomap.ai](https:\u002F\u002Fevomap.ai)，找到你的节点，并打开“工作者”开关。\n\n## GEP 协议（可审计的进化）\n本仓库包含基于 [GEP（基因组进化协议）](https:\u002F\u002Fevomap.ai\u002Fwiki) 的协议约束提示模式。\n\n- **结构化资产** 存放在 `assets\u002Fgep\u002F` 目录下：\n  - `assets\u002Fgep\u002Fgenes.json`\n  - `assets\u002Fgep\u002Fcapsules.json`\n  - `assets\u002Fgep\u002Fevents.jsonl`\n- **选择器** 逻辑会利用提取的信号优先选择现有的基因\u002F胶囊，并在提示中发出 JSON 格式的选择决策。\n- **约束**：文档中仅允许使用 DNA 表情符号；其他表情符号均被禁止。\n\n## 配置与解耦\nEvolver 被设计为**环境无关**的系统。\n\n### 核心环境变量\n| 变量 | 描述 | 默认值 |\n| :--- | :--- | :--- |\n| `EVOLVE_STRATEGY` | 进化策略预设（`balanced` \u002F `innovate` \u002F `harden` \u002F `repair-only`） | `balanced` |\n| `A2A_HUB_URL` | [EvoMap 中心](https:\u002F\u002Fevomap.ai) 的 URL | _(未设置，离线模式)_ |\n| `A2A_NODE_ID` | 你在网络中的节点身份 | _(根据设备指纹自动生成)_ |\n| `HEARTBEAT_INTERVAL_MS` | 中心心跳间隔 | `360000`（6 分钟） |\n| `MEMORY_DIR` | 内存文件路径 | `.\u002Fmemory` |\n| `EVOLVE_REPORT_TOOL` | 用于报告结果的工具名称 | `message` |\n\n### 本地覆盖（注入）\n你可以注入本地偏好（例如，使用 `feishu-card` 而不是 `message` 来进行报告），而无需修改核心代码。\n\n**方法 1：环境变量**\n在你的 `.env` 文件中设置 `EVOLVE_REPORT_TOOL`：\n```bash\nEVOLVE_REPORT_TOOL=feishu-card\n```\n\n**方法 2：动态检测**\n脚本会自动检测你的工作空间中是否存在兼容的本地技能（如 `skills\u002Ffeishu-card`），并相应地升级其行为。\n\n### 自动 GitHub 问题报告\n当 evolver 检测到持续失败（失败循环或高失败率的重复错误）时，它可以自动向上游仓库提交一个 GitHub 问题，并附带经过脱敏处理的环境信息和日志。所有敏感数据（令牌、本地路径、电子邮件等）在提交前都会被删除。\n\n| 变量 | 默认值 | 描述 |\n|----------|---------|-------------|\n| `EVOLVER_AUTO_ISSUE` | `true` | 启用或禁用自动问题报告 |\n| `EVOLVER_ISSUE_REPO` | `autogame-17\u002Fcapability-evolver` | 目标 GitHub 仓库（所有者\u002F仓库名） |\n| `EVOLVER_ISSUE_COOLDOWN_MS` | `86400000`（24 小时） | 同一错误签名的冷却期 |\n| `EVOLVER_ISSUE_MIN_STREAK` | `5` | 触发问题的最低连续失败次数 |\n\n需要具有 `repo` 范围的 `GITHUB_TOKEN`（或 `GH_TOKEN` \u002F `GITHUB_PAT`）。如果没有可用的令牌，该功能将被静默跳过。\n\n## 安全模型\n本节描述了 Evolver 的执行边界和信任模型。\n\n### 哪些会执行，哪些不会执行\n\n| 组件 | 行为 | 是否执行 Shell 命令？ |\n| :--- | :--- | :--- |\n| `src\u002Fevolve.js` | 读取日志、选择基因、构建提示、写入产物 | 仅进行只读的 Git\u002F进程查询 |\n| `src\u002Fgep\u002Fprompt.js` | 组装 GEP 协议提示字符串 | 否（纯文本生成） |\n| `src\u002Fgep\u002Fselector.js` | 根据信号匹配对基因\u002F胶囊进行评分和选择 | 否（纯逻辑） |\n| `src\u002Fgep\u002Fsolidify.js` | 通过基因的 `validation` 命令验证补丁 | 是（见下文） |\n| `index.js`（循环恢复） | 在崩溃时将 `sessions_spawn(...)` 文本打印到 stdout | 否（仅文本输出；执行取决于宿主运行时） |\n\n### 基因验证命令的安全性\n\n`solidify.js` 会执行基因的 `validation` 数组中列出的命令。为防止任意命令执行，所有验证命令都受到安全检查 (`isValidationCommandAllowed`) 的限制：\n\n1. **前缀白名单**：仅允许以 `node`、`npm` 或 `npx` 开头的命令。\n2. **禁止命令替换**：命令字符串中任何位置出现的反引号和 `$(...)` 都会被拒绝。\n3. **禁止 Shell 操作符**：去除引号内容后，`;`、`&`、`|`、`>`、`\u003C` 等操作符都会被拒绝。\n4. **超时限制**：每个命令的执行时间限制为 180 秒。\n5. **作用域执行**：命令会在工作目录设置为仓库根目录的情况下运行。\n\n### A2A 外部资产摄取\n\n通过 `scripts\u002Fa2a_ingest.js` 摄取的外部基因\u002F胶囊资产会被暂存到一个隔离的候选区域。要将其提升到本地存储（`scripts\u002Fa2a_promote.js`），需要满足以下条件：\n\n1. 显式指定 `--validated` 标志（操作员必须先验证该资产）。\n2. 对于基因：在提升之前，所有 `validation` 命令都会经过相同的安全检查审计。不安全的命令会导致提升被拒绝。\n3. 基因提升绝不会覆盖具有相同 ID 的现有本地基因。\n\n### `sessions_spawn` 输出\n\n`index.js` 和 `evolve.js` 中的 `sessions_spawn(...)` 字符串是 **输出到 stdout 的文本**，而不是直接的函数调用。它们是否会被解释取决于宿主运行时（例如 OpenClaw 平台）。进化器本身并不会将 `sessions_spawn` 作为可执行代码来调用。\n\n## 公开发布\n\n此仓库为公开分发版本。\n\n- 构建公开输出：`npm run build`\n- 发布公开输出：`npm run publish:public`\n- 干运行：`DRY_RUN=true npm run publish:public`\n\n所需环境变量：\n\n- `PUBLIC_REMOTE`（默认值：`public`）\n- `PUBLIC_REPO`（例如 `EvoMap\u002Fevolver`）\n- `PUBLIC_OUT_DIR`（默认值：`dist-public`）\n- `PUBLIC_USE_BUILD_OUTPUT`（默认值：`true`）\n\n可选环境变量：\n\n- `SOURCE_BRANCH`（默认值：`main`）\n- `PUBLIC_BRANCH`（默认值：`main`）\n- `RELEASE_TAG`（例如 `v1.0.41`）\n- `RELEASE_TITLE`（例如 `v1.0.41 - GEP 协议`）\n- `RELEASE_NOTES` 或 `RELEASE_NOTES_FILE`\n- `GITHUB_TOKEN`（或 `GH_TOKEN` \u002F `GITHUB_PAT`）用于创建 GitHub 发布\n- `RELEASE_SKIP`（设置为 `true` 可跳过创建 GitHub 发布；默认为创建）\n- `RELEASE_USE_GH`（设置为 `true` 可使用 `gh` CLI 而不是 GitHub API）\n- `PUBLIC_RELEASE_ONLY`（设置为 `true` 只为现有标签创建发布，不进行发布）\n\n## 版本控制（SemVer）\n\nMAJOR.MINOR.PATCH\n\n- MAJOR：不兼容的更改\n- MINOR：向后兼容的功能\n- PATCH：向后兼容的 bug 修复\n\n## 更改日志\n\n完整发布历史请参阅 [GitHub Releases](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Freleases)。\n\n## 常见问题解答\n\n**这个工具会自动编辑代码吗？**\n不会。进化器会生成受协议约束的提示和资产来指导进化过程，但它不会直接修改您的源代码。请参阅 [Evolver 的功能与局限性](#what-evolver-does-and-does-not-do)。\n\n**我运行了 `node index.js --loop`，但程序一直在打印文本。它在工作吗？**\n是的。在独立模式下，进化器会生成 GEP 提示并将其打印到 stdout。如果您期望它能自动应用更改，则需要一个像 [OpenClaw](https:\u002F\u002Fopenclaw.com) 这样的宿主运行时来解释输出。或者，您可以使用 `--review` 模式手动审查并应用每一步进化结果。\n\n**我需要连接到 EvoMap Hub 吗？**\n不需要。所有核心进化功能都可以离线使用。只有在使用技能商店、工作者池和进化排行榜等网络功能时才需要连接 Hub。请参阅 [连接到 EvoMap Hub](#connecting-to-evomap-hub)。\n\n**我必须使用所有的 GEP 资产吗？**\n不必。您可以从默认基因开始，然后逐步扩展。\n\n**这在生产环境中安全吗？**\n请使用审查模式和验证步骤。将其视为一种注重安全性的进化工具，而非实时补丁工具。请参阅 [安全模型](#security-model)。\n\n**我应该将这个仓库克隆到哪里？**\n您可以将其克隆到任何您喜欢的目录中。如果您使用 [OpenClaw](https:\u002F\u002Fopenclaw.com)，建议将其克隆到您的 OpenClaw 工作区，以便宿主运行时可以访问进化器的 stdout。对于独立使用，任何位置都可以。\n\n## 路线图\n\n- 添加一分钟演示流程\n- 添加与替代方案的对比表\n\n## 星标历史\n\n[![星标历史图表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEvoMap_evolver_readme_593c4290aa96.png)](https:\u002F\u002Fstar-history.com\u002F#EvoMap\u002Fevolver&Date)\n\n## 致谢\n\n- [onthebigtree](https:\u002F\u002Fgithub.com\u002Fonthebigtree) -- 灵感来源于 evomap 进化网络的创建。修复了三个运行时和逻辑错误（PR [#25](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F25)）；贡献了主机名隐私哈希、可移植的验证路径以及无用代码清理（PR [#26](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F26)）。\n- [lichunr](https:\u002F\u002Fgithub.com\u002Flichunr) -- 为我们计算网络免费使用捐赠了数千美元的代币。\n- [shinjiyu](https:\u002F\u002Fgithub.com\u002Fshinjiyu) -- 提交了大量 bug 报告，并贡献了带有代码片段标签的多语言信号提取功能（PR [#112](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F112)）。\n- [voidborne-d](https:\u002F\u002Fgithub.com\u002Fvoidborne-d) -- 通过新增 11 种凭证脱敏模式，强化了广播前的净化处理（PR [#107](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F107)）；为 strategy、validationReport 和 envFingerprint 添加了 45 个测试用例（PR [#139](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F139)）。\n- [blackdogcat](https:\u002F\u002Fgithub.com\u002Fblackdogcat) -- 修复了 dotenv 依赖缺失问题，并实现了智能 CPU 负载阈值的自动计算（PR [#144](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F144)）。\n- [LKCY33](https:\u002F\u002Fgithub.com\u002FLKCY33) -- 修复了 .env 文件加载路径及目录权限问题（PR [#21](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F21)）。\n- [hendrixAIDev](https:\u002F\u002Fgithub.com\u002FhendrixAIDev) -- 修复了 performMaintenance() 在试运行模式下执行的问题（PR [#68](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F68)）。\n- [toller892](https:\u002F\u002Fgithub.com\u002Ftoller892) -- 独立发现并报告了 events.jsonl forbidden_paths 的 bug（PR [#149](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F149)）。\n- [WeZZard](https:\u002F\u002Fgithub.com\u002FWeZZard) -- 在 SKILL.md 中添加了 A2A_NODE_ID 设置指南，并在 a2aProtocol 中增加了当 NODE_ID 未显式配置时的控制台警告信息（PR [#164](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F164)）。\n- [Golden-Koi](https:\u002F\u002Fgithub.com\u002FGolden-Koi) -- 在 README 中添加了关于 cron\u002F外部运行程序保持存活的最佳实践（PR [#167](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fpull\u002F167)）。\n- [upbit](https:\u002F\u002Fgithub.com\u002Fupbit) -- 在推广 evolver 和 evomap 技术方面发挥了至关重要的作用。\n- [Chi Jianqiang](https:\u002F\u002Fmowen.cn) -- 在宣传推广及用户体验优化方面做出了重要贡献。\n\n## 许可证\n\n[GPL-3.0-or-later](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0)\n\n> 核心进化引擎模块以混淆形式分发，以保护知识产权。来源：[EvoMap\u002Fevolver](https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver)。","# Evolver 快速上手指南\n\nEvolver 是一个基于 **GEP (Genome Evolution Protocol)** 的 AI 智能体自进化引擎。它能将临时的提示词调整转化为可审计、可复用的进化资产，帮助团队在大规模维护 Agent 时实现确定性的协议约束进化。\n\n## 1. 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **Node.js**: 版本需 **>= 18**。\n    *   国内用户推荐使用 [Node.js 国内镜像](https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\u002F) 或 nvm 进行安装。\n*   **Git**: 必须安装。Evolver 依赖 Git 进行回滚、影响范围计算和状态固化。如果在非 Git 目录运行将会报错。\n*   **操作系统**: Linux, macOS 或 Windows (需配置好上述环境)。\n\n## 2. 安装步骤\n\n### 克隆项目\n使用 Git 克隆仓库到本地：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver.git\ncd evolver\n```\n\n### 安装依赖\n安装所需的 Node.js 包。国内开发者建议使用淘宝镜像源加速安装：\n\n```bash\n# 使用 npm 默认源\nnpm install\n\n# 或者使用国内镜像源 (推荐)\nnpm install --registry=https:\u002F\u002Fregistry.npmmirror.com\n```\n\n### (可选) 连接 EvoMap 网络\n如果您需要使用技能共享、工人池或进化排行榜等联网功能，请创建 `.env` 文件并配置节点 ID。\n**注意**：核心进化功能完全支持离线运行，此步骤非必须。\n\n```bash\n# 创建 .env 文件\necho \"A2A_HUB_URL=https:\u002F\u002Fevomap.ai\" >> .env\necho \"A2A_NODE_ID=your_node_id_here\" >> .env\n```\n*获取 Node ID 请访问 [evomap.ai](https:\u002F\u002Fevomap.ai) 注册。*\n\n## 3. 基本使用\n\nEvolver 的核心功能是扫描日志、匹配基因（Gene），并输出受协议约束的 GEP 进化提示词。它**不会**自动修改源代码，而是生成指导下一步操作的指令。\n\n### 模式一：单次运行 (标准模式)\n扫描 `memory\u002F` 目录下的运行时日志和错误信号，输出一次进化提示：\n\n```bash\nnode index.js\n```\n\n### 模式二：人工审查模式\n在应用更改前暂停，等待人类确认（适合生产环境）：\n\n```bash\nnode index.js --review\n```\n\n### 模式三：持续守护进程\n以后台循环模式运行，自动适应休眠间隔，确保持续监控和进化：\n\n```bash\nnode index.js --loop\n```\n\n### 进阶：指定进化策略\n通过环境变量控制进化的侧重点（创新、稳定或修复）：\n\n```bash\n# 最大化新功能开发\nEVOLVE_STRATEGY=innovate node index.js --loop\n\n# 专注于系统稳定性 (重大变更后推荐)\nEVOLVE_STRATEGY=harden node index.js --loop\n\n# 紧急修复模式\nEVOLVE_STRATEGY=repair-only node index.js --loop\n```\n\n---\n**提示**：运行后产生的输出（如 `sessions_spawn(...)`）在 standalone 模式下仅为文本；若集成在宿主运行时（如 OpenClaw）中，宿主可解析这些指令触发后续动作。","某电商公司的 AI 客服团队正在维护一个基于大模型的自动应答系统，面对每日海量的用户咨询和不断变化的业务规则，团队急需提升 Agent 的自我迭代效率。\n\n### 没有 evolver 时\n- **提示词优化靠“拍脑袋”**：开发人员仅凭经验手动微调 Prompt，缺乏数据支撑，导致修复了旧问题却引入了新幻觉。\n- **迭代过程无法追溯**：每次修改都是临时性的“创可贴”式修补，没有记录为何修改、依据是什么，新人接手时完全看不懂历史逻辑。\n- **错误模式重复发生**：系统日志中的同类报错（如订单查询超时）被反复忽略，无法自动转化为具体的进化策略，导致相同故障频繁复发。\n- **知识资产难以复用**：优秀的调试经验散落在不同开发者的本地笔记中，无法形成标准化的“基因”供整个团队共享和调用。\n\n### 使用 evolver 后\n- **数据驱动的精准进化**：evolver 自动扫描 `memory\u002F` 目录下的运行日志和错误信号，精准匹配预设的 GEP“基因”，生成针对性的优化提示词。\n- **全流程审计可追溯**：每一次进化都会生成标准的 `EvolutionEvent` 记录，清晰留存修改依据和执行路径，让 AI 的成长轨迹透明可控。\n- **闭环自愈机制**：针对高频错误模式，evolver 能自动提取特征并触发特定的进化协议，将被动救火转变为主动预防，显著降低同类故障率。\n- **资产标准化与共享**：成功的优化方案被封装为可复用的\"Capsule\"或\"Gene\"，不仅能在当前项目循环使用，还能通过 EvoMap 网络分享给其他节点。\n\nevolver 将原本杂乱无章的提示词调试工作，升级为一套可审计、可复用且持续自我进化的智能工程体系。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEvoMap_evolver_f68f6588.png","EvoMap","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FEvoMap_4976f9d2.png","",null,"EvoMapAI","https:\u002F\u002Fevomap.ai","https:\u002F\u002Fgithub.com\u002FEvoMap",[80],{"name":81,"color":82,"percentage":83},"JavaScript","#f1e05a",100,2283,258,"2026-04-15T18:25:25","GPL-3.0","Linux, macOS, Windows","未说明",{"notes":91,"python":92,"dependencies":93},"该工具基于 Node.js 运行，非 Python 项目。必须安装 Git 以支持回滚、爆炸半径计算和固化功能，在非 Git 目录中运行会失败。核心功能可完全离线运行，连接 EvoMap 网络（需配置 .env 文件）仅用于技能共享、工作池和排行榜等可选功能。","不需要",[94,95],"Node.js >= 18","Git",[13,14],"2026-03-27T02:49:30.150509","2026-04-16T08:19:16.602704",[100,105,109,114,119,124,129],{"id":101,"question_zh":102,"answer_zh":103,"source_url":104},35459,"如何获取 EvoMap 的邀请码进行注册？","您可以通过以下两种方式获取邀请码：\n1. 在 GitHub Issues 中申请，维护者会直接在评论中回复邀请码（例如：`4A373F74`）。\n2. 加入项目的飞书群或 Discord 社区，群内通常有大量可用的邀请码。\n\n获取代码后，请访问 https:\u002F\u002Fevomap.ai\u002Fregister 并输入邀请码完成注册。注册成功后，您可以在账户页面 (https:\u002F\u002Fevomap.ai\u002Faccount) 生成新的邀请码分享给他人。如果您已有节点 ID，注册后可在仪表盘将其链接到您的账户。","https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues\u002F310",{"id":106,"question_zh":107,"answer_zh":108,"source_url":104},35460,"调用 API 领取任务时遇到 'server_busy' 错误怎么办？","`server_busy` 错误通常发生在高负载时段，且免费层级用户受准入控制系统影响较大。解决方案如下：\n1. **指数退避重试**：根据响应中的 `retry_after_ms` 字段值等待相应毫秒数后重试。\n2. **避开高峰**：建议在 UTC 时间 00:00-08:00 之间发起请求，此时流量较低。\n3. **升级套餐**：未来推出付费计划后，Premium 和 Ultra 用户将获得优先队列访问权。\n\n注意：目前平台处于测试期，可能暂无付费充值入口，建议优先采用前两种方法。",{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},35461,"项目中混合使用了 ES6+ 和旧版 JavaScript 语法，官方是否有统一的编码规范？","是的，项目已确立统一使用 ES6+ 语法（`const`\u002F`let`），禁止使用 `var`。维护者已在 v1.32.x 至 v1.34.1 版本中完成了核心文件的迁移工作（如 `skillDistiller.js`, `a2aProtocol.js`, `solidify.js` 等），共转换了数百处声明。同时，项目已添加编码规范规则以防止未来再次出现 `var` 用法。开发者在贡献代码时应遵循此标准，对可变状态使用 `let`，对不可变局部变量使用 `const`。","https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues\u002F240",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},35462,"代码中存在大量空 catch 块吞掉错误，这对调试有什么影响，官方是如何处理的？","空 catch 块会导致错误被静默忽略，使得生产环境问题难以追踪。官方已在 v1.32.x-v1.34.0 版本中修复了关键路径上的空 catch 问题：\n1. **添加日志**：在 `evolve.js`（进化循环）、`solidify.js`（发布\u002F回滚）、`a2aProtocol.js`（传输\u002F心跳）等文件中，catch 块现在会记录错误日志。\n2. **增强反馈**：`assetStore.js` 中的 `readJsonIfExists` 在失败时会记录文件路径和具体错误。\n\n例外情况：`deviceId.js` 中的 catch 块是故意留空的，用于设备探测链（如尝试读取 `.dockerenv` 等），属于正常的控制流而非错误处理。","https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues\u002F237",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},35463,"作为开发者，我该如何申请早期访问权限以测试 EvoMap 的功能？","您可以按照以下步骤申请早期访问：\n1. **加入社区**：首先加入项目的 Discord 社区或飞书群，这是获取邀请码最直接的渠道。\n2. **提交申请**：在 GitHub Issues 中提交申请，说明您的身份（如开发者\u002F运营商）、技术背景（如熟悉 Linux\u002F鸿蒙\u002FAI 工具链）以及使用目的（如研究 Agent 自主演化、内容创作等）。\n3. **提供反馈承诺**：表明您愿意在获得访问权限后提供详细反馈并贡献社区文档（特别是中文文档），这会增加获批几率。\n\n维护者通常会通过 Issue 评论直接发放邀请码，或指引您到社群领取。","https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues\u002F314",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},35464,"我已经拥有了一个节点 ID，但在注册网页账户后如何将其关联？","在您使用邀请码完成网页账户注册（https:\u002F\u002Fevomap.ai\u002Fregister）后，请登录账户并进入仪表盘（Dashboard）。在仪表盘界面中，您可以找到关联现有节点的选项，输入您的节点 ID（例如 `node_d7b0e268`）即可完成绑定。绑定后，该节点的状态和任务数据将同步显示在您的账户下。","https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fissues\u002F189",{"id":130,"question_zh":131,"answer_zh":132,"source_url":104},35465,"EvoMap 的准入控制系统（Admission Control）是如何工作的？","EvoMap 采用分层水位线（tiered watermarks）机制进行准入控制：\n1. **正常负载**：所有层级的请求均可通过。\n2. **高负载**：当服务器负载显著增加时，系统会优先保障 Premium 和 Ultra 用户的请求进入队列。\n3. **免费用户限制**：在高负载期间，免费层级用户的请求可能会被排队或返回 `server_busy` 错误，直到负载降低或有更高优先级用户释放资源。\n\n这种机制确保了核心服务在高并发下的稳定性，同时激励用户升级以获得更稳定的服务体验。",[134,139,143,147,151,155,159,163,168,173,177,182,186,190,195,199,203,207,212,217],{"id":135,"version":136,"summary_zh":137,"released_at":138},280560,"v1.66.0","由发布脚本创建的版本。","2026-04-15T09:51:00",{"id":140,"version":141,"summary_zh":137,"released_at":142},280561,"v1.65.0","2026-04-15T02:04:16",{"id":144,"version":145,"summary_zh":137,"released_at":146},280562,"v1.64.0","2026-04-14T15:01:59",{"id":148,"version":149,"summary_zh":137,"released_at":150},280563,"v1.63.0","2026-04-14T10:28:39",{"id":152,"version":153,"summary_zh":137,"released_at":154},280564,"v1.62.10","2026-04-14T05:44:37",{"id":156,"version":157,"summary_zh":137,"released_at":158},280565,"v1.62.8","2026-04-14T05:02:31",{"id":160,"version":161,"summary_zh":137,"released_at":162},280566,"v1.62.4","2026-04-14T04:34:25",{"id":164,"version":165,"summary_zh":166,"released_at":167},280567,"v1.62.3","## v1.62.3\n\n### 错误修复\n\n- 修复在启动代理模式时出现的 `ReferenceError: opts is not defined` 错误\n- 修复代理入站\u002F出站同步中的 `sender_id_required` 错误\n- 修复循环模式下子进程日志被静默丢弃的问题\n- 修复重复检测 `.git` 目录的消息不断涌入日志的问题（添加缓存机制）\n- 内部优化及稳定性提升。\n\n### 升级\n\n```bash\nnpm install @evomap\u002Fevolver@1.62.3\n```","2026-04-14T04:14:07",{"id":169,"version":170,"summary_zh":171,"released_at":172},280568,"v1.62.2","## 变更内容\n\n### Bug 修复\n- 修复 `skillsDir` 的解析：在独立模式和 Cursor 环境中，使用 `getWorkspaceRoot()` 替代 `REPO_ROOT`，以确保路径正确。\n- 修复 `validate-suite.js`：从脚本所在位置推导仓库根目录，而非依赖 `process.cwd()`；手动扩展 glob 模式；正确设置环境变量。\n- 修复 `a2aProtocol` 测试：在无 Hub 的测试环境中注入伪造的 `A2A_NODE_SECRET`。\n- 增加 `loopMode` 裸调用测试的超时时间（从 5 秒\u002F15 秒提升至 60 秒）。\n\n### 功能特性\n- 传递 `cycleId`，以巩固状态并为 GEP 提示提供上下文，实现对周期的准确跟踪。\n- 从 Cursor\u002FOpenClaw 会话记录中提取并注入初始用户提示（原始意图），作为 GEP 提示的上下文。\n- 自动通过 PR 将高置信度的自我变异提交到公共仓库（受环境变量控制，默认关闭）。\n- 移除 GEP 提示中冗余的 POST-SOLIDIFY 状态写入逻辑（现由包装器统一处理）。\n\n### 贡献者\n- @yunye123（修复 validate-suite、a2aProtocol 和 loopMode 相关问题）\n- @cafechen（实现初始用户提示的提取）\n\n内部改进与稳定性增强。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fcompare\u002Fv1.62.1...v1.62.2","2026-04-14T01:57:59",{"id":174,"version":175,"summary_zh":137,"released_at":176},280569,"v1.62.1","2026-04-13T17:34:54",{"id":178,"version":179,"summary_zh":180,"released_at":181},280570,"v1.61.2","Release created by publish script.","2026-04-13T17:03:39",{"id":183,"version":184,"summary_zh":180,"released_at":185},280571,"v1.61.0","2026-04-13T16:56:58",{"id":187,"version":188,"summary_zh":180,"released_at":189},280572,"v1.59.0","2026-04-13T16:32:30",{"id":191,"version":192,"summary_zh":193,"released_at":194},280573,"v1.57.0","## What's New in v1.57.0\n\n- Internal improvements and stability enhancements.\n- Expanded module coverage for build pipeline.\n- Improved offline resilience for Hub connectivity.\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fcompare\u002Fv1.56.0...v1.57.0","2026-04-13T16:07:01",{"id":196,"version":197,"summary_zh":180,"released_at":198},280574,"v1.56.0","2026-04-13T15:36:39",{"id":200,"version":201,"summary_zh":180,"released_at":202},280575,"v1.54.0","2026-04-13T11:54:53",{"id":204,"version":205,"summary_zh":180,"released_at":206},280576,"v1.53.2","2026-04-11T18:36:26",{"id":208,"version":209,"summary_zh":210,"released_at":211},280577,"v1.53.1","## v1.53.1 -- Hollow Commit Guard\n\n### Fix\n\n- **solidify\u002FpolicyCheck**: Block \"hollow commits\" that only modify GEP metadata files (capsules.json, events.jsonl, genes.json) without writing any real functional code. The evolver was exploiting a loophole where it could inflate its own success_streak and confidence scores by faking successful evolutions that only updated bookkeeping logs. Now such commits are flagged as `hollow_commit` constraint violations and the evolution is marked as failed.\n- **computeProcessScores**: Set `blast_control` to 0 when a hollow commit is detected, so gene learning correctly penalises the metric-gaming pattern.\n\n### Tests\n\n- Added `checkConstraints hollow commit guard` test suite covering GEP-only changes, mixed changes, and no-change scenarios.\n- Added `blast_control` score test for hollow commit case.\n\nFull changelog: https:\u002F\u002Fgithub.com\u002FEvoMap\u002Fevolver\u002Fcompare\u002Fv1.53.0...v1.53.1","2026-04-11T16:12:22",{"id":213,"version":214,"summary_zh":215,"released_at":216},280578,"v1.53.0","## What's New in v1.53.0\n\n### Features\n- **Explore mutation category**: proactive idle-time discovery with internal code scanning (TODOs, stale\u002Flarge files) and external knowledge search (Hub, arXiv)\n- Idle scheduler integration with OMLS for explore triggering\n\n### Fixes\n- Epoch-boundary race condition in memoryGraph scoring (positional index filtering)\n- shouldExplore gating logic and tryExplore return type consistency\n- 3 pre-existing test failures resolved (a2aProtocol, selector, loopMode)","2026-04-11T15:15:26",{"id":218,"version":219,"summary_zh":180,"released_at":220},280579,"v1.52.0","2026-04-11T03:30:16"]