OpenHarness 是什么
OpenHarness 是由香港大学 Data Intelligence Lab(HKUDS)开源的 Agent Harness。它没有把 Agent 简化成一次模型请求,而是把 Tool Use、Skills、Memory、Permissions、Hooks 与 Multi-Agent Coordination 一起放进 LLM 外层的运行基础设施。
项目于 2026 年 4 月开源。截至 2026 年 7 月 11 日,GitHub 仓库约有 14.7k Stars 和 2.4k Forks。这些数字不能代表技术结论,但可以说明它在开源后的短时间内获得了明显关注。
我选择它作为源码研究样本,是因为目标不只是使用现成 Agent,而是理解模型怎样通过上下文、工具、权限和运行时边界变成一个真正能工作的系统,再逐步构建属于自己的 Agent。
读什么,改什么
- Agent Loop:用户消息怎样进入 ,模型如何在文本回复与 之间选择,工具结果又如何进入下一轮判断。
- Tool System:工具如何定义输入模型、注册、生成 Schema,并在可观测的边界内执行。
- Permissions 与 Hooks:模型提出动作后,系统如何结合模式、路径规则与生命周期事件决定它能否发生。
- Context 与 Skills:系统提示词、环境信息、项目规则与按需加载的技能如何组成模型当前看到的世界。
- Memory 与 Compaction:长会话如何压缩历史、保留任务状态,并在跨会话中持续积累知识。
- Multi-Agent Coordination:子 Agent、任务和隔离工作区如何被创建、调度与回收。
- 自定义 Agent:在理解上述边界后,逐步替换或扩展模块,形成自己的 Agent Runtime。
- 工程迁移:通过本项目的源码学习,提炼可以迁移的设计思路,并尝试把它们落到真实工程 Agent 中。
目前的产出
产出不是一份逐文件源码目录,而是一组可以迁移到其他 Agent 系统的判断:模型负责提出候选动作,Runtime 负责让动作安全发生,工程师负责目标、权限与风险阈值。
这个系列的文章
- 按下回车之后After you press Enter7 分钟7 min
- 模型答完了,任务还没完The model is done. The task isn't.13 分钟13 min
- 从零写一个工具,到模型能调用它From an empty file to a tool the model can call10 分钟10 min
- 九道检查,顺序就是安全策略Nine checks, and the order is the policy9 分钟9 min
- Hook 返回 blocked,不等于真的拦住了A hook returning blocked doesn't stop anything by itself11 分钟11 min
- 先给目录,用到再翻正文Catalog first, body on demand11 分钟11 min
- 外部工具接进来,走的还是同一条管线External tools, same pipeline14 分钟14 min
- 谁定义,谁派活,谁来跑Who defines, who dispatches, who runs12 分钟12 min