Windows上部署Hermes-Agent的實現(xiàn)步驟
0.前言
Hermes-Agent 的官方安裝說明寫得很明確——原生 Windows 不支持,Windows 唯一受支持方式是 WSL2。但我就是 Windows 環(huán)境,讓我來研究下如何在 Windows部署Hermes-Agent,并且可用。
于是我決定不盲裝,先從源碼入手:看它到底在哪些地方依賴 POSIX/TTY/PTY,哪些地方已經(jīng)做了 Windows 防護,再按“最短閉環(huán)”順序逐步把能力跑通:先 chat,后 UI,再工具。
1. 源碼分析
1.1 官方“原生 Windows 不支持”的真實含義
從倉庫源碼來看,“不支持”更像是不保證原生 Windows 上的終端/PTY/信號語義與體驗穩(wěn)定,而不是“完全不能跑”:
倉庫里有 Windows 安裝腳本:scripts/install.ps1;scripts/install.cmd
有 Windows 兼容性測試:tests/tools/test_windows_compat.py,用于確保 os.setsid/os.killpg 等 POSIX-only 行為不會被無條件調(diào)用
pyproject.toml 的可選依賴對 PTY 做了平臺分流:
非 Windows:ptyprocess
Windows:pywinpty
1.2 Windows 上最核心的差異點(決定“體驗是否穩(wěn)定”)
- 本地 terminal 執(zhí)行依賴 bash:tools/environments/local.py 在 Windows 下會尋找 Git
for Windows 的 bash.exe(Git Bash) 進程組/中斷語義不同:后臺進程、kill、Ctrl+C 等在
Windows 與 POSIX 存在差異,源碼里用 _IS_WINDOWS 分支做了兼容,但行為無法完全等價 TUI 是 Node + Ink(React):ui-tui/ 前端由 Node 啟動,Python 側(cè) tui_gateway 負責(zé)會話與工具;兩者通過stdio JSON-RPC 通信,因此 hermes --tui 必須有 Node 環(huán)境
2.環(huán)境安裝
你當(dāng)前是 Windows + conda Python 3.11,下面按“最短可用路徑”給步驟。
2.1 激活 conda 環(huán)境
conda activate <你的環(huán)境名> python --version
2.2 安裝 Hermes(editable 安裝,方便本地開發(fā)/調(diào)試)
在倉庫根目錄執(zhí)行:
cd D:\github\ai\hermes-agent python -m pip install -U pip python -m pip install -e ".[cli,pty]"
2.3 (可選)準備 Node(僅 TUI/Web 前端開發(fā)需要)
- TUI:hermes --tui 需要 Node + ui-tui/node_modules
- Web Dashboard(web/):開發(fā)模式需要 Node;生產(chǎn)構(gòu)建輸出到 hermes_cli/web_dist/
TUI 依賴安裝:
cd ui-tui npm install cd ..
3. 模型設(shè)置
3.1 關(guān)鍵認知:主模型以 config.yaml 為準
新版本 Hermes 的模型/provider/base_url 的單一真相來源是 config.yaml。
像 LLM_MODEL 這類舊式環(huán)境變量不再作為主模型來源(容易出現(xiàn)“我以為切了,其實還在用 OpenRouter”的現(xiàn)象)。
3.2 配置方式 A(推薦):用向?qū)懭肱渲?/h3>
python -m hermes_cli.main model
在向?qū)е羞x擇 Custom endpoint,填入 base_url、api_key、model。
3.3 配置方式 B:直接編輯 config.yaml
將 model 配置成 dict 形式,例如(按你的模型填寫):
model: default: qwen3.5-35b-a3b provider: custom base_url: https://dashscope.aliyuncs.com/compatible-mode/v1 api_key: <你的key>
4. 運行驗證
4.1 經(jīng)典 CLI(最先驗證 chat 鏈路)
交互式:
python -m hermes_cli.main 一問一答快速驗證: python -m hermes_cli.main chat -q "用一句話確認你是誰,以及你當(dāng)前的模型名"

4.2 TUI(快速驗證 UI 鏈路)
確保已裝 Node + ui-tui 依賴后:
python -m hermes_cli.main --tui --tui-dev
常見提示:
hermes-tui: no TTY:說明你在非 TTY 環(huán)境啟動(如某些 IDE Run 面板),請用 Windows Terminal/PowerShell 真終端運行
5. 自定義 Web 前端
5.1 不建議直接對接 hermes web 的原因
倉庫里的 hermes web(hermes_cli/web_server.py)更像配置/會話/日志管理面板,并不提供聊天接口。
5.2 推薦后端:Gateway 的 API Server(OpenAI-compatible)
Hermes Gateway 提供 OpenAI-compatible API Server,適合任意自寫前端(包括純 HTML+CSS+JS):
POST /v1/chat/completions
POST /v1/responses(支持更強的服務(wù)端狀態(tài))
POST /v1/runs + GET /v1/runs/{run_id}/events(更適合事件流與長任務(wù))5.3 啟用 API Server(寫入 HERMES_HOME/.env)
API_SERVER_ENABLED=true API_SERVER_KEY=change-me-local-dev API_SERVER_PORT=8642 API_SERVER_HOST=127.0.0.1
瀏覽器直連必須開 CORS(只允許本機 origin)
API_SERVER_CORS_ORIGINS=http://127.0.0.1:3000,http://localhost:3000
然后啟動 gateway:
python -m hermes_cli.main gateway
5.4 最小純前端示例(非流式)
index.html:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Hermes Minimal Web</title>
<style>
body { font-family: system-ui; max-width: 900px; margin: 24px auto; }
textarea { width: 100%; height: 100px; }
pre { white-space: pre-wrap; border: 1px solid #ddd; padding: 12px; }
</style>
</head>
<body>
<h3>Hermes Web (OpenAI-compatible API)</h3>
<textarea id="inp" placeholder="輸入..."></textarea>
<button id="send">發(fā)送</button>
<pre id="out"></pre>
<script>
const BASE = "http://127.0.0.1:8642/v1";
const KEY = "change-me-local-dev";
const out = document.getElementById("out");
document.getElementById("send").onclick = async () => {
out.textContent = "請求中...";
const content = document.getElementById("inp").value;
const r = await fetch(`${BASE}/chat/completions`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${KEY}`,
},
body: JSON.stringify({
model: "hermes-agent",
stream: false,
messages: [{ role: "user", content }],
}),
});
const j = await r.json();
out.textContent = j?.choices?.[0]?.message?.content ?? JSON.stringify(j, null, 2);
};
</script>
</body>
</html>啟動本地靜態(tài)服務(wù)(避免 file://):
python -m http.server 3000
6. Web 前端如何處理“工具調(diào)用確認/危險命令審批”?
6.1 你要的目標(B:彈窗審批 + SSE)
當(dāng) Hermes 觸發(fā)危險命令檢測時,希望 Web 前端能彈窗讓用戶選擇:
allow once allow session allow always deny
6.2 當(dāng)前實現(xiàn)現(xiàn)狀(重要)
API Server(gateway/platforms/api_server.py)的 SSE 里已經(jīng)有 工具進度事件:event: hermes.tool.progress
但“危險命令審批”系統(tǒng)在 Hermes 內(nèi)部由 tools/approval.py 實現(xiàn),它通過 register_gateway_notify()/resolve_gateway_approval() 在網(wǎng)關(guān)交互平臺里完成“請求→響應(yīng)”的閉環(huán)
API Server 目前沒有現(xiàn)成的 HTTP 回傳通道把審批結(jié)果發(fā)回去,因此要做真正的 Web 彈窗審批,需要做一小段后端擴展
6.3 推薦架構(gòu):基于 /v1/runs 做審批交互(最適合事件流)
原因:/v1/runs/{run_id}/events 本身就是“結(jié)構(gòu)化事件流”,天然適合“等待用戶輸入”的交互狀態(tài)。
后端需要補的最小能力(建議)
在 run 里注冊審批回調(diào)
當(dāng) tools/approval.py 觸發(fā)審批請求時,通過回調(diào)把請求轉(zhuǎn)換為 SSE 事件發(fā)給前端
增加審批響應(yīng)接口
例如:POST /v1/runs/{run_id}/approval
body: { “choice”: “once” | “session” | “always” | “deny” }后端調(diào)用:resolve_gateway_approval(session_key, choice, resolve_all=False)
在 run 結(jié)束/斷開時清理
unregister_gateway_notify(session_key),防止阻塞線程懸掛
建議定義的 SSE 事件
event: hermes.approval.request
data: { run_id, command, description, pattern_keys }
(可選)event: hermes.approval.resolved
data: { run_id, choice, resolved_count }
前端處理邏輯(最小狀態(tài)機)
訂閱 GET /v1/runs/{run_id}/events(SSE)
收到 hermes.tool.progress:展示“工具調(diào)用進度”
收到 hermes.approval.request:彈窗展示 description + command,讓用戶點 once/session/always/deny
點擊后 fetch(POST /v1/runs/{run_id}/approval) 回傳選擇,后端解除阻塞,agent 繼續(xù)執(zhí)行
6.4 安全建議(必須做)
強制 API_SERVER_KEY(瀏覽器請求必須帶 Authorization: Bearer …)
CORS 只允許 localhost:API_SERVER_CORS_ORIGINS 嚴格白名單
不要把 key 直接寫死在前端(本地驗證可以;生產(chǎn)建議加本機反向代理注入 Authorization)
7. 總結(jié)
- Windows 上建議按順序驗證:chat → TUI/Web UI → tools,先閉環(huán)再追求完整能力。
- 切模型要遵循新版本的“配置真相來源”:以 config.yaml 為準,推薦用 python -m hermes_cli.main
- model 配 custom endpoint,無論是 Ollama 還是 阿里百煉 DashScope compatible-mode
都適用。 - 純 HTML+CSS+JS 自建 Web 前端完全可行,推薦對接 Gateway 的 OpenAI-compatible API
Server。 - 若要實現(xiàn) Web 端的“危險命令審批彈窗”,需要在 API Server 上補一小段審批事件 + 審批回傳接口;最佳落地形態(tài)是基于
/v1/runs 的 SSE 事件流來做交互。
到此這篇關(guān)于Windows上部署Hermes-Agent的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Hermes-Agent部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章

Mac從零部署Hermes Agent并接入飛書的保姆級教程
Hermes Agent 是 Nous Research 開源的 AI Agent 框架,和 OpenClaw 同類,最大特點是會自我成長,本文基于實際踩坑過程整理,從 Hermes 安裝到飛書 Bot + 飛書 CLI 完整打通,2026-04-22
Hermes-Agent 部署Telegram/Discord機器人的全過程(多平臺遠程控制)
本文介紹了Hermes-Agent部署Telegram/Discord機器人的全過程,包括創(chuàng)建機器人、配置Hermes對接、啟動機器人網(wǎng)關(guān)、測試機器人等功能,并提供進階配置(如后臺持久化運行、配置2026-04-20
基于Docker部署Hermes Agent并接入飛書機器人的完整指南
本文將圍繞開源項目 Hermes Agent,手把手帶你完成從部署到接入飛書機器人的完整流程,相比零散教程,本文不僅提供詳細步驟,還會補充關(guān)鍵原理說明與實踐建議,幫助你真正掌2026-04-17
安卓手機部署Hermes Agent和Gemma 4的兩種主流方案
本文詳細介紹了2006年安卓手機部署HermesAgent和Gemma4的兩種主流方案,方案一推薦新手使用官方應(yīng)用,方案二則推薦開發(fā)者使用Termux高級部署,文中提供了詳細的的操作步驟、硬2026-04-17
HermesAgent是由NousResearch出品的開源AIAgent框架,主打越用越聰明,本文詳細記錄了一從安裝到配置再到排查常見問題的全流程,主要,需要的朋友可以參考下2026-04-14
Windows本地部署Hermes Agent的完整教程:一鍵安裝腳本與避坑指南
本文將為您提供一份保姆級的 Hermes安裝 教程,無論您是 AI 開發(fā)者還是效率工具愛好者,只需通過簡單的一鍵腳本,即可在 Windows 環(huán)境下快速部署 Hermes Agent,本文還總結(jié)了2026-04-14







