原理剖析 · 第 12 篇(完結(jié)篇)】)
自我進(jìn)化閉環(huán)從后臺(tái)審視到強(qiáng)化學(xué)習(xí)系列終篇導(dǎo)讀一個(gè) agent 不僅能執(zhí)行任務(wù)還能在后臺(tái)悄悄審視自己的對(duì)話、沉淀技能、把軌跡壓縮成訓(xùn)練數(shù)據(jù)、最終訓(xùn)練出下一代自己。這不是科幻而是 Hermes 架構(gòu)的最后一環(huán)。本文拆解 s20-s27 共 8 章用 → 記 → 抽象 → 訓(xùn)練 → 更好地用完整閉環(huán)一次講透。先問(wèn)一個(gè)問(wèn)題你的 agent 會(huì)長(zhǎng)大嗎你寫(xiě)過(guò)一個(gè)能用的 agent。它能調(diào)工具、能查資料、能按流程完成任務(wù)。但三個(gè)月后它還是老樣子。同樣的錯(cuò)誤犯三遍同樣的坑踩三次你手動(dòng)改 prompt 改到懷疑人生。LangChain 和 AutoGen 能幫你搭流程但不會(huì)幫你進(jìn)化。這是 Hermes 從頭到尾堅(jiān)持的一件事。前 11 篇我們完成了從環(huán)境搭建到工具調(diào)用的全部基礎(chǔ)。今天收官聊最后一個(gè)問(wèn)題agent 如何改寫(xiě)自己閉環(huán)總覽五個(gè)節(jié)點(diǎn)一個(gè)循環(huán)先看全景。Hermes 的自我進(jìn)化不是某個(gè)單一功能而是一條完整的流水線用 → 記 → 抽象 → 訓(xùn)練 → 更好地用用agent 正常干活產(chǎn)生對(duì)話軌跡記后臺(tái)審視對(duì)話把值得記的寫(xiě)進(jìn) MEMORY.md 或 USER.md抽象把可復(fù)用的做法提煉成 skill 文件訓(xùn)練把整段軌跡壓縮成訓(xùn)練數(shù)據(jù)喂給 RL 管線更好地用新一代模型部署下次對(duì)話自動(dòng)生效前三個(gè)節(jié)點(diǎn)發(fā)生在運(yùn)行時(shí)agent 邊干活邊學(xué)習(xí)后兩個(gè)節(jié)點(diǎn)發(fā)生在離線專(zhuān)門(mén)的數(shù)據(jù)管線。這就是 s20-s27 的全部?jī)?nèi)容。下面逐個(gè)拆。s20后臺(tái)審視——agent 的自我復(fù)盤(pán)最核心的機(jī)制叫Background Review后臺(tái)審視。它解決一個(gè)問(wèn)題agent 怎么知道這段對(duì)話值得記答案是不用它知道系統(tǒng)替它盯??凑鎸?shí)代碼雙計(jì)數(shù)器觸發(fā)self._turns_since_memory0# 用戶消息計(jì)數(shù)self._iters_since_skill0# 工具迭代計(jì)數(shù)self._memory_nudge_interval10# 觸發(fā)閾值self._skill_nudge_interval10每輪結(jié)束檢查一次。用戶消息累計(jì) 10 輪或者工具迭代累計(jì) 10 次就觸發(fā)_spawn_background_review()。用戶手動(dòng)調(diào) memory/skill 工具時(shí)計(jì)數(shù)器重置防止重復(fù)審視。觸發(fā)后后臺(tái)會(huì) fork 一個(gè)審查 agent復(fù)制當(dāng)前 messages 快照、max_iterations8、nudge_interval0、daemon 線程、完全靜默。它不打擾主對(duì)話干完活就退。關(guān)鍵是審查 agent 自己不能觸發(fā)新的審查——nudge_interval0加獨(dú)立計(jì)數(shù)器雙重防護(hù)防止遞歸爆炸。兩個(gè)審視 prompt防編造審查 agent 用兩個(gè) prompt 審視對(duì)話_MEMORY_REVIEW_PROMPT用戶透露了關(guān)于自己的事嗎對(duì)我行為有期望嗎_SKILL_REVIEW_PROMPT是否用了需要試錯(cuò)才掌握的非平凡方法可復(fù)用嗎兩個(gè) prompt 的收尾都有一句關(guān)鍵的話“If nothing is worth saving, just say ‘Nothing to save.’ and stop.”這句話是防呆設(shè)計(jì)。沒(méi)有它審查 agent 會(huì)為了交差強(qiáng)行編造記憶——這是所有自進(jìn)化系統(tǒng)最容易翻車(chē)的地方。s21技能創(chuàng)作閉環(huán)——從手動(dòng)到自動(dòng)有了后臺(tái)審視下一步是沉淀。最笨的實(shí)現(xiàn)是什么人手動(dòng)改 SKILL.md 文件。沒(méi)有量化評(píng)估改壞了也不知道全靠手感。Hermes 的做法是閉環(huán)后臺(tái)審視發(fā)現(xiàn)可復(fù)用做法 → 創(chuàng)建/更新技能文件 → 下次遇到同類(lèi)任務(wù)自動(dòng)加載。技能文件長(zhǎng)這樣frontmattername description 正文Steps 注意事項(xiàng)。比如 GitHub Actions Python CI 的完整配置流程第一次試錯(cuò)學(xué)會(huì)后沉淀成 skill下次直接復(fù)用。這就是抽象節(jié)點(diǎn)從具體對(duì)話中提煉出可復(fù)用的方法論。s22Hook 系統(tǒng)——不改核心代碼的擴(kuò)展方式自進(jìn)化系統(tǒng)有個(gè)矛盾既要改行為又不能把核心代碼改壞。Hermes 的解法是三類(lèi) hooksGateway hooks消息生命周期鉤子消息到達(dá)、回復(fù)發(fā)送前等時(shí)機(jī)觸發(fā)BOOT.md啟動(dòng)時(shí)執(zhí)行的自檢清單Startup Checklist——“檢查 API key 存在”驗(yàn)證環(huán)境等Plugin hooks注冊(cè)表分發(fā)時(shí)觸發(fā)比如 audit_log 記錄每條工具調(diào)用這套設(shè)計(jì)的好處是注入邏輯不改核心。你想加審計(jì)、加日志、加自檢寫(xiě)個(gè) hook 掛上去就行核心代碼一行不動(dòng)。s23Trajectory RL——對(duì)話變成訓(xùn)練數(shù)據(jù)運(yùn)行時(shí)學(xué)習(xí)講完了接下來(lái)是離線進(jìn)化。核心思路一句話對(duì)話軌跡 → 訓(xùn)練數(shù)據(jù) → RL 改進(jìn)模型。關(guān)鍵組件四個(gè)batch_runner批量跑對(duì)話產(chǎn)出大量軌跡trajectory_compressor壓縮軌跡——頭尾不壓縮中間摘要和 s05 的壓縮邏輯同理reward 函數(shù)給軌跡打分rl_cli命令行入口跑 RL 訓(xùn)練為什么頭尾不壓縮、中間摘要因?yàn)閷?duì)話的開(kāi)頭和結(jié)尾往往包含最關(guān)鍵的信息任務(wù)目標(biāo)、最終結(jié)論中間的過(guò)程性內(nèi)容可以摘要化。這和人類(lèi)記筆記的邏輯一模一樣。從運(yùn)行時(shí)學(xué)習(xí)到離線進(jìn)化到這里你已經(jīng)看到了兩種學(xué)習(xí)運(yùn)行時(shí)學(xué)習(xí)s20-s22agent 邊干活邊記改的是 MEMORY.md 和 skill 文件離線進(jìn)化s23軌跡壓縮成數(shù)據(jù)訓(xùn)練下一代模型前者是換衣服后者是換身體。但兩者共享同一個(gè)優(yōu)化循環(huán)打分 → 改寫(xiě) → 擇優(yōu)。接下來(lái)進(jìn)入終篇的高潮s25-s27 的自進(jìn)化總覽。s25四層進(jìn)化目標(biāo)——風(fēng)險(xiǎn)遞進(jìn)Hermes 的自進(jìn)化有四個(gè)層次的目標(biāo)每一層風(fēng)險(xiǎn)和收益都不同Phase對(duì)象風(fēng)險(xiǎn)引擎狀態(tài)1Skill 文件最低改壞只影響一個(gè) skillDSPyGEPA? 已實(shí)現(xiàn)2Tool descriptions低DSPyGEPA計(jì)劃中3System prompt sections高影響所有對(duì)話DSPyGEPA計(jì)劃中4Tool implementation code最高Darwinian Evolver計(jì)劃中從改一個(gè) skill 到改核心代碼風(fēng)險(xiǎn)逐級(jí)遞增。Hermes 的策略是從風(fēng)險(xiǎn)最低的開(kāi)始跑通閉環(huán)后再往上走。7 步管線自進(jìn)化的完整流程這是 s25 文檔的核心圖示也是整個(gè)自進(jìn)化系統(tǒng)的骨架1. SELECT TARGET → 2. BUILD EVAL DATASET → 3. EVALUATE BASELINE → 4. CHECK CONSTRAINTS → 5. OPTIMIZE (repeat N) → 6. VALIDATE EVOLVED → 7. DEPLOY步驟 2-4 是度量體系s26步驟 5-7 是優(yōu)化與部署s27。每一步都有明確輸入輸出不靠運(yùn)氣。s26評(píng)估體系——沒(méi)有度量就沒(méi)有進(jìn)化進(jìn)化沒(méi)有方向就是隨機(jī)游走。Hermes 的度量體系三個(gè)組件LLM-as-judge適應(yīng)度函數(shù)FitnessScore用 LLM 打分。關(guān)鍵設(shè)計(jì)rubric 描述而非精確匹配?!昂玫亩x是符合 rubric 描述”不是輸出等于某個(gè)字符串——因?yàn)?agent 的任務(wù)本質(zhì)是開(kāi)放的。SyntheticDatasetBuilder合成評(píng)估數(shù)據(jù)集分 train/val/holdout 三份。防止過(guò)擬合到訓(xùn)練數(shù)據(jù)。ConstraintValidator約束門(mén)控。版本號(hào)、文件大小、測(cè)試通過(guò)率——不滿足約束直接打回不讓劣質(zhì)進(jìn)化結(jié)果上線。s27優(yōu)化與部署——進(jìn)化落地最后一步。優(yōu)化循環(huán)四步走收集反饋 → 針對(duì)性改寫(xiě) → 打分 → 擇優(yōu)注意針對(duì)性三個(gè)字。GEPA 的思路是先讀 trace 理解為什么失敗再做針對(duì)性變異而不是盲目隨機(jī)改。這比純遺傳算法聰明得多——理解原因再動(dòng)手。evolve_skill()完整對(duì)接 s25 的 7 步管線。部署流程三步備份 → 寫(xiě)入 → 下次對(duì)話自動(dòng)生效。永遠(yuǎn)留后路。一個(gè)重要的架構(gòu)決策自進(jìn)化系統(tǒng)是獨(dú)立倉(cāng)庫(kù)NousResearch/hermes-agent-self-evolution。為什么因?yàn)樗情_(kāi)發(fā)時(shí)工具不是運(yùn)行時(shí)功能。它讀代碼和數(shù)據(jù)、輸出改進(jìn)文件、通過(guò) git PR 提交——但絕不在用戶對(duì)話中執(zhí)行。這條邊界劃得很清楚進(jìn)化是離線的服務(wù)是在線的。避坑清單四個(gè)最容易翻車(chē)的點(diǎn)審視編造沒(méi)有 “Nothing to save” 兜底審查 agent 會(huì)強(qiáng)行編造記憶。這是所有自進(jìn)化系統(tǒng)的頭號(hào)陷阱。計(jì)數(shù)器重置用戶手動(dòng)調(diào) memory/skill 工具后必須重置計(jì)數(shù)器否則會(huì)重復(fù)審視同一段對(duì)話。評(píng)估標(biāo)準(zhǔn)用精確匹配做評(píng)估是自欺欺人。agent 的任務(wù)是開(kāi)放的必須用 rubric 描述。約束門(mén)控沒(méi)有約束驗(yàn)證的進(jìn)化是放虎歸山。版本號(hào)、大小、測(cè)試通過(guò)率一個(gè)都不能少。系列 12 篇完整回顧至此手搓自主 AI AgentHermes 架構(gòu)原理剖析系列全部完結(jié)。12 篇完整清單篇主題對(duì)應(yīng)章節(jié)1生產(chǎn)級(jí) AI Agent 的五層架構(gòu)s002百行 Agent Loop讓模型從會(huì)說(shuō)話變成會(huì)干活s013自注冊(cè)工具系統(tǒng)給 Agent 裝上可插拔的雙手s024SQLite 會(huì)話存儲(chǔ)與提示詞組裝s03s045上下文壓縮與錯(cuò)誤恢復(fù)s05s066記憶與技能s07s087安全審批與子 Agent 委派s09s108配置系統(tǒng)優(yōu)先級(jí)鏈s119Gateway 與平臺(tái)適配器s12s1310執(zhí)行環(huán)境抽象與定時(shí)任務(wù)s14s1511高級(jí)能力擴(kuò)展MCP、瀏覽器、語(yǔ)音視覺(jué)s16-s1912自我進(jìn)化閉環(huán)本篇s20-s27從能跑起來(lái)到能干活到能記住到能調(diào)用工具再到能進(jìn)化自己——你跟著這條路徑手搓了一個(gè)完整的自主 AI Agent。后臺(tái)審視、技能沉淀、Hook 擴(kuò)展、軌跡壓縮、RL 訓(xùn)練、四層進(jìn)化、7 步管線、評(píng)估體系、約束門(mén)控……這些不是孤立的知識(shí)點(diǎn)而是一個(gè)閉環(huán)。用 → 記 → 抽象 → 訓(xùn)練 → 更好地用循環(huán)往復(fù)agent 才能從工具變成伙伴。最后留一個(gè)問(wèn)題給你如果讓你設(shè)計(jì)第六層進(jìn)化目標(biāo)比改 Tool implementation code 風(fēng)險(xiǎn)更高你會(huì)選什么歡迎在評(píng)論區(qū)聊聊你的思路。參考文獻(xiàn)Hermes Agent 教學(xué)倉(cāng)庫(kù)agents/s20_background_review.py至agents/s27_optimization_and_deploy.py本文代碼素材均真實(shí)可運(yùn)行Hermes Agent 教學(xué)倉(cāng)庫(kù)docs/zh/s20-background-review.md至docs/zh/s27-optimization-and-deploy.md后臺(tái)審視、7 步管線、評(píng)估體系詳解源碼獲取如需本系列全部源碼請(qǐng)?jiān)谝韵骆溄涌寺ttps://gitcode.com/ganxin7932508/learn-hermes-agent.git