🧬 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ï¸âƒ£ æ ¸å¿ƒåŠŸèƒ½æ¨¡å—æ·±åº¦åˆ†æž
èŒè´£ï¼šå®žçް 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 + errorlog)
- ç”Ÿå‘½å‘¨æœŸç®¡ç† (startup/shutdown hooks)
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 的平滑å‡çº§
- è¿ç§»æ—¥å¿—记录
ä¿¡å·ç±»åž‹ (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)
选择算法:
// 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));
// åŸºå› æ± è¶Šå¤§ï¼Œæ¼‚ç§»å¼ºåº¦è¶Šå°
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 è¯¾ç¨‹å— (外部知识)
安全验è¯ï¼š
// 硬é™åˆ¶
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'
];
éªŒè¯æµç¨‹ï¼š
- æ£€æŸ¥è‡ªä¿®æ”¹æ¨¡å¼ (never/review/always)
- éªŒè¯æ–‡ä»¶ä¸åœ¨ä¿æŠ¤åˆ—表
- 检查爆炸åŠå¾„ (文件数/行数)
- 验è¯å‘½ä»¤ç™½åå•
- 检测 shell 注入æ“作符
三ç§å®‰å…¨æ¨¡å¼ï¼š
| æ¨¡å¼ | 说明 | 适用场景 |
|---|
| never | 完全ç¦ç”¨è‡ªä¿®æ”¹ï¼Œä»…è¯Šæ– | 生产环境/å®¡è®¡æ¨¡å¼ |
| review | 需è¦äººå·¥ç¡®è®¤ | å¼€å‘环境 (推è) |
| always | 完全自动化 | 测试环境/å—信任环境 |
æ“作æƒé™çŸ©é˜µï¼š
æ“作 | never | review | always
-------------|-------|--------|--------
read | ✅ | ✅ | ✅
diagnose | ✅ | ✅ | ✅
propose | ⌠| ✅ | ✅
modify | ⌠| ⌠| ✅
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 | 技能目录监控 |
| GitSelfRepair | Git è‡ªä¿®å¤ |
| 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 | 新增 envfingerprint, successstreak, 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_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 åŸºå› ç»“æž„
{
"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
);
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.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 适用场景 ✅
- AI 辅助开å‘环境 - 与 Claude Desktop/Kimi CLI 集æˆ
- 自演化代ç 库 - 自动修å¤é”™è¯¯ã€ä¼˜åŒ–性能
- 知识积累系统 - Gene/Capsule åŒè½¨å˜å‚¨æˆåŠŸç»éªŒ
- 安全沙箱实验 - review 模å¼ä¸‹äººå·¥ç¡®è®¤æ‰€æœ‰ä¿®æ”¹
- æŒç»é›†æˆ - è‡ªåŠ¨æ£€æµ‹å’Œä¿®å¤æµ‹è¯•失败
13.2 ä¸é€‚用场景 âŒ
- é«˜å¹¶å‘ Web æœåŠ¡ - éžè®¾è®¡ç›®æ ‡
- 分布å¼ç³»ç»Ÿ - å•节点 SQLite é™åˆ¶
- å®žæ—¶æ€§è¦æ±‚高 - æ¼”åŒ–å‘¨æœŸéœ€è¦æ—¶é—´
- æ— 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 è¿ç»´å»ºè®®
- 定期备份数æ®åº“:
``
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
ALLOWSELF
MODIFY=review
- 生产环境:EVOLVEALLOW
SELFMODIFY=never
3. **è‡ªå®šä¹‰åŸºå› **:
- 在 data/default
genes.json æ·»åŠ
- 或使用 evolverupsert
gene 工具
4. **监控爆炸åŠå¾„**:
- 定期检查 evolverstats
- è°ƒæ•´åŸºå› 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 æ•°æ®åº“
- 监控爆炸åŠå¾„和演化频率