NousResearch/hermes-agent · Agent Harness Rules

代理人的規則劇場

Hermes Agent 不是只有一個聊天入口。它比較像一套會組裝提示詞、選擇工具、保存經驗、分派子代理、排程執行、再用安全閘門限制副作用的 agent harness。

Repo 快照486b692 · 2026-05-12
焦點規則內容與執行邊界
形式單檔 HTML · 繁體中文雜誌化
以 GPT image 生成的 Hermes Agent harness 概念圖
這張圖把 Hermes 的規則層想像成一張工作台:左側是提示詞與上下文卡片,右側是工具線路、記憶架、子代理艙與安全閘門。

這個 harness 到底在管什麼?

從 README 與開發文件看,Hermes 的核心不是單一模型能力,而是「模型每一步怎麼被約束、怎麼被授權、怎麼記住、怎麼延伸」。

Hermes Agent 的規則內容可以分成兩種:第一種是進入模型前的規則,也就是 system prompt、SOUL.md、memory snapshot、skills index、context files、platform hint。第二種是模型呼叫工具後的規則,也就是 tool registry、toolset 曝露、安全核准、子代理隔離、cron 獨立 session、gateway 授權。前者決定「它應該如何思考與回應」,後者決定「它真的可以對世界做什麼」。

身份層先讀 HERMES_HOME/SOUL.md;沒有才使用內建 Hermes Agent 身份。
行為層加入工具使用、記憶、session search、skills 維護與模型專屬執行紀律。
記憶層MEMORY.md 與 USER.md 在 session 開始時凍結進提示詞,中途寫入不改動已快取前綴。
技能層skills index 只先放索引;需要時再 skill_view,走 progressive disclosure。
專案層.hermes.md、AGENTS.md、CLAUDE.md、.cursorrules 以優先序載入,並先做 prompt injection 掃描。
平台層CLI、Telegram、Discord、cron、WebUI 等入口會得到不同顯示與交付規則。

五段式執行循環

開發文件把 AIAgent 的主迴圈描述為同步 agent loop:組 prompt、呼叫模型、執行工具、寫回歷史、必要時壓縮或持久化。

1. 組裝規則prompt_builder.py 把身份、記憶、skills、context、timestamp 與平台提示拼成穩定前綴。
2. 選擇 API 模式chat_completions、codex_responses、anthropic_messages 最後都轉回內部 OpenAI-style message format。
3. 模型產生 tool calls若回覆含工具呼叫,Hermes 先解析,再決定哪些可並行、哪些需互動序列執行。
4. registry dispatchmodel_tools.py 與 tools/registry.py 找到 handler,前後可掛 plugin hook。
5. 保存與壓縮每回合寫入 SQLite session;context 壓力高時先 flush memory,再摘要中段歷史。

四個閉環:Hermes 的自我改善骨架

README 說的 self-improving 主要落在這四個回路;它們不是同一種記憶,而是不同壽命與不同副作用的儲存機制。

Memory loop

保存穩定偏好、環境事實與會減少未來溝通成本的資訊。規則要求避免把短期任務進度寫進 memory,因為會很快過期。

MEMORY.md / USER.md

Skill loop

當代理人解出複雜工作或被使用者糾正流程,它可以把方法保存成 skill。skill 是 procedural memory,比一般 memory 更像可重用操作手冊。

skills_list / skill_view / skill_manage

Session loop

完整對話進 SQLite 與 FTS5,使用者提到過去內容時,agent 用 session_search 找舊脈絡,而不是要求使用者重講。

hermes_state.py / session_search

Curator loop

agent-created skills 會有使用統計、stale 狀態與 archive 流程。它不刪除 bundled 或 hub-installed skills,避免自動整理破壞基礎能力。

agent/curator.py

工具不是全部開給模型

Hermes 用 toolsets 讓平台、任務、子代理、MCP 與 plugin 決定可見工具面。這是 harness 的權限邊界,不只是 UI 設定。

Tool registry

每個 tools/*.py 檔案用 registry.register 宣告 schema、handler、toolset、check_fn。model_tools.py 會自動探索並建立模型可見 schema。

registry

Toolset resolution

web、file、terminal、browser、skills、memory、delegation、cronjob 等是可組合的工具包。平台 preset 會挑一組基礎工具。

toolsets.py

Availability check

工具可以有 check_fn,例如 API key、服務狀態、二進位是否存在。檢查失敗就不進 schema,模型看不到也不能呼叫。

check_fn

安全規則:不是只靠模型乖

Hermes 的安全層在工具執行前做判斷,尤其 terminal tool。這些規則在模型回答之外執行,所以比較接近真正的 runtime guardrail。

危險命令核准rm -r、chmod 777、DROP TABLE、curl | sh、systemctl stop 等會進 approval flow。manual 是預設;smart 會用 auxiliary LLM 判斷;off 則跳過一般核准。

Hardline floorrm 根目錄、mkfs、dd raw block device、fork bomb、shutdown/reboot 等不論 yolo、off 或 cron approve 都拒絕。

Gateway 授權訊息平台先看 allow-all、DM pairing、平台 allowlist、global allowlist,最後預設 deny。

Context file 掃描AGENTS.md、SOUL.md 等在注入 prompt 前會掃 ignore previous instructions、hidden div、讀取 secrets 等常見 injection pattern。

子代理與排程:兩種不同的長任務

Hermes 把「同一回合內平行分工」和「可在未來獨立執行」分開處理。這個分界很重要。

delegate_task

同步子代理。子代理有全新對話與獨立 terminal session,只靠 parent 傳入的 goal/context 工作。預設 leaf 不能再 delegate、不能 clarify、不能 memory、不能 send_message、不能 execute_code。

batch

可一次派多個任務,預設最多 3 個並行。子代理結果依任務順序回填,只有 final summary 進 parent context,降低 token 污染。

orchestrator

需要多層分工時可啟用 role=orchestrator,但受 max_spawn_depth 限制,避免代理樹爆炸。

cronjob

耐久工作用 cron。每個到期任務開新 agent session,可附 skills、model/provider、script、workdir 與 delivery target。cron session 預設 skip_memory,並有 3 分鐘 hard interrupt。

讀者應該怎麼理解它?

如果你在評估 Hermes,不要只問「支援哪些模型」。更好的問題是:這套 harness 怎麼讓模型在長期、有工具、有副作用的環境裡持續工作。

作為研究平台

它有 trajectory、batch、Atropos RL 與 tool-calling 記錄,適合研究 agent 行為資料與工具使用軌跡。

research

作為雲端同事

gateway、profiles、serverless terminal backend 與 cron 讓它不一定綁在筆電,而能在 VPS 或雲端環境常駐。

operations

作為可學習工作流

skills 與 memory 分工清楚:偏好與事實放 memory,流程放 skill,舊對話靠 session_search,避免全部塞進 prompt。

learning loop

來源對照

以下列出本文主要依據的 repo 檔案與文件。這些是概念對應的實作錨點,不是二手摘要。

入口與產品定位README.md
自我改善、gateway、skills、memory、cron、delegation、terminal backends。
提示詞組裝website/docs/developer-guide/prompt-assembly.md
十層 prompt assembly、SOUL.md、memory snapshot、context file 優先序。
主迴圈website/docs/developer-guide/agent-loop.md
AIAgent lifecycle、tool execution、callbacks、compression、fallback。
工具 runtimewebsite/docs/developer-guide/tools-runtime.md
registry.register、discover_builtin_tools、check_fn、dispatch、approval flow。
安全規則website/docs/user-guide/security.md / tools/approval.py
dangerous patterns、hardline blocklist、YOLO、gateway authorization。
分工與排程website/docs/user-guide/features/delegation.md / cron.md
subagent isolation、blocked toolsets、cron lifecycle、delivery 與 hardening。