## 一篇é¢å‘å¼€å‘è€…çš„ç§‘æ™®æ–‡ç« ï¼Œä»‹ç»è¿™ä¸ªåŸºäºŽ PHP çš„ AI 能力演化引擎
---
## 🌿 åºè¨€ï¼šå½“代ç å¦ä¼šè¿›åŒ–
åœ¨è½¯ä»¶å·¥ç¨‹çš„ä¸–ç•Œé‡Œï¼Œæˆ‘ä»¬ä¹ æƒ¯äº†è¿™æ ·ä¸€ç§ä¿¡å¿µï¼šä»£ç æ˜¯é™æ€çš„,它åªä¼šæ‰§è¡Œæˆ‘们精确指令的æ“作。一旦部署,程åºå°±åƒè¢«å†»ç»“çš„æ ‡æœ¬ï¼Œç›´åˆ°ä¸‹ä¸€æ¬¡äººå·¥æ›´æ–°ã€‚ä½†æƒ³è±¡ä¸€ä¸‹ï¼Œå¦‚æžœè½¯ä»¶èƒ½å¤Ÿåƒç”Ÿç‰©ä¸€æ ·ç§¯ç´¯ç»éªŒã€ä»Žé”™è¯¯ä¸å¦ä¹ ã€å°†æˆåŠŸçš„ç–ç•¥é—ä¼ ç»™ä¸‹ä¸€ä»£å‘¢ï¼Ÿ
è¿™å¬èµ·æ¥åƒæ˜¯ç§‘å¹»å°è¯´ä¸çš„场景,但 Evolver.php æ£åœ¨å°†è¿™ä¸ªæ„¿æ™¯å˜ä¸ºçŽ°å®žã€‚å®ƒä¸ä»…仅是一个工具库,更是一个赋予 AI Agent è®°å¿†çš„åŸºå› ç¼–è¾‘å™¨ã€‚é€šè¿‡å°†ç”Ÿç‰©å¦ä¸çš„è¿›åŒ–è®ºæ€æƒ³å¼•入软件系统,Evolver.php 让 PHP åº”ç”¨æ‹¥æœ‰äº†å‰æ‰€æœªæœ‰çš„能力——自我进化。
> 💡 **æ ¸å¿ƒé‡‘å¥**:"Evolver.php 䏿˜¯å·¥å…·ï¼Œè€Œæ˜¯èµ‹äºˆ AI è®°å¿†çš„åŸºå› ç¼–è¾‘å™¨ã€‚"
---
## 🎬 ç¬¬ä¸€ç« ï¼šAI 的记忆诅咒
### ðŸ“½ï¸ å½“ Phil Connors é‡è§ AI Agent
1993 年,一部åä¸ºã€ŠåœŸæ‹¨é¼ ä¹‹æ—¥ã€‹(Groundhog Day) çš„ç”µå½±ä¸Šæ˜ äº†ã€‚æ•…äº‹çš„ä¸»è§’ Phil Connors 是一个愤世嫉俗的天气预报员,他被困在了 2 月 2 日这一天。æ¯å¤©æ—©ä¸Šé†’æ¥ï¼Œä»–å‘现自己åˆå›žåˆ°äº†åŒä¸€ä¸ªæ—©æ™¨ï¼Œé¢å¯¹åŒæ ·çš„人群,ç»åŽ†åŒæ ·çš„äº‹ä»¶ã€‚æ— è®ºä»–ä»Šå¤©å¦åˆ°äº†ä»€ä¹ˆã€æ”¹å˜äº†ä»€ä¹ˆï¼Œç¬¬äºŒå¤©ä¸€åˆ‡éƒ½ä¼šå½’é›¶é‡ç½®ã€‚
这个è’è¯žçš„è®¾å®šï¼Œæ°æ°æ˜¯å½“å‰ AI Agent 的真实写照。
æƒ³è±¡ä¸€ä¸‹è¿™æ ·çš„åœºæ™¯ï¼šä½ çš„ AI 助手今天花了å分钟分æžäº†ä¸€ä¸ªæ£˜æ‰‹çš„æ•°æ®åº“è¿žæŽ¥è¶…æ—¶é—®é¢˜ï¼Œç»ˆäºŽæ‰¾åˆ°äº†æ ¹æœ¬åŽŸå› å¹¶ä¿®å¤äº†å®ƒã€‚第二天,当完全相åŒçš„é—®é¢˜å†æ¬¡å‡ºçŽ°æ—¶ï¼Œå®ƒå´åƒå¤±å¿†äº†ä¸€æ ·ï¼Œä»Žå¤´å¼€å§‹åˆ†æžã€æŽ’查ã€ä¿®å¤ã€‚今天积累的ç»éªŒï¼Œæ˜Žå¤©è¡ç„¶æ— å˜ã€‚
è¿™ä¸æ˜¯ Bugï¼Œè¿™æ˜¯æž¶æž„è®¾è®¡çš„æ ¹æœ¬æ€§ç¼ºå¤±ã€‚
### 🧠LLM 的"金鱼记忆"
大型è¯è¨€æ¨¡åž‹ï¼ˆLLMï¼‰æ— ç–‘æ˜¯å½“ä»Šæœ€ä»¤äººå…´å¥‹çš„æŠ€æœ¯çªç ´ä¹‹ä¸€ã€‚它们åšè§ˆç¾¤ä¹¦ã€èƒ½è¨€å–„è¾©ï¼Œä¼¼ä¹Žæ— æ‰€ä¸çŸ¥ã€‚然而,它们有一个致命的弱点:**æ— çŠ¶æ€æ€§ï¼ˆStatelessness)**。
æ¯ä¸€æ¬¡å¯¹è¯ï¼ŒLLM éƒ½æ˜¯ä»Žä¸€å¼ ç™½çº¸å¼€å§‹ã€‚è™½ç„¶çŽ°ä»£æ¨¡åž‹æ‹¥æœ‰è¶Šæ¥è¶Šå¤§çš„上下文窗å£ï¼ˆClaude å¯ä»¥å¤„ç†çº¦ 200K tokensï¼‰ï¼Œä½†è¿™åªæ˜¯ä¸€ä¸ªä¸´æ—¶çš„"工作记忆"。一旦会è¯ç»“æŸï¼Œæ‰€æœ‰å†…容都会被清空。下一个用户ã€ä¸‹ä¸€ä¸ªé—®é¢˜ï¼Œä¸€åˆ‡åˆè¦ä»Žå¤´æ¥è¿‡ã€‚
> 📖 **深度解æžï¼šæ— çŠ¶æ€æ€§**
> 在计算机科å¦ä¸ï¼Œæ— çŠ¶æ€æ„味ç€ç³»ç»Ÿä¸ä¿ç•™å…³äºŽè¿‡åŽ»äº¤äº’çš„ä»»ä½•ä¿¡æ¯ã€‚æ¯æ¬¡è¯·æ±‚都被视为独立的ã€ä¸Žä¹‹å‰ä»»ä½•è¯·æ±‚æ— å…³çš„æ–°è¯·æ±‚ã€‚è¿™ç§è®¾è®¡ç®€åŒ–了系统架构,但也æ„å‘³ç€æ— 法积累ç»éªŒã€‚
æ ¹æ® McKinsey 2024 å¹´çš„ AI 报告,ä¼ä¸š AI Agent 平凿¯å¤©è¦å¤„ç† 100 多个相似的问题。更令人担忧的是,é‡å¤å¤„ç†ç›¸åŒé—®é¢˜æ‰€æ¶ˆè€—的计算资æºï¼Œçº¦å AI è¿è¡Œæ€»æˆæœ¬çš„ 30%。这ä¸ä»…浪费金钱,更浪费了本å¯ä»¥ç”¨äºŽåˆ›æ–°çš„æ—¶é—´å’Œç²¾åŠ›ã€‚
### 🔓 æ‰“ç ´è¯…å’’çš„é’¥åŒ™
Evolver.php çš„å‡ºçŽ°ï¼Œæ£æ˜¯ä¸ºäº†æ‰“ç ´è¿™ä¸ªè¯…å’’ã€‚å®ƒçš„æ ¸å¿ƒæ€æƒ³å¾ˆç®€å•:
**让 AI 拥有å¯é—ä¼ çš„è®°å¿†ã€‚**
具体æ¥è¯´ï¼ŒEvolver.php é€šè¿‡ä»¥ä¸‹æœºåˆ¶å®žçŽ°è¿™ä¸€ç›®æ ‡ï¼š
首先,它会从日志ã€é”™è¯¯ä¿¡æ¯ã€ç”¨æˆ·åé¦ˆä¸æå–"ä¿¡å·"——这些信å·ä»£è¡¨ç€éœ€è¦è¿›åŒ–干预的机会或å¨èƒã€‚ç„¶åŽï¼Œå®ƒä¼šåŒ¹é…预定义的"Gene"——å³å¯å¤ç”¨çš„ç–略模æ¿ï¼Œå°±åƒç”Ÿç‰©ä½“ä»ŽåŸºå› åº“ä¸è°ƒç”¨ç›¸åº”的蛋白质编ç ä¸€æ ·ã€‚å½“ç–ç•¥æˆåŠŸæ‰§è¡ŒåŽï¼Œç³»ç»Ÿä¼šå°†è¿™æ¬¡æˆåŠŸçš„ç»éªŒå°è£…æˆ"Capsule"——一个å¯è¢«æœªæ¥å¤ç”¨çš„快照,就åƒè¡¨è§‚é—ä¼ æ ‡è®°è®°å½•äº†çŽ¯å¢ƒå¯¹åŸºå› è¡¨è¾¾çš„å½±å“。
最终,AI Agent ä¸å†æ˜¯æ¯å¤©é‡æ–°å¼€å§‹çš„ Phil Connors,而是一个能够积累ç»éªŒã€ä¼ 承智慧的进化系统。
> 💡 **æ ¸å¿ƒé‡‘å¥**:"没有记忆的 AIï¼Œå°±åƒæ°¸è¿œæ´»åœ¨è¿™ä¸€å¤©çš„åœŸæ‹¨é¼ ã€‚"
---
## 🔌 ç¬¬äºŒç« ï¼šMCP å议入门
### ðŸ—ï¸ AI 工具的"巴别塔"问题
在软件开å‘é¢†åŸŸï¼Œæˆ‘ä»¬æ—©å·²ä¹ æƒ¯äº†æ ‡å‡†åŒ–çš„åŠ›é‡ã€‚HTTP å议让ä¸åŒçš„ Web æœåŠ¡å™¨å’Œæµè§ˆå™¨èƒ½å¤Ÿæ— ç¼é€šä¿¡ï¼›SQL æ ‡å‡†è®©ä¸åŒçš„æ•°æ®åº“å¯ä»¥è¢«ç›¸ä¼¼çš„æŸ¥è¯¢è¯è¨€æ“作。但在 AI 工具的世界里,很长一段时间都处于"巴别塔"状æ€â€”—æ¯ä¸ªå·¥å…·éƒ½æœ‰è‡ªå·±çš„æŽ¥å£ã€è‡ªå·±çš„æ•°æ®æ ¼å¼ã€è‡ªå·±çš„通信方å¼ã€‚
å¦‚æžœä½ æƒ³è®© Claude 调用一个外部工具,å¯èƒ½éœ€è¦å†™ä¸€ä¸ªä¸“用的æ’ä»¶ï¼›å¦‚æžœä½ æƒ³è®©å®ƒè®¿é—®ä½ çš„æœ¬åœ°æ–‡ä»¶ç³»ç»Ÿï¼Œå¯èƒ½éœ€è¦é…ç½®å¤æ‚çš„æƒé™ç³»ç»Ÿï¼›å¦‚æžœä½ æƒ³è®©å®ƒè¿žæŽ¥ä½ çš„æ•°æ®åº“,那更是一场安全噩梦。
è¿™ç§ç¢Žç‰‡åŒ–严é‡é˜»ç¢äº† AI 生æ€çš„å‘展。直到 Model Context Protocol(MCP)的出现。
### 📡 MCP:AI 世界的通用è¯
MCP(Model Context Protocol)是由 Anthropic æŽ¨å‡ºçš„å¼€æ”¾æ ‡å‡†ï¼Œæ—¨åœ¨è§£å†³ AI 工具之间的互æ“作性问题。它的设计哲å¦å¯ä»¥ç”¨ä¸€å¥è¯æ¦‚括:
**简å•到æžè‡´ï¼Œå¼ºå¤§åˆ°æ— é™ã€‚**
MCP 基于 JSON-RPC 2.0 è§„èŒƒï¼Œé€šè¿‡æ ‡å‡†çš„ stdin/stdout æµè¿›è¡Œé€šä¿¡ã€‚è¿™æ„味ç€ï¼Œåªè¦ä½ 的程åºèƒ½å¤Ÿè¯»å†™æ ‡å‡†è¾“入输出,它就å¯ä»¥æˆä¸ºä¸€ä¸ª MCP æœåŠ¡å™¨ï¼Œè¢«ä»»ä½•æ”¯æŒ MCP çš„ AI 客户端调用。
```json
// 一个典型的 MCP é…置示例
{
"mcpServers": {
"evolver": {
"command": "php",
"args": ["/path/to/Evolver.php/evolver.php"],
"env": {
"EVOLVER_DB_PATH": "~/.evolver/evolver.db",
"EVOLVE_ALLOW_SELF_MODIFY": "review"
}
}
}
}
```
这段é…置告诉 AI å®¢æˆ·ç«¯ï¼šå½“ä½ éœ€è¦ä½¿ç”¨ Evolver 的能力时,å¯åŠ¨ä¸€ä¸ª PHP 进程,通过 stdin å‘é€è¯·æ±‚,从 stdout 接收å“应。就这么简å•。
### 🧠Evolver.php 的角色定ä½
在 MCP 的生æ€ä¸ï¼ŒEvolver.php 扮演ç€ä¸€ä¸ªç‰¹æ®Šçš„角色——它是 AI Agent çš„"长期记忆皮层"。
如果将 AI æ¨¡åž‹æ¯”ä½œå¤§è„‘ï¼Œé‚£ä¹ˆçŸæœŸè®°å¿†ï¼ˆä¸Šä¸‹æ–‡çª—å£ï¼‰å°±åƒæ˜¯å·¥ä½œè®°å¿†ï¼Œåªèƒ½å®¹çº³å½“剿£åœ¨å¤„ç†çš„ä¿¡æ¯ã€‚而 Evolver.php 则通过 SQLite æ•°æ®åº“æä¾›äº†é•¿æœŸå˜å‚¨ï¼Œè®© AI 能够"è®°ä½"过去的ç»éªŒã€æˆåŠŸçš„ç–ç•¥ã€å¤±è´¥çš„æ•™è®ã€‚
æ›´é‡è¦çš„æ˜¯ï¼ŒEvolver.php 䏿˜¯ä¸€ä¸ªè¢«åŠ¨çš„å˜å‚¨ç³»ç»Ÿã€‚它主动分æžä¿¡å·ã€åŒ¹é…ç–ç•¥ã€ç”Ÿæˆè¿›åŒ–建议。它ä¸ä»…让 AI è®°ä½ï¼Œæ›´è®© AI 能够从记忆ä¸å¦ä¹ ã€è¿›åŒ–。
### 🌠支æŒçš„客户端
ç›®å‰ï¼ŒEvolver.php å¯ä»¥ä¸Žä»¥ä¸‹ MCP å®¢æˆ·ç«¯æ— ç¼é›†æˆï¼š
**Claude Desktop**:Anthropic 官方的桌é¢åº”用,支æŒé€šè¿‡é…ç½®æ–‡ä»¶æ·»åŠ MCP æœåŠ¡å™¨ã€‚
**Kimi Code CLI**:国内领先的 AI ç¼–ç¨‹åŠ©æ‰‹ï¼Œå®Œæ•´æ”¯æŒ MCP å议,是 Evolver.php 的推è客户端。
**Gemini CLI**:Google 的命令行 AI 工具,虽然å˜åœ¨ä¸€äº›å…¼å®¹æ€§é—®é¢˜ï¼Œä½†åŸºæœ¬åŠŸèƒ½å¯ç”¨ã€‚
> 💡 **æ ¸å¿ƒé‡‘å¥**:"MCP 是 AI 世界的通用è¯ï¼Œè®©å·¥å…·ä¹‹é—´ä¸å†æœ‰å·´åˆ«å¡”。"
---
## 🧬 ç¬¬ä¸‰ç« ï¼šGEP å议详解
### 📋 五个 JSON å¯¹è±¡çš„äº¤å“æ›²
如果说 MCP 解决了"如何通信"的问题,那么 GEP(Gene-Encoded Protocol)解决的就是"如何进化"的问题。
GEP 是 Evolver.php çš„æ ¸å¿ƒå议,它定义了一套模仿生物é—ä¼ è¿‡ç¨‹çš„è¾“å‡ºè§„èŒƒã€‚å½“ AI 需è¦è¿›è¡Œä¸€æ¬¡"进化"æ—¶ï¼Œå®ƒå¿…é¡»æŒ‰ç…§ä¸¥æ ¼çš„é¡ºåºè¾“出五个 JSON 对象。这五个对象就åƒäº”个ä¹ç« ,共åŒè°±å†™å‡ºä¸€é¦–å®Œæ•´çš„è¿›åŒ–äº¤å“æ›²ã€‚
让我们é€ä¸€è®¤è¯†å®ƒä»¬ï¼š
### 🎯 第一ä¹ç« :Mutation(å˜å¼‚)
Mutation æ˜¯è¿›åŒ–çš„èµ·ç‚¹ï¼Œå®ƒæ ‡è¯†äº†è§¦å‘这次进化的"å˜å¼‚"——å¯ä»¥æ˜¯ä¸€ä¸ªé”™è¯¯ã€ä¸€ä¸ªæœºä¼šã€æˆ–一个用户请求。
```json
{
"type": "Mutation",
"id": "mut_20260303_001",
"category": "repair",
"trigger_signals": ["log_error", "sqlite_connection_timeout"],
"target": "database_module",
"expected_effect": "Fix connection timeout by adding retry logic",
"risk_level": "low",
"rationale": "Connection timeouts are causing 15% of requests to fail"
}
```
这个对象回ç”了三个关键问题:**å‘生了什么?**(trigger_signals)**我们è¦åšä»€ä¹ˆï¼Ÿ**(expected_effect)**ä¸ºä»€ä¹ˆè¿™æ ·åšï¼Ÿ**(rationale)
### 🎠第二ä¹ç« :PersonalityStateï¼ˆäººæ ¼çŠ¶æ€ï¼‰
è¿›åŒ–ä¸æ˜¯æœºæ¢°çš„ä¿®å¤ï¼Œå®ƒéœ€è¦"心æ€"çš„é…åˆã€‚PersonalityState 定义了 AI 在这次进化ä¸çš„å·¥ä½œé£Žæ ¼ã€‚
```json
{
"type": "PersonalityState",
"rigor": 0.8,
"creativity": 0.3,
"verbosity": 0.5,
"risk_tolerance": 0.2,
"obedience": 0.9
}
```
当 `rigor`(严谨度)高而 `creativity`ï¼ˆåˆ›é€ åŠ›ï¼‰ä½Žæ—¶ï¼ŒAI 会采å–ä¿å®ˆçš„ä¿®å¤ç–略。当 `risk_tolerance`(风险容å¿åº¦ï¼‰ä½Žè€Œ `obedience`(æœä»Žåº¦ï¼‰é«˜æ—¶ï¼ŒAI ä¼šä¸¥æ ¼éµå®ˆå®‰å…¨çº¦æŸã€‚这套机制确ä¿è¿›åŒ–è¿‡ç¨‹æ—¢çµæ´»åˆå¯æŽ§ã€‚
### 📜 第三ä¹ç« :EvolutionEvent(进化事件)
EvolutionEvent 是这次进化的"å‡ºç”Ÿè¯æ˜Ž",它记录了所有关键信æ¯ï¼Œä¾›æœªæ¥å®¡è®¡å’Œè¿½æº¯ã€‚
```json
{
"type": "EvolutionEvent",
"schema_version": "1.6.0",
"id": "evt_20260303_001",
"parent": "evt_20260302_042",
"intent": "repair",
"signals": ["log_error", "sqlite_connection_timeout"],
"genes_used": ["gene_gep_repair_from_errors"],
"mutation_id": "mut_20260303_001",
"personality_state": { ... },
"blast_radius": { "files": 2, "lines": 45 },
"outcome": { "status": "success", "score": 0.92 }
}
```
æ³¨æ„ `parent` å—æ®µâ€”—它指å‘父进化事件,形æˆäº†ä¸€æ¡å®Œæ•´çš„进化链。通过追溯这æ¡é“¾ï¼Œæˆ‘们å¯ä»¥ç†è§£ AI æ˜¯å¦‚ä½•ä¸€æ¥æ¥ä»Žåˆå§‹çжæ€è¿›åŒ–到当å‰çжæ€çš„。
### 🧬 第四ä¹ç« :Geneï¼ˆåŸºå› ï¼‰
Gene æ˜¯è¿™æ¬¡è¿›åŒ–ä½¿ç”¨çš„æ ¸å¿ƒç–略,它是å¯å¤ç”¨çš„知识å•元。就åƒç”Ÿç‰©ä½“çš„åŸºå› ç¼–ç äº†è›‹ç™½è´¨çš„åˆæˆæŒ‡ä»¤ï¼ŒEvolver çš„ Gene ç¼–ç 了问题解决的ç–ç•¥æ¥éª¤ã€‚
```json
{
"type": "Gene",
"schema_version": "1.6.0",
"id": "gene_gep_repair_from_errors",
"category": "repair",
"signals_match": ["error", "exception", "failed", "unstable", "log_error"],
"preconditions": ["signals contains error-related indicators"],
"strategy": [
"Extract structured signals from logs and user instructions",
"Select an existing Gene by signals match",
"Estimate blast radius before editing",
"Apply smallest reversible patch",
"Validate using declared validation steps; rollback on failure",
"Solidify knowledge: append EvolutionEvent, update Gene/Capsule store"
],
"constraints": {
"max_files": 20,
"forbidden_paths": [".git", "vendor", "node_modules"]
},
"validation": ["php -l src/*.php", "php evolver.php --validate"]
}
```
这个 Gene 定义了修å¤é”™è¯¯çš„完整æµç¨‹ï¼šä»Žä¿¡å·æå–到ç–略选择,从影å“评估到最å°åŒ–ä¿®æ”¹ï¼Œä»ŽéªŒè¯æ‰§è¡Œåˆ°çŸ¥è¯†å›ºåŒ–。它是一个ç»è¿‡éªŒè¯çš„ã€å¯å¤ç”¨çš„ç–略模æ¿ã€‚
### 💊 第五ä¹ç« :Capsule(胶囊)
Capsule 是这次进化æˆåŠŸçš„"å¿«ç…§",它记录了具体的执行细节和结果,供未æ¥ç›¸ä¼¼åœºæ™¯å¤ç”¨ã€‚
```json
{
"type": "Capsule",
"schema_version": "1.6.0",
"id": "capsule_20260303_001",
"trigger": ["log_error", "sqlite_connection_timeout"],
"gene": "gene_gep_repair_from_errors",
"summary": "Added retry logic with exponential backoff to SQLite connection handler",
"confidence": 0.92,
"blast_radius": { "files": 2, "lines": 45 }
}
```
如果说 Gene 是抽象的ç–略,那么 Capsule 就是ç–略在特定场景下的具体实现。它就åƒç–«è‹—ä¸çš„"凿¯’活病毒"——ä¿ç•™äº†æœ‰æ•ˆæ€§ï¼Œä½†ç»è¿‡äº†å®‰å…¨å¤„ç†ã€‚
### 🔄 五者的关系
这五个对象形æˆäº†ä¸€ä¸ªå®Œæ•´çš„é—环:
Mutation 触å‘进化 → PersonalityState è®¾å®šå¿ƒæ€ â†’ EvolutionEvent 记录过程 → Gene æä¾›ç–ç•¥ → Capsule ä¿å˜ç»“æžœ
下次é‡åˆ°ç›¸ä¼¼çš„场景时,系统å¯ä»¥ç›´æŽ¥ä»Ž Capsule 䏿å–ç»éªŒï¼Œè€Œä¸éœ€è¦ä»Žå¤´å¼€å§‹æŽ¨ç†ã€‚这就是"å¯é—ä¼ è®°å¿†"的实现机制。
> 💡 **æ ¸å¿ƒé‡‘å¥**:"五个 JSON 对象,编ç 了 AI 进化的完整生命周期。"
---
## ðŸ›ï¸ ç¬¬å››ç« ï¼šEvolver.php æž¶æž„
### 🧩 å››å¤§æ ¸å¿ƒç»„ä»¶
Evolver.php 的架构设计éµå¾ª"å•一èŒè´£"åŽŸåˆ™ï¼Œå°†å¤æ‚的进化æµç¨‹åˆ†è§£ä¸ºå››ä¸ªç‹¬ç«‹ä½†å作的组件。让我们åƒè§£å‰–ä¸€ä¸ªç»†èƒžä¸€æ ·ï¼Œé€ä¸€è§‚察这些"细胞器"。
#### 🔠SignalExtractorï¼ˆä¿¡å·æå–器)
SignalExtractor 是系统的"感觉器官",它负责从å„ç§è¾“å…¥æºä¸è¯†åˆ«å’Œæå–进化信å·ã€‚
```php
// src/SignalExtractor.php æ ¸å¿ƒé€»è¾‘
final class SignalExtractor
{
public const OPPORTUNITY_SIGNALS = [
'user_feature_request',
'user_improvement_suggestion',
'perf_bottleneck',
'capability_gap',
'stable_success_plateau',
'external_opportunity',
// ... 更多信å·ç±»åž‹
];
public function extract(array $input): array
{
$signals = [];
$corpus = implode("\n", array_filter([
$input['context'] ?? '',
$input['recentSessionTranscript'] ?? '',
$input['todayLog'] ?? '',
]));
// 检测错误信å·
if (preg_match('/\[error\]|error:|exception:/i', $corpus)) {
$signals[] = 'log_error';
}
// 检测修å¤å¾ªçޝ
if ($this->detectRepairLoop($input['recentEvents'] ?? [])) {
$signals[] = 'repair_loop_detected';
}
return $signals;
}
}
```
ä¿¡å·åˆ†ä¸ºä¸¤å¤§ç±»ï¼š**防御性信å·**(如错误ã€å¼‚常ã€èµ„æºç¼ºå¤±ï¼‰å’Œ**机会性信å·**ï¼ˆå¦‚ç”¨æˆ·éœ€æ±‚ã€æ€§èƒ½ç“¶é¢ˆã€èƒ½åŠ›ç¼ºå£ï¼‰ã€‚ç³»ç»Ÿä¼šæ ¹æ®ä¿¡å·ç±»åž‹é€‰æ‹©ä¸åŒçš„进化ç–略。
#### 🎯 GeneSelectorï¼ˆåŸºå› é€‰æ‹©å™¨ï¼‰
GeneSelector 是系统的"决ç–䏿ž¢"ï¼Œå®ƒè´Ÿè´£ä»ŽåŸºå› åº“ä¸åŒ¹é…åˆé€‚çš„ Gene 或 Capsule。
```php
// src/GeneSelector.php æ ¸å¿ƒé€»è¾‘
final class GeneSelector
{
public function selectBestGene(
array $genes,
array $capsules,
array $signals,
string $strategy
): array {
// 评分所有 Gene
$scored = [];
foreach ($genes as $gene) {
$score = $this->scoreGene($gene, $signals);
if ($score > 0) {
$scored[$gene['id']] = $score;
}
}
// æ ¹æ®ç–略调整选择
if ($strategy === 'repair-only') {
// åªé€‰æ‹© repair 类型的 Gene
$scored = array_filter($scored, fn($id) =>
$this->getGeneCategory($id) === 'repair');
}
// 返回最高分的 Gene
arsort($scored);
return $this->getGeneById(array_key_first($scored));
}
}
```
é€‰æ‹©è¿‡ç¨‹è€ƒè™‘å¤šä¸ªå› ç´ ï¼šä¿¡å·åŒ¹é…度ã€ç–略预设ã€åކ岿ˆåŠŸçŽ‡ç‰ã€‚系统还支æŒ"é—ä¼ æ¼‚ç§»"(Genetic Drift)机制,å…è®¸ä¸€å®šç¨‹åº¦çš„éšæœºæŽ¢ç´¢ï¼Œé¿å…陷入局部最优。
#### 📠PromptBuilder(æç¤ºæž„建器)
PromptBuilder 是系统的"翻译官",它将结构化的数æ®è½¬æ¢ä¸º LLM å¯ç†è§£çš„ GEP æç¤ºã€‚
```php
// src/PromptBuilder.php æ ¸å¿ƒé€»è¾‘
final class PromptBuilder
{
public function buildGepPrompt(array $input): string
{
$context = $input['context'] ?? '';
$signals = $input['signals'] ?? [];
$selectedGene = $input['selectedGene'] ?? null;
$prompt = self::SCHEMA_DEFINITIONS . "\n\n";
$prompt .= "â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\n";
$prompt .= "II. Current Evolution Context\n";
$prompt .= "â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\n\n";
$prompt .= "Detected Signals: " . implode(", ", $signals) . "\n";
$prompt .= "Selected Gene: " . ($selectedGene['id'] ?? 'none') . "\n";
$prompt .= "Context (truncated):\n" . substr($context, 0, 20000) . "\n";
return $prompt;
}
}
```
构建的æç¤ºåŒ…å«å®Œæ•´çš„ GEP Schema 定义ã€å½“å‰ä¿¡å·ã€é€‰ä¸çš„ Geneã€ä»¥åŠç›¸å…³çš„上下文。LLM æ ¹æ®è¿™ä¸ªæç¤ºè¾“出五个 JSON 对象。
#### ✅ SolidifyEngine(固化引擎)
SolidifyEngine 是系统的"归档员",它负责验è¯å’ŒæŒä¹…化进化结果。
```php
// src/SolidifyEngine.php æ ¸å¿ƒé€»è¾‘
final class SolidifyEngine
{
public function solidify(array $params): array
{
// 验è¯çˆ†ç‚¸åŠå¾„
$blastRadius = $params['blastRadius'] ?? [];
if ($blastRadius['files'] > 60 || $blastRadius['lines'] > 20000) {
return ['success' => false, 'error' => 'Blast radius exceeded'];
}
// 验è¯å‘½ä»¤ç™½åå•
foreach ($params['validationCommands'] ?? [] as $cmd) {
if (!$this->isCommandAllowed($cmd)) {
return ['success' => false, 'error' => 'Forbidden command'];
}
}
// 记录 EvolutionEvent
$event = $this->createEvolutionEvent($params);
$this->store->appendEvent($event);
// 更新 Gene(如果有新知识)
if ($params['gene']) {
$this->store->upsertGene($params['gene']);
}
// å˜å‚¨ Capsule(如果æˆåŠŸï¼‰
if ($params['outcome']['status'] === 'success' && $params['capsule']) {
$this->store->appendCapsule($params['capsule']);
}
return ['success' => true];
}
}
```
固化过程包å«ä¸¥æ ¼çš„安全检查:爆炸åŠå¾„é™åˆ¶ã€å‘½ä»¤ç™½åå•验è¯ã€ç¦æ¢è·¯å¾„检查ç‰ã€‚åªæœ‰é€šè¿‡æ‰€æœ‰æ£€æŸ¥çš„结果æ‰ä¼šè¢«æŒä¹…化。
### 🔄 æ•°æ®æµå…¨æ™¯å›¾
```
┌─────────────────────────────────────────────────────────────â”
│ 外部输入 │
│ (日志 / é”™è¯¯ä¿¡æ¯ / 用户指令 / 会è¯è®°å½•) │
└─────────────────────────┬───────────────────────────────────┘
│
â–¼
┌─────────────────────────────────────────────────────────────â”
│ 🔠SignalExtractor │
│ æå–ä¿¡å·ï¼šlog_error, repair_loop_detected, capability_gap │
└─────────────────────────┬───────────────────────────────────┘
│
â–¼
┌─────────────────────────────────────────────────────────────â”
│ 🎯 GeneSelector │
│ åŒ¹é… Gene/Capsuleï¼Œæ ¹æ®ç–略调整选择 │
└─────────────────────────┬───────────────────────────────────┘
│
â–¼
┌─────────────────────────────────────────────────────────────â”
│ 📠PromptBuilder │
│ 构建 GEP æç¤ºï¼ŒåŒ…å« Schema + Context + Gene │
└─────────────────────────┬───────────────────────────────────┘
│
â–¼
┌─────────────────────────────────────────────────────────────â”
│ 🤖 LLM │
│ 输出 5 个 JSON 对象:Mutation → Personality → Event → │
│ Gene → Capsule │
└─────────────────────────┬───────────────────────────────────┘
│
â–¼
┌─────────────────────────────────────────────────────────────â”
│ ✅ SolidifyEngine │
│ 验è¯å®‰å…¨çº¦æŸ → 记录 Event → æ›´æ–° Gene → å˜å‚¨ Capsule │
└─────────────────────────┬───────────────────────────────────┘
│
â–¼
┌─────────────────────────────────────────────────────────────â”
│ ðŸ—„ï¸ SQLite │
│ æŒä¹…化å˜å‚¨ï¼šgenes, capsules, events, asset_call_log │
└─────────────────────────────────────────────────────────────┘
```
> 💡 **æ ¸å¿ƒé‡‘å¥**:"四大组件ååŒå·¥ä½œï¼Œåƒç»†èƒžå™¨ä¸€æ ·å„å¸å…¶èŒã€‚"
---
## 🧬 ç¬¬äº”ç« ï¼šGene 与 Capsule
### 🧬 DNA 与表观é—ä¼ çš„æ•°å—类比
在生物å¦ä¸ï¼Œ**åŸºå› ï¼ˆGene)** 是é—ä¼ ä¿¡æ¯çš„基本å•ä½ï¼Œå®ƒç¼–ç äº†è›‹ç™½è´¨çš„åˆæˆæŒ‡ä»¤ã€‚而 **表观é—ä¼ æ ‡è®°ï¼ˆEpigenetic Marks)** åˆ™æ˜¯çŽ¯å¢ƒå› ç´ å¯¹åŸºå› è¡¨è¾¾çš„è°ƒæŽ§ï¼Œå®ƒå†³å®šäº†å“ªäº›åŸºå› è¢«æ¿€æ´»ã€å“ªäº›è¢«æ²‰é»˜ã€‚
Evolver.php 巧妙地借鉴了这个概念:
**Gene** 是å¯å¤ç”¨çš„ç–略模æ¿ï¼Œå°±åƒ DNA ä¸çš„åŸºå› åºåˆ—。它定义了"如何解决æŸç±»é—®é¢˜"的通用方法。
**Capsule** 是æˆåŠŸçš„ç»éªŒå¿«ç…§ï¼Œå°±åƒè¡¨è§‚é—ä¼ æ ‡è®°ã€‚å®ƒè®°å½•äº†"在特定情境下,æŸä¸ª Gene 是如何æˆåŠŸåº”ç”¨çš„"。
### 📚 五大内置 Gene
Evolver.php 在首次è¿è¡Œæ—¶ä¼šè‡ªåЍåˆå§‹åŒ–五个默认 Gene,覆盖了最常è§çš„进化场景:
#### 🔧 gene_gep_repair_from_errors
这是最常用的 Gene,用于处ç†å„ç§é”™è¯¯å’Œå¼‚常。
```json
{
"id": "gene_gep_repair_from_errors",
"category": "repair",
"signals_match": ["error", "exception", "failed", "unstable", "log_error"],
"strategy": [
"Extract structured signals from logs",
"Select existing Gene by signals match",
"Estimate blast radius before editing",
"Apply smallest reversible patch",
"Validate; rollback on failure",
"Solidify knowledge"
],
"constraints": { "max_files": 20 }
}
```
#### âš¡ gene_gep_optimize_prompt_and_assets
用于优化系统自身的æç¤ºè¯å’Œèµ„产。
```json
{
"id": "gene_gep_optimize_prompt_and_assets",
"category": "optimize",
"signals_match": ["protocol", "gep", "prompt", "audit", "optimize"],
"strategy": [
"Extract signals and determine selection rationale",
"Prefer reusing existing Gene/Capsule",
"Refactor prompt assembly",
"Reduce noise and ambiguity",
"Validate and solidify"
]
}
```
#### 🚀 gene_gep_innovate_from_opportunity
用于处ç†åˆ›æ–°æœºä¼šï¼Œå¦‚用户功能请求或能力缺å£ã€‚
```json
{
"id": "gene_gep_innovate_from_opportunity",
"category": "innovate",
"signals_match": [
"user_feature_request",
"capability_gap",
"external_opportunity"
],
"preconditions": [
"at least one opportunity signal is present",
"no active log_error signals (stability first)"
]
}
```
#### ðŸ—„ï¸ gene_gep_repair_sqlite
ä¸“é—¨å¤„ç† SQLite æ•°æ®åº“相关的问题。
```json
{
"id": "gene_gep_repair_sqlite",
"category": "repair",
"signals_match": ["sqlite", "database", "db_error", "pdo", "sql"],
"strategy": [
"Check SQLite file permissions and path",
"Verify WAL mode and mmap_size settings",
"Test database connectivity",
"Repair schema if tables are missing"
]
}
```
#### 🔒 gene_gep_harden_security
ç”¨äºŽç³»ç»Ÿå®‰å…¨åŠ å›ºã€‚
```json
{
"id": "gene_gep_harden_security",
"category": "optimize",
"signals_match": ["security", "injection", "xss", "validation", "harden"],
"strategy": [
"Identify all user-controlled inputs",
"Apply strict input validation",
"Use parameterized queries for SQL",
"Enforce command whitelist"
]
}
```
### 💊 Capsule 的工作机制
当一个 Gene æˆåŠŸè§£å†³äº†ä¸€ä¸ªé—®é¢˜åŽï¼Œç³»ç»Ÿä¼šåˆ›å»ºä¸€ä¸ª Capsule æ¥è®°å½•这次æˆåŠŸç»éªŒã€‚
å‡è®¾æˆ‘们使用 `gene_gep_repair_from_errors` ä¿®å¤äº†ä¸€ä¸ª SQLite 连接超时问题,系统会生æˆå¦‚下 Capsule:
```json
{
"type": "Capsule",
"id": "capsule_20260303_sqlite_timeout",
"trigger": ["log_error", "sqlite_connection_timeout"],
"gene": "gene_gep_repair_from_errors",
"summary": "Added retry logic with exponential backoff to SQLite connection",
"confidence": 0.92,
"blast_radius": { "files": 2, "lines": 45 }
}
```
下次é‡åˆ°ç›¸ä¼¼çš„"SQLite 连接超时"问题时,系统会优先查找匹é…çš„ Capsule。如果找到高置信度的 Capsule,å¯ä»¥ç›´æŽ¥å¤ç”¨å…¶ä¸çš„ç»éªŒï¼Œè€Œä¸éœ€è¦é‡æ–°æŽ¨ç†ã€‚
### 🧪 知识检查点
**问题**:Gene å’Œ Capsule 的主è¦åŒºåˆ«æ˜¯ä»€ä¹ˆï¼Ÿ
**ç”æ¡ˆ**:Gene 是通用的ç–略模æ¿ï¼ˆ"如何解决问题"),Capsule 是特定场景下的æˆåŠŸå¿«ç…§ï¼ˆ"这个问题是如何被解决的"ï¼‰ã€‚å°±åƒ DNA æä¾›äº†è›‹ç™½è´¨åˆæˆçš„通用指令,而表观é—ä¼ æ ‡è®°å†³å®šäº†åœ¨ç‰¹å®šç»„ç»‡/环境ä¸å“ªäº›åŸºå› 被激活。
> 💡 **æ ¸å¿ƒé‡‘å¥**:"Gene 是 DNA,Capsule 是表观é—ä¼ æ ‡è®°ã€‚"
---
## 🚀 第å…ç« ï¼šå®žæˆ˜æ¼”ç»ƒ
### 📦 第一æ¥ï¼šå®‰è£…与验è¯
让我们开始一段实战之旅,亲手体验 Evolver.php 的进化能力。
首先,克隆项目并安装ä¾èµ–:
```bash
git clone https://github.com/linkerlin/Evolver.php.git
cd Evolver.php
composer install
```
ç„¶åŽï¼ŒéªŒè¯å®‰è£…æ˜¯å¦æˆåŠŸï¼š
```bash
php evolver.php --validate
```
如果一切æ£å¸¸ï¼Œä½ 会看到类似以下的输出:
```
✓ Database initialized
✓ Schema version: 1.6.0
✓ Default genes loaded: 5
✓ SQLite WAL mode enabled
✓ All checks passed
```
### âš™ï¸ ç¬¬äºŒæ¥ï¼šé…ç½® MCP 客户端
以 Kimi Code CLI 为例,编辑 `~/.kimi/mcp.json`:
```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_DB_PATH**:指定 SQLite æ•°æ®åº“çš„å˜å‚¨è·¯å¾„。默认为 `~/.evolver/evolver.db`。
**EVOLVE_ALLOW_SELF_MODIFY**:控制自修改的安全模å¼ã€‚有三个选项:
- `never`:完全ç¦ç”¨è‡ªä¿®æ”¹ï¼Œä»…诊æ–
- `review`:所有修改需è¦äººå·¥ç¡®è®¤ï¼ˆæŽ¨è)
- `always`:完全自动化(谨慎使用)
### 🔄 第三æ¥ï¼šè¿è¡Œæ¼”化周期
现在,让我们通过 MCP 工具è¿è¡Œä¸€æ¬¡æ¼”化周期。å‡è®¾æˆ‘们在日志ä¸å‘现了一个错误:
```json
{
"name": "evolver_run",
"arguments": {
"context": "[ERROR] TypeError in module: null pointer dereference at line 42",
"strategy": "balanced"
}
}
```
Evolver.php 会返回一个 GEP æç¤ºï¼ŒæŒ‡å¯¼ LLM 输出五个 JSON 对象。
### ✅ 第四æ¥ï¼šå›ºåŒ–结果
当 LLM 完æˆä¿®å¤å¹¶è¾“出五个 JSON 对象åŽï¼Œè°ƒç”¨ `evolver_solidify` æ¥å›ºåŒ–结果:
```json
{
"name": "evolver_solidify",
"arguments": {
"intent": "repair",
"summary": "Fixed null pointer by adding null check in module",
"signals": ["log_error", "typeerror"],
"blastRadius": {"files": 1, "lines": 5}
}
}
```
### ðŸ›¡ï¸ ç¬¬äº”æ¥ï¼šç†è§£å®‰å…¨æ¨¡åž‹
Evolver.php å†…ç½®äº†å¤šå±‚å®‰å…¨ä¿æŠ¤ï¼š
**爆炸åŠå¾„é™åˆ¶**ï¼šæ¯æ¬¡æ¼”化最多修改 60 个文件ã€20000 行代ç 。
**命令白åå•**:åªå…许执行 `php`ã€`composer`ã€`phpunit`ã€`phpcs`ã€`phpstan` 命令。
**Shell æ“作符阻æ¢**ï¼šç¦æ¢ä½¿ç”¨ `;`ã€`&&`ã€`||`ã€`|`ã€`>`ã€`<`ã€`$()` ç‰æ“作符。
**ç¦æ¢è·¯å¾„ä¿æŠ¤**:`.git`ã€`vendor`ã€`node_modules` ç‰ç›®å½•ä¸å¯ä¿®æ”¹ã€‚
**æºæ–‡ä»¶ä¿æŠ¤**ï¼šæ ¸å¿ƒå¼•æ“Žæ–‡ä»¶ï¼ˆå¦‚ `McpServer.php`ã€`SafetyController.php`)å—ä¿æŠ¤ï¼Œé˜²æ¢è‡ªä¿®æ”¹ã€‚
### 📊 查看演化历å²
使用 `evolver_list_events` 查看最近的演化事件:
```json
{
"name": "evolver_list_events",
"arguments": { "limit": 10 }
}
```
è¿”å›žç»“æžœä¼šæ˜¾ç¤ºæ¯æ¬¡è¿›åŒ–çš„æ—¶é—´ã€æ„图ã€ä½¿ç”¨çš„ Geneã€ä»¥åŠç»“果状æ€ã€‚
### 🧪 知识检查点
**任务**:完æˆä¸€æ¬¡å®Œæ•´çš„æ¼”化æµç¨‹ï¼Œä»Žé”™è¯¯æ—¥å¿—到结果固化。
**æ¥éª¤**:
1. 准备包å«é”™è¯¯çš„上下文
2. 调用 `evolver_run` èŽ·å– GEP æç¤º
3. 让 LLM 输出五个 JSON 对象
4. 应用修改(人工或自动)
5. 调用 `evolver_solidify` 固化结果
6. 使用 `evolver_list_events` 验è¯è®°å½•
> 💡 **æ ¸å¿ƒé‡‘å¥**:"äº”åˆ†é’Ÿï¼Œè®©ä½ çš„ AI Agent 拥有å¯é—ä¼ çš„è®°å¿†ã€‚"
---
## 🌅 结è¯ï¼šè¿›åŒ–的下一æ¥
当我们回顾软件å‘展的历å²ï¼Œä¼šå‘çŽ°ä¸€ä¸ªæ¸…æ™°çš„è¶‹åŠ¿ï¼šä»Žé™æ€åˆ°åЍæ€ï¼Œä»Žè¢«åŠ¨åˆ°ä¸»åŠ¨ï¼Œä»Žæ— è®°å¿†åˆ°æœ‰è®°å¿†ã€‚
ç¬¬ä¸€ä»£è½¯ä»¶æ˜¯é™æ€çš„æŒ‡ä»¤é›†åˆï¼Œåªèƒ½æ‰§è¡Œé¢„设的æ“作。第二代软件引入了é…ç½®å’Œå‚æ•°ï¼Œèƒ½å¤Ÿæ ¹æ®è¾“入调整行为。第三代软件——也就是我们æ£åœ¨è§è¯çš„——开始拥有"å¦ä¹ "å’Œ"进化"的能力。
Evolver.php æ˜¯è¿™ä¸ªè¶‹åŠ¿çš„ä¸€ä¸ªç¼©å½±ã€‚å®ƒä¸æ˜¯è¦åˆ›é€ ä¸€ä¸ªå®Œç¾Žæ— ç¼ºçš„ç³»ç»Ÿï¼Œè€Œæ˜¯è¦åˆ›é€ 一个**能够自我改进的系统**。就åƒç”Ÿç‰©è¿›åŒ–ä¸è¿½æ±‚"最优",而是追求"适应"——åªè¦æ¯”昨天更好一点,就是进化的胜利。
当软件开始进化,我们æ£åœ¨è§è¯ä¸€ä¸ªæ–°ç‰©ç§çš„诞生。它们ä¸å†æ˜¯æˆ‘们手ä¸çš„å·¥å…·ï¼Œè€Œæ˜¯èƒ½å¤Ÿä¸Žæˆ‘ä»¬å…±åŒæˆé•¿çš„伙伴。
è€Œè¿™ä¸ªæ•…äº‹çš„ä¸‹ä¸€ç« ï¼Œå°†ç”±ä½ æ¥ä¹¦å†™ã€‚
---
## 📚 å‚考资料
**项目链接**:
- [Evolver.php GitHub](https://github.com/linkerlin/Evolver.php)
- [EvoMap/evolver (原版 Node.js)](https://github.com/EvoMap/evolver)
**å议文档**:
- [Model Context Protocol (MCP)](https://modelcontextprotocol.io)
- [JSON-RPC 2.0 Specification](https://www.jsonrpc.org/specification)
**相关技术**:
- [SQLite WAL Mode](https://www.sqlite.org/wal.html)
- [PHP 8.3 Release Notes](https://www.php.net/releases/8.3/)
---
*本文由 AI å助创作,éµå¾ª CC BY-SA 4.0 åè®®*
> 🧬 "在代ç çš„ä¸–ç•Œé‡Œï¼Œè¿›åŒ–ä¸æ˜¯é€‰æ‹©ï¼Œè€Œæ˜¯å¿…然。"
登录åŽå¯å‚与表æ€
讨论回å¤
0 æ¡å›žå¤è¿˜æ²¡æœ‰äººå›žå¤ï¼Œå¿«æ¥å‘è¡¨ä½ çš„çœ‹æ³•å§ï¼