📚 Harness 学习计划 / 产出归档 / 对比笔记

Hermes vs Claude Tool Use 对比笔记

状态:✅ 已完成(Day 3 产出)


📊 完整对比表

维度 Hermes-3 Claude (Sonnet/Opus) 结论
函数调用格式 XML 标签 <tool_call> 包裹 JSON API 原生 JSON block(type: "tool_use" Claude 更标准化,不需要手动拼标签
角色定义 ChatML 四角色(system/user/assistant/tool) Messages API 两角色(user/assistant),tool_result 用 user 角色 角色体系不同,但逻辑一一对应
停止判断 无内置机制,需正则解析文本中的 <tool_call> stop_reason 字段(API 保证准确) Claude 更可靠,不会误判
多轮对话 手动维护 ChatML 格式上下文 自动带上历史消息即可 Claude 开发成本更低
并行调用 不明确支持 原生支持一次返回多个 tool_use Claude 性能更好
参数严格校验 strict: true 保证参数 100% 符合 schema Claude 更适合生产环境
工具选择控制 tool_choice(auto/any/tool/none) Claude 可控性更强
中文能力 未经专门训练,8B 是短板 官方支持中文 Claude 对多语言站点更友好
部署方式 开源自部署(Ollama/服务器) 云端 API(Anthropic 服务器) Hermes 适合数据隐私场景
成本 无 token 费,只有服务器成本 按 token 计费,Server 工具额外收费 Hermes 大规模使用成本更低
集成难度 需自己写解析器、路由、上下文管理 SDK 开箱即用 + Tool Runner 自动循环 Claude 集成更快

🔑 核心差异总结

1. 协议层 vs 文本层

Claude:Tool Use 是 API 协议的一部分
  → stop_reason 字段 100% 告诉你 Claude 是否要调工具
  → tool_use / tool_result 是结构化 JSON block

Hermes:Tool Use 是文本格式的约定
  → 需要自己解析文本找 <tool_call> 标签
  → 需要自己拼 ChatML 格式维护上下文

2. 可控性

Claude 提供:
  ✅ tool_choice(控制是否调工具、调哪个工具)
  ✅ strict: true(参数严格校验)
  ✅ 并行工具调用
  ✅ Tool Runner(SDK 自动循环)

Hermes 提供:
  ❌ 以上均无原生支持
  ✅ 但可以自部署,数据不出服务器

3. 适用场景

场景 推荐
快速验证 Agent 概念 Claude
数据隐私敏感(如后台运营数据) Hermes
多语言站点(中/英/德/日/韩) Claude
大规模部署(成本敏感) Hermes
生产环境(需要参数精确) Claude

💡 对 SmallRig 的启示

  1. Agent 概念验证阶段:用 Claude 快速跑通流程,验证「这个操作能不能 Agent 化」
  2. 大规模部署阶段:如果数据隐私 + 成本是首要考虑,用 Hermes 自部署
  3. 混合方案可能最优:前台用户体验用 Claude(多语言好),后台数据操作用 Hermes(数据不出服务器)