🧬 Capability Evolver 架构深度解析与 PHP MCP 迁移方案
最近对 Evolver 核心代码进行了深度审阅,发现这个项目的设计思想非常值得学习。分享一下我的分析以及将其迁移到纯 PHP MCP 服务的方案。
一、核心架构洞察
1.1 分层架构设计
┌─────────────────────────────────────────┐
│ 应用层 (index.js) │
│ - 守护进程、生命周期管理、单例锁 │
├─────────────────────────────────────────┤
│ 进化引擎层 (src/evolve.js) │
│ - 信号提取、日志分析、循环控制 │
├─────────────────────────────────────────┤
│ GEP协议层 (src/gep/) │
│ - prompt/selector/solidify/assetStore │
├─────────────────────────────────────────┤
│ 运维层 (src/ops/) │
│ - 健康检查、自我修复、技能监控 │
└─────────────────────────────────────────┘
1.2 五大核心设计思想
1. GEP 协议标准化
- 强制输出 5 种对象:Mutation → PersonalityState → EvolutionEvent → Gene → Capsule
- 纯 JSON 格式,无 Markdown 包裹,确保机器可读
2. 信号驱动架构
- 从日志/会话/用户输入提取信号
- 智能抑制机制防止重复处理
- 自动检测修复循环并强制创新
3. 基因-胶囊双轨制
- Gene: 可复用的进化策略模板(知识)
- Capsule: 成功的进化结果快照(经验)
- 支持 A2A 协议从 Hub 获取外部资产
4. 多层安全防护
// 安全机制清单
- 关键路径保护(禁止自修改)
- 爆炸半径控制(60文件/20000行硬上限)
- 验证命令白名单(仅 node/npm/npx)
- 金丝雀检测(子进程验证)
- 伦理委员会(正则过滤危险策略)
5. 自适应循环控制
- 系统负载感知(loadavg 检测)
- 空循环检测 → 饱和模式切换
- 内存泄漏保护(自杀重启机制)
二、核心数据模型
// Gene - 知识基因
{
"type": "Gene",
"id": "gene_gep_repair_from_errors",
"category": "repair|optimize|innovate",
"signals_match": ["error", "exception", "failed"],
"strategy": ["提取信号", "选择Gene", "估计爆炸半径", "应用补丁", "验证", "固化"],
"constraints": {"max_files": 20, "forbidden_paths": [".git"]},
"validation": ["node -e \"require('./src/evolve')\""],
"epigenetic_marks": [] // 环境适应性标记
}
三、PHP MCP 迁移方案
3.1 迁移可行性
| 组件 | Node.js | PHP | 难度 |
|---|
| 文件系统 | fs | 原生 | ⭐ |
| JSON | JSON.parse | json_decode | ⭐ |
| 正则 | RegExp | preg_match | ⭐ |
| 子进程 | child_process | proc_open | ⭐⭐ |
| HTTP | fetch | Guzzle | ⭐ |
| 事件循环 | setInterval | ReactPHP | ⭐⭐⭐ |
3.2 推荐的 PHP 架构
┌─────────────────────────────────────────┐
│ MCP Server (stdio) │
│ - Initialize / Tool Call / Resource │
├─────────────────────────────────────────┤
│ Evolver Core (PHP) │
│ - SignalExtractor / GepEngine / Selector│
├─────────────────────────────────────────┤
│ Storage Layer │
│ - JSON File / SQLite / External Hub │
└─────────────────────────────────────────┘
3.3 MCP 工具设计
$tools = [
[
'name' => 'evolver_run',
'description' => '运行进化周期,分析信号并生成GEP提示',
'inputSchema' => [
'context' => 'string',
'strategy' => ['balanced', 'innovate', 'harden', 'repair-only']
]
],
[
'name' => 'evolver_solidify',
'description' => '固化进化结果,验证并记录事件',
'inputSchema' => [
'intent' => ['repair', 'optimize', 'innovate'],
'summary' => 'string',
'dryRun' => 'boolean'
]
],
[
'name' => 'evolver_extract_signals',
'description' => '从日志中提取信号',
'inputSchema' => ['logContent' => 'string']
]
];
3.4 核心类映射
// Node.js → PHP
assetStore.js → GepAssetStore.php
selector.js → GeneSelector.php
signals.js → SignalExtractor.php
prompt.js → PromptBuilder.php
solidify.js → SolidifyEngine.php
a2aProtocol.js → A2AProtocol.php
3.5 PHP 实现示例
<?php
// SignalExtractor.php
class SignalExtractor
{
const OPPORTUNITY_SIGNALS = [
'user_feature_request',
'perf_bottleneck',
'capability_gap',
'stable_success_plateau'
];
public function extract(Context $ctx): array
{
$signals = [];
$corpus = strtolower($ctx->getCorpus());
// 错误检测
if (preg_match('/\[error\]|error:|exception:/i', $corpus)) {
$signals[] = 'log_error';
}
// 功能请求
if (preg_match('/\b(add|implement|create)\b.*\b(feature|function)\b/i', $corpus)) {
$signals[] = 'user_feature_request';
}
// 性能瓶颈
if (preg_match('/\b(slow|timeout|bottleneck)\b/i', $corpus)) {
$signals[] = 'perf_bottleneck';
}
return array_unique($signals);
}
}
四、迁移路线图
Phase 1 (1-2周): 基础架构
├── MCP stdio 传输层
├── JSON-RPC 处理
└── 配置文件系统
Phase 2 (2-3周): 核心引擎
├── AssetStore (Gene/Capsule)
├── SignalExtractor
├── GeneSelector
├── PromptBuilder
└── 单元测试
Phase 3 (1-2周): 固化与验证
├── SolidifyEngine
├── BlastRadius 计算
├── Git 集成
└── 回滚机制
Phase 4 (1周): A2A 协议
├── HTTP 传输层
├── 心跳机制
└── 资产发布/获取
Phase 5 (1周): 集成优化
├── MCP 工具注册
├── 集成测试
└── 文档
五、关键技术决策
| 决策点 | 推荐方案 | 理由 |
|---|
| 异步处理 | ReactPHP | 生态成熟 |
| 数据存储 | JSON + SQLite | 简单可扩展 |
| 进程管理 | Supervisor | PHP 不擅长守护 |
| HTTP 客户端 | Guzzle | 功能完善 |
| 配置管理 | PHP数组 + .env | 符合生态 |
六、总结
Evolver 的设计亮点:
- 协议优先 - GEP 标准化进化过程
- 安全第一 - 多层防护机制
- 信号驱动 - 自适应进化方向
- 知识复用 - Gene/Capsule 双轨制
迁移到 PHP MCP 完全可行,主要注意:
- 异步处理借助 ReactPHP
- 守护进程由外部工具管理
- 保持协议兼容性
这个项目对理解如何构建自我进化的 AI 系统非常有启发!🚀