site logo

Marico's space

每日开源项目(第 60 期):OpenHarness - 轻量级 AI Agent 基础设施框架

前端技术 2026-05-10 22:21:12 9

引言

"Agent 基础设施应该轻量级、可组合、且与提供商无关。"

这是"每日开源项目"系列的第 60 期。今天我们要聊的是 OpenHarness

过去几期我们聊过 OpenAI 的 Symphony(Agent 编排规范)、Addy Osmani 的 Agent Skills(工程技能集),还有 Anthropic 的金融行业 Agent 套件。这些项目传递出一个明确信号:AI Agent 正从"聊天助手"演变为"能执行工作流的工程基础设施"。

OpenHarness 正是这一基础设施层的优秀实践。由香港大学数据科学实验室(HKUDS)用 Python 开发,它提供四大核心能力——工具调用、技能加载、记忆管理和多 Agent 协作,支持从 Claude 到 DeepSeek 再到本地运行的 Ollama 实例。12.2k Stars 反映了开发者社区对其理念的认可:轻量级、可组合、与提供商无关。

你将学到什么

  • OpenHarness 的五大核心支柱(Agent Loop、Harness Toolkit、Context & Memory、Governance、Swarm)
  • 如何用一条命令安装并启动带 43+ 内置工具的 AI Agent
  • MEMORY.md 持久化记忆机制是什么,如何实现跨会话上下文恢复
  • Governance 层如何通过权限模式和 hooks 确保 Agent 安全执行
  • ohmo 个人 Agent 如何通过 Feishu、Slack 和 Telegram 自动化编码任务

前置知识

  • 基础 Python 熟悉度(pip install、命令行)
  • 基础理解 AI Agent(知道 LLM 可以调用工具就足够了)
  • Anthropic 或 OpenAI 的 API key(或现有订阅)

项目背景

项目介绍

OpenHarness 是一个开源 Python 框架,旨在为 AI Agent 提供核心轻量级基础设施:工具调用、技能、记忆和多 Agent 协作。

其设计理念围绕三个关键词:

  • 轻量级:无需复杂 DSL 或重型框架依赖——核心逻辑清晰可读
  • 可组合:43+ 工具、技能系统和 MCP 集成均可按需加载
  • 与提供商无关:同一代码库可在 Claude、DeepSeek 和 Ollama 上运行,无需修改

项目还附带 ohmo,一个基于 OpenHarness 构建的个人 Agent。它桥接 Feishu、Slack、Telegram 和 Discord,运行在你现有的 Claude Code 或 GitHub Copilot 订阅上,可自主创建分支、编写代码、运行测试和打开 PR。

作者团队

  • 团队:HKUDS(香港大学数据科学实验室)
  • 背景:HKUDS 是 HKU 的研究小组,在推荐系统、图神经网络和大模型应用方面有深厚积累,拥有多个知名开源项目
  • 项目定位:学术严谨性与工程实用性相结合——114 个单元测试和 6 个 E2E 测试套件为声明背书

项目数据

  • ⭐ GitHub Stars: 12,200+
  • 🍴 Forks: 2,000+
  • 📝 Commits: 380+
  • 🧪 Tests: 114 个单元测试 + 6 个 E2E 套件
  • 🔧 内置工具:43+
  • 📄 License: MIT
  • 🌐 仓库:HKUDS/OpenHarness

核心功能

核心用途

OpenHarness 扮演 AI Agent 的"操作系统内核"角色。它不是给终端用户的聊天界面——而是给开发者提供构建 AI Agent 所需的基础、核心运行时能力。

想象一下 Linux 内核:你不会直接使用内核,但你构建的每个应用都依赖内核进行进程调度、文件系统和网络。OpenHarness 为 AI Agent 提供的是同等功能:工具执行调度、持久化记忆、权限控制和子 Agent 协作。

使用场景

  • 个人开发者工作流自动化
    在 Telegram 给 ohmo 发消息;AI 自动创建 GitHub 分支、编写代码、运行测试和打开 PR。
  • 构建领域特定 Agent
    使用 OpenHarness 作为基础开发你自己的 Agent 应用,按需加载金融分析、代码审查或文档生成的技能。
  • 多模型对比和切换
    在同一 Agent 代码中无缝切换 Claude、GPT-4、DeepSeek 和本地 Ollama 模型,对比输出质量和成本。
  • 企业级 Agent 治理
    使用权限模式和 hooks 控制团队环境中 Agent 对文件系统和 shell 命令的访问。
  • 多 Agent 协作系统
    使用 Swarm 模块启动子 Agent 团队,将复杂任务分解为并行子任务以加快执行速度。

快速开始

安装:

# 方法 1:一键安装脚本
curl -fsSL https://raw.githubusercontent.com/HKUDS/OpenHarness/main/scripts/install.sh | bash

# 方法 2:pip install
pip install openharness-ai

初始设置:

# 交互式提供商配置(Claude / OpenAI / DeepSeek 等)
oh setup

# 示例:配置 Claude
# Provider: anthropic
# API Key: sk-ant-...
# Model: claude-opus-4-6

基本用法:

# 启动交互式终端 UI
oh

# 单任务执行(非交互式)
oh -p "分析当前目录的 Python 代码,找出所有未处理的异常"

# JSON 输出格式(用于管道和脚本集成)
oh -p "列出所有 TODO 注释" --output-format json

# 试运行模式(预览配置,不执行任何操作)
oh --dry-run

ohmo 个人 Agent:

# 安装 ohmo
pip install ohmo

# 配置消息平台(Feishu / Slack / Telegram / Discord)
ohmo setup --platform telegram

# 开始监听
ohmo start

# 现在在 Telegram 发送消息:
# "修复 feature/login-fix 分支上的登录 bug,完成后打开 PR"
# ohmo 自动:创建分支 → 编写代码 → 运行测试 → 打开 PR

核心特性(五大支柱)

1. Agent Loop(循环引擎)

OpenHarness 的核心——一个流式工具调用循环,处理与 LLM 的每一轮交互:

# 概念性 Agent Loop 结构
while not done:
    response = llm.stream(messages, tools=available_tools)
    
    if response.has_tool_calls:
        # 并行执行多个工具调用
        results = parallel_execute(response.tool_calls)
        messages.append(tool_results(results))
    else:
        # 模型提供最终响应——循环结束
        done = True
        yield response.text

关键能力:

  • 流式输出:生成时显示结果,最小化感知延迟
  • 指数退避重试:API 限流时自动重试,无需用户中断
  • 并行工具执行:多个工具调用同时执行,大幅提升速度
  • Token 计数和成本追踪:实时显示 token 消耗和每次调用的 API 成本

2. Harness Toolkit(工具套件)

43+ 内置工具,覆盖绝大多数日常 Agent 任务:

类别 示例工具
文件系统 read_file, write_file, edit_file, list_dir, search_files
Shell bash_execute, python_execute, node_execute
Web web_search, web_fetch, web_screenshot, parse_html
MCP 集成 连接任意 MCP 服务器(HTTP/SSE 传输)
按需技能 从 Markdown 技能文件动态加载专业知识

3. 上下文与记忆

OpenHarness 最精心设计的模块之一:

  • CLAUDE.md 发现和注入:启动时自动扫描工作目录中的 CLAUDE.md 文件并作为系统上下文注入(Claude Code 用户会熟悉)
  • 自动压缩:当上下文接近模型限制时,自动压缩对话历史同时保留关键信息
  • MEMORY.md 持久化记忆:Agent 在会话中学到的重要内容会写入 MEMORY.md,下次启动时自动恢复——实现真正的跨会话记忆
  • 会话恢复:无需重新解释背景,从上次中断的地方继续

MEMORY.md 示例(由 Agent 自动维护)

## 项目记忆

### 用户偏好
- Python 必须在 conda `dev_base` 环境中运行
- 提交消息应为英文
- 测试覆盖率要求:> 80%

### 已知问题
- `auth.py:142` 有已知竞态条件——待修复
- PostgreSQL 连接池在高并发下需要调整 max_conn

4. Governance 层

在生产环境中,让 Agent 自由访问文件系统和执行 shell 命令是危险的。OpenHarness 的 Governance 模块提供:

  • 多级权限模式:从只读到完全自主,可按场景配置
  • 路径级命令规则:精确控制 Agent 可读写哪些目录、可执行哪些命令
  • PreToolUse/PostToolUse hooks:在工具执行前后插入自定义逻辑(日志、审计、二次确认)
  • 交互式审批对话框:对高风险操作(删除文件、运行部署命令),显示确认提示需要用户审批

Governance 配置示例(概念性)

governance:
  mode: restricted
  allowed_paths:
    read: ["./src", "./docs"]
    write: ["./output"]
  forbidden_commands:
    - "rm -rf"
    - "git push --force"
  hooks:
    pre_tool_use:
      - log_tool_call  # 记录所有工具调用
    post_tool_use:
      - validate_output  # 验证工具输出
    require_approval:
      - shell_execute  # shell 执行需要用户审批

5. Swarm 协作

对于需要并行处理的复杂任务,单个 Agent 太慢。Swarm 模块支持多 Agent 协作:

from openharness import Swarm, Agent

swarm = Swarm()

# 注册一组专业 Agent
swarm.register("code_analyst", Agent(skills=["code-review"]))
swarm.register("security_auditor", Agent(skills=["security"]))
swarm.register("doc_writer", Agent(skills=["documentation"]))

# 委托任务——并行执行
results = await swarm.delegate({
    "code_analyst": "分析 src/ 目录的代码质量",
    "security_auditor": "扫描潜在安全漏洞",
    "doc_writer": "生成 API 文档草稿"
})

项目优势

特性 OpenHarness LangChain / LlamaIndex AutoGen
学习曲线 低(只需运行 oh) 高(多层抽象) 中等
核心代码库大小 轻量级 数十万行 中等
提供商支持 10+ 提供商(包括本地模型) 多,但配置复杂 主要为 OpenAI
记忆机制 原生 MEMORY.md 持久化 需要外部集成 有限
多 Agent Swarm 原生支持 通过 Agent 框架 核心功能
治理/权限 内置多级 + hooks 非内置 有限
MCP 支持 原生(HTTP/SSE 传输) 插件化

详细分析

1. 多提供商支持:真正的与提供商无关

OpenHarness 支持三个层级的模型提供商:

Anthropic 兼容(通过 Anthropic SDK):

oh setup
# Provider: anthropic → Claude 系列
# Provider: moonshot → Kimi
# Provider: glm → 智谱 GLM
# Provider: minimax → MiniMax

OpenAI 兼容(通过 OpenAI SDK):

# Provider: openai → GPT-4, GPT-4o
# Provider: openrouter → 多模型聚合器
# Provider: dashscope → 阿里云 Qwen
# Provider: deepseek → DeepSeek 系列
# Provider: groq → 超快 Llama 推理
# Provider: ollama → 本地开源模型
# Provider: github → GitHub Models

订阅桥接(无需 API key——复用现有订阅):

# Provider: claude-code → 复用你的 Claude Code 订阅
# Provider: codex → 复用你的 GitHub Copilot (Codex CLI) 订阅

这意味着如果你已订阅 Claude Code 或 GitHub Copilot,无需额外 API 成本。

2. 43 工具军火库

OpenHarness 的内置工具给 AI Agent 真正"把事情做成"的能力:

文件系统(~10 工具):
read_file, write_file, edit_file, list_dir, search_files,
create_dir, delete_file, move_file, copy_file, get_file_info

Shell(~5 工具):
bash_execute, python_execute, node_execute, get_env, set_env

Web(~8 工具):
web_search, web_fetch, web_screenshot, parse_html,
download_file, check_url, get_headers

代码(~8 工具):
lint_code, format_code, run_tests, build_project,
git_status, git_commit, git_diff, git_log

MCP(~5 工具):
mcp_connect, mcp_list_tools, mcp_call_tool,
mcp_list_resources, mcp_read_resource

其他(~7 工具):
token_count, cost_estimate, task_spawn, memory_read,
memory_write, skill_load, context_compress

3. ohmo:从框架到产品

如果 OpenHarness 是"引擎",ohmo 就是基于它打造的"第一辆量产车":

用户在 Telegram 发送消息
  ↓
ohmo 接收消息
  ↓
OpenHarness Agent Loop 启动
  ↓
调用工具(git、bash、文件操作等)
  ↓
自动:创建分支 → 编写代码 → 运行测试 → 打开 PR
  ↓
ohmo 在 Telegram 回复:"任务完成。PR #47 已打开供审查。"

这个流程展示了 OpenHarness 的真正价值:它封装了"让 AI Agent 真正做事"所有混乱、不 glamorous 的基础设施工作,让上层应用如 ohmo 能完全专注于业务逻辑。

项目链接与资源

官方资源

目标受众

  • 想构建自己 AI Agent 但不想从头搭建基础设施的 Python 开发者
  • 想在不同模型提供商之间对比输出并找到最佳性价比的 AI 应用探索者
  • 需要可治理、可审计的 AI Agent 运行时的企业架构师
  • 想实现"发个消息,AI 搞定代码"梦想的个人生产力爱好者

总结

关键要点

  • 五大支柱:Agent Loop、Harness Toolkit(43+ 工具)、上下文与记忆(MEMORY.md 持久化)、Governance(多级权限 + hooks)、Swarm(多 Agent 协作)
  • 真正的与提供商无关:10+ 提供商,包括直接复用 Claude Code 和 GitHub Copilot 订阅
  • MEMORY.md 机制是最独特的设计——给 Agent 真正的长期记忆
  • 来自 HKU 的 HKUDS:学术严谨性与工程实用性结合(114 个测试 + 6 个 E2E 套件)
  • ohmo 是最佳实践展示——从"基础设施框架"到"可用产品"的完整路径

一句话评价

OpenHarness 做了 AI Agent 领域最不 glamorous 但最重要的工作:让工具调用、记忆、权限和多 Agent 协作变得干净可靠——让构建在其上的应用能优雅地站在它的肩膀上。