跳到主要內容

使用技巧與最佳實踐

一份快速見效的實用技巧合集,幫助你立即更高效地使用 Hermes Agent。每個部分聚焦不同方面——瀏覽標題並跳轉到你關心的內容。


獲得最佳結果

明確表達你的需求

模糊的提示會產生模糊的結果。不要說“修復代碼”,而應具體說明:“修復 api/handlers.py 第 47 行的 TypeError —— process_request() 函數從 parse_body() 接收到 None。” 提供的上下文越多,所需迭代次數就越少。

提前提供上下文

在請求開頭就加載相關細節:文件路徑、錯誤信息、預期行為。一條精心設計的消息勝過三輪澄清。直接粘貼錯誤堆棧跟蹤——Agent 可以解析它們。

使用上下文文件處理重複指令

如果你發現自己反覆重複相同指令(如“使用製表符而非空格”、“我們使用 pytest”、“API 地址是 /api/v2”),請將這些內容放入 AGENTS.md 文件中。Agent 會在每次會話中自動讀取該文件——設置完成後無需額外操作。

讓 Agent 使用其工具

不要試圖手動引導每一步。說“查找並修復失敗的測試”而不是“打開 tests/test_foo.py,查看第 42 行,然後……”。Agent 具備文件搜索、終端訪問和代碼執行能力——讓它自主探索並迭代。

使用技能處理複雜工作流

在編寫冗長提示說明如何完成某項任務之前,請先檢查是否已有對應技能。輸入 /skills 瀏覽可用技能,或直接調用某個技能,如 /axolotl/github-pr-workflow

CLI 高級用戶技巧

多行輸入

Alt+Enter(或 Ctrl+J)可插入換行而不發送消息。這讓你能在按下 Enter 發送前,組合多行提示、粘貼代碼塊或構建複雜請求。

粘貼檢測

CLI 會自動檢測多行粘貼。直接粘貼代碼塊或錯誤堆棧跟蹤即可——不會將每一行作為單獨消息發送。粘貼內容會被緩衝,並作為一條消息整體發送。

中斷與重定向

按一次 Ctrl+C 可中斷 Agent 的響應。之後你可以輸入新消息來重定向它。在 2 秒內連續按兩次 Ctrl+C 可強制退出。當 Agent 開始走錯方向時,此功能極為有用。

使用 -c 恢復會話

忘記上次會話的內容了?運行 hermes -c 可以恢復到你離開時的完全狀態,完整會話歷史將被還原。你也可以通過標題恢復:hermes -r "my research project"

剪貼板圖像粘貼

Ctrl+V 可直接將剪貼板中的圖像粘貼到聊天中。Agent 通過視覺能力分析截圖、圖表、錯誤彈窗或 UI 原型——無需先保存為文件。

斜槓命令自動補全

輸入 / 後按 Tab 可查看所有可用命令。這包括內置命令(如 /compress/model/title)以及所有已安裝的技能。你無需記憶任何內容——Tab 補全會幫你搞定。

提示

使用 /verbose 可循環切換工具輸出顯示模式:off → new → all → verbose。“all” 模式適合觀察 Agent 的操作過程;“off” 模式則最簡潔,適用於簡單問答。

上下文文件

AGENTS.md:你的項目的“大腦”

在項目根目錄創建一個 AGENTS.md 文件,包含架構決策、編碼規範和項目特定指令。該文件會在每次會話中自動注入,因此 Agent 始終了解你的項目規則。

# 項目上下文
- This is a FastAPI backend with SQLAlchemy ORM
- Always use async/await for database operations
- Tests go in tests/ and use pytest-asyncio
- Never commit .env files

SOUL.md:自定義個性

希望 Hermes 擁有穩定的默認語氣?請編輯 ~/.hermes/SOUL.md(或如果你使用自定義 Hermes 主目錄,則為 $HERMES_HOME/SOUL.md)。Hermes 現在會自動創建一個初始 SOUL,並將這個全局文件作為 Hermes 實例的默認個性配置來源。

完整教程請參見 使用 SOUL.md 與 Hermes

# 靈魂
You are a senior backend engineer. Be terse and direct.
Skip explanations unless asked. Prefer one-liners over verbose solutions.
Always consider error handling and edge cases.

使用 SOUL.md 保存持久個性;使用 AGENTS.md 存儲項目特定指令。

.cursorrules 兼容性

如果你已有 .cursorrules.cursor/rules/*.mdc 文件?Hermes 也能讀取它們。無需重複定義編碼規範——它們會自動從工作目錄加載。

發現機制

Hermes 在會話開始時會從當前工作目錄加載頂層的 AGENTS.md。子目錄中的 AGENTS.md 文件會在工具調用期間通過 subdirectory_hints.py 懶加載,並注入到工具結果中——它們不會提前加載到系統提示中。

提示

保持上下文文件簡潔聚焦。每個字符都會計入你的 token 預算,因為它們會被注入到每一條消息中。

記憶與技能

記憶 vs. 技能:該放哪裡?

記憶用於存儲事實:你的環境、偏好、項目位置,以及 Agent 對你瞭解的各類信息。技能用於流程:多步驟工作流、工具特定指令和可複用的“配方”。用記憶記錄“是什麼”,用技能記錄“怎麼做”。

何時創建技能

如果你發現某個任務需要 5 步以上,並且你可能會再次執行,就讓 Agent 為它創建一個技能。例如,輸入“將你剛才的操作保存為名為 deploy-staging 的技能”。下次只需輸入 /deploy-staging,Agent 就會加載完整的操作流程。

管理內存容量

內存是故意受限的(MEMORY.md 約 2,200 字符,USER.md 約 1,375 字符)。當內存滿時,Agent 會自動合併條目。你可以通過輸入“清理你的記憶”或“替換舊的 Python 3.9 筆記——我們現在用的是 3.12”來協助。

讓 Agent 記住

在一次高效會話結束後,輸入“記住這次的內容以便下次使用”,Agent 將保存關鍵收穫。你也可以更具體地說明:“將我們的 CI 使用 GitHub Actions 和 deploy.yml 工作流的信息保存到記憶中。”

注意

記憶是一個凍結的快照——會話期間所做的更改不會立即反映在系統提示中,直到下一次會話開始才會生效。Agent 會立即寫入磁盤,但提示緩存不會在會話中被刷新。

性能與成本

不要破壞提示緩存

大多數大語言模型(LLM)提供商會緩存系統提示前綴。如果你保持系統提示穩定(相同的上下文文件、相同記憶),會話中的後續消息將獲得緩存命中,成本顯著降低。避免在會話中更改模型或系統提示。

在達到限制前使用 /compress

長時間會話會累積大量 token。當你注意到響應變慢或被截斷時,運行 /compress。它會總結對話歷史,在大幅減少 token 數量的同時保留關鍵上下文。使用 /usage 檢查當前狀態。

委託以實現並行工作

需要同時研究三個主題?讓 Agent 使用 delegate_task 並行執行子任務。每個子 Agent 獨立運行,擁有自己的上下文,最終只返回摘要——極大降低主對話的 token 使用量。

使用 execute_code 執行批量操作

不要逐個運行終端命令,而是讓 Agent 編寫一個腳本一次性完成所有操作。“寫一個 Python 腳本將所有 .jpeg 文件重命名為 .jpg 並運行它”比逐個重命名文件更高效且成本更低。

選擇合適的模型

使用 /model 在會話中切換模型。對於複雜推理和架構決策,使用前沿模型(Claude Sonnet/Opus、GPT-4o)。對於簡單任務(如格式化、重命名或樣板生成),切換到更快的模型。

提示

定期運行 /usage 查看你的 token 消耗情況。運行 /insights 獲取過去 30 天使用模式的更全面視圖。

消息提示

設置主頻道

在你偏好的 Telegram 或 Discord 頻道中使用 /sethome,將其設為主頻道。定時任務和計劃任務的輸出將發送至此。若未設置,Agent 將無處發送主動消息。

使用 /title 組織會話

使用 /title auth-refactor/title research-llm-quantization 為會話命名。命名會話可通過 hermes sessions list 輕鬆查找,並通過 hermes -r "auth-refactor" 恢復。未命名會話會堆積,難以區分。

私信配對實現團隊訪問

無需手動收集用戶 ID 添加白名單,啟用私信配對功能。當同事向機器人發送私信時,他們會收到一個一次性配對碼。你通過 hermes pairing approve telegram XKGH5N7P 批准即可——簡單且安全。

工具進度顯示模式

使用 /verbose 控制你看到的工具活動程度。在消息平臺中,通常越少越好——保持“new”模式,僅顯示新的工具調用。在 CLI 中,“all” 模式可提供 Agent 執行全過程的實時視圖。

提示

在消息平臺中,會話會在空閒一段時間後自動重置(默認:24 小時)或每天凌晨 4 點重置。如需更長會話,可在 ~/.hermes/config.yaml 中按平臺調整。

安全

使用 Docker 處理不受信任的代碼

在處理不受信任的倉庫或運行陌生代碼時,使用 Docker 或 Daytona 作為終端後端。在 .env 文件中設置 TERMINAL_BACKEND=docker。容器內的破壞性命令無法危害你的主機系統。

# 寫在你的 `.env` 中:
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=hermes-sandbox:latest

避免 Windows 編碼陷阱

在 Windows 上,某些默認編碼(如 cp125x)無法表示所有 Unicode 字符,這可能導致在測試或腳本中寫入文件時出現 UnicodeEncodeError

  • 優先顯式使用 UTF-8 編碼打開文件:
with open("results.txt", "w", encoding="utf-8") as f:
f.write("✓ All good\n")
  • 在 PowerShell 中,你還可以將當前會話切換為 UTF-8,以確保控制檯和原生命令輸出使用 UTF-8:
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)

這可使 PowerShell 及其子進程始終使用 UTF-8,有助於避免僅在 Windows 上出現的失敗。

選擇“始終”前仔細審查

當 Agent 觸發危險命令審批(如 rm -rfDROP TABLE 等)時,你會看到四個選項:一次會話始終拒絕。選擇“始終”前務必仔細考慮——這將永久允許該模式。建議先使用“會話”模式,直到你感到安心。

命令審批是你的安全網

Hermes 在執行前會將每個命令與一個精心篩選的危險模式列表進行比對。這包括遞歸刪除、SQL 刪除操作、將 curl 的輸出直接管道傳遞給 shell 等行為。請勿在生產環境中禁用此功能——它存在是有充分理由的。

注意

當在容器後端(Docker、Singularity、Modal、Daytona)中運行時,危險命令檢查將被跳過,因為容器本身是安全邊界。請確保您的容器鏡像已正確鎖定。

為消息機器人使用白名單

切勿在具有終端訪問權限的機器人上設置 GATEWAY_ALLOW_ALL_USERS=true。始終使用平臺特定的白名單(如 TELEGRAM_ALLOWED_USERSDISCORD_ALLOWED_USERS)或私信配對方式來控制誰可以與您的 Agent 交互。

# 建議:每個平臺明確允許名單
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678

# 或者使用跨平臺白名單
GATEWAY_ALLOWED_USERS=123456789,987654321

有建議想添加到本頁?打開一個 issue 或 PR——歡迎社區貢獻。