# 🧬 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`](file:///Volumes/SSD/GitHub/Evolver.php/src/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`](file:///Volumes/SSD/GitHub/Evolver.php/src/Database.php))
**Schema 版本**:1.6.0
**æ ¸å¿ƒè¡¨ç»“æž„**:
```sql
-- 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
);
```
**性能优化**:
```php
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`](file:///Volumes/SSD/GitHub/Evolver.php/src/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` |
**高级检测算法**:
```php
// ä¿®å¤å¾ªçŽ¯æ£€æµ‹ (è¿žç» 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`](file:///Volumes/SSD/GitHub/Evolver.php/src/GeneSelector.php))
**选择算法**:
```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);
}
```
**漂移强度计算**:
```php
$driftIntensity = min(1.0, 1.0 / sqrt($effectivePopulationSize));
// åŸºå› æ± è¶Šå¤§ï¼Œæ¼‚ç§»å¼ºåº¦è¶Šå°
```
---
### 3.5 GEP å议构建器 ([`PromptBuilder.php`](file:///Volumes/SSD/GitHub/Evolver.php/src/PromptBuilder.php))
**GEP 1.6.0 åè®®** - 强制输出 5 个 JSON 对象:
```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`](file:///Volumes/SSD/GitHub/Evolver.php/src/SolidifyEngine.php))
**安全验è¯**:
```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 = [
';', '&&', '||', '|', '>', '<', '`', '$('
];
```
**å…³é”®è·¯å¾„ä¿æŠ¤**:
```php
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`](file:///Volumes/SSD/GitHub/Evolver.php/src/SafetyController.php))
**三ç§å®‰å…¨æ¨¡å¼**:
| æ¨¡å¼ | 说明 | 适用场景 |
|------|------|---------|
| **never** | 完全ç¦ç”¨è‡ªä¿®æ”¹ï¼Œä»…è¯Šæ– | 生产环境/å®¡è®¡æ¨¡å¼ |
| **review** | 需è¦äººå·¥ç¡®è®¤ | å¼€å‘环境 (推è) |
| **always** | 完全自动化 | 测试环境/å—信任环境 |
**æ“作æƒé™çŸ©é˜µ**:
```
æ“作 | never | review | always
-------------|-------|--------|--------
read | ✅ | ✅ | ✅
diagnose | ✅ | ✅ | ✅
propose | ⌠| ✅ | ✅
modify | ⌠| ⌠| ✅
```
---
### 3.8 内容哈希 ([`ContentHash.php`](file:///Volumes/SSD/GitHub/Evolver.php/src/ContentHash.php))
**SHA-256 资产 ID**:
```php
// 规范化 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% 利用率 → 严é‡è¦å‘Š (å¯èƒ½æ‰¹é‡è¯¯æ“作)
**目录分布分æž**:
```php
// 自动分æžå“ªäº›ç›®å½•è´¡çŒ®æœ€å¤šå˜æ›´æ–‡ä»¶
$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 测试示例
```php
// 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** | 技能目录监控 |
| **GitSelfRepair** | Git è‡ªä¿®å¤ |
| **Innovation** | 创新触å‘器 |
| **Trigger** | 事件触å‘器 |
| **Commentary** | æ³¨é‡Šç”Ÿæˆ |
| **StructuredLogger** | 结构化日志 |
| **DaemonManager** | å®ˆæŠ¤è¿›ç¨‹ç®¡ç† |
### 6.2 命令行工具
```bash
# 验è¯å®‰è£…
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`](file:///Volumes/SSD/GitHub/Evolver.php/data/default_genes.json)
| åŸºå› ID | 分类 | 用途 |
|--------|------|------|
| `gene_gep_repair_from_errors` | repair | 从错误ä¸ä¿®å¤ |
| `gene_gep_optimize_prompt_and_assets` | optimize | 优化æç¤ºå’Œèµ„产 |
| `gene_gep_innovate_from_opportunity` | innovate | 从机会创新 |
| `gene_gep_repair_sqlite` | repair | SQLite æ•°æ®åº“ä¿®å¤ |
| `gene_gep_harden_security` | optimize | å®‰å…¨åŠ å›º |
### 8.2 åŸºå› ç»“æž„
```json
{
"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`](file:///Volumes/SSD/GitHub/Evolver.php/src/A2A.php)
- **资产类型**:Gene, Capsule, EvolutionEvent
- **置信度衰å‡**:外部资产置信度 × 0.6
- **爆炸åŠå¾„é™åˆ¶**:maxFiles=5, maxLines=200
- **æˆåŠŸæ¡çº¹è®¡ç®—**ï¼šè¿žç»æˆåŠŸä½¿ç”¨æ¬¡æ•°
### 9.2 åŒæ¥æœºåˆ¶
```php
// 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`](file:///Volumes/SSD/GitHub/Evolver.php/src/MemoryGraph.php))
### 10.1 功能
- **ä¿¡å·â†’åŸºå› â†’ç»“æžœ** 边追踪
- **Laplace 平滑æˆåŠŸæ¦‚çŽ‡**
- **è¡°å‡æœºåˆ¶** (æ—¶é—´è¡°å‡)
- **错误ç¾å规范化**
### 10.2 错误ç¾å规范化
```php
// 路径替æ¢
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.js | PHP 8.3+ |
| **æ•°æ®åº“** | SQLite | SQLite (相åŒ) |
| **åè®®** | MCP stdio | MCP stdio (1:1 ç§»æ¤) |
| **GEP 版本** | 1.6.0 | 1.6.0 |
| **安全模型** | 爆炸åŠå¾„é™åˆ¶ | ç›¸åŒ + é¢å¤–ä¿æŠ¤ |
| **测试** | Jest | PHPUnit |
| **性能** | 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 部署é…ç½®
```bash
# 推è环境å˜é‡
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. **定期备份数æ®åº“**:
```bash
cp ~/.evolver/evolver.db ~/.evolver/evolver.db.backup.$(date +%Y%m%d)
```
2. **监控å¥åº·çжæ€**:
```bash
php evolver.php --validate
php evolver.php --ops health
```
3. **æ¸…ç†æ—§æ•°æ®**:
```bash
php evolver.php --ops cleanup
php evolver.php --ops gc
```
4. **审查安全日志**:
```bash
cat ~/.evolver/security_audit.log
```
### 14.3 å¼€å‘建议
1. **始终è¿è¡Œæµ‹è¯•**:
```bash
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 æ•°æ®åº“
- 监控爆炸åŠå¾„和演化频率
---