Skip to content

ADR-0001: Hermes 作为运行时

  • 状态:Accepted
  • 日期:2026-04-28
  • 决策者:项目团队

背景

Agent 运行时(agent loop / tool dispatch / Skill 注册)需要选型。候选:

  1. Claude Code — Anthropic 官方 CLI,自带 Skill / MCP 生态
  2. Hermes (内部框架) — 团队已有的内部 Agent 框架,配套 Nous Research Hermes LLM
  3. PydanticAI / LangGraph / CrewAI — OSS 框架
  4. 从零自研 agent loop — Python while 循环 + JSON Schema

决策

采用 Hermes 作为运行时,配套使用 Hermes (Nous) 作为默认 LLM。

理由

  • 团队已熟悉 — 已用于交易相关任务,上手成本低
  • Skill + Competence 原语契合 — Competence (知识 + 来源) 天然支持 citation
  • 可控 — 内部框架可改,不被外部 vendor 牵制
  • 多语言支持 — Python + JS 都能写 Skill,匹配 A 股域 (Python data + 可能的 CF Worker JS)

取舍 (Trade-offs)

质量风险:Hermes (Nous) LLM 在长上下文 / 表格理解 / 严格 citation 上不如 Claude / GPT。

  • 缓解:引入 Model Router (~20 LOC),按任务类路由:
    • 简单调度 → Hermes
    • PDF 研报解析 → Claude Sonnet / GPT-4o
    • 综合写作 → Claude Opus / GPT-4

生态较小:Hermes 是内部框架,没有外部 Skill 市场。

  • 缓解:参考公开 Claude Code Skill repo 的设计模式(Tushare-Finance-Skill-for-Claude-CodeBitSoulStockSkill)。

Skill 是裸 Python/JS 函数,没有强制 Tool 层

  • 缓解:通过约定强制 L3 Tools 分层。Lint 规则禁止 Skills 直接 import tushare/akshare

替代方案为什么没选

  • Claude Code:要把 Hermes 弃用、放弃团队积累,迁移成本太高
  • PydanticAI / LangGraph:又引入一个外部依赖;Skill / Competence 概念要重新表达
  • 从零自研:重复造轮子,没必要

影响

  • 所有运行时代码基于 Hermes API
  • Skill / Competence 的定义和注册走 Hermes 通道
  • 实现计划里需要一个 discovery task 弄清 Hermes 当前 API 的能力(Competence registry?Trace observability?)

详见 03 — Agent 框架层 §7 Open Items。

Internal documentation