harness 与 hermes-agent 源码结构与架构对比

源码规模和语言分布

从文件类型看,两者都很大,但重心完全不同。

Harness

主要文件类型:

  • .go:约 2686 个
  • .tsx:约 1005 个
  • .sql:约 743 个
  • .ts:约 646 个
  • .scss:约 389 个

这说明 Harness 是一个 Go 后端为主、React 前端为辅、数据库 schema/migration 很重的平台型工程。

Hermes Agent

主要文件类型:

  • .py:约 1902 个
  • .md:约 1379 个
  • .ts:约 328 个
  • .tsx:约 88 个
  • .yaml:约 90 个

这说明 Hermes Agent 是 Python agent runtime 为主,Markdown 技能/文档非常多,前端只是 dashboard/TUI 的辅助层。

Harness 顶层架构

Harness 的核心目录:

目录 作用
cmd/gitness 主可执行入口
cli CLI 子命令
app 应用层,包含 API、服务、认证、路由、Pipeline、Gitspace
git Git 操作封装
registry Artifact Registry 子系统
store / app/store 数据访问和数据库实现
types 领域类型、配置、枚举
web React 前端和 OpenAPI 生成客户端
ssh Git SSH 服务
job 后台任务调度
pubsub / stream / lock / cache 平台基础设施抽象
charts Kubernetes Helm 部署

整体架构是典型的服务端平台:

text 复制代码
CLI / HTTP / SSH
      |
app/router + app/api/controller
      |
app/services
      |
store / git / registry / job / event
      |
SQLite/Postgres + filesystem/blob + Docker + Redis(optional)

Hermes Agent 顶层架构

Hermes Agent 的核心目录:

目录 作用
hermes_cli CLI、配置、模型选择、工具配置、Dashboard、Gateway 控制
run_agent.py Agent 主循环入口和 AIAgent
agent 对话循环、压缩、模型适配、错误分类、工具执行、记忆等核心逻辑
tools Agent 可调用工具集合
toolsets.py 工具集定义和组合
model_tools.py 工具注册、schema 输出、同步/异步桥接
gateway 多平台消息网关
cron 定时任务调度
providers 模型 provider profile 抽象和发现
plugins provider、平台、memory、image/web 等插件
skills / optional-skills 技能库和可选技能
web Web dashboard
ui-tui React/Ink TUI
acp_adapter Agent Client Protocol 集成

整体架构是 agent runtime:

text 复制代码
CLI / TUI / Gateway / ACP / Web Dashboard
      |
hermes_cli + gateway
      |
run_agent.AIAgent
      |
agent/* 对话循环 + model adapters + memory + compression
      |
model_tools + tools.registry + toolsets
      |
外部 LLM provider / 浏览器 / 终端 / 文件 / Web / 消息平台 / MCP

核心代码组织差异

Harness

Harness 更强调领域边界和服务端分层:

  • controller 负责 API
  • services 负责业务逻辑
  • store 负责持久化
  • types 负责领域对象
  • router 负责 HTTP 路由
  • wire 负责依赖注入

它的大量复杂性来自平台业务:权限、资源层级、Git 数据、Pipeline 状态、Registry 兼容性。

Hermes Agent

Hermes Agent 更强调运行时组合和动态能力:

  • agent loop 负责多轮对话和工具调用
  • registry 负责工具自注册
  • provider profile 负责不同模型服务差异
  • skills 是 Markdown 形式的可读/可改能力包
  • gateway 把消息平台抽象成统一 agent 会话
  • config/env/profile 让同一程序能多场景运行

它的大量复杂性来自 LLM provider 差异、工具安全、多平台消息、长期状态和自动化任务。

架构粒度对比

维度 Harness Hermes Agent
主架构风格 分层服务端平台 插件化 agent runtime
核心抽象 资源、服务、控制器、存储 会话、工具、模型、技能、记忆
依赖组织 Go module + Wire DI Python 包 + runtime discovery
前端地位 产品 UI 的核心入口 Dashboard/TUI 辅助入口
数据模型 强领域模型、数据库表多 会话状态、配置、工具元数据多
扩展方式 新 controller/service/store/route 新 tool/provider/plugin/skill
相关推荐
咕咕AI学堂几秒前
检索引擎深度对比:Elasticsearch vs Milvus vs Redis 在 RAG 中的定位
人工智能
Java牛马5 分钟前
AI Agent 技术栈梳理(Skill / 蒸馏 / MCP / Harness)
人工智能·ai agent·蒸馏·skill·mcp·harness
IT_陈寒19 分钟前
Vue的computed属性把我坑惨了,原来我一直用错姿势
前端·人工智能·后端
千维百策66621 分钟前
降低 AI 辅助开发摩擦的五种模式
人工智能
有脚就行33 分钟前
第38篇-LLM-API网关进阶-流式代理与内容安全
人工智能
w57w00043 分钟前
AI可见度监测方案选型:电商、媒体公关、全球市场等场景的差异化需求与避坑指南
人工智能
stormzhangV1 小时前
这个本地模型,让我 token 自由了
人工智能·ai编程·claude
wen_zhufeng1 小时前
IndexTTS 2.5 技术报告
人工智能·算法·机器学习
Mark-Wang1 小时前
每天介绍一家新质生产力公司4
人工智能
2501_944676161 小时前
揭秘!WORDTIP公司靠不靠谱?小白必看
大数据·人工智能·python