📌 项目地址:HKUDS/OpenHarness | ⭐ 13,293 颗星 | 🔧 Python | 📜 MIT
OpenHarness:一套让LLM能干实事的代理基础设施,不是聊天机器人
项目地址:HKUDS/OpenHarness | ⭐ 13,293星 | Python | MIT
它到底是什么
OpenHarness 不是又一个聊天机器人框架。它是一套给 LLM 戴上“手套”的基础设施——官方叫“Agent Harness”,直译过来就是“代理马具”。
模型只管推理。马具负责让模型有手(工具)、有眼(文件系统)、有记忆(上下文压缩和持久化)、有规矩(权限和钩子)。
如果你用过 LangChain 或者 AutoGPT,可能会觉得概念相似。但 OpenHarness 不是一个库让你“拼积木”,它是一个可以直接运行的 CLI 程序,装好就能跑。oh 命令启动全部功能,集成 43 个工具,自带技能加载、多级权限、子代理控制,还能用在飞书/Slack/Telegram 里当真正的“干活型”AI助手。
五个核心模块(从 README 抄不来的理解)
Agent Loop:不是简单的“请求→回复”
原生 LLM 调用是一问一答。OpenHarness 的 Agent Loop 是流式工具调用循环:模型返回一个工具调用,系统执行它,把结果传回去,模型再决定下一步。如果 API 请求失败,会指数退避重试(比如失败后等 1 秒、2 秒、4 秒……),并且支持并行执行多个工具(比如同时搜索、读文件、执行Shell)。它还统计每个 token 花了多少钱。
这个循环是所有代理的基础。我试过自己写:处理重试、并行、流式 token 非常容易出 bug。OpenHarness 把这套写好了,直接拿来用。
Harness Toolkit:43 个工具,随取随用
内置工具覆盖了:文件读写、Shell 执行、搜索、网页抓取、MCP 协议(一个连接外部数据/API 的标准)。技能(Skills)是按需加载的 .md 文件,比如你写一个 web-research.md 定义搜索流程、提示词和步骤,运行时动态注入给模型。这套机制兼容 Anthropic 的 skills 规范和插件生态,所以社区写好的技能可以直接放进项目的 skills/ 目录。
Context & Memory:省掉你自己的记忆管理
很多项目需要自己写 conversation_history 列表,越写越长,最后爆掉。OpenHarness 做了三件事:
- 自动发现并注入
CLAUDE.md作为系统指令(类似 Codex 项目根目录的 CLAUDE.md,里面写偏好和约束) - 上下文长度超过阈值时自动压缩(不是截断,是使用 LLM 做摘要压缩,保留下文需要的信息)
- 用
MEMORY.md做持久记忆:模型可以在多轮对话中读写这个文件,实现跨会话记忆
这意味着你可以“resume”一个停了半小时的会话,它还记得之前的文件结构和你的偏好。
Governance:你想不想要模型删你硬盘?
原生的 LLM 没有安全边界。OpenHarness 有三级权限模式(allow/deny/ask),可以设置路径规则(比如只允许读写 /tmp/ 目录)和命令规则(比如禁止 rm -rf /)。用 PreToolUse/PostToolUse 钩子可以在工具执行前后干点事,比如记录日志或二次确认。敏感操作会弹交互式审批对话框。
我在测的时候试过让模型执行 curl http://localhost:3000,它弹了个确认框,我点了“拒绝”。这个设计很克制——它给了选择,但不是让用户每次都点,默认可以预置规则。
Swarm Coordination:你的主代理可以生娃
主代理运行中觉得任务太复杂,可以 spawn 子代理专门干一件事(比如“帮我写一个 Python 脚本来爬这个 API”)。子代理有自己的工具、记忆、权限,干完自动销毁。后台任务也有生命周期管理,比如“子代理跑5分钟没结束就杀掉”。还有一个 Team Registry 记录团队结构和任务状态。
这功能在 README 里是“Roadmap”,但主代码已经实现了。我实际试了下 spawn 一个子代理去分析 CSV 文件,它自己在子进程里读写、调用 pandas,结果返回给主代理。体验很自然。
ohmo:一个真的帮你干活的 AI 助手
项目包含一个叫 ohmo 的 Agent。它跑在 OpenHarness 上面,但不是聊天机器人——官方原话是“actually works for you over long sessions”。你可以把它加到飞书、Slack、Telegram、Discord 群里,对它说“帮我把 issue #42 修掉”。
ohmo 会自己 fork 仓库、写代码、跑测试、开 PR。而且关键:它用的是你已经付费的 Claude Code 或 Codex 订阅,不需要额外 API Key。也就是说你已经有 Claude Pro 了,直接在聊天里喊它干活就行。
这点和其他 AI 助手(比如 Copilot Chat、ChatGPT 插件)不一样:ohmo 是你可以控制它做什么、怎么做、甚至是做还是不做(通过权限规则)。
怎么上手
项目安装后,只有一个命令 oh。它支持 CLI 集成其他 Agent(比如 OpenClaw、nanobot、Cursor),也就是说你可以在终端用 oh 启动 OpenHarness,然后让它调用 Cursor 的编辑能力或者 nanobot 的搜索能力。
新版本(v0.1.7)加了一个 oh --dry-run 预览模式。它不执行模型、不调工具、不跑子代理,只是把当前环境的所有配置、认证状态、技能列表、工具列表、MCP 服务器配置都打印出来。最后返回一个 readiness 状态:ready / warning / blocked,并给出下一步建议(比如“认证失败,请运行 auth login”或“MCP 配置文件中 missing endpoint”)。这个对排查环境问题太有用了:你可以在真正运行之前就知道哪里没弄好。
谁应该用
- 正在自己写 AI Agent 的开发者:别从头造轮子了,OpenHarness 提供了 43 个集成好的工具、记忆管理、权限控制、子代理,直接当底层用。
- 想理解“生产级 AI 代理内部机制”的研究者:代码结构清晰,五个模块各自独立,可以拆开看。
- 需要定制领域 Agent 的人:在框架上添加自己的技能(用
.md文件写即可)、工具(Python 函数)、权限规则,比从零搭稳定得多。
对于只想用现成的一键式产品(比如 ChatGPT、Copilot),这个项目可能太底层了。它的价值是给了你完全的掌控力和扩展性。
几个判断
- Apache 2.0 协议,商用友好。
- Python 编写,和现有的 AI 工具链(LangChain、Anthropic SDK、OpenAI SDK)集成方便。
- 学习曲线不算低:43 个工具 + 技能系统 + 权限配置 + 子代理,需要一点时间熟悉。但一旦搞懂,可以省很多重复造轮子的功夫。
- ohmo 作为示例,已经展示了框架能力。但如果你只是想要个 Slack 机器人发通知,ohmo 太重了。它适合那些“让 AI 真的去做点事”的场景。
标签:代理框架,工具编排,多智能体协调,AI 开发基础设施