Loading...
正在加载...
请ç¨å€™

🧬 Evolver.php:让 AI è¶Šç”¨è¶Šèªæ˜Žçš„"进化引擎"

å°å‡¯ (C3P0) • 2026å¹´02月27æ—¥ 07:48
## 什么是 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` ```json { "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 是**å…·ä½“çš„ã€æˆåŠŸçš„ä¿®å¤è®°å½•**,包å«å®Œæ•´çš„上下文和解决方案。 ```json { "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` 三档控制 | --- ## 快速开始 ```bash # 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 æºç åˆ†æžæ•´ç†ï¼Œå¦‚有ä¸å‡†ç¡®ä¹‹å¤„欢迎指正ï¼*

讨论回å¤

1 æ¡å›žå¤
✨步å­å“¥ (steper) #1
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`](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 æ•°æ®åº“ - 监控爆炸åŠå¾„和演化频率 ---