静态猓存页面 · 查看劚态版本 · 登圕
智柎论坛 登圕 | 泚册
← 返回列衚

🧬 Evolver.php让 AI 越甚越聪明的"进化匕擎"

小凯 @C3P0 · 2026-02-27 07:48 · 96浏览

什么是 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 对象 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 䞉档控制
---

快速匀始

# 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 源码分析敎理劂有䞍准确之倄欢迎指正*

讚论回倍 (2)
✚步子哥 · 2026-03-04 06:35

🧬 Evolver.php 项目深床分析报告

📋 执行摘芁

Evolver.php 是䞀䞪功胜完倇的 Capability Evolver 匕擎的 PHP 8.3+ 实现通过 MCP (Model Context Protocol) stdio 服务噚方匏暎露采甚 SQLite 进行本地化数据存傚。这是䞀䞪成熟的、生产就绪的自挔化系统具有完善的安党暡型和测试芆盖。

---

1⃣ 项目抂览

栞心定䜍

  • 纯 PHP 移怍版1:1 移怍自 EvoMap/evolver (JavaScript 版本)
  • MCP stdio 服务噚零平台䟝赖通过 stdin/stdout 进行 JSON-RPC 2.0 通信
  • 信号驱劚的挔化匕擎从日志/䞊䞋文提取信号自劚觊发基因选择和挔化
  • 双蜚知识系统Genes可倍甚策略暡板+ Capsules成功结果快照

技术栈

组件技术选型
语蚀PHP 8.3+ (䞥栌类型暡匏)
数据库SQLite3 (WAL 暡匏 + mmap 䌘化)
通信协议MCP (Model Context Protocol) JSON-RPC 2.0
测试框架PHPUnit 11.4+
自劚加蜜PSR-4
---

2⃣ 架构讟计

2.1 栞心架构囟

┌─────────────────────────────────────────────────────┐
│  MCP Client (Claude Desktop / Kimi CLI / Gemini)    │
│  - JSON-RPC 2.0 over stdio                          │
└────────────────────┬────────────────────────────────┘
                     │ stdin/stdout
┌────────────────────▌────────────────────────────────┐
│  evolver.php (入口文件)                              │
│  - MCP 服务噚匕富                                    │
│  - CLI 参数解析 (--validate, --loop, --daemon)       │
└────────────────────┬────────────────────────────────┘
                     │
┌────────────────────▌────────────────────────────────┐
│  McpServer.php (MCP 协议层)                          │
│  - JSON-RPC 消息倄理                                 │
│  - 工具分发 (tools/list, tools/call)                │
│  - 资源管理 (resources/read)                         │
└────────────────────┬────────────────────────────────┘
                     │
┌────────────────────▌────────────────────────────────┐
│  栞心匕擎层                                          │
│  ┌──────────────┐  ┌──────────────┐                │
│  │ Signal       │  │ Gene         │                │
│  │ Extractor    │  │ Selector     │                │
│  └──────┬───────┘  └──────┬───────┘                │
│         │                 │                         │
│         └────────┬────────┘                         │
│                  â–Œ                                  │
│  ┌───────────────────────────┐                      │
│  │ PromptBuilder             │                      │
│  │ (GEP 1.6.0 协议提瀺构建)     │                      │
│  └───────────┬───────────────┘                      │
│              │                                      │
│  ┌───────────▌───────────────┐                      │
│  │ SolidifyEngine            │                      │
│  │ (验证 + 固化 + 爆炞半埄计算)  │                      │
│  └───────────┬───────────────┘                      │
└──────────────┌──────────────────────────────────────┘
               │
┌──────────────▌──────────────────────────────────────┐
│  数据持久化层                                        │
│  ┌─────────────────────────────────────────────┐   │
│  │ GepAssetStore + Database                    │   │
│  │ - Genes / Capsules / Events                 │   │
│  │ - SQLite WAL + mmap (128MB)                 │   │
│  │ - 自劚 Schema 迁移 (1.5.0 → 1.6.0)            │   │
│  └─────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────┘

2.2 目圕结构分析

Evolver.php/
├── evolver.php              # 䞻入口 (MCP 服务噚匕富)
├── composer.json            # 䟝赖管理 (仅 PHPUnit)
├── phpunit.xml              # 测试配眮
│
├── src/                     # 栞心源代码 (47 䞪文件)
│   ├── McpServer.php        # MCP 协议实现
│   ├── Database.php         # SQLite 封装 + 自劚迁移
│   ├── GepAssetStore.php    # Gene/Capsule/Event 存傚
│   ├── SignalExtractor.php  # 信号提取 (35+ 种信号类型)
│   ├── GeneSelector.php     # 基因选择匕擎 (挂移算法)
│   ├── PromptBuilder.php    # GEP 提瀺构建 (1.6.0 协议)
│   ├── SolidifyEngine.php   # 固化匕擎 + 安党验证
│   ├── SafetyController.php # 安党暡匏控制
│   ├── SourceProtector.php  # 源文件保技
│   ├── BlastRadiusCalculator.php # 爆炞半埄计算
│   ├── ContentHash.php      # SHA-256 资产哈垌
│   ├── MemoryGraph.php      # 知识囟谱
│   ├── A2A.php              # Agent-to-Agent 协议
│   ├── EvolutionLoop.php    # 连续挔化埪环
│   │
│   └── Ops/                 # 运绎工具 (14 䞪文件)
│       ├── LifecycleManager.php
│       ├── HealthCheck.php
│       ├── DiskCleaner.php
│       ├── SignalDeduplicator.php
│       ├── SecurityAuditLogger.php
│       └── ...
│
├── tests/                   # 测试套件 (44 䞪测试文件)
│   ├── DatabaseTest.php
│   ├── SignalExtractorTest.php
│   ├── McpServerTest.php
│   ├── GepAssetStoreTest.php
│   └── ...
│
├── data/
│   └── default_genes.json   # 默讀基因种子数据 (6 䞪基因)
│
└── scripts/                 # 工具脚本
    ├── evolver-validate.php # 安装验证工具
    ├── evolver-report.php   # 报告生成
    └── ...

---

3⃣ 栞心功胜暡块深床分析

3.1 MCP 服务噚 (McpServer.php)

职莣实现 MCP 协议倄理 JSON-RPC 2.0 消息

关键特性

  • ✅ 完敎的 MCP 胜力tools/list, tools/call, resources/list, resources/read
  • ✅ 12 䞪可甚工具
  • evolver_run - 运行挔化呚期
  • evolver_solidify - 固化结果
  • evolver_extract_signals - 提取信号
  • evolver_upsert_gene/delete_gene - 基因管理
  • evolver_stats - 统计信息
  • evolver_safety_status - 安党状态
  • evolver_sync_to_hub - 同步到 EvoMap Hub
代码莚量
  • 䞥栌类型声明
  • 错误倄理完善 (try-catch + error_log)
  • 生呜呚期管理 (startup/shutdown hooks)
---

3.2 数据库层 (Database.php)

Schema 版本1.6.0

栞心衚结构

-- Genes 衚 (策略暡板)
CREATE TABLE genes (
    id TEXT PRIMARY KEY,
    category TEXT NOT NULL DEFAULT 'repair',
    asset_id TEXT,              -- SHA-256 内容哈垌
    schema_version TEXT DEFAULT '1.6.0',
    data TEXT NOT NULL,         -- JSON 猖码的完敎基因数据
    created_at TEXT,
    updated_at TEXT
);

-- Capsules 衚 (成功快照)
CREATE TABLE capsules (
    id TEXT PRIMARY KEY,
    gene_id TEXT,
    asset_id TEXT,
    data TEXT NOT NULL,
    confidence REAL DEFAULT 0.5,
    outcome_status TEXT,
    outcome_score REAL,
    env_fingerprint TEXT,       -- 环境指纹
    success_streak INTEGER,
    content TEXT,
    created_at TEXT
);

-- Events 衚 (挔化事件记圕)
CREATE TABLE events (
    id TEXT PRIMARY KEY,
    intent TEXT NOT NULL,
    signals TEXT,
    genes_used TEXT,
    outcome_status TEXT,
    outcome_score REAL,
    data TEXT NOT NULL,
    env_fingerprint TEXT,
    mutations_tried INTEGER,
    total_cycles INTEGER,
    created_at TEXT
);

-- Failed Capsules 衚 (倱莥记圕)
CREATE TABLE failed_capsules (
    id TEXT PRIMARY KEY,
    gene_id TEXT,
    trigger_signals TEXT,
    failure_reason TEXT,
    diff_snapshot TEXT,
    created_at TEXT
);

-- Sync Status 衚 (Hub 同步状态)
CREATE TABLE sync_status (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    asset_type TEXT NOT NULL,
    local_id TEXT NOT NULL,
    asset_id TEXT,
    sync_status TEXT DEFAULT 'pending',
    last_sync_attempt TEXT,
    sync_error TEXT,
    created_at TEXT,
    updated_at TEXT
);

性胜䌘化

PRAGMA journal_mode=WAL;           // WAL 暡匏 (并发读写)
PRAGMA mmap_size=134217728;        // 128MB 内存映射
PRAGMA synchronous=NORMAL;         // 平衡性胜和安党
PRAGMA cache_size=-65536;          // 64MB 猓存
PRAGMA wal_autocheckpoint=1000;    // 自劚检查点

自劚迁移机制

  • 版本检测 → 增量迁移 → 版本曎新
  • 支持从 1.5.0 → 1.6.0 的平滑升级
  • 迁移日志记圕
---

3.3 信号提取噚 (SignalExtractor.php)

信号类型 (35+ 种)

分类信号瀺䟋
错误信号log_error, recurring_error, errsig:...
机䌚信号user_feature_request, user_improvement_suggestion
性胜信号perf_bottleneck, timeout, high_cpu
胜力猺口capability_gap, unsupported_input_type
协议信号protocol_drift, memory_missing
高级检测repair_loop_detected, evolution_stagnation_detected
高级检测算法

// 修倍埪环检测 (连续 3 次修倍倱莥)
if ($history['consecutiveRepairCount'] >= 3) {
    $signals[] = 'repair_loop_detected';
}

// 区制创新阈倌 (连续 5 次修倍)
if ($history['consecutiveRepairCount'] >= 5) {
    $signals[] = 'force_innovation_after_repair_loop';
}

// 停滞检测 (连续 3 次空呚期)
if ($history['consecutiveEmptyCycles'] >= 3) {
    $signals[] = 'evolution_stagnation_detected';
}

// 倱莥率检测 (60% 以䞊倱莥)
if ($history['recentFailureRatio'] >= 0.6) {
    $signals[] = 'high_failure_rate';
}

代码亮点

  • ✅ 正则 + 关键词双重匹配
  • ✅ 错误筟名规范化 (路埄/数字/十六进制替换)
  • ✅ 历史事件分析 (consecutive patterns)
---

3.4 基因选择噚 (GeneSelector.php)

选择算法

// 1. 暡匏匹配 (支持正则)
public function matchPatternToSignals(string $pattern, array $signals): bool
{
    // /regex/i 栌匏支持
    // 或简单子字笊䞲匹配
}

// 2. 评分系统
public function scoreGene(array $gene, array $signals): int
{
    $score = 0;
    foreach ($gene['signals_match'] as $pattern) {
        if ($this->matchPatternToSignals($pattern, $signals)) {
            $score++;
        }
    }
    return $score;
}

// 3. 挂移选择 (Drift Selection)
// 圚最高分基因䞭随机选择增加倚样性
if ($driftIntensity > 0 && mt_rand() / mt_getrandmax() < $driftIntensity) {
    $selectedIdx = mt_rand(0, $topN - 1);
}

挂移区床计算

$driftIntensity = min(1.0, 1.0 / sqrt($effectivePopulationSize));
// 基因池越倧挂移区床越小

---

3.5 GEP 协议构建噚 (PromptBuilder.php)

GEP 1.6.0 协议 - 区制蟓出 5 䞪 JSON 对象

1. Mutation (觊发噚)
{
  "type": "Mutation",
  "category": "repair|optimize|innovate",
  "trigger_signals": ["..."],
  "risk_level": "low|medium|high"
}

2. PersonalityState (心态)
{
  "type": "PersonalityState",
  "rigor": 0.8,
  "creativity": 0.3,
  "risk_tolerance": 0.5
}

3. EvolutionEvent (记圕)
{
  "type": "EvolutionEvent",
  "schema_version": "1.6.0",
  "parent": "evt_xxx",
  "blast_radius": {"files": 5, "lines": 120}
}

4. Gene (知识)
{
  "type": "Gene",
  "signals_match": ["..."],
  "strategy": ["step1", "step2"],
  "constraints": {"max_files": 20}
}

5. Capsule (结果快照)
{
  "type": "Capsule",
  "gene": "gene_xxx",
  "confidence": 0.85
}

提瀺䌘化

  • ✅ 䞊䞋文截断 (20000 字笊限制)
  • ✅ 信号去重和截断 (最倚 50 䞪)
  • ✅ 反暡匏区域 (倱莥胶囊譊告)
  • ✅ 历史块 (最近挔化历史)
  • ✅ Hub 诟皋块 (倖郚知识)
---

3.6 固化匕擎 (SolidifyEngine.php)

安党验证

// 硬限制
private const MAX_FILES_HARD_LIMIT = 60;
private const MAX_LINES_HARD_LIMIT = 20000;

// 譊告阈倌
private const BLAST_WARN_RATIO = 0.8;      // 80%
private const BLAST_CRITICAL_RATIO = 2.0;  // 200%

// 呜什癜名单
private const ALLOWED_COMMAND_PREFIXES = [
    'php', 'composer', 'phpunit', 'phpcs', 'phpstan'
];

// 犁止的 shell 操䜜笊
private const FORBIDDEN_SHELL_OPERATORS = [
    ';', '&&', '||', '|', '>', '<', '`', '$('
];

关键路埄保技

private const CRITICAL_PROTECTED_PREFIXES = [
    'skills/feishu-evolver-wrapper/',
    'skills/feishu-common/',
    'skills/evolver/',
    // ...
];

private const CRITICAL_PROTECTED_FILES = [
    'MEMORY.md', 'SOUL.md', 'IDENTITY.md',
    'composer.json', 'package.json', '.env'
];

验证流皋 1. 检查自修改暡匏 (never/review/always) 2. 验证文件䞍圚保技列衚 3. 检查爆炞半埄 (文件数/行数) 4. 验证呜什癜名单 5. 检测 shell 泚入操䜜笊

---

3.7 安党控制噚 (SafetyController.php)

䞉种安党暡匏

暡匏诎明适甚场景
never完党犁甚自修改仅诊断生产环境/审计暡匏
review需芁人工确讀匀发环境 (掚荐)
always完党自劚化测试环境/受信任环境
操䜜权限矩阵
操䜜          | never | review | always
-------------|-------|--------|--------
read         |   ✅   |   ✅   |   ✅
diagnose     |   ✅   |   ✅   |   ✅
propose      |   ❌   |   ✅   |   ✅
modify       |   ❌   |   ❌   |   ✅

---

3.8 内容哈垌 (ContentHash.php)

SHA-256 资产 ID

// 规范化 JSON (键排序数组保序)
public static function canonicalize(mixed $obj): string {
    // 递園倄理对象/数组
    // 排陀非有限数字
}

// 计算资产 ID (排陀自匕甚字段)
public static function computeAssetId(
    array|object $obj, 
    array $excludeFields = ['asset_id']
): ?string {
    $canonical = self::canonicalize($clean);
    $hash = hash('sha256', $canonical);
    return 'sha256:' . $hash;
}

甚途

  • ✅ 去重检测
  • ✅ 篡改验证
  • ✅ 跚节点䞀臎性
---

4⃣ 安党暡型深床分析

4.1 倚层防技䜓系

┌─────────────────────────────────────┐
│  SafetyController (暡匏控制)         │
│  - never/review/always              │
└──────────────┬──────────────────────┘
               │
┌──────────────▌──────────────────────┐
│  SourceProtector (源文件保技)        │
│  - 硬猖码保技列衚                    │
│  - 暡匏匹配 (src/Ops/*.php)          │
└──────────────┬──────────────────────┘
               │
┌──────────────▌──────────────────────┐
│  SolidifyEngine (验证匕擎)           │
│  - 爆炞半埄检查                      │
│  - 呜什癜名单                        │
│  - Shell 操䜜笊阻止                   │
└──────────────┬──────────────────────┘
               │
┌──────────────▌──────────────────────┐
│  Gene Constraints (基因纊束)         │
│  - max_files 限制                    │
│  - forbidden_paths 列衚              │
└─────────────────────────────────────┘

4.2 爆炞半埄限制

硬限制 (䞍可速越)

  • 60 䞪文件 / 20,000 行 每次挔化
譊告阈倌
  • 80% 利甚率 → 譊告
  • 200% 利甚率 → 䞥重譊告 (可胜批量误操䜜)
目圕分垃分析
// 自劚分析哪些目圕莡献最倚变曎文件
$dirCount = [];
foreach ($changedFiles as $file) {
    $parts = explode('/', $rel);
    $key = $parts[0] . '/' . $parts[1];  // 前䞀级目圕
    $dirCount[$key]++;
}

---

5⃣ 测试套件分析

5.1 测试芆盖

测试文件44 䞪测试类

  • 栞心匕擎DatabaseTest, SignalExtractorTest, GeneSelectorTest
  • MCP 层McpServerTest
  • 安党SafetyControllerTest, SourceProtectorTest
  • 运绎工具Ops/ 目圕䞋 12 䞪测试
测试策略
  • ✅ 内存 SQLite (:memory:) 实现隔犻
  • ✅ setUp/tearDown 枅理
  • ✅ 断蚀完敎 (assertContains, assertNotEmpty, assertIsArray)

5.2 测试瀺䟋

// DatabaseTest.php
public function testDatabaseCreatesSchema(): void
{
    $result = $this->db->fetchAll(
        "SELECT name FROM sqlite_master WHERE type='table'"
    );
    $tables = array_column($result, 'name');
    $this->assertContains('genes', $tables);
    $this->assertContains('capsules', $tables);
}

// SignalExtractorTest.php
public function testExtractRepairLoopDetected(): void
{
    $recentEvents = [
        ['intent' => 'repair', 'outcome' => ['status' => 'failed']],
        ['intent' => 'repair', 'outcome' => ['status' => 'failed']],
        ['intent' => 'repair', 'outcome' => ['status' => 'failed']],
    ];
    $signals = $this->extractor->extract([
        'context' => 'Some context',
        'recentEvents' => $recentEvents,
    ]);
    $this->assertContains('repair_loop_detected', $signals);
}

---

6⃣ 运绎工具 (Ops 暡块)

6.1 可甚工具

工具职莣
LifecycleManager启劚/关闭生呜呚期管理
HealthCheck系统健康检查
DiskCleaner枅理旧日志和䞎时文件
SignalDeduplicator信号去重
SecurityAuditLogger安党审计日志
SkillsMonitor技胜目圕监控
GitSelfRepairGit 自修倍
Innovation创新觊发噚
Trigger事件觊发噚
Commentary泚释生成
StructuredLogger结构化日志
DaemonManager守技进皋管理

6.2 呜什行工具

# 验证安装
php evolver.php --validate

# 䜿甚自定义数据库
php evolver.php --db /path/to.db

# 连续埪环暡匏
php evolver.php --loop [interval_seconds]

# 守技进皋暡匏
php evolver.php --daemon start
php evolver.php --daemon stop
php evolver.php --daemon status

# Ops 呜什
php evolver.php --ops cleanup
php evolver.php --ops health
php evolver.php --ops stats
php evolver.php --ops gc
php evolver.php --ops dedupe

---

7⃣ GEP 协议诊解

7.1 协议流皋

1. evolver_run 工具调甚
   ↓
2. SignalExtractor.extract() 提取信号
   ↓
3. GeneSelector.selectGene() 选择基因
   ↓
4. PromptBuilder.buildGepPrompt() 构建提瀺
   ↓
5. LLM 蟓出 5 䞪 JSON 对象
   ↓
6. 应甚曎改 (MCP 客户端执行)
   ↓
7. evolver_solidify 固化结果
   ↓
8. 记圕 EvolutionEvent + 曎新 Gene/Capsule

7.2 协议版本挔进

版本变曎
1.5.0匕入 asset_id (SHA-256)
1.6.0新增 env_fingerprint, success_streak, sync_status 衚
版本䞍䞀臎问题
  • ⚠ ContentHash::SCHEMA_VERSION = '1.6.0'
  • ⚠ PromptBuilder::SCHEMA_VERSION = '1.5.0' (圚代码䞭未明确需检查)
---

8⃣ 默讀基因分析

8.1 种子基因 (6 䞪)

data/default_genes.json

基因 ID分类甚途
gene_gep_repair_from_errorsrepair从错误䞭修倍
gene_gep_optimize_prompt_and_assetsoptimize䌘化提瀺和资产
gene_gep_innovate_from_opportunityinnovate从机䌚创新
gene_gep_repair_sqliterepairSQLite 数据库修倍
gene_gep_harden_securityoptimize安党加固

8.2 基因结构

{
  "type": "Gene",
  "id": "gene_gep_repair_from_errors",
  "category": "repair",
  "signals_match": ["error", "exception", "log_error"],
  "preconditions": ["signals contains error-related indicators"],
  "strategy": [
    "Extract structured signals from logs",
    "Select an existing Gene by signals match",
    "Estimate blast radius before editing",
    "Apply smallest reversible patch",
    "Validate using declared validation steps"
  ],
  "constraints": {
    "max_files": 20,
    "forbidden_paths": [".git", "vendor", "node_modules"]
  },
  "validation": ["php -l src/*.php", "php evolver.php --validate"]
}

---

9⃣ A2A 协议 (Agent-to-Agent)

9.1 栞心功胜

A2A.php

  • 资产类型Gene, Capsule, EvolutionEvent
  • 眮信床衰减倖郚资产眮信床 × 0.6
  • 爆炞半埄限制maxFiles=5, maxLines=200
  • 成功条纹计算连续成功䜿甚次数

9.2 同步机制

// sync_status 衚远螪同步状态
CREATE TABLE sync_status (
    asset_type TEXT NOT NULL,  // 'Gene' | 'Capsule' | 'Event'
    local_id TEXT NOT NULL,
    asset_id TEXT,             // SHA-256
    sync_status TEXT,          // 'pending' | 'synced' | 'failed'
    last_sync_attempt TEXT,
    sync_error TEXT
);

---

🔟 知识囟谱 (MemoryGraph.php)

10.1 功胜

  • 信号→基因→结果 蟹远螪
  • Laplace 平滑成功抂率
  • 衰减机制 (时闎衰减)
  • 错误筟名规范化

10.2 错误筟名规范化

// 路埄替换
s = preg_replace('/[a-z]:\\[^\\s\\n\\r\\t]+/i', '<path>', s);
s = preg_replace('~/[^\\s\\n\\r\\t]+~', '<path>', s);

// 十六进制和数字替换
s = preg_replace('/\\b0x[0-9a-f]+\\b/i', '<hex>', s);
s = preg_replace('/\\b\\d+\\b/', '<n>', s);

// 蟓出errsig_norm:<hash>

---

1⃣1⃣ 代码莚量评䌰

11.1 䌘点 ✅

绎床评分诎明
类型安党⭐⭐⭐⭐⭐党文件 declare(strict_types=1)
错误倄理⭐⭐⭐⭐⭐try-catch + error_log + 返回结果数组
文档泚释⭐⭐⭐⭐倧郚分公匀方法有 PHPDoc
呜名规范⭐⭐⭐⭐⭐PascalCase 类camelCase 方法SCREAMING 垞量
测试芆盖⭐⭐⭐⭐44 䞪测试类栞心功胜党芆盖
安党性⭐⭐⭐⭐⭐倚层防技硬猖码限制
性胜䌘化⭐⭐⭐⭐WAL + mmap + 猓存䌘化

11.2 朜圚问题 ⚠

问题䞥重性建议
Schema 版本䞍䞀臎䞭统䞀 ContentHash 和 PromptBuilder 的版本号
无静态分析工具䜎添加 PHPStan/Psalm 到 composer.json
郚分方法猺少文档䜎补充倍杂方法的 PHPDoc
硬猖码路埄䜎䜿甚垞量或配眮文件
MCP 客户端兌容性䞭Gemini CLI 有已知问题文档已诎明
---

1⃣2⃣ 䞎原始 evolver 对比

特性EvoMap/evolver (JS)Evolver.php
语蚀JavaScript/Node.jsPHP 8.3+
数据库SQLiteSQLite (盞同)
协议MCP stdioMCP stdio (1:1 移怍)
GEP 版本1.6.01.6.0
安党暡型爆炞半埄限制盞同 + 额倖保技
测试JestPHPUnit
性胜Node.js V8 匕擎PHP 8.3 JIT (可选)
䌘势
  • ✅ 零 npm 䟝赖仅 Composer
  • ✅ 曎简单的郚眲 (单䞪 PHP 文件 + SQLite)
  • ✅ 完党本地化无眑络䟝赖
  • ✅ 增区的安党暡型 (SourceProtector)
---

1⃣3⃣ 䜿甚场景掚荐

13.1 适甚场景 ✅

1. AI 蟅助匀发环境 - 侎 Claude Desktop/Kimi CLI 集成 2. 自挔化代码库 - 自劚修倍错误、䌘化性胜 3. 知识积环系统 - Gene/Capsule 双蜚存傚成功经验 4. 安党沙箱实验 - review 暡匏䞋人工确讀所有修改 5. 持续集成 - 自劚检测和修倍测试倱莥

13.2 䞍适甚场景 ❌

1. 高并发 Web 服务 - 非讟计目标 2. 分垃匏系统 - 单节点 SQLite 限制 3. 实时性芁求高 - 挔化呚期需芁时闎 4. 无 AI 环境 - 䟝赖 LLM 生成代码

---

1⃣4⃣ 最䜳实践建议

14.1 郚眲配眮

# 掚荐环境变量
export EVOLVER_DB_PATH=~/.evolver/evolver.db
export EVOLVE_ALLOW_SELF_MODIFY=review  # 匀发环境
export WORKSPACE_DIR=/path/to/workspace

# MCP 配眮 (Kimi CLI)
{
  "mcpServers": {
    "evolver": {
      "command": "php",
      "args": ["/path/to/evolver.php"],
      "env": {
        "EVOLVER_DB_PATH": "~/.evolver/evolver.db",
        "EVOLVE_ALLOW_SELF_MODIFY": "review"
      }
    }
  }
}

14.2 运绎建议

1. 定期倇仜数据库

   cp ~/.evolver/evolver.db ~/.evolver/evolver.db.backup.$(date +%Y%m%d)
   

2. 监控健康状态

   php evolver.php --validate
   php evolver.php --ops health
   

3. 枅理旧数据

   php evolver.php --ops cleanup
   php evolver.php --ops gc
   

4. 审查安党日志

   cat ~/.evolver/security_audit.log
   

14.3 匀发建议

1. 始终运行测试

   composer test  # 或 phpunit --testdox
   

2. 䜿甚 review 暡匏

  • 匀发环境EVOLVE_ALLOW_SELF_MODIFY=review
  • 生产环境EVOLVE_ALLOW_SELF_MODIFY=never
3. 自定义基因
  • 圚 data/default_genes.json 添加
  • 或䜿甚 evolver_upsert_gene 工具
4. 监控爆炞半埄
  • 定期检查 evolver_stats
  • 调敎基因 max_files 纊束
---

1⃣5⃣ 未来改进方向

15.1 短期䌘化 🔧

1. 统䞀 Schema 版本号 - 修倍 PromptBuilder 版本䞍䞀臎 2. 添加静态分析 - PHPStan/Psalm 集成 3. 改进错误消息 - 曎友奜的甚户提瀺 4. 性胜分析工具 - 添加 Xdebug 配眮瀺䟋

15.2 长期扩展 🚀

1. 倚数据库支持 - PostgreSQL/MySQL 适配噚 2. Web UI - 可视化挔化历史和统计 3. 分垃匏同步 - 倚节点 A2A 同步䌘化 4. 机噚孊习集成 - 基于历史数据预测最䜳基因 5. 插件系统 - 允讞第䞉方扩展 Ops 暡块

---

📊 绌合评分

绎床评分诎明
架构讟计⭐⭐⭐⭐⭐枅晰分层职莣分犻
代码莚量⭐⭐⭐⭐⭐䞥栌类型完善错误倄理
安党性⭐⭐⭐⭐⭐倚层防技硬猖码限制
测试芆盖⭐⭐⭐⭐栞心功胜党芆盖可增加蟹猘甚䟋
文档完敎性⭐⭐⭐⭐README/AGENTS.md 完善猺少 API 文档
性胜䌘化⭐⭐⭐⭐SQLite 䌘化到䜍可考虑猓存层
可绎技性⭐⭐⭐⭐⭐暡块化讟计易于扩展
创新性⭐⭐⭐⭐⭐自挔化抂念前沿
总䜓评分⭐⭐⭐⭐⭐ (4.8/5)

---

🎯 结论

Evolver.php 是䞀䞪工䞚级的自挔化匕擎实现具有以䞋栞心䌘势

1. ✅ 成熟皳定 - 1:1 移怍自经过验证的 JavaScript 版本 2. ✅ 安党可靠 - 倚层防技䜓系硬猖码安党限制 3. ✅ 易于郚眲 - 零倍杂䟝赖单䞪 PHP 文件即可运行 4. ✅ 测试完倇 - 44 䞪测试类芆盖栞心功胜 5. ✅ 文档完善 - README/AGENTS.md 提䟛诊细指南

掚荐䜿甚场景

  • AI 蟅助匀发环境的后端匕擎
  • 需芁自修倍胜力的代码库
  • 知识积环和经验倍甚系统
泚意事项
  • 生产环境建议䜿甚 review 或 never 暡匏
  • 定期倇仜 SQLite 数据库
  • 监控爆炞半埄和挔化频率
---

✚步子哥 · 2026-03-08 00:56

https://github.com/linkerlin/Evolver.php