Harness 怎么用 当 Claude Code、OpenClaw、Codex 等编程智能体工具越来越”重”——动辄 50 万行代码、上千文件、绑定特定模型时,香港大学数据科学实验室(HKUDS)开源了一个反方向的项目:OpenHarness(命令缩写 oh)。这是一个纯 Python 实现的 Agent Harness(智能体线束),用 11,733 行代码复刻了 Claude Code 约 98% 的核心工具,代码量仅为后者的 2.3%。项目采用 MIT 协议,目标用户是想搞懂”生产级 AI Agent 底层到底怎么跑的”研究者和需要高度定制 Agent 基座的开发者。

这里需要先解释一个概念:Agent Harness。在编程智能体的语境下,大模型本身只提供”智能”(推理、生成),而 Harness 提供的是让模型变成可执行 Agent 所需的全部基础设施——工具调用、文件读写、权限控制、记忆系统、安全边界。用项目方的公式说就是:Harness = Tools + Knowledge + Observation + Action + Permissions。Claude Code 就是一个典型的 Harness,但它有 51 万行 TypeScript 代码、1884 个文件,包含了大量企业级功能(遥测、OAuth、数百个 React 组件)。OpenHarness 的策略是砍掉这些”企业开销”,只保留 Harness 架构本身。
架构拆解:10 个子系统如何组成一个完整的 Agent 基座
OpenHarness 的核心是一个标准的 Agent Loop(智能体循环):向模型发送消息 → 流式接收响应 → 如果模型请求工具调用则执行 → 将结果送回模型 → 循环继续直到模型停止。围绕这个循环,项目拆分出 10 个子系统。
engine 是循环引擎本身,处理 query → stream → tool-call → loop 的完整链路。tools 包含 43 个工具,覆盖文件 I/O(Bash、Read、Write、Edit、Glob、Grep)、Web 搜索(WebFetch、WebSearch)、Jupyter Notebook 编辑、子 Agent 生成与协调(Agent、SendMessage、TeamCreate/Delete)、后台任务管理(TaskCreate/Get/List/Update/Stop)、MCP 集成以及定时执行(CronCreate/List/Delete)等。每个工具都通过 Pydantic 做输入校验,自动生成 JSON Schema 供模型理解,并在执行前经过权限检查和 Hook 生命周期。
skills 系统负责按需加载知识文件(.md 格式),内置了 commit、review、debug、plan、test 等 40 多个技能,并且直接兼容 Anthropic 官方的 anthropics/skills 仓库——把 .md 文件复制到 ~/.openharness/skills/ 即可生效。plugins 系统同样兼容 claude-code/plugins 格式,已测试通过 12 个官方插件,包括 commit-commands(Git 工作流)、security-guidance(文件编辑安全警告)、code-review(多 Agent PR 审查)等。
permissions 提供三级安全模式:Default(写入/执行前询问)、Auto(全部允许,适用于沙盒环境)、Plan Mode(阻止所有写入,适用于大型重构的审查阶段),并支持路径级规则和命令黑名单。memory 处理跨会话持久化记忆,coordinator 负责多 Agent 协调与子 Agent 生成。前端是基于 React/Ink 的终端 UI,支持命令选择器、权限对话框、模式切换、会话恢复等交互。
实际使用:安装、接入模型与非交互模式
安装流程相当精简:克隆仓库后用 uv sync –extra dev 安装依赖,设置环境变量指定模型后端(支持 Anthropic 协议的任意端点),输入 oh 即启动。项目示例中使用 Kimi 作为后端,通过设置 ANTHROPIC_BASE_URL 指向 Moonshot API 端点即可工作。这意味着 OpenHarness 不绑定任何特定模型——任何兼容 Anthropic 协议的 API 都能接入,包括阿里云百炼、Kimi、GLM 等国产模型。
除了交互式终端,OpenHarness 还支持非交互模式,适合脚本和管道场景:oh -p “Explain this codebase” 直接输出到 stdout,–output-format json 输出结构化 JSON,–output-format stream-json 实时流式输出 JSON 事件。CLI 还提供会话管理(continue/resume/name)、模型参数(model/effort/max-turns)、MCP 配置、插件管理等子命令。
在 CLI Agent 集成方面,OpenHarness 支持与 OpenClaw、nanobot、Cursor 等工具协同工作。同一实验室还开源了 OpenSpace 项目,这是一个”自进化技能引擎”,可以在任务执行中自动生成和优化 .md 技能文件,与 OpenHarness 的 Skills 系统形成互补。
局限性与适用场景判断
OpenHarness 目前仍处于极早期阶段(v0.1.0,GitHub 仅十余个 Star),在稳定性和社区生态上与 Claude Code、OpenClaw 不在一个量级。”80% 功能、3% 代码”是项目方自报数据,没有第三方基准评测验证,实际功能完整度在复杂企业场景下可能存在差距——尤其是命令覆盖率只有 61%(54/88),部分高级工作流可能缺失。
它的核心价值不在于替代 Claude Code 做日常开发,而在于两个场景:一是研究者想理解”生产级 Agent Harness 的内部运作原理”,11,733 行 Python 比 51 万行 TypeScript 易读得多;二是开发者需要一个高度可定制的 Agent 基座来构建垂直领域的专用 Agent,OpenHarness 的模块化架构和 MIT 协议使其适合作为起点。
另外需要注意的是,”OpenHarness”这个名字存在两个不同项目:HKUDS 的 Python 版(本文所述)和 MaxGfeller 的 TypeScript/Vercel AI SDK 版(open-harness.dev)。两者架构完全不同,搜索时注意区分。
Github地址:https://github.com/HKUDS/OpenHarness