用 Lite-Harness 统一调用 Claude Code、OpenCode 与 Codex 编码 Agent
如果你同时使用 Claude Code、OpenCode 和 Codex CLI,你一定遇到过这个问题:每个 Agent 有自己的启动方式、参数格式和 SDK。切换工具意味着切换整套工作流——不同环境变量、不同的 API 密钥管理方式、不同的工具注册机制,切换成本远超工具本身的价值。
更糟的是,当你想要在同一个项目中对比不同 Agent 的输出质量时(”Claude 修这个 bug 和 GPT 修得哪个好?”),你需要开两个终端、手动对齐 prompt、分别检查结果。这种断裂的体验已经成为实际工作中的痛点。
痛点对比:各自独立运行 vs Lite-Harness
| 维度 | 各自独立运行 | Lite-Harness |
|---|---|---|
| 多 Agent 支持 | 每个 Agent 一套命令 | 统一 query() 接口 |
| API 密钥管理 | 每终端独立设置 | 同一环境上下文 |
| SDK 语言 | TS 或 Python 各不同 | 同时提供 TS 和 Python |
| 切换成本 | 停旧 → 开新 → 重配 | harness: "codex" 改一行 |
| 生产集成 | 需自行封装 CLI | 可直接导入 SDK |
| 许可证 | 各项目不同 | MIT 许可 |
快速上手
Lite-Harness 是 LiteLLM Labs(LiteLLM 团队,主项目 20k+ ⭐)推出的统一 Agent 运行时 SDK。安装只需三步:
git clone https://github.com/LiteLLM-Labs/lite-harness.git cd lite-harness npm install --prefix src/sdk/server export ANTHROPIC_API_KEY=sk-xxx # 用于 claude-code export OPENAI_API_KEY=sk-xxx # 用于 codex
然后就能用 Python 或 TypeScript 统一调用了:
from lite_harness import query, AgentOptions
async for msg in query(
prompt="修复所有失败的测试",
options=AgentOptions(harness="claude-code", model="claude-opus-4-8"),
):
print(msg)
async for msg in query(
prompt="修复所有失败的测试",
options=AgentOptions(harness="codex", model="gpt-5.5"),
):
print(msg)
TypeScript 版本同样简洁:
import { query } from "@lite-harness/sdk";
for await (const message of query({
prompt: "修复所有失败的测试",
options: { harness: "claude-code", model: "claude-opus-4-8" },
})) {
console.log(message);
}
核心功能
1. 多 Harness 调度
Lite-Harness 内置了三种 Agent 运行器:
claude-code— 基于 Anthropic Claude Agent SDKcodex— 基于 OpenAI Codex CLIpi-ai— Pi AI 运行器
切换只需改 harness 参数值,同一段 prompt 在三种 Agent 间的表现差异一目了然。对于评测型任务(”哪个 Agent 更适合我的项目”),这个特性本身就节省了大量手动操作。
2. 与 LiteLLM AI Gateway 集成
如果你的团队已经使用 LiteLLM AI Gateway 做 API 密钥管理、预算控制和回退路由,Lite-Harness 直接对接:
export LITELLM_API_BASE=https://litellm.your-company.com/v1
export LITELLM_API_KEY=sk-xxx
await query({
prompt: "分析这个生产 trace",
options: {
harness: "codex",
model: "anthropic/claude-opus-4-8", // 通过 Gateway 路由
},
});
这意味着你可以在不改变 Agent 代码的前提下,通过 Gateway 实现模型回退(Claude 挂了 → 自动切到 GPT)、用量统计和预算控制。
3. Claude Agent SDK 兼容的消息格式
所有 Agent 的返回都以统一流式格式输出(兼容 Claude Agent SDK 的 MessageStreamEvent 格式)。这意味着你的前端展示层、日志系统、回调处理都不需要为每个 Agent 写适配代码——一套接口处理所有返回。
横向对比:Lite-Harness vs 各自独立运行 vs OpenCode 原生
| 特性 | Lite-Harness | 各自运行 | OpenCode 原生 |
|---|---|---|---|
| 统一 Prompt 接口 | ✅ query() 一处调用 | ❌ 各 CLI 语法不同 | ❌ 仅限 OpenCode |
| 多模型切换 | ✅ 一行改 model | ❌ 需改 CLI 参数 | ❌ 仅支持 Codex |
| 流式输出格式 | ✅ 统一格式 | ❌ 格式各异 | ❌ 专有格式 |
| 企业 Gateway 集成 | ✅ 原生支持 | ❌ 需自行封装 | ❌ 不支持 |
| 安装复杂度 | 克隆 + npm install | 各工具独立安装 | pip install |
| 协议 | MIT | 各项目不同 | Apache 2.0 |
注意事项
- 仍处于 Preview 阶段:SDK 尚未发布到 npm 或 PyPI,目前需要克隆仓库使用。如果有强制的生产环境依赖,可以关注 GitHub Issues 等待发布状态。
- 需要先有 Agent 本身:Lite-Harness 只是运行时调度层,不包含 Claude Code 或 Codex CLI 的安装。你需要先确保这些 Agent 在你的开发环境中可用。
- 适合个人/小团队:目前的设计侧重于开发者体验,企业级的多租户/权限分离尚未覆盖。
- API 密钥安全:密钥通过环境变量注入,建议生产环境配合 LiteLLM Gateway 使用,而非直接暴露。
总结
如果你在多个 AI 编码 Agent 间切换(或想对比它们的输出质量),Lite-Harness 提供了一个优雅的统一接口。它不重新发明任何 Agent,而是让你用同一段代码调度所有 Agent——一条 import 语句,调用全部编码 Agent。配合 LiteLLM Gateway 使用时,还可以获得企业级的密钥管理、日志审计和成本控制能力。
适合人群:多 Agent 使用者、Agent 效果评测者、需要将 Agent 集成到现有工作流的团队。