## 什么是 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`
```json
{
"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 是**具体的、成功的修复记录**,包含完整的上下文和解决方案。
```json
{
"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 对象**:
1. **Mutation** — 变更触发器(风险等级、理由)
2. **PersonalityState** — 演化心态(严谨度、创造力等)
3. **EvolutionEvent** — 审计记录(信号、影响范围)
4. **Gene** — 更新后的策略模板
5. **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` 三档控制 |
---
## 快速开始
```bash
# 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 源码分析整理,如有不准确之处欢迎指正!*
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!