如何把Evolver接入Claude Code:Hook系统配置与常见坑全解
【免费下载链接】evolverThe GEP-powered self-evolving engine for AI agents. Auditable evolution with Genes, Capsules, and Events. | evomap.ai项目地址: https://gitcode.com/GitHub_Trending/evolv/evolver
Evolver 是基于 GEP(基因组进化协议)的 AI Agent 自进化引擎,通过基因(Gene)、胶囊(Capsule)和事件(Event)实现可审计的进化闭环。本文带你用一条命令把 Evolver 接入 Claude Code,完整讲清 Hook 系统配置原理、验证方法与新手最常踩的 7 个坑。
Evolver 是什么?30 秒看懂
一句话:Evolver 是一个"提示词生成器",不是代码自动改写器。
- 它扫描你工作区的日志与记忆文件,提取进化信号(如
log_error、test_failure、perf_bottleneck) - 从本地 GEP 资产库中挑选最匹配的基因或胶囊
- 输出一段协议约束的 GEP 提示词,指导你的 Agent 完成下一步进化
- 每次进化都会写入一条可追溯的
EvolutionEvent审计记录
接入 Claude Code 后,Evolver 会通过官方 Hook 机制"寄生"在会话生命周期里:会话开始时加载进化记忆、文件编辑时检测信号、会话结束时记录结果——全程自动,且不依赖联网。
接入前置条件:3 项检查
在动手之前,请确认以下三项,能避免一半以上的报错:
| 检查项 | 要求 | 验证命令 |
|---|---|---|
| Node.js | 版本 ≥ 18 | node -v |
| Git | 必须已安装(进化运行依赖 git 回滚与影响面计算) | git --version |
| 项目目录 | 必须在 git 仓库内运行,否则直接报错退出 | git status |
安装 Evolver(推荐全局安装):
npm install -g @evomap/evolver验证命令可用:
evolver --help一键接入 Claude Code:setup-hooks 命令
整个接入过程只需要一条命令,在项目目录或用户主目录下执行:
evolver setup-hooks --platform=claude-code成功时你会看到类似输出:
[claude-code] Wrote <configRoot>/.claude/settings.json [claude-code] Copied 7 hook scripts to <configRoot>/.claude/hooks [claude-code] Injected evolution section into <configRoot>/CLAUDE.md [claude-code] Installation complete.这条命令到底改了什么?
Evolver 的 Claude Code 适配器会写 3 类文件(逻辑见 src/adapters/claudeCode.js):
~/.claude/settings.json—— 注册 4 个 Hook 事件(采用"并集合并"策略,不会覆盖你已有的 Hook)~/.claude/hooks/—— 拷贝 7 个 Hook 脚本(4 个入口脚本 + 3 个内部辅助模块,见 src/adapters/scripts/)CLAUDE.md—— 追加一段带标记<!-- evolver-evolution-memory -->的"进化记忆"说明,告诉 Claude 如何正确使用这些上下文
注册的 4 个 Hook 事件一览
| Hook 事件 | 触发时机 | 执行脚本 | 超时 |
|---|---|---|---|
SessionStart | 会话启动 | evolver-session-start.js | 3 秒 |
UserPromptSubmit | 你提交提示词时 | evolver-task-recall.js | 5 秒 |
PostToolUse(matcher:Write) | Claude 写完文件后 | evolver-signal-detect.js | 2 秒 |
Stop | 会话结束 | evolver-session-end.js | 8 秒 |
完整注册逻辑可参考 src/adapters/claudeCode.js 中的
buildClaudeHooks。
值得注意的设计细节:
- Fail-open 机制:每个脚本内部自带约 3.3 秒的看门狗,超时也一定输出合法 JSON 并以 0 退出,宿主超时(上表)只是双重保险——再慢的召回也不会卡住或吞掉你的提示词。
- 路径安全编码:Hook 命令中的脚本绝对路径被 base64 编码后由
node -e解包执行,路径里的空格、$()、反引号等永远不会被 shell 展开(src/adapters/hookAdapter.js)。 - 不覆盖用户配置:合并
settings.json时按"并集"处理,你原有的Stop/SessionStartHook 会原样保留(src/adapters/hookAdapter.js)。
验证接入是否成功:3 步确认
- 重启 Claude Code(关键!修改配置后必须重启 CLI 才会加载新 Hook)
- 检查
~/.claude/settings.json中hooks字段出现了SessionStart、UserPromptSubmit、PostToolUse、Stop四组条目,且文件带有_evolver_managed: true标记 - 在项目里手动跑一次进化,确认端到端通畅:
evolver # 单次进化:扫描日志 → 选基因 → 输出 GEP 提示词 evolver --review # 审查模式:应用前暂停,等待人工确认"成功的首次运行"长这样:打印策略横幅 → 扫描./memory/→ 选出基因/胶囊 → 在标准输出打印 GEP 提示词 → 写入一条EvolutionEvent审计记录。
常见坑全解:新手必看的 7 个问题
坑 1:装完没有任何反应 —— 忘记重启 Claude Code
Hook 配置在 Claude Code 启动时加载,执行setup-hooks后必须重启 CLI 或开启新会话。这是"装上了但没生效"的头号原因。
坑 2:cd到非 git 目录运行,直接失败
Evolver 强依赖 git(回滚、影响面计算、solidify)。在非 git 目录运行会给出明确的错误信息——cd进一个 git 仓库再重试即可。
坑 3:Linux/macOS 全局安装报EACCES
不要用sudo npm install -g,改用用户级前缀:
npm config set prefix ~/.npm-global echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc source ~/.bashrc坑 4:.claude是符号链接时,安装被拒绝
如果你看到 "Refusing to operate: ... is a symbolic link" 报错,这是安全特性而非故障:Evolver 拒绝跟随符号链接读写适配器目录,防止恶意仓库把写入重定向到工作区之外(实现见 src/adapters/hookAdapter.js)。把.claude或.claude/hooks换成真实目录后重跑即可。
坑 5:UserPromptSubmit时看不到任何召回输出 —— 默认就是关闭的
运行时资产召回(task recall)默认不读取你的提示词、只输出空对象。想开启:
EVOLVER_RECALL_MODE=shadow # 预览模式:只观测,不注入 EVOLVER_RECALL_MODE=enforce # 强制模式:把匹配的蒸馏能力注入上下文坑 6:.env放错位置,Hub 功能连不上
.env必须放在你运行evolver的当前工作目录(不是家目录、不是 npm 全局安装位置),且每个项目可以各有一份:
A2A_HUB_URL=https://evomap.ai A2A_NODE_ID=你的节点ID不配置也完全没问题——核心进化功能全程离线可用,Hub 只解锁技能商店、Worker 池、进化排行榜等网络能力。
坑 7:误以为 Evolver 会自动改代码
Evolver 的核心产物是GEP 提示词(stdout 文本),它不会自动编辑你的源码、不执行任意 shell 命令。想让输出被自动消费,需要宿主运行时配合;独立使用时,把提示词复制给你的 Agent,或配合evolver --review走人工确认流程。
升级、重装与安全卸载
| 场景 | 命令 | 说明 |
|---|---|---|
| 升级后刷新 Hook | evolver setup-hooks --platform=claude-code | 重复执行是安全的:已有标记段落会跳过,evolver 自有条目会被刷新 |
| 覆盖式重装 | 加--force | 强制覆盖现有配置 |
| 彻底卸载 | evolver setup-hooks --platform=claude-code --uninstall | 只移除 evolver 自己的 Hook 命令、脚本和CLAUDE.md标记段落,保留你的其他 Hook |
卸载时的命令匹配逻辑(isEvolverHookCommand)甚至能识别早期版本遗留的evolver-daemon-start旧 Hook,避免留下指向失效服务的残留条目。
延伸阅读:关键源码与文档路径
想深入理解接入机制,可以直接读这些文件(均在仓库内,相对路径):
- Claude Code 适配器(Hook 注册与 CLAUDE.md 注入):src/adapters/claudeCode.js
- 通用 Hook 工具(平台探测、安全路径、JSON 合并):src/adapters/hookAdapter.js
- 4 个 Hook 入口脚本与辅助模块:src/adapters/scripts/
setup-hooks子命令分发入口:index.js- 完整功能说明、策略预设与环境变量表:README.md
- Agent/技能集成(Proxy mailbox API)说明:SKILL.md
- 内置种子基因(首次运行复制到
.evolver/gep/):assets/gep/genes.seed.json
💡 如果你是贡献者,也可以从源码运行:克隆仓库
https://gitcode.com/GitHub_Trending/evolv/evolver后执行npm install,之后用node index.js替代evolver命令,二者完全等价。
小结
把 Evolver 接入 Claude Code 的核心就三步:装 →evolver setup-hooks --platform=claude-code→ 重启 Claude Code。它通过 4 个生命周期 Hook 自动完成"加载记忆 → 检测信号 → 记录结果"的进化闭环,配置合并不覆盖用户 Hook、召回默认关闭、脚本带看门狗 fail-open——理解这些设计,上面 7 个坑你基本不会再踩。配合evolver --review审查模式,就能在保持完全可审计的前提下,让你的 Claude Code 越用越"聪明"。
【免费下载链接】evolverThe GEP-powered self-evolving engine for AI agents. Auditable evolution with Genes, Capsules, and Events. | evomap.ai项目地址: https://gitcode.com/GitHub_Trending/evolv/evolver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考