跳到主要內容

Hermes Agent「Curator」功能全解析:AI 代理的技能生命週期與自我維護

深度解析 Hermes Agent Curator:AI 代理的自我維護與技能生命週期管理

在構建與研究 AI Agent(如 Claude Code、OpenClaw 等)的自動化工作流時,代理的「長期記憶」與「技能維護」一直是一大挑戰。Nous Research 為 Hermes Agent 推出的 v0.12.0「Curator」更新,正式補齊了技能生命週期管理系統的最後一塊拼圖。

本文將詳細解析 Curator 的核心能力、解決的痛點、實作方式、目前的社群回饋,以及未來可改進的方向。

為什麼需要 Curator?(解決的核心痛點)

在 Curator 推出之前,Hermes Agent 擁有強大的自我改進迴圈(Self-improvement loop):當代理成功解決複雜任務或修正錯誤後,會自動將經驗寫成「技能(Skills)」保存下來。然而,這個機制存在一個致命缺陷——技能只會單向增加,缺乏「遺忘」或「淘汰」機制

隨著自動化工作流的持續運行,這會帶來以下嚴重問題:

  1. Token 消耗與上下文污染:社群用戶回報,當代理累積了上百個技能後,系統提示詞(System Prompts)的體積會暴增,每次對話可能白白消耗掉 4,000 多個 Token。
  2. 技能碎片化與衝突:代理可能會為了微小的差異,生成數十個高度相似的狹隘技能,導致代理在選擇工具時產生混淆。
  3. 習得性無助(Learned Helplessness):如果代理在某次任務中因為暫時性的網路或環境問題失敗,它可能會記錄下「這個工具不能用」的過時經驗,並長久受到這個錯誤的負面規則影響。

Curator 可以做什麼?他做到了什麼事情?

Curator 是一個作為背景守護行程(Background Maintenance Pass)運作的自主代理。它會在不干擾主要對話的情況下,定期幫代理「打理」工具箱。

1. 雙階段的技能淘汰與封存機制(確定性狀態機)

Curator 會追蹤每個代理生成技能的使用數據(包含讀取、使用、修改次數與最後使用時間),並執行無 LLM 介入的自動轉換:

  • Stale(過期):超過 30 天未使用的技能,將被標記為過期,降低其在提示詞中的優先級。
  • Archived(封存):超過 90 天未使用的技能,將被移出運作目錄並歸檔至 .archive/。最重要的是,Curator 從不自動永久刪除技能,所有動作皆可復原。

2. LLM 智能審查與技能整合

當系統閒置超過 2 小時,且距離上次執行超過 7 天時,Curator 會生成一個獨立的代理分支(Fork)。這個輔助模型會閱讀現有的技能庫,決定哪些技能需要保留修補(Patch),或是將功能重疊的技能進行合併(Consolidate)

3. 嚴格的安全與防護網

  • 來源隔離:Curator 絕對不會觸碰官方內建(Bundled)或從市集(Hub)下載的技能,只會管理「代理自行撰寫」的技能。
  • 自動快照與回滾:在進行任何修改前,Curator 會自動將技能庫打包成 .tar.gz 快照。若審查結果不符合預期,可隨時一鍵回滾(Rollback)。
  • 釘選保護(Pinning):支援硬性保護機制,一旦將技能 Pin 起來,Curator 與代理自身都無法再去修改該技能。

項目的使用方式

Curator 在最新版本中預設為啟用。你可以透過修改 config.yaml 或使用 CLI 指令來進行管理:

1. 基礎配置 (config.yaml): 為了節省 API 費用,強烈建議將背景審查任務交給較便宜的模型(如 Gemini 1.5 Flash 或 Claude 3.5 Haiku):

curator:
  enabled: true
  interval_hours: 168 # 預設 7 天執行一次
  stale_after_days: 30
  archive_after_days: 90

auxiliary:
  curator:
    provider: openrouter
    model: google/gemini-3-flash-preview # 指定用於 Curator 審查的模型

2. 常用 CLI 指令:

  • hermes curator status:查看上次執行狀態,以及最少使用的 5 個技能列表(預測下次可能被淘汰的對象)。
  • hermes curator run --dry-run強烈建議首次執行前使用。這會產出審查報告(包含合併或封存建議),但不會實際修改任何檔案。
  • hermes curator pin <skill_name>:釘選你手動撰寫或認為極度關鍵的核心工作流技能,防止被修改。
  • hermes curator rollback:若自動整理搞砸了,一鍵還原到整理前的狀態。
  • hermes curator restore <skill_name>:將被封存的技能重新移回啟動狀態。

社群網路上的聲音與目前回饋

在 Reddit(如 r/LocalLLaMA、r/AIGuild)與 X (Twitter) 上,Curator 的推出獲得了高度評價:

  • 「真正的長期代理」:社群普遍認為這是 Hermes Agent 的一次巨大升級。開發者表示,終於有一個框架認真對待「記憶的維護與遺忘」,而非只是無腦堆疊向量資料庫。
  • 知識庫的完美編輯:許多進階使用者將 Hermes 與 Obsidian 等知識庫結合。他們不把 Hermes 當成單純的對話機器人,而是作為一個「Wiki 編輯與策展人(Curator)」,利用這個機制定期清理、編譯並維護他們個人的本地知識庫。
  • 成本與效能的雙贏:因為有效清除了死氣沉沉的冗餘技能,使用者反饋提示詞變得極度乾淨,不僅省下了可觀的 Token 費用,也發現代理在調用工具時的準確率有顯著提升。

可以改進什麼事情?(未來展望)

儘管 Curator 解決了許多痛點,但根據 GitHub 的討論與實務應用,該機制仍有可改進的空間:

  1. 「罕見但關鍵」技能的誤判風險: 目前區分「過時」與「不常用」的啟發式規則主要是基於「時間(30/90天)」。一些極少使用但具有關鍵災難復原價值的自動化腳本,如果使用者忘記手動 pin,仍會被放入封存庫。未來可能需要引入基於「影響力」或「標籤」的評分權重機制。
  2. 負面環境依賴的重新驗證(Revalidation): 如果代理記錄下「命令 X 在這個環境中不可用」的技能,但隨後開發者修復了環境,目前 Curator 缺乏主動重新驗證(TTL)這類負面聲明的機制。未來若能加入定期自動測試這類假設的功能,將能徹底解決代理的「習得性無助」。
  3. 更精細的外部目錄同步(Merge Reconciliation): 目前 Curator 對於從外部(External Directories)掛載的技能是唯讀的。對於想要建立跨裝置、跨專案共享技能庫的開發者來說,未來若能處理外部更新與本地代理修改之間的差異合併(Diff/Merge),將能大幅提升多代理協作的潛力。

留言

這個網誌中的熱門文章

[CSS] z-index 在不同瀏覽器繼承問題

今天會討論到這個課題,是因為要實做一個Popup dialog,所以我們希望的結果如下圖。 可是在IE7 卻發生了這樣的情況。 Popup不論怎麼設定z-index都無法浮在最上層,我們看一下html架構發生什麼事情。

[教學] 快快樂樂刪除CodeIgniter index.php

預設的CI網址預設都設定為index.php同一層級,因此所有的程式都必須指定index.php導向才能開始,例如 http://localhost/ci/index.php/welcome/test http://localhost/ci/welcome/test 本文將說明如何將惱人的index.php消除,還你一個漂亮的URL。 設定開始: 接下來說明如何使用rewrite方式將惱人的index.php去除。 rewrite不清楚的人,煩請先自行google 首先要先確定Apache的 mod_rewrite 有 開啟 ,如果沒有開啟請設定好之後重新啟動apache。 接著,在根目錄底下建立一個新檔案,檔名為 .htaccess ,裡面程式碼如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 接著到 application/config/config.php ,開啟檔案修改 $config['index_page'] = ""; 注意: /index.php/$1 要根據你目錄,例如 http://localhost/index.php ,網站根目錄為 /ci/index.php 則要寫成 /ci/index.php/$1 接著至CI目錄下,尋找 config\config.php , 修改一下裡面的檔案,修改如下: $config['index_page'] = ""; 存檔後,如此一來大功告成。 參考資料 官方網站說明

[教學] Mojito 安裝與入門,install mojito for beginner.

mojito ,最近終於從 YDN 對外公開此專案,這個套件主要用於解決前端多重裝置及瀏覽器端的問題,後端服務採取 node.js ,因此使用上必定要先準備以下幾個元素 準備素材 c++ complier git Node.js > 0.4.x NPM > 1.0.x 安裝方式 git clone git://github.com/yahoo/mojito.git cd mojito/source sudo npm install -g . npm install . 以上四個簡單的步驟,就可以把 mojito module 完整安裝到服務器上,接著就可以開始進入 mojito 的世界 使用方式 mojito 提供了完整的 command line 給開發者使用,接著先建立一個基本 hello world 專案,跟著以下步驟完成第一個專案。首先建立一個 mojito application, mojito create app hello cd hello 切換到目錄之後,再接著建立自己的 mojit,這邊的 mojit 就像是一個應用(application)可能會包含許多個獨立網站體,擁有獨立架構的 MVC ,包含內部設定等,詳細資料可以參考官方的 說明 ,建立 mojit mojito create mojit HelloMojit 輸入指令後,會看到顯示結果如下, creating mojit called 'HelloMojit' (using "default" archetype) ✔ mojit: HelloMojit created! ✔ mojito done. 接著修改 application.json 這個 mojit 設定檔案,讓剛才新建立的 hellp application 指定底下有一個 mojit -> HelloMojit ,讓應用可以去執行 mojit controller ,修改如下, [ { "settings": [ "master" ], "appPort": 8666, "specs": { ...