YouMind
登入

如何將 Hermes 打造為投行級別的金融分析師

@gemchange_ltd
英語2026年6月04日
867K
184
15
13
646

TL;DR

本技術指南詳細介紹了如何配置 Hermes Agent 以進行投行級別的分析,重點涵蓋提示詞架構、確定性數學運算,以及與 EDGAR 和 FRED 等金融數據源的整合。

我假設你已經能讓 LLM 對一支股票說出些有道理的話。每個人都能做到。但那不是重點。

重點是那個控制框架,是環繞在模型外的那層結構,它決定了你的分析師是一個你信賴的得力助手,還是一個文法不錯的亂數產生器。模型反而是整個系統中最容易替換的部分。

gemchanger - inline image

三個部分:

  1. 如何正確地運行它
  2. 如何把它訓練成一台金融機器(真正的優勢所在)
  3. 擴展它的儲存庫與服務。

中間那部分請讀兩遍。

非財務建議。請自行研究。我自己的專案 - @coldvisionXYZ

第一部分:運行它,並了解你在運行什麼

一行指令。它會把 python、node、git 等所有東西都佈建到 ~/.hermes/ 目錄下:

bash
1curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

支援 Linux、macOS、WSL2、透過 Termux 的 Android(自動偵測)、原生 Windows(早期測試版,無需 WSL)。需要 Python 3.11 或更高版本。接著執行 hermes setup 啟動設定精靈,或分別執行 hermes model、hermes tools、hermes gateway setup 來進行設定。使用 hermes(經典 CLI)或 hermes --tui(建議)來運行它。

提供者抽象層是低調的超能力

同一個運行時可以驅動 chat-completions API、Anthropic Messages、Codex Responses、一個外部進程的 Codex 應用伺服器路徑,以及 Bedrock。

工具呼叫格式和提供者的特殊行為會由傳輸適配器進行標準化,因此在循環層級上,無論背後是什麼,模型的操作介面看起來都是一樣的。

這意味著提供者故障轉移是真實可行的,而且切換模型確實是零程式碼修改。

對你的錢包來說,實際的影響是:你不會只運行一個模型。

在 config.yaml 的 auxiliary 設定下,每一個側邊任務、策展運行、視覺處理、嵌入、標題生成、會話搜尋、壓縮摘要器,都可以指定它自己的提供者、模型、base_url 和推理努力程度。

所以你昂貴的推理模型永遠不會浪費 token 去總結舊聊天記錄或為會話命名。

還有 smart_model_routing 功能,可以將困難的任務導向強大的模型,而其他所有事情則交給便宜的模型。

最經濟的合理設定:以 Nous Portal(一個訂閱,300+ 模型 + 用於網頁/瀏覽器/圖像/TTS 的工具閘道)作為主要提供者,為所有輔助工作固定一個便宜的模型,並將本地的 Ollama/vLLM 作為免費的備用方案。如果你使用本地模型,Ollama 預設使用 4k 上下文並會靜默截斷,請將 num_ctx 設為 64k 或更高,否則 Agent 會變笨,而你會怪罪到模型頭上。

在接觸設定檔之前你必須了解的事:提示詞是快取形狀的

這是整個系統設計來保護的不變量,如果你不了解它,你的帳單會悄悄地變成原來的 10 倍。

Hermes 將系統提示詞組合成三個層級:

  1. 穩定層 (stable)
  2. 上下文層 (context)
  3. 易變層 (volatile)
gemchanger - inline image

穩定層承載了身份(SOUL.md)、僅針對已啟用工具的工具指南、技能索引、環境提示。上下文層衍生自當前工作目錄(cwd)。易變層則會隨著每次對話輪次而改變。這種分層在程式碼中是明確的,只有一個原因:提示詞前綴快取的有效性。提供者會快取你提示詞的前綴,並以極低的價格計費快取的 token。每次穩定層改變時,你就會使那個快取失效,並為所有內容支付全額費用。

因此,Hermes 將修改上下文層視為近乎神聖的行為。根據 Agent 自身的工程規則:它唯一故意修改上下文層的時候是在壓縮期間。那些會改變系統提示詞狀態的斜線命令(例如安裝技能、切換工具)預設會採用延遲失效,變更將在下一個會話生效,並提供一個可選的 --now 標誌,讓你在真正需要立即生效時使用。/skills install --now 是典型的「我接受快取失效」模式。

作為分析師,你為什麼要在意:你啟用的每個技能和打開的每個工具都存在於那個穩定層中,並且在每次呼叫時都會消耗前綴 token。一個擁有 60 個已啟用工具的臃腫 Agent,在每次對話輪次中都要永久為這 60 個描述付費。精簡的工具集和按需加載的技能不僅僅是整潔的問題,它們直接關係到成本模型。

壓縮是譜系,而不是截斷

當上下文填滿時,簡單的 Agent 會丟棄舊的對話輪次並患上失憶症。

Hermes 運行兩個獨立的壓縮層:

  1. 一個是閘道層的「會話衛生」安全網,在 Agent 運行之前,基於粗略估計,當上下文使用率達到約 85% 時觸發。
  2. 另一個是真正的壓縮器,即循環內的 ContextCompressor,它使用 API 報告的準確 token 計數,在上下文使用率達到約 50% 時觸發。

它會將中間的對話輪次摘要成一條新訊息,而不是刪除它們,並且會話會追蹤每次壓縮分割的父子譜系。摘要成為對話記錄的一部分;原始內容則保存在譜系中。

gemchanger - inline image

有損是可以接受的,無損會導致記憶體不足(OOM)。

會話不僅僅是對話記錄,它們是基礎設施。

它們攜帶來源標籤和路由元數據,並且有一個面向模型的 session_search 工具,以及一個覆蓋所有過去對話輪次的 FTS5 SQLite 索引。你的 Agent 可以在推理過程中回憶「我三週前對 COIN 得出的結論是什麼」,這不是因為你把它塞進了上下文,而是因為它可以按需查詢自己的歷史記錄。

它在哪裡運行

六種終端後端:

  1. local(本地)
  2. Docker
  3. SSH
  4. Singularity
  5. Modal
  6. Daytona

Modal 和 Daytona 是無伺服器的,環境空閒時會休眠,按需喚醒,在兩次運行之間幾乎不花費任何成本。

一個 $5 的 VPS 或一個休眠的無伺服器盒子才是真正的「$5 方案」。連接閘道後,同一個 Agent 可以在 20 多個平台(Telegram、Discord、Slack、Signal……)上運行,並通過統一的會話路由進行管理,因此你可以從手機上與它交談,而它則在雲端盒子上工作。

會話通過使用 WAL 模式的 SQLite 以及一個自定義的重試層來處理多進程寫入競爭,從而在重啟後得以存活,因此 cron 任務和閘道工作不會互相干擾。

第二部分:把它訓練成一台金融機器

一個普通的 Agent 就像一個才華橫溢但沒有領域訓練和判斷紀律的實習生。你需要透過四個管道來教育它:身份、劇本、記憶和標準。然後它會自我教育,而你真正的工作就變成了策展。

2a. 身份 - SOUL.md 是第一順位

SOUL.md 實際上是系統提示詞中的第一項,在工具之前、在技能之前、在任何東西之前。它是角色和價值觀層。

對於金融分析師來說,這是你設定認知氣質的地方,而不是個性修飾。

例如:「你是一個持懷疑態度的買方分析師。你不信任整數和敘事。你從不陳述一個不是從本次會話的工具中提取的數字。

你寧可說『數據不足』也不願猜測。你將自己先前的結論視為需要更新的先驗知識。」

這存在於快取穩定的層級中,並且免費影響每一次對話輪次。大多數人保留 SOUL.md 的預設值。對於分析師來說,這是你最具槓桿效應的 1,500 個字元。

2b. 劇本 - 技能,以及為什麼描述才是真正的工程

一個技能就是一個 SKILL.md 檔案,包含名稱、描述和程序,存放在 ~/.hermes/skills/ 目錄下。

只有簡短的描述存在於始終加載的技能索引中。

完整的程序會在任務匹配時按需加載。因此你的技能庫可以非常龐大,而不會使前綴膨脹。

這意味著描述是技能成敗的關鍵。

它是一個路由器。如果描述含糊不清,Agent 要麼在應該加載技能時不加載,要麼在不該加載時加載。請將描述寫得像觸發條件,而不是摘要。

「當用戶提到一個美國上市股票並想要基本面分析時使用」勝過「分析股票」。

一個真實的分析師技能,注意其中直接融入了 2d 部分的標準:

markdown
1---
2name: equity-snapshot
3description: 當用戶提到一個美國上市股票代碼並想要基本面和價格分析及風險標記時使用。
4---
5
6# Equity Snapshot
7
81. 透過 SEC 的 company_tickers 映射將股票代碼解析為 CIK。絕對不要猜測股票代碼。
92. 透過 EDGAR 提取最新的 10-K/10-Q(營收、債務、自由現金流)。記錄 accession number。
103. 絕對不要自己計算比率。呼叫 calc 工具來計算本益比、利潤率、年增率。
114. 交叉比對兩個來源的營收數據。如果它們不一致,報告這個差距,不要選擇其中一個。
125. 輸出:論點(2 行)、3 個催化劑、3 個風險、估值看法、信心指數 0-1,
13 以及「哪一個數據點會推翻這個結論」。如果數據不足,回傳「pass」。

技能支援按平台啟用/停用、基於工具可用性的條件激活,以及前置條件驗證,因此一個技能可以聲明「僅在 EDGAR 工具存在時可用」。

格式是開放的 agentskills.io 標準,因此你編寫的內容可以移植到其他相容的 Agent。

2c. 自我改進循環與維護

Agent 會自己編寫技能。

在透過反覆試驗解決某個問題後(通常是一個需要多次工具呼叫的任務),它會將有效的方法作為 SKILL.md 保存在 agent_created/ 目錄下。

技能管理工具具有六個操作,你需要知道的是 patch:一種針對性的修復,由於其 token 效率高,因此優先於完整的編輯重寫。

Agent 實際上在使用過程中就地改進自己的劇本。

如果不進行維護,自動技能會像癌細胞一樣擴散。

你最終會得到數十個狹窄、重疊的劇本,它們消耗前綴 token 並污染路由器。

gemchanger - inline image

策展人(Curator) 負責處理這個問題,了解它的機制是值得的。它不是一個 cron 守護行程,它是在一個非活動檢查時運行的:大致上,當距離上次運行已經過了 7 天,並且 Agent 已經空閒了 2 個小時以上時,一個後台分支會啟動(使用自己的提示詞快取,絕不觸及活躍對話),並運行一個 LLM 審查循環,自動將陳舊的技能歸檔(到 .archive/ 目錄,可恢復,沒有任何東西會丟失)。

設定存在於 config.yaml 的 curator 部分:interval_hours、min_idle_hours、stale_after_days、archive_after_days。

將自動技能視為實習生的草稿。使用 hermes curator review 來仔細檢查它們,固定那些真正好的技能以便它們能保留下來,讓其餘的被歸檔。策展這個循環就是教育的過程。

一個未經策展的 Agent 會隨著時間推移變得越來越差,而不是越來越好。

2d. 標準 - 紀律,按能為你節省多少來排序

這些是你融入 SOUL.md 和每個 SKILL.md 的規則。按影響力排序。

1. 禁止算術。 LLM 預測的是 token。這是自信滿滿的錯誤數字的頭號來源。乾淨的實現使用 execute_code(將在 2e 中介紹),這樣一個確定性的腳本會進行數學計算,而模型只決定輸入和解釋輸出。

一個模型「估算」的 DCF 是虛構的;一個由腳本計算並由模型進行壓力測試的 DCF 才是產品。

2. 每個數字都要有出處。 每個數字都必須附帶其來源和截止日期返回,絕不能裸數字。渲染器會丟棄任何沒有出處的內容。

這樣做的回報是對抗性的:當兩個來源不一致時,這個不一致本身就是信號。

3. 僅限於時間點數據。 前瞻性偏差是每個回測和每個「它預測到了」截圖的沉默殺手。API 預設提供的是經過重述的、當前的數據。

用截止日期標記事實,並限制 Agent 只能使用在決策日期當時可知的資訊。

4. 天生對抗性。 一個子 Agent 建立看多論點,第二個被命令去推翻它,第三個以一個明確的信心指數進行調和。其價值完全在於目標是真正對立的,而不是在於 Agent 的數量。

這裡使用中立傾向的模型很重要,因為它們會強力論證看空觀點,而不是將其模糊化。

5. 有權放棄。 在每次呼叫時強制要求「哪一個數據點會推翻這個結論」。

如果 Agent 沒有那個數據,答案就是「不持倉」。

2e. 進階操作:程式化工具呼叫將流程壓縮為零上下文成本

這個功能,一旦你理解了它,就會改變你構建每個分析師工作流程的方式。

通常,一個多步驟的流程會消耗每個步驟一個 LLM 輪次:「我來搜尋……現在我來閱讀……現在我來總結……現在我來寫。」

每個機械步驟都會消耗推理 token,並用中間的垃圾訊息污染上下文。

execute_code 消除了這個問題

Agent 編寫一個 Python 腳本,該腳本透過一個 Unix 域套接字 RPC 呼叫 Hermes 自己的工具。腳本在一個子進程中運行;工具呼叫透過套接字傳回父進程,並透過與正常工具呼叫相同的處理器進行調度。

關鍵在於:只有腳本的 print() 輸出會返回給模型。中間的工具結果永遠不會進入上下文視窗。

python
1# Agent 只編寫一次;模型僅在決策點參與
2from hermes_tools import edgar_fetch, market_price, calc
3
4tickers = ["TSLA", "NVDA", "COIN"]
5rows = []
6for t in tickers:
7 f = edgar_fetch(t, form="10-Q") # 透過 RPC 的工具呼叫
8 px = market_price(t) # 透過 RPC 的工具呼叫
9 pe = calc("pe", price=px["last"], eps=f["eps"]) # 確定性數學計算,非 LLM
10 rows.append({"ticker": t, "pe": pe, "src": f["accession"], "as_of": f["period_end"]})
11
12print(rows) # 只有這個會進入上下文視窗

對於金融分析師來說,這意義重大。

一個對 20 個股票代碼的晨間掃描,每個需要三次工具呼叫,總共是 60 次工具呼叫。如果以傳統方式進行,這會耗盡你的上下文和 token 預算。

作為一個腳本,它只是一個輪次,一個乾淨的列印表格,數學計算在行內確定性地完成。你可以將整個流程摺疊成單次推理,模型只在真正需要判斷的點上進行思考。將你重複性的分析師工作流程構建成包裝在技能中的 execute_code 腳本。(僅限 Linux/macOS,因為它需要 Unix 域套接字。)

2f. 記憶 - 事實 vs. 用戶模型

Hermes 的記憶由三個正交的機制組成(「3 層」框架是教學上的簡化,在程式碼中它們是獨立的):

  • MEMORY.md - 持久性事實。約 2,200 字元上限。
  • USER.md - 關於你的模型。約 1,375 字元上限。
  • SessionDB - SQLite,WAL 模式,基於 FTS5 的過去所有對話輪次索引,可透過 session_search 查詢。

一個 MemoryStore 在會話開始時讀取 MEMORY.md 和 USER.md 一次,並將它們作為一個單一的不可變區塊嵌入到系統提示詞中。

Agent 可以在會話期間寫入這些檔案,寫入會命中磁碟,但提示詞中的副本在下次會話之前不會改變,因為改變它會破壞前綴快取(與其他地方相同的不變量)。

此外還有 8 個可選的外部提供者(Honcho 的辯證用戶建模、Mem0、Hindsight、Supermemory……),單選,使用 hermes memory setup 進行設定。

字元上限是一個功能。它們強迫你將 USER.md 保持為高訊號的基礎設施,而不是一個垃圾場。

對於分析師來說,USER.md 是你的任務授權:風險承受能力、投資期限、你實際據以行動的指標、輸出格式。

MEMORY.md 用於 Agent 贏得的持久性事實(「COIN 的營收與 10-K 的關聯性比與 FMP 的更清晰」)。

SessionDB 作為你的記分員,儲存每次呼叫,根據結果進行評分,Agent 在你了解它的校準情況(它在哪裡表現出色,在哪裡長期過於看漲)的同時更新先驗知識。這個校準圖譜是 alpha,沒有哪個散戶的建置會費心去收集。

2g. 當提示詞不夠用時:GAPA,然後是 RL

在你考慮微調之前:Hermes 有 GAPA,這是一個針對你的 SOUL.md、技能指令和系統提示詞的系統性提示詞優化工具,而不是手動的反覆試驗調整。

當性能達到瓶頸時試試看。

除此之外,Hermes 可以進行批量軌跡生成並導出 ShareGPT 格式的追蹤用於 SFT,還有一個 RL 路徑(Atropos)可以根據你自己的軌跡實際微調工具呼叫行為。這是「教育它」的真正天花板,最終會訓練出一個基於你的分析師工作方式的模型。

第三部分:擴展它:儲存庫、MCP、服務

MCP:將註冊與暴露分開

透過 CLI 或 config.yaml 添加伺服器;Agent 在啟動時列出它們的工具並與內建工具一同註冊。關鍵紀律,與上述快取邏輯一致:使用 tools.include 進行白名單過濾,這樣你只暴露你需要的工具,因為每個暴露的工具都會消耗前綴 token 並擴大攻擊面。

bash
1hermes mcp add github --command npx --args "-y,@modelcontextprotocol/server-github"
2hermes mcp configure github # 切換個別工具
yaml
1mcp_servers:
2 filesystem:
3 command: npx
4 args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/you/research"]
5 tools: { include: [read_file, list_directory] } # 唯讀,不允許寫入

使用 /reload-mcp 來應用。

Composio MCP 是作弊碼,一個伺服器,數百個 SaaS 連接;人們透過它構建金融 Agent,在 Hermes 上拉取市場數據並將報告寫入 Google Docs。而 hermes mcp serve 則將 Hermes 本身作為一個 MCP 伺服器運行,暴露其會話歷史,以便 Claude Desktop 或 Cursor 可以查詢你的分析師發現了什麼——Agent 變成了一個你的其他工具可以讀取的知識庫。

數據源(排序:主幹 vs. 點綴)

加密貨幣主幹:

DefiLlama

(免費,無需金鑰,無真正速率限制,提供 TVL/費用/收益率/價格,一半的付費儀表板只是換皮)

+ Helius

(Solana 王者,增強的交易解析將位元組湯轉換為可讀的交換記錄)。

點綴:

Birdeye(OHLCV + WebSocket)、Jupiter(路由/報價)、Dune + Flipside(SQL 鏈上數據)、Bitquery(GraphQL 多鏈)、Nansen/Arkham(標籤,付費)。

傳統金融主幹:

FRED

(聖路易斯聯邦儲備銀行,最高訊號的免費宏觀數據,是交易檯實際關注的數據)

+ edgartools

(MIT,無需金鑰,從 10-K 中提取帶有 accession number 的類型化財務數據)。

點綴:

Finnhub(最佳免費方案)、FMP(預計算比率)、Polygon/Tiingo(乾淨的歷史數據)、yfinance(應急膠帶,會靜默失效)、GDELT(全球新聞事件)。

陷阱:免費方案的限制很嚴格(Alpha Vantage 大約每天 2 打呼叫)。你會以為是你的程式碼壞了。快取所有數據,並使用憑證池(config.yaml)在多個金鑰之間自動輪換,以應對速率限制。

值得你花時間的儲存庫

  • NousResearch/hermes-agent

閱讀 developer-guide 文件:架構、Agent 循環、上下文壓縮與快取。DeepWiki 和 mudrii/hermes-agent-docs 鏡像對於了解內部機制很有用。

gemchanger - inline image
  • 0xNyk/awesome-hermes-agent

策展過的技能、工具、MCP 伺服器、整合。從這裡開始。技能中心:官方 Hub(680+ 技能,18 個類別)、skills.sh、ClawHub。

gemchanger - inline image
  • OpenBB-finance/OpenBB

開源的彭博終端,內建 MCP 伺服器,因此可以直接插入 Hermes,並透過一個介面為 Agent 提供龐大的市場數據和分析功能。這是單一附加元件中槓桿效應最高的。

gemchanger - inline image
  • polakowo/vectorbt

基於 Numba 的快速回測,數秒內完成數千種變體測試。將其包裝在一個技能中,這樣 Agent 在你信任每個假設之前都會對其進行測試。

gemchanger - inline image
  • TauricResearch/TradingAgents (+ auronsun/TradingAgents-crypto)

多 Agent 交易公司模擬器。閱讀它以了解其結構,然後構建你理解的、更精簡的看多/看空子 Agent 版本。microsoft/qlib 和 nautechsystems/nautilus_trader 用於真正的系統性策略。wilsonfreitas/awesome-quant 作為函式庫地圖。

gemchanger - inline image
一鍵儲存

使用 YouMind AI 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章