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
相关推荐
xywww1681 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
私人珍藏库5 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
CS创新实验室6 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
能有时光6 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
fthux7 小时前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
aqi007 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
xixixi777777 小时前
三大 AI 安全里程碑:Akamai 高危风险预警、智能体水印强制落地、PQC 量子安全全产业链统一
大数据·人工智能·安全·ai·大模型·智能体·政策
筱白爱学习8 小时前
SpringAI完整学习指南(四)
ai·spring ai
AI小码8 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
code 小楊8 小时前
AI函数调用:Function Calling从理论到实战全解析
人工智能