HarnessRouter 社区版
一套 API 统一接入 Codex、Claude Code、Hermes、DeepSeek Harness 等智能体运行器,在自有基础设施上自托管运行,免去为每个 harness 重复开发后端集成。
证据显示:容器先以 root 建立每会话用户再降权运行(README 明确警告勿加 --user)、仅发布 3000 端口且 Gateway/Runner 仅监听 loopback、默认口令要求立即更改并保持 loopback 绑定、secrets 存于 /data 卷、HR_SECRET_KEY 用于存储连接。扣分项:用户确认机制(agent 以用户凭证执行 bash/git/文件操作,但文档中未见任务级审批门)、依赖安全(harness CLI 在首次启动时在线安装,未见清单、固定版本或 SBOM, SECURITY.md 明确将其排除在范围之外),故 least_privilege 与 sensitive_data_handling 得 2 而非 3,user_confirmation 与 dependency_security 仅得 1。回滚/恢复(cancellation、recovery、可恢复会话、命名卷持久化)有文档支撑但未展示实现,得 2。许可证与上游归属(Apache-2.0 全文、上游 CLI 许可声明)完整,得 3。
证据显示:文档与测试代码内部一致(conftest 中 HR_* 环境变量与 README 的 HR_AUTH_USER/HR_SECRET_KEY 命名体系一致),模型 slug 映射有专门测试覆盖;失败路径有契约级描述(structured errors、CLI 退出码 1、hub-cleanup 脚本对非 rc 标签拒绝删除)。扣分项:均为静态文档与契约描述,无错误消息实例展示;harness CLI 依赖在运行时从上游拉取,可用性取决于外部,故各项止步于 2。
证据显示:受众与场景界定清晰(自托管用户、产品开发者、starter kits 覆盖幻灯片/表格/仪表盘/视频,并注明各 kit 的前置条件与额外成本);能力边界有 SECURITY.md 的范围划分与“目录由运行实例显示”的声明。扣分项:触发精度不适用且无细粒度文档(1);环境适配仅覆盖 Docker 一条路径,裸机/Compose 细节在未提供的外链中(2)。
证据显示:信息架构极佳(README→setup 指南→协议规范/schema/一致性套件/治理分层清楚);安装说明详细(端口冲突、4GB 磁盘、首启等待、默认凭证表);已知限制诚实(无试用密钥、视频按片段计费、首启较慢、样本行设置需人工复核)。扣分项:仅见间接版本线索(0.15.7、workflow 注释中的日期),仓库内无 CHANGELOG 或版本策略文件,versioning_changelog 仅得 1;examples 偏少且无 FAQ(2);维护责任有 SECURITY.md 响应时限与 bot 工作流佐证但无 MAINTAINERS/发布节奏文件(2)。
证据显示:N×M 收敛为统一 API 的边际价值明确且差异化(统一 Tasks/Runs/Sessions/Files/Artifact/Trace 契约 + OpenAI Responses 兼容层);输出可用性由流式、artifacts、结构化错误契约支撑。扣分项:成本收益声称(“90%+ 节省”“99.8%”)仅为外部链接的营销式引用,本仓库内无法核实,且首启需下载多个 CLI、运行成本转嫁给所配置的 provider,故 cost_benefit 得 2。
证据显示:claim_traceability 有机制支撑——conformance-remeasure 工作流会用实测结果替换 README 中的记录块,且失败不开 PR,防止数字失真,这在同类仓库中少见;hub-cleanup 注释记录了 403 排障历史。扣分项:benchmark 数字、UHP 规范、外部站点均无法在本仓库内交叉证实,cross_source_corroboration 仅 1;README 含营销措辞(“世界首个”“世界最佳”)但主体事实与推断区分尚可(2)。
- 默认凭证 harnessrouter/harnessrouter 在首次登录前必须保持 loopback 绑定并立即改密;公开暴露未改密实例等于交出执行权限。
- agent harness 以你所配置的 provider 密钥执行 bash、git 和文件系统操作,SECURITY.md 明确要求将实例视为“能以你的凭证运行代码”;谨慎授予密钥并限制网络与文件访问。
- harness CLI 在首次启动时从上游在线安装,其许可证与安全责任在上游,本仓库不做审计;静态审查未能核实这些二进制来源。
- 容器初始以 root 运行以建立每会话用户,随后降权;勿用 --user 破坏该机制,但应审查镜像以确认降权确实发生。
- 仓库内无 CHANGELOG,版本信息只能从注释与外链推断;升级前请阅读 setup 指南并固定镜像版本。
- 本次为静态审查(confidence: low),未执行任何运行、一致性套件或基准测试;README 中的性能与成本数字均未经本次评估验证。
这个 Agent 能做什么,适合哪些场景?
HarnessRouter 社区版是统一智能体 harness 的首个统一接口,以 Apache-2.0 许可自托管。它实现了开放标准 Unified Harness Protocol(UHP),通过一个兼容 OpenAI Responses 的 API 运行 Codex、Claude Code、Hermes、PI、DeepSeek Harness 等受支持的 harness。部署形态是单个 Docker 容器,内含 Console(:3000)、Gateway(:8080)和 Runner(:8081)三个组件,Runner 为每个会话启动独立的 harness CLI 进程。平台负责任务与运行、会话、流式输出、文件与产物、取消与恢复、结构化错误和追踪等完整生命周期契约。模型供应商密钥、数据库、文件和工作区全部保存在用户自己的基础设施中,数据卷为 /data。仓库还包含 UHP 规范、OpenAPI/JSON Schema 和一致性测试套件。适合希望在自有环境接入多家 harness 而不想为每个 harness 单独开发后端的团队。
通过 docker run 启动后,首次启动自动安装启用的 harness CLI,日志显示 ready on :3000 即可使用。Console 是 UI 与 API 的唯一入口,通过同源代理转发到 Gateway,Gateway 实现 Responses API 和 harness 生命周期管理,Runner 在容器内环回端口上为每个会话运行一个 agent CLI 进程。用户在 Console 的 Integrations 中添加模型供应商 API key 后,即可在 Agent harnesses 页面新建任务,进度实时流式写入任务,文件、产物、错误和最终结果都附加在会话上。也可直接调用 API:先 POST /api/selfhost/login 获取会话 cookie,再向 /api/harness/v1/responses 发送请求,通过 metadata.harness_id(如 "codex")指定 harness,设置 "stream": true 可接收服务器推送事件。仓库还提供 UHP 规范(protocol/versions/)、机器可读 schema(protocol/schema/)和一致性测试套件(protocol/conformance/)。
- 产品团队想把 Codex 或 Claude Code 等编码 agent 嵌入自己的产品,但不想为每个 harness 写独立后端集成。
- 工程团队需要在自托管环境中统一管理多个 harness 的任务、会话、流式输出和产物,并保持密钥和数据在自己控制之下。
- 开发者想通过一致性测试套件验证自己的 harness 实现是否符合 UHP 开放标准。
- 团队希望用一套 API 切换不同 harness × 模型组合以比较成本与延迟(README 提及部分任务成本节省超过 90%)。
- 用户想用 Hermes 等 harness 处理文档类工作流,如审阅 NDA 并生成红线稿、干净副本和谈判备忘录。
这个 Agent 有哪些优点和局限?
- 统一接口:产品只需对接一套 Task/Run/Session/File/Artifact/Error/Trace 契约,新增或切换 harness 无需改动后端。
- API 兼容 OpenAI Responses 格式,已有相关生态的客户端代码可较容易对接。
- 完整生命周期支持:会话、SSE 流式输出、文件与产物、取消与恢复、结构化错误和追踪内建于平台。
- 提供 UHP 规范、OpenAPI/JSON Schema 和一致性测试套件,标准公开且可验证。
- 附赠四个入门套件(Slides、Sheets、Dashboards、Videos),演示超越编码的场景。
- 必须自行提供模型供应商 API key,无内置模型或试用 key,未连接供应商前无法运行任何任务。
- 依赖 Docker 且约需 4 GB 磁盘空间;harness CLI 在首次启动时在线安装,依赖网络。
- 默认凭据为 harnessrouter/harnessrouter,须保持 loopback 绑定并及时改密码,暴露公网存在安全责任。
- harness CLI 本身遵循各自的上游许可证,且运行真实 shell 和文件系统,需要自行评估隔离与安全。
- 成本与延迟因任务和 harness × 模型组合差异巨大(README 基准中为 0.47–223 credits,1m25s–4m36s),需自行跑基准验证。
如何安装或部署这个 Agent?
需要 Docker、约 4 GB 磁盘空间和一个受支持模型供应商的 API key,社区版无需 HarnessRouter 账号。启动命令:docker run -d --name harnessrouter -p 127.0.0.1:3000:3000 -v harnessrouter:/data harnessrouter/harnessrouter。若端口 3000 被占用可改用 -p 127.0.0.1:3100:3000。保持 loopback 绑定,不要加 --user(容器先以 root 建立每会话用户,再以非特权运行)。版本固定、Docker Compose 和脚本化部署见 docs/self-hosting-guide.md。
如何使用这个 Agent?
首次启动较慢,运行 docker logs -f harnessrouter 等待出现 [harnessrouter] ready on :3000。打开 http://localhost:3000,用初始凭据用户名 harnessrouter、密码 harnessrouter 登录(若设置了 HR_AUTH_USER/HR_AUTH_PASSWORD 则用之),并立即在 Profile 中修改密码。在 Integrations 添加模型供应商及其 API key(无内置模型或试用 key,未连接供应商前无法运行任务)。在 Agent harnesses 选择 harness 并新建任务,指定模型和具体指令。API 调用示例:curl -s -c hr.cookies http://localhost:3000/api/selfhost/login -H 'content-type: application/' -d '{"username":"harnessrouter","password":"<your-password>"}',然后 curl -s -b hr.cookies http://localhost:3000/api/harness/v1/responses -H 'content-type: application/' -d '{"input":"Reply with exactly: it works.","metadata":{"harness_id":"codex"},"model":"gpt-5.4-mini","stream":false}'。
这个 Agent 与同类方案有什么区别?
仓库将社区版与 HarnessRouter Cloud 对比为同一 UHP 契约的两种实现:社区版自托管、数据完全自控,Cloud 提供托管规模;此外它以 UHP 参考实现的身份对标各 harness 的专有独立接口(为每个 harness 单独建后端)。
常见问题
使用它需要付费或注册账号吗?
我的数据安全吗?
支持哪些 harness?
如何通过 API 调用?
/api/selfhost/login 获取会话 cookie,再向 /api/harness/v1/responses 发送 OpenAI Responses 兼容请求,用 metadata.harness_id 指定 harness,"stream": true 获得 SSE 流。