## 一、项目规模概览
维度 │ 数据
────────────────────────────────────────────────┼────────────────────────────────────────────────
源码文件 │ 198 个 PHP 文件
源码行数 │ ~55,000 行
测试文件 │ 144 个
测试行数 │ ~32,700 行
测试覆盖比 │ ~0.6:1
核心命名空间 │ Evolver\ + 12 个子命名空间
规模已经超出了一个"概念验证",是一个功能完整的自演化引擎。
--------
## 二、架构总览:六层洋葱模型
┌─────────────────────────────────────────────────────┐
│ Layer 6: MCP 协议层 (McpServer + 6 Traits) │ ← JSON-RPC 2.0 stdio
├─────────────────────────────────────────────────────┤
│ Layer 5: 领域服务层 │
│ ├─ Meeting (多智能体会议引擎) │
│ ├─ SubAgent (子代理编排) │
│ ├─ Memory (记忆系统) │
│ └─ Skill (技能蒸馏与匹配) │
├─────────────────────────────────────────────────────┤
│ Layer 4: 演化核心 (EvolverEngine) │
│ SignalExtract → GeneSelect → PromptBuild │
│ → Solidify → EpigeneticMark → FeedbackMetrics │
├─────────────────────────────────────────────────────┤
│ Layer 3: 安全与验证层 │
│ SafetyController / SourceProtector │
│ ValidationPipeline (8 个优先级验证器) │
│ BlastRadiusCalculator │
├─────────────────────────────────────────────────────┤
│ Layer 2: 资产存储层 (GepAssetStore) │
│ Gene / Capsule / Event / FailedCapsule / RunTracker│
├─────────────────────────────────────────────────────┤
│ Layer 1: 数据层 (Database + SQLite) │
│ Schema v2.2.0 / WAL / mmap / FTS5 / 迁移链 │
└─────────────────────────────────────────────────────┘
--------
## 三、核心设计思想
### 1. 生物隐喻驱动的架构 (Bio-Inspired Architecture)
这是整个项目最鲜明的特征。Evolver.php
不是简单的"配置管理工具",而是用生物进化论的隐喻来组织代码:
生物概念 │ 代码对应 │ 说明
───────────────────────────────┼────────────────────────────────┼────────────────────────────────
Gene(基因) │ GeneSelector + │ 可复用策略模板,携带
│ GepAssetStore │ signals_match 、 strategy 、
│ │ max_files 等遗传信息
Capsule(胶囊) │ 成功结果快照 │ 记录一次成功演化的完整上下文,
│ │ 类似生物体的"表型快照"
Epigenetic │ SolidifyEngine::applyEpigeneti│ 不改基因序列(策略模板),但通
Mark(表观遗传标记) │ cMarks() │ 过环境特异性标记调控行为表达,
│ │ 90天自然衰减
Mutation(突变) │ Mutation.php + │ LLM
│ PromptBuilder │ 生成的代码变更,受爆炸半径约束
Decay(衰变) │ DecayEngine │ 记忆的 Weibull
│ │ 拉伸指数衰减模型,分
│ │ core/working/peripheral 三层
Selection │ GeneSelector 的多因子评分 │ 模式匹配 + 学习历史 +
Pressure(选择压力) │ │ 拉普拉斯平滑成功率 + 遗传漂变
│ │ + 模拟退火
Genetic Drift(遗传漂变) │ GeneSelector::selectGene() │ 概率性选择非最优基因,保持种群
│ │ 多样性
Natural Selection(自然选择) │ Personality │ 人格参数根据历史统计自动趋向最
│ │ 优状态
Skill │ SkillDistiller │ 从成功胶囊中提取高频模式,合成
Distillation(技能蒸馏) │ │ 新基因——类似"后天获得性状的遗
│ │ 传化"
评价:这套生物隐喻不是表面装饰,而是深入到了每个算法的实现细节。例如衰变引擎用的是真实的 Weibull
分布参数(而非简单的
TTL),表观遗传标记有完整的衰减和上限机制,基因选择器实现了模拟退火和拉普拉斯平滑。这种深度比大多
数"仿生"项目要真诚得多。
### 2. GEP 协议:五对象严格输出约束
GEP (Gene Evolution Protocol) 是整个系统的核心协议。每次 evolver_run 生成一个提示词,要求 LLM
严格输出 5 个 JSON 对象:
Mutation → PersonalityState → EvolutionEvent → Gene → Capsule
这是一种协议驱动的 LLM 交互模式——不是自由对话,而是严格的合同式输出。 SolidifyEngine
后续逐个验证、解析、存储这 5 个对象。
评价:这种设计在 LLM 系统中很少见。大多数系统用自然语言接口,而 Evolver.php
强制结构化协议输出,减少了歧义但增加了 LLM 端的合规风险(缺少任一对象即协议失败)。
### 3. 信号驱动的演化触发
SignalExtractor 实现了一套极其丰富的信号检测体系(844 行),覆盖:
• 防御信号: log_error 、 errsig:* 、 memory_missing 、 protocol_drift 、 recurring_error
• 机会信号: user_feature_request 、 perf_bottleneck 、 capability_gap 、 stable_success_plateau
• 环路信号: repair_loop_detected 、 evolution_stagnation_detected 、 evolution_saturation
• 失败信号: consecutive_failure_streak_N 、 failure_loop_detected 、 ban_gene:*
• 振荡抑制:同一信号在最近 8 次事件中出现 3+ 次会被抑制
评价:信号系统的完备性令人印象深刻。特别是振荡抑制和信号衰减机制,说明作者真实经历过"AI
自修复陷入死循环"的痛点,而不是纸上谈兵。
### 4. 深度防御的安全模型
安全不是一个检查点,而是一套纵深防御体系:
SourceProtector (不可修改的文件列表)
→ SafetyController (三模式: never/review/always)
→ ValidationPipeline (8 个优先级验证器)
→ BlastRadiusCalculator (硬限制 60 文件 / 20,000 行)
→ DestructiveChangeValidator (检测文件删除/清空)
→ EthicsValidator (检测恶意策略)
→ GeneIntegrityValidator (基因结构完整性)
其中 SolidifyEngine 在失败时执行两阶段回滚:
1. git restore --staged --worktree . 回退已追踪文件
2. 手动删除演化期间新创建的未追踪文件(跳过受保护路径)
评价:这是我在 PHP 项目中见过的最完善的安全模型之一。特别是两阶段回滚和金丝雀检查( canary.php
语法验证),说明作者对自动化代码修改的风险有深刻理解。
### 5. 后馈闭环 (Feedback Loop)
FeedbackMetrics 实现了后馈指标体系(E1),包括:
• 闭环覆盖率:run_id → solidify 的完成率
• 反事实分析(F2):对比 learning/rule/random 选择器模式的成功率差异
• 回归率:按信号键分桶统计
• 爆炸半径分布:P50/P90 统计
同时 EvolverEngine 的 10 步演化循环形成完整的正反馈:
信号提取 → 基因选择 → 上下文注入 → 提示词构建 → LLM 执行
→ 爆炸半径计算 → 验证管道 → 固化 → 表观遗传标记 → 反馈指标
--------
## 四、架构亮点
### A. Trait 组合替代继承
McpServer 通过 6 个 Trait 组合功能:
final class McpServer {
use McpMeetingTools;
use McpMemoryTools;
use McpSkillTools;
use McpAdvancedMeetingTools;
use McpWebSearchTools;
}
这避免了 God Object,每个 Trait 自带工具定义 + 处理器 + 延迟加载依赖。是一种务实的 PHP 组合方案。
### B. 延迟初始化 + 依赖注入
Trait 中的组件采用延迟初始化:
private function getMemoryStore(): MemoryStore {
return $this->memoryStore ??= new MemoryStore($this->db);
}
不用的功能不创建实例,对 MCP stdio 服务器场景合理。
### C. Schema 迁移链
Database 实现了从 v0.0.0 → v2.2.0 的 8 级顺序迁移,每级幂等( addColumnIfNotExists
),且带自愈能力( checkAndRepairDatabase 做 dump/restore)。
### D. 多语言信号检测
SignalExtractor 对每个信号类别提供 EN/ZH-CN/ZH-TW/JA 四种语言的正则模式,这在开源项目中很少见。
### E. 记忆三层衰减
DecayEngine 的 Weibull 模型将记忆分为:
• Core (floor 0.9):几乎不衰减
• Working (floor 0.7):中等衰减
• Peripheral (floor 0.5):快速衰减
比简单 TTL 更精细,能反映知识的真实价值曲线。
--------
## 五、架构问题与改进空间
### 1. McpServer 仍然是事实上的 God Class
虽然有 Trait 拆分, McpServer 仍然是所有调度的入口( dispatch() 用了一个巨大的 match 语句路由
30+ 工具)。建议进一步拆为独立的 ToolHandler 注册表模式。
### 2. VectorStore.php 是死代码
84 行的 VectorStore 已完全废弃(所有方法返回 false/null),但仍被 McpMemoryTools
注入。应清理或标记 <span class="mention-invalid">@deprecated</span> 。
### 3. 双重 SkillDistiller
存在两个 SkillDistiller :
• src/SkillDistiller.php (顶层)
• src/Skill/SkillDistiller.php (子命名空间)
功能上有重叠,容易造成混淆。
### 4. SolidifyEngine 过重(1477 行)
作为单个类承载了太多职责:验证、爆炸半径、伦理检查、表观遗传、回滚、反事实分析。建议至少拆出
RollbackManager 和 EpigeneticEngine 。
### 5. 测试与源码的耦合度
144 个测试文件中有大量集成测试(依赖真实 SQLite),单元测试边界不够清晰。 src/Contract/
下定义了接口,但实际依赖注入的使用不够彻底(很多地方直接 new 具体类)。
### 6. Fiber 并行的实用性存疑
ParallelGeneScorer 用 PHP Fiber 实现并行评分,但 PHP Fiber 是协作式并发(不是真正的并行),在
IO-bound 场景下的收益有限。除非评分涉及网络调用,否则串行可能更简单高效。
--------
## 六、总体评价
### 设计哲学定位
Evolver.php 不是一个传统意义上的"工具"或"框架",而是一个自演化智能体的运行时。它的核心命题是:
│ 让 AI 系统能够在受控条件下自主修改和改进代码,同时保持安全边界。
这个命题在当前的 AI 工程领域属于前沿探索,绝大多数团队还在做"AI 辅助编码"(Copilot 模式),而
Evolver.php 已经在做"AI 自主演化"(Auto-Evolution 模式)。
### 架构成熟度:7.5/10
• 优点:生物隐喻深度、安全纵深、信号体系、后馈闭环、GEP 协议设计
• 不足:部分类过重、死代码残留、依赖注入不彻底、God Object 倾向
### 与同类项目对比
相比 OpenAI 的 Codex、Devin 等"AI 软件工程师",Evolver.php 的独特之处在于:
1. 本地优先:SQLite + stdio,不依赖云服务
2. 协议约束:GEP 五对象强制输出,而非自由对话
3. 表观遗传:环境特异性学习,不是简单的成功/失败计数
4. 振荡抑制:对 AI 自修复死循环有专门的防护机制
5. 可审计性:完整的 Meeting 审计日志和 EvolutionEvent 链
这是一个有独立思考的项目,在 AI Agent 安全性和可控自演化方面做了大量原创性工作。
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!