harnessrouter把Codex、Claude Code等Agent Harness统一封装成一个可切换的后端,通过OpenAI Responses API风格的接口供你的产品调用。
核心架构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 你的产品 │ │ OpenAI Responses-compatible API ▼ HarnessRouter ├── Gateway │ └── Responses API / session / streaming / files │ ├── Runner │ └── 实际运行Agent Harness │ └── Harnesses ├── Codex ├── Claude Code ├── 其他Harness └── Custom Harness
|
比较关键的是,它不是单纯的LLM Router,而是Agent Harness Router,它解决的是:
- Agent运行时
- Session持久化
- Streaming
- 文件输入/输出
- Artifact
- Cancellation
- Agent工具
- Skills
- Harness切换
- Sandbox/workspace
- 统一API
对开发者最重要的接口
它实现了自己的**Unified Harness Protocol(UHP)**,同时兼容OpenAI Responses API。
调用方式:
1 2 3 4 5 6 7 8 9 10 11
| curl "$HARNESSROUTER_BASE_URL/v1/responses" \ -H "Authorization: Bearer $HARNESSROUTER_API_KEY" \ -H "content-type: application/json" \ -d '{ "input":"Reply with exactly: it works.", "metadata":{ "harness_id":"codex" }, "model":"gpt-5.4-mini", "stream":false }'
|
因此你的业务代码可以保持类似:
1 2 3 4 5 6 7 8 9 10 11
| 产品 ↓ Responses API ↓ HarnessRouter ↓ 选择Harness ├─ Codex ├─ Claude Code ├─ Custom Harness └─ ...
|
而不需要针对每一个Harness分别实现一套生命周期管理。
本地部署
Community Edition基本是一个Docker容器:
1 2 3 4 5 6 7 8 9
| HarnessRouter container ├── Console :3000 ├── Gateway :8080 ├── Runner :8081 └── /data ├── database ├── files ├── secrets └── workspaces
|
启动:
1 2 3 4
| docker run -d --name harnessrouter \ -p 127.0.0.1:3000:3000 \ -v harnessrouter:/data \ harnessrouter/harnessrouter
|
然后通过Console配置Provider API Key和Harness。