技术栈对比
| 维度 | Harness | Hermes Agent |
|---|---|---|
| 后端主语言 | Go | Python |
| 前端 | React 17、webpack、SCSS | React 19、Vite、Tailwind、Ink TUI |
| 包管理 | Go modules、Yarn | uv、pip/setuptools、npm |
| 数据库 | SQLite/PostgreSQL | SQLite |
| 依赖注入 | Google Wire | Python runtime discovery / registry |
| API | REST + OpenAPI/Swagger | CLI、tool schema、Gateway adapter、ACP |
| 容器 | Alpine/Golang/Node 多阶段构建 | Debian + uv + s6-overlay |
| 部署 | 单二进制、Docker、Helm/K8s | 本地安装、Docker、Nix/Homebrew、消息网关常驻 |
Harness 构建方式
Harness 的构建主线:
cdwebyarninstallyarnbuildcd..makebuild关键文件:
harness/Makefileharness/Dockerfileharness/web/package.jsonharness/go.modharness/web/dist.go
最终产物是gitness二进制。前端web/dist会嵌入到 Go 程序里。
Harness 启动方式
本地启动:
./gitness server .local.envWindows PowerShell 下通常是:
.\gitness.exe server.local.envDocker 启动:
dockerrun-d\-p3000:3000\-p3022:3022\-v/var/run/docker.sock:/var/run/docker.sock\-v/tmp/harness:/data\--nameharness\--restartalways\harness/harnessHermes Agent 构建方式
Hermes Agent 的 Python 包入口在pyproject.toml:
hermes = hermes_cli.main:main hermes-agent = run_agent:main hermes-acp = acp_adapter.entry:main开发安装方式:
uv venv .venv--python3.11source.venv/bin/activate uv pipinstall-e".[all,dev]"前端 dashboard:
cdwebnpminstallnpmrun buildTUI:
cdui-tuinpminstallnpmrun buildHermes Agent 启动方式
常见入口:
hermes hermes model hermes tools hermes setup hermes gateway hermescronhermes doctor hermes acp主配置目录默认在:
~/.hermes主要文件:
~/.hermes/config.yaml~/.hermes/.env~/.hermes/state.db~/.hermes/skills~/.hermes/plugins
容器部署差异
Harness 容器
Harness 容器目标是启动一个完整服务端平台:
- HTTP 端口:默认
3000 - SSH 端口:默认
3022 - 数据卷:
/data - SQLite 数据库和 Git/Registry 文件可放在 volume
Hermes Agent 容器
Hermes Agent 容器目标是启动一个可交互/常驻 agent:
- 使用
s6-overlay管理主进程、dashboard、gateway - 数据目录:
/opt/data - 需要 API key、消息平台 token、provider 配置
- 可能需要浏览器、Node、ffmpeg、Docker CLI 等工具
构建理念差异
Harness 追求“一个平台二进制/镜像可提供完整服务”。
Hermes Agent 追求“一个 agent runtime 可接入多种模型、工具和消息平台”。