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
相关推荐
秦先生在广东2 分钟前
多智能体统一架构:拆解 wshobson/agents 的跨工具插件适配机制
人工智能
秦先生在广东8 分钟前
Graphify:基于本地确定性 AST 解析的代码知识图谱探索
人工智能
阿里云大数据AI技术36 分钟前
【云栖实录】一切数据,皆可计算:MaxCompute 升级为AI Native全模态计算服务
大数据·人工智能·agent
面壁的熊猫44 分钟前
agent-team 与 Multica 差异分析,以及 2026 年多 Agent 编码编排最新相关工作
人工智能·开源项目·ai agent
云淡风轻~窗明几净1 小时前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论
武子康1 小时前
撤回发生在重建途中,旧索引还能切回来吗
人工智能·后端·agent
新知图书1 小时前
10.3 本地生活与商业服务:信任构建的差异化路径
人工智能
小豆庄1 小时前
处理含车牌/人脸的隐私视频,如何做到数据不离机?
opencv·ai·云计算·视频
博谷1 小时前
2026年AI搜索监测平台的问题库怎么搭建?BUGOOAI布谷GEO用五域问题模型拆解决策变量
人工智能
珠海西格电力1 小时前
物联网(IoT)在零碳园区中的关键作用:万物互联与数据采集
大数据·人工智能·物联网·安全·系统架构·能源