港大OpenHarness开源项目首周揽获6.9k星:为LLM打造完整Agent基础设施
随着Agent Harness范式的快速升温,香港大学数据科学研究所(HKUDS)全新开源的AI项目OpenHarness仅上线不到一周,便迅速积累起6.9k个GitHub Star,引发开发者社区的广泛关注。
项目地址:https://github.com/HKUDS/OpenHarness

OpenHarness(简称 oh)是 Agent Harness 模式的一个开源Python实现——它并非简单的“又一款AI聊天机器人”,而是大语言模型(LLM)外部的一整套基础设施层,能够将LLM转变为功能齐全的自主编程Agent。OpenHarness赋予了LLM 双手、双眼、记忆与安全边界,使其能够读写你的代码库、执行Shell命令、管理文件,并与其他Agent协作——所有行为都在可配置的治理规则下安全运行。

整个项目由163个文件中约11,700行Python代码构建,却实现了对Claude Code高达98%的工具覆盖(43个工具对比Claude Code约44个)以及61%的命令覆盖(54条命令对比约88条),而代码体积轻量了44倍。通过剥离遥测、OAuth复杂度等企业级负担,OpenHarness留下了一个纯净且对研究友好的Harness架构,任何人都能轻松理解、实验和扩展。
架构概览
OpenHarness以 10个子系统 为核心进行组织,每个子系统都封装在 src/openharness/ 目录下的独立包中。整体采用分层设计:Agent循环构成核心引擎,底层工具与技能为其注入能力,外围的治理机制保障安全,而UI层则暴露给人类用户进行交互。

OpenHarness 的五大支柱
Agent 循环 — 交互的心跳
Agent循环是驱动每一次交互的核心周期。它将当前对话(消息 + 可用工具)发送给LLM,并接收流式响应;一旦模型决定调用某个工具,循环就会执行该工具(经过权限检查与Hook),并将结果反馈回对话——如此重复,直到模型给出最终答案。循环运行在 QueryEngine 内部,由它管理对话历史、跟踪Token用量并掌控整个流程。
核心能力包括流式工具调用循环、并行工具执行、带指数退避的API重试以及实时的Token计数与成本追踪。

Harness 工具箱 — 43 款工具

工具系统建立在简洁的抽象之上:每个工具都继承自 BaseTool,提供用于类型安全校验的Pydantic输入模型,并返回标准化的 ToolResult。ToolRegistry 负责注册流程,并自动将所有工具转换为与API兼容的JSON Schema。
| 分类 | 工具 | 描述 |
|---|---|---|
| 文件 I/O | Bash, Read, Write, Edit, Glob, Grep | 带权限检查的核心文件与Shell操作 |
| 搜索 | WebFetch, WebSearch, ToolSearch, LSP | 网页抓取与代码搜索能力 |
| 笔记本 | NotebookEdit | Jupyter 笔记本单元格编辑 |
| Agent | Agent, SendMessage, TeamCreate/Delete | 子Agent生成与团队协同 |
| 任务 | TaskCreate/Get/List/Update/Stop/Output | 后台任务生命周期管理 |
| MCP | MCPTool, ListMcpResources, ReadMcpResource | Model Context Protocol 集成 |
| 模式 | EnterPlanMode, ExitPlanMode, Worktree | 工作流模式切换 |
| 调度 | CronCreate/List/Delete, RemoteTrigger | 定时与远程执行 |
| 元操作 | Skill, Config, Brief, Sleep, AskUser | 知识加载、配置和用户交互 |
每个工具都自动融合了权限系统与Hook生命周期——无需任何额外配置。
上下文与记忆 — 持久化智能

OpenHarness不会在会话结束后遗忘一切。上下文子系统提供了三层持久化支持:
- CLAUDE.md 发现与注入:自动定位并加载项目级知识文件,将其注入系统提示词,使Agent能够理解代码库的规范与约定。
- 持久化记忆 (MEMORY.md):跨会话保留的知识,重启后依然存在,通过
load_memory_prompt()进行管理。 - 会话存储与恢复:完整的对话快照保存至磁盘,支持通过
--continue或--resume标志无缝续接,由save_session_snapshot()和load_session_snapshot()提供。
当对话变得过于冗长时,自动压缩 (auto-compact) 系统会对较早的消息进行摘要,并用合成摘要进行替换,从而在保留上下文的前提下将长度控制在Token限制之内。
治理机制 — 安全优先

安全治理并非事后补丁——它已融入到每一次工具执行中。PermissionChecker 从三个维度评估每次工具调用:配置的权限模式、路径级规则以及命令级拒绝列表。
| 模式 | 行为 | 适用场景 |
|---|---|---|
| 默认模式 | 执行任何写入或执行操作前询问 | 日常开发——默认安全 |
| 计划模式 | 完全阻止所有写入;只读 | 大规模重构、变更前的代码审查 |
| 全自动模式 | 允许一切操作且不提示 | 沙箱环境、CI/CD 流水线 |
在权限之上,HookExecutor 会触发 PreToolUse 和 PostToolUse 生命周期事件,允许插件拦截、修改甚至否决工具执行。Hook可以是基于命令的(Shell命令)、基于HTTP的(Webhook调用)或基于提示词的(由LLM介入决策)。
群体协同 — 多Agent团队

OpenHarness凭借内置的多Agent协同系统,突破了单Agent交互的局限。BackgroundTaskManager 负责管理Shell和Agent子进程任务,提供完整的生命周期控制(创建、读取输出、写入stdin、停止)。TeamRegistry 存储团队与Agent成员关系,而 BridgeSessionManager 则负责生成和追踪用于委托模式的子会话。
这意味着主Agent可以生成专门的子Agent、委派任务、监控其进度并协调结果——所有操作都在同一个终端会话中完成。