Hermes-Agent 自定義工具開發(fā)實戰(zhàn)
今天直接上實戰(zhàn)——教你5分鐘快速開發(fā)一個自定義工具,集成到Hermes中,讓AI智能體擁有你想要的專屬功能!全文代碼可直接復制,新手也能零失敗上手,建議先收藏+關注,避免開發(fā)時迷路~
?? 前言:為什么要自定義工具?
Hermes-Agent自帶40+內置工具(搜索、文件操作、瀏覽器自動化等),但實際使用中,我們常常需要適配自己的場景:比如對接公司內部系統(tǒng)、操作本地軟件、調用專屬API,這時候就需要開發(fā)自定義工具。
好在Hermes的工具系統(tǒng)采用插件化設計,開發(fā)門檻極低——無需修改核心源碼,只需繼承基類、實現2個核心方法,就能快速集成,甚至可以直接打包供他人使用!
? 一、開發(fā)前準備(環(huán)境確認)
確保你已經成功安裝Hermes-Agent(參考上一篇安裝教程),并確認開發(fā)環(huán)境:
# 1. 激活Hermes虛擬環(huán)境(手動安裝用戶) source ~/.hermes/venv/bin/activate # 2. 確認hermes命令可用 hermes version # 3. 安裝必要依賴(若未安裝) pip install pydantic # 工具參數校驗(Hermes內置依賴,一般已安裝)
??? 二、自定義工具開發(fā)步驟(核心流程)
我們以「開發(fā)一個本地文件查詢工具」為例(功能:根據文件路徑,查詢文件內容并返回),一步步演示開發(fā)全過程。
Step 1:找到工具存放目錄
Hermes的工具分為「內置工具」和「自定義工具」,自定義工具建議放在 \~/\.hermes/skills/ 目錄下(自動被Hermes識別):
# 創(chuàng)建自定義工具目錄(若不存在) mkdir -p ~/.hermes/skills/my_custom_tools cd ~/.hermes/skills/my_custom_tools
Step 2:編寫工具代碼(核心文件)
創(chuàng)建文件 file\_query\_tool\.py,代碼如下(注釋詳細,可直接復制):
from hermes.tools.base import BaseTool
from pydantic import Field
from typing import Optional
# 自定義工具類,必須繼承BaseTool
class FileQueryTool(BaseTool):
# 1. 工具基礎信息(必填)
name: str = "file_query" # 工具唯一標識(調用時用這個名字)
description: str = "用于查詢本地文件的內容,需要傳入文件的絕對路徑;如果文件不存在,會返回錯誤提示" # LLM用來判斷是否調用該工具
return_direct: bool = False # 是否直接返回結果(無需LLM二次處理)
# 2. 工具參數(必填,用pydantic校驗)
file_path: str = Field(
description="本地文件的絕對路徑,例如:/home/user/test.txt、C:/Users/test.txt(WSL2中用Linux路徑)"
)
encoding: Optional[str] = Field(
default="utf-8",
description="文件編碼格式,默認utf-8,若出現亂碼可嘗試gbk"
)
# 3. 核心執(zhí)行方法(必填,實現工具邏輯)
async def execute(self) -> str:
"""執(zhí)行工具,查詢文件內容并返回"""
try:
# 讀取文件內容
with open(self.file_path, "r", encoding=self.encoding) as f:
content = f.read()
# 處理長文本(避免超過LLM上下文限制)
if len(content) > 1000:
return f"文件內容(前1000字符):\n{content[:1000]}\n\n提示:文件內容過長,已截取前1000字符,如需完整內容請指定截取范圍。"
else:
return f"文件內容:\n{content}"
except FileNotFoundError:
return f"錯誤:未找到文件,請檢查路徑是否正確(路徑:{self.file_path})"
except Exception as e:
return f"讀取文件失?。簕str(e)}"
# 注冊工具(Hermes啟動時會自動掃描并加載)
def register_tools(tool_manager):
tool_manager.register_tool(FileQueryTool())Step 3:關鍵代碼解析(必看)
- 繼承BaseTool:所有自定義工具必須繼承Hermes的BaseTool基類,否則無法被識別
- 基礎信息:name(唯一標識)、description(給LLM看的說明,決定LLM是否調用該工具)、return_direct(是否直接返回結果)
- 參數定義:用pydantic的Field定義參數,description會告訴LLM需要傳入什么參數
- execute方法:工具的核心邏輯,必須是async異步方法(Hermes底層是異步執(zhí)行),返回字符串結果(LLM可直接處理)
- 注冊工具:通過register_tools函數,將工具注冊到ToolManager,Hermes啟動時會自動掃描執(zhí)行
Step 4:驗證工具是否加載成功
# 1. 重啟Hermes(加載新工具) hermes stop # 若已啟動,先停止 hermes # 重新啟動 # 2. 在Hermes交互界面,查看所有工具 /hermes tools list
如果輸出中包含file\_query,說明工具加載成功!
?? 三、測試自定義工具(實戰(zhàn)驗證)
在Hermes交互界面,直接輸入指令,讓AI調用我們的自定義工具:
# Hermes交互界面輸入 幫我查詢文件 /home/user/test.txt 的內容
此時Hermes會自動識別需要調用 file\_query 工具,傳入文件路徑參數,執(zhí)行后返回文件內容,完美!
?? 四、進階技巧(擴展功能)
1. 工具參數擴展(多參數示例)
如果需要多參數(比如查詢文件的指定行數),只需新增Field即可:
start_line: Optional[int] = Field(
default=1,
description="開始讀取的行數,默認從第1行開始"
)
end_line: Optional[int] = Field(
default=None,
description="結束讀取的行數,默認讀取到文件末尾"
)然后在execute方法中處理這兩個參數即可。
2. 工具打包與分享
將自定義工具目錄打包成zip,發(fā)給他人,他人只需解壓到 \~/\.hermes/skills/ 目錄,重啟Hermes即可使用,無需額外配置!
3. 調試工具(關鍵技巧)
如果工具執(zhí)行失敗,可通過以下命令查看日志:
hermes logs # 查看Hermes運行日志,定位錯誤
?? 五、常見問題&解決方案
| 問題 | 解決方案 |
|---|---|
| 工具未被加載 | 1. 檢查文件路徑是否在 ~/.hermes/skills/ 下;2. 檢查register_tools函數是否正確;3. 重啟Hermes |
| 執(zhí)行工具報錯“async錯誤” | 確保execute方法是async異步方法,且沒有同步阻塞操作(如time.sleep,需替換為asyncio.sleep) |
| LLM不調用自定義工具 | 優(yōu)化description,更明確說明工具的用途和適用場景,讓LLM知道何時該調用 |
?? 總結&互動引流
本文手把手教你開發(fā)Hermes自定義工具,核心就3步:繼承基類、定義參數、實現執(zhí)行邏輯,5分鐘就能搞定!學會這個,你可以開發(fā)任何你需要的工具,讓Hermes完全適配你的場景~
到此這篇關于Hermes-Agent 自定義工具開發(fā)實戰(zhàn)的文章就介紹到這了,更多相關Hermes-Agent 自定義工具內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!
相關文章

Hermes Agent工具集大全:20+工具讓你的AI無所不能
工具集是Hermes Agent區(qū)別于普通AI聊天工具的關鍵,通過調用各種工具,Hermes Agent不僅僅是一個對話伙伴,而是一個能夠實際操作系統(tǒng)的智能代理,本文整理了20+個工具集,覆2026-04-20


