最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Windows上部署Hermes-Agent的實現(xiàn)步驟

  發(fā)布時間:2026-04-23 15:58:50   作者:Yaphetshl   我要評論
本文詳細介紹了如何在Windows系統(tǒng)上部署和使用Hermes-Agent,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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)文章

最新評論

兴文县| 萨嘎县| 呼图壁县| 乳源| 沐川县| 无棣县| 合川市| 灵宝市| 睢宁县| 屯门区| 新蔡县| 稷山县| 雅江县| 佳木斯市| 新民市| 册亨县| 自贡市| 光山县| 伊金霍洛旗| 航空| 东莞市| 嘉鱼县| 泾川县| 榆社县| 汉源县| 绍兴县| 衡山县| 东兴市| 合作市| 肇州县| 顺昌县| 西安市| 静宁县| 南汇区| 砀山县| 浦城县| 南丹县| 永顺县| 惠州市| 淮阳县| 永平县|