模型只是可替换的后端。

一层模型无关的 agent harness。agent 循环、工具调用、MCP、子 agent、上下文压缩、hooks 和权限都在这一层里 —— 会话中途切换厂商不需要任何代价。

或安装命令行
npm install -g oharness
浏览器界面,跑的是和终端同一套引擎。
浏览器界面,跑的是和终端同一套引擎。
原生对接
AnthropicOpenAIGoogle GeminiOllamaLM StudiovLLM任何 OpenAI 兼容端点
3
运行时依赖
0
厂商 SDK
485
测试通过
4
个前端,一套引擎
这一层负责什么

把模型周围的一切做掉,模型才留得住可替换性。

厂商

Anthropic、OpenAI 以及所有 OpenAI 兼容端点、Google Gemini。用原生 fetch 和 SSE 直接对接各家的 HTTP API —— 不装任何厂商 SDK,也没有适配层要维护。

工具调用

用 zod 定义工具,自动生成 JSON Schema、自动校验入参;并行还是串行调度,由工具自己声明。

MCP

自带 JSON-RPC 客户端 —— stdio 和 Streamable HTTP,不依赖任何 MCP SDK。服务器自动发现,工具自动命名空间化。

上下文

压缩在安全切点下刀而不是切在一次交互中间,会话持久化并可恢复,已归档的历史仍然可以召回。

权限

deny 胜过 allow,连 bypass 也压得住。四种模式,规则在解析期就失败而不是凌晨三点才炸,询问是注入进来的 —— 定时任务永远不会卡在等人上。

子 agent

委派到隔离的上下文里并行跑,只留结论,不留产生结论的那段记录。

一个会话,所有厂商

会话中途换模型,什么都不用转换。

用密钥接入厂商,或者直接指向 Ollama、LM Studio、你自己的 vLLM 服务。模型列表是从各家自己的端点发现的,不是打包在代码里的过期副本。

阅读文档
模型面板:本地运行时和云端厂商在同一张列表里。
模型面板:本地运行时和云端厂商在同一张列表里。

下载

各平台桌面构建。

下载桌面版
npm install -g oharness
  • macOS
  • Windows
  • MIT 许可