如何用 Lite-Harness 统一管理 Claude Code、Codex 和 Pi 三大 AI 编程 Agent?
如果你同时使用多个 AI 编程 Agent——Claude Code 写后端、Codex 做前端、Pi 做自动化测试——你一定遇到过这个问题:每个 Agent 有自己独立的 CLI、API、配置文件和 SDK。
Claude Code 用 claude 命令和 Anthropic API,Codex 用 codex 命令和 OpenAI API,Pi 用独立 CLI。每次切换 Agent 就得切换思维方式,更别提共享的上下文、工具和密钥管理体系了。
Lite-Harness 是 LiteLLM 团队(GitHub 20k+⭐ 的 AI Gateway 项目)推出的一款统一 Agent SDK,让所有主流编程 Agent 使用同一个接口调用。简单说就是:你用一套 API,调用所有 Agent。
为什么需要统一 Harness?
| 维度 | 独立运行 | Lite-Harness 统一调用 |
|---|---|---|
| 代码接口 | 每个 Agent 一套 API/SDK | query() 统一接口 |
| 模型切换 | 改 CLI 命令 + 换配置文件 | 改 model 参数即可 |
| 密钥管理 | 分散在各 CLI 的 config 文件 | 统一环境变量 + 可选 LiteLLM Gateway 中心化管理 |
| 流式输出 | 格式各异(SSE/SSH/stdio) | 统一 Claude Agent SDK 格式 |
| 工具集成 | 每个 Agent 各自实现 | 共享 MCP / Skills / Tools |
安装与环境配置
Lite-Harness 目前通过 GitHub 源码安装(npm/PyPI 即将发布),只需三步:
git clone https://github.com/LiteLLM-Labs/lite-harness.git cd lite-harness npm install --prefix src/sdk/server export ANTHROPIC_API_KEY=sk-ant-*** # Claude Code export OPENAI_API_KEY=sk-*** # Codex
TypeScript 示例:一行代码切换 Agent
TS SDK 需要先构建:
npm install --prefix src/sdk/typescript && npm run build --prefix src/sdk/typescript
然后用 query() 统一接口调用任意 Agent:
import { query } from "@lite-harness/sdk";
const prompt = "修复这个失败的测试用例";
// 调用 Claude Code(Claude Opus 4)
for await (const message of query({
prompt,
options: { harness: "claude-code", model: "claude-opus-4-8" },
})) {
console.log(message);
}
// 同一段代码,切到 Codex 只需改一个参数
for await (const message of query({
prompt,
options: { harness: "codex", model: "gpt-5.5" },
})) {
console.log(message);
}
核心能力就一句话:改参数不改代码。harness 控制用哪个 Agent,model 控制用哪个模型,完全不侵入已有的业务逻辑。
Python 示例:异步调用 Agent
Python SDK 安装:
pip install -e src/sdk/python # Python 3.10+
接入方式同样简洁:
from lite_harness import query, AgentOptions
prompt = "修复这个失败的测试用例"
async for message in query(
prompt=prompt,
options=AgentOptions(harness="claude-code", model="claude-opus-4-8"),
):
print(message)
async for message in query(
prompt=prompt,
options=AgentOptions(harness="codex", model="gpt-5.5"),
):
print(message)
Python 版本的 AgentOptions 是类型安全的 Pydantic 模型,IDE 自动补全友好。
支持的 Agent Harnesses
目前支持三种主流 Agent:
| Harness 名称 | 对应工具 | 上游项目 |
|---|---|---|
claude-code | Claude Code / Claude Agent SDK | anthropics/claude-agent-sdk-python |
codex | OpenAI Codex CLI | openai/codex |
pi-ai | Pi AI Agent | Pi AI 官方 CLI |
所有 Harness 的 provider 实现都在 src/sdk/server/providers/ 目录下,可以根据需要参照格式新增。
进阶:集成 LiteLLM AI Gateway
如果你的团队有多人使用 AI Agent,可以接入 LiteLLM AI Gateway 实现中心化的密钥管理、预算控制、日志审计和故障转移:
export LITELLM_API_BASE=https://litellm.your-company.com/v1 export LITELLM_API_KEY=sk-litellm-***
import { query } from "@lite-harness/sdk";
for await (const message of query({
prompt: "排查这条生产链路追踪",
options: {
harness: "codex",
model: "anthropic/claude-opus-4-8", // 通过 Gateway 路由到 Claude
},
}));
这种模式下,团队所有 Agent 调用都走同一个 Gateway,谁用了多少预算、哪个 Agent 表现最好,一清二楚。
实战:用 Lite-Harness 做 A/B 测试
Lite-Harness 最有价值的场景之一是 Agent A/B 对比测试。比如你在评估用 Claude Opus 4 还是 GPT-5.5 来做代码审查,脚本可以这样写:
import asyncio
from lite_harness import query, AgentOptions
prompts = [
"审查以下代码是否有安全漏洞:def login(pwd): db.query(f'SELECT * FROM users WHERE password={pwd}')",
"优化这段代码的性能:for i in range(len(items)): print(items[i])",
]
async def evaluate(harness_name, model_name):
for i, prompt in enumerate(prompts):
print(f"\n[{harness_name}/{model_name}] Task {i+1}:")
async for msg in query(prompt=prompt, options=AgentOptions(
harness=harness_name, model=model_name
)):
print(msg, end="")
async def main():
await asyncio.gather(
evaluate("claude-code", "claude-opus-4-8"),
evaluate("codex", "gpt-5.5"),
)
asyncio.run(main())
两个 Agent 并发运行,结果直接在终端对比,不需要在终端间来回切换。
文件路径布局
Lite-Harness 的目录结构清晰,方便自行扩展:
lite-harness/ ├── src/ │ └── sdk/ │ ├── server/ # 后端服务(自动启动) │ │ └── providers/ # 各 Harness 的具体实现 │ ├── typescript/ # TS SDK 源码 │ └── python/ # Python SDK 源码 └── README.md
如果要添加新的 Harness,只需在 providers/ 目录下实现对应的启动和通信逻辑即可。
什么时候该用 Lite-Harness?
- 多 Agent 团队:开发、测试、代码审查分别用不同 Agent,但想统一代码接口
- Agent 选型对比期:想快速在 Claude Code 和 Codex 之间切换对比效果
- 工具链集成:MCP Server 或 CI/CD 流程中需要同时调用多个 Agent
- 预算管控团队:配合 LiteLLM Gateway 统一管控 Agent 调用成本
注意事项
- Lite-Harness 当前处于 Preview 阶段,SDK 尚未发布到 npm 或 PyPI——需要从源码安装
- 各 Agent 的 API 密钥仍需各自申请,但可以通过 Gateway 中心化管理
pi-aiHarness 的成熟度可能不如claude-code和codex,生产环境建议优先使用后两者- 跨 Harness 的模型参数(max_tokens、temperature 等)映射规则不同,使用前建议验证
- 如果你已经在用 LiteLLM AI Gateway,Lite-Harness 可以无缝衔接——设置
LITELLM_API_BASE后,model参数可以直接用 Gateway 中的虚拟模型名
总结
Lite-Harness 的价值不是替代任何一个 Agent,而是让你在多个 Agent 之间自由切换而不需要学习多套 API。对于同时使用 Claude Code 和 Codex 的开发者来说,把 harness 参数从 "claude-code" 改成 "codex" 就能换一个 Agent 工作,这种抽象层本身就是一种开发效率投资。