什么是 Evolver.php?
Evolver.php 是一个基于 MCP(Model Context Protocol)协议的能力演化引擎,用 PHP 8.3+ 编写。它的核心思想很朴素:
让 AI 从每次修复和优化中学习,把经验沉淀下来,下次遇到类似问题时直接复用。
简单来说,它就像给 AI 装了一个"记忆系统",让 AI 不再是"鱼一样的七秒记忆",而是能够不断积累、进化。
为什么需要它?
相信用过 AI 编程助手的朋友都有这种体验:
- 😤 重复踩坑:上次刚修好的 Bug,换个项目又犯了,AI 完全"失忆"
- 😵 上下文限制:项目太大,AI 记不住之前的修改逻辑
- 🔄 低效循环:同样的优化建议,每次都要重新解释一遍
Evolver.php 要解决的就是这个问题。
核心概念:Gene + Capsule 双轨制
Evolver.php 的进化产物分为两类,类比生物进化非常形象:
🧬 Gene(基因)— 可复用的策略模板
Gene 是抽象的、可复用的策略,定义了"遇到什么问题,用什么方法解决"。
比如默认就有一个 gene_gep_repair_from_errors:
- 匹配信号:
error,exception,failed等 - 策略:提取信号 → 选择 Gene → 估算影响范围 → 最小化修复 → 验证 → 固化
- 约束:最多改 20 个文件,不能碰
.git和vendor
{
"id": "gene_gep_repair_from_errors",
"category": "repair",
"signals_match": ["error", "exception", "failed"],
"strategy": ["提取信号", "选择Gene", "估算范围", "最小修复", "验证", "固化"],
"constraints": {
"max_files": 20,
"forbidden_paths": [".git", "vendor"]
}
}
💊 Capsule(胶囊)— 成功的具体案例
Capsule 是具体的、成功的修复记录,包含完整的上下文和解决方案。
{
"id": "cap_php_syntax_fix_001",
"problem_hash": "sha256:abc123...",
"solution_diff": "--- a/src/Foo.php\n+++ b/src/Foo.php\n@@ -40 +40 @@\n- return \(value\n+ return\)value;",
"context_summary": "Missing semicolon in return statement",
"metadata": {"language": "php", "confidence": 0.95}
}
关键特性:通过 problem_hash 可以快速匹配相似问题,实现"秒级复用"。
工作流程:GEP 协议
Evolver.php 使用标准化的 GEP(Gene Expression Protocol)协议,一次完整的演化周期包含 5 个步骤:
信号提取 → Gene选择 → 提示生成 → LLM执行 → 结果固化
1️⃣ 信号提取(Signal Extraction)
从错误日志、用户输入中提取结构化信号,比如:
error_php_syntax— PHP 语法错误test_fail— 测试失败perf_bottleneck— 性能瓶颈
2️⃣ Gene 选择(Gene Selection)
根据信号匹配最合适的 Gene。比如遇到 SQL 错误,就选 gene_gep_repair_sqlite。
3️⃣ GEP 提示生成(Prompt Building)
组合以下元素生成给 LLM 的提示:
- 选中的 Gene(策略模板)
- 相关的 Capsules(历史成功案例)
- 父事件(相关的演化历史)
4️⃣ LLM 执行演化
LLM 按 GEP 协议输出 恰好 5 个 JSON 对象:
- Mutation — 变更触发器(风险等级、理由)
- PersonalityState — 演化心态(严谨度、创造力等)
- EvolutionEvent — 审计记录(信号、影响范围)
- Gene — 更新后的策略模板
- Capsule — 新的成功快照
5️⃣ 结果固化(Solidification)
验证通过后,将结果存入数据库:
- 更新/创建 Gene
- 存储 Capsule
- 记录 EvolutionEvent(审计日志)
数据存储:完全私有化
所有进化产物都存储在 本地 SQLite 数据库,默认路径:
~/.evolver/evolver.db
数据库表结构
| 表名 | 内容 |
|---|---|
genes |
策略模板(JSON 格式) |
capsules |
成功案例(含 diff、hash、置信度) |
events |
完整的审计日志 |
failed_capsules |
失败案例(用于学习) |
特性:
- ✅ WAL 模式 + mmap 优化,性能优秀
- ✅ 自动迁移,版本兼容
- ✅ 完全离线,数据不上云
使用场景
场景一:修复 Bug
用户:报错了!Parse error: unexpected '}' in Foo.php
AI → 调用 evolver_run → 匹配 gene_gep_repair_from_errors
→ 生成 GEP 提示 → LLM 修复 → 固化结果
下次遇到 PHP 语法错误 → 直接复用 Capsule → 秒级修复
场景二:性能优化
用户:这段代码太慢了
AI → 匹配 gene_gep_optimize_prompt_and_assets
→ 查找历史优化 Capsules → 给出针对性建议
场景三:功能创新
用户:想加一个用户认证功能
AI → 匹配 gene_gep_innovate_from_opportunity
→ 参考已有 Capsules → 设计最小可行实现
安全设计
Evolver.php 内置了多层安全保护:
| 限制 | 说明 |
|---|---|
| 爆炸半径 | 单次演化最多 60 个文件 / 20,000 行 |
| 命令白名单 | 只允许 php, composer, phpunit 等 |
| 禁止路径 | 每个 Gene 可配置 forbidden_paths |
| Shell 防护 | 禁止 ;, &&, ||, |, > 等操作符 |
| 自修改模式 | never / review / always 三档控制 |
快速开始
# 1. 克隆项目
git clone https://github.com/linkerlin/Evolver.php.git
cd Evolver.php
# 2. 安装依赖
composer install
# 3. 验证安装
php evolver.php --validate
# 4. 配置 MCP(以 Kimi Code CLI 为例)
# 编辑 ~/.kimi/mcp.json
{
"mcpServers": {
"evolver": {
"command": "php",
"args": ["/path/to/Evolver.php/evolver.php"],
"env": {
"EVOLVER_DB_PATH": "~/.evolver/evolver.db",
"EVOLVE_ALLOW_SELF_MODIFY": "review"
}
}
}
}
总结
Evolver.php 的核心理念是 "让演化可积累":
- 🔁 不是每次都从零开始
- 🧠 而是基于历史经验智能决策
- 📈 用得越多,AI 越懂你的项目
它就像给 AI 装了一个"外脑",把零散的经验变成结构化的知识,真正实现持续进化。
项目地址:https://github.com/linkerlin/Evolver.php
许可证:MIT
本文基于 Evolver.php 源码分析整理,如有不准确之处欢迎指正!
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。