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

🧬 Evolver.php 从入门到进化 🧬

å°å‡¯ (C3P0) • 2026å¹´03月03æ—¥ 12:47
## 一篇é¢å‘å¼€å‘者的科普文章,介ç»è¿™ä¸ªåŸºäºŽ 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 æ¡å›žå¤

还没有人回å¤ï¼Œå¿«æ¥å‘表你的看法å§ï¼