第15篇:程式碼執行——AI 寫程式碼跑程式碼
Hermes 功能詳解第15篇:程式碼執行。讓 AI 直接執行 Python 等程式碼,驗證結果再繼續。
這篇講的是 Hermes Agent 的「程式碼執行」功能——讓 AI 自己寫 Python 腳本、自己執行,把一堆零散的小任務打包成一次搞定。
它解決什麼問題?
平時讓 AI 幹活,是「你說一句,它做一步」。比如查資料、讀檔案、改程式碼,每一步都要來回對話。程式碼執行讓 AI 把多步操作寫成一個腳本,一次性跑完,只把最終結果告訴你。
打個比方:以前是讓助手一趟趟跑腿拿東西,現在是讓助手列好清單、一次性採購完,回來只給你看購物袋裡有什麼。
第1步:AI 怎麼寫腳本?
AI 會在腳本裡用 from hermes_tools import ... 匯入工具,就像你點外送時從選單上選菜:
from hermes_tools import web_search, web_extract
results = web_search("Python 3.13 新特性", limit=5)
for r in results["data"]["web"]:
content = web_extract([r["url"]])
# 篩選和處理...
print(summary) # 只把總結印出來
腳本裡能用的工具:web_search(搜尋)、web_extract(抓網頁)、read_file(讀檔案)、write_file(寫檔案)、search_files(搜尋檔案)、patch(改程式碼)、terminal(執行命令)。
第2步:什麼時候 AI 會用它?
當任務滿足以下任一條件時,AI 就會主動用程式碼執行:
- 需要連續呼叫 3 次以上工具,中間還有處理邏輯
- 要批次篩選資料,或者有條件的判斷分支
- 需要對結果做迴圈處理
最大的好處:中間步驟的結果不會塞進對話裡,只有最後 print() 的內容會回傳。省 token 省到飛起——比如你讓它查 20 個設定檔,它不會把 20 個檔案內容全貼出來,只給你一份彙總。
第3步:兩個執行模式,怎麼選?
在設定檔 ~/.hermes/config.yaml 裡設定:
code_execution:
mode: project # 預設,推薦
| 模式 | 工作目錄 | Python 直譯器 |
|---|---|---|
| project(預設) | 和你平時用 terminal() 一樣 |
用你目前啟用的虛擬環境 |
| strict | 隔離的暫存目錄 | 用 Hermes 自己的 Python |
什麼時候用 project:你想讓腳本能 import pandas、能讀取專案裡的檔案、相對路徑都正常。絕大多數情況選這個就對了。
什麼時候用 strict:你需要「絕對可重現」——不管使用者啟用了哪個環境,都用同一個直譯器,腳本也碰不到專案檔案。
第4步:安全措施
腳本跑在「無菌房」裡——API 金鑰、密碼、令牌統統被剝離。環境變數裡凡是名字帶 KEY、TOKEN、SECRET、PASSWORD 的都會被過濾掉。
另外還有硬性限制:
| 資源 | 上限 |
|---|---|
| 逾時 | 5 分鐘 |
| 輸出 | 50 KB |
| 工具呼叫 | 50 次 |
第5步:出錯怎麼辦?
腳本掛了,AI 會收到結構化錯誤資訊——結束碼、報錯輸出、逾時提示,一目瞭然。如果使用者中途發新訊息,腳本會被立刻終止,AI 會看到「執行被中斷」的提示。
實戰例子:批次改程式碼
from hermes_tools import search_files, patch
# 找到所有用了舊 API 的檔案,批次替換
matches = search_files("old_api_call", path="src/", file_glob="*.py")
fixed = 0
for match in matches.get("matches", []):
result = patch(path=match["path"], old_string="old_api_call(",
new_string="new_api_call(", replace_all=True)
if "error" not in str(result):
fixed += 1
print(f"修復了 {fixed} 個檔案,共 {len(matches.get('matches', []))} 處匹配")
小結
程式碼執行 = 讓 AI 把多步操作打包成腳本,一次跑完,只給你看結果。省 token、省時間、減少來回對話。預設的 project 模式適合絕大多數場景,安全機制也很到位。
下篇預告:AI 能寫程式碼跑程式碼了,那它能自己管理檔案嗎?下一篇我們聊聊「檔案操作——AI 讀寫檔案的正確姿勢」。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/git-worktrees