一、项目速览

入门 · 1 分钟版

OpenHarness 是港大数据团队开源的一套轻量级 Agent 基础设施,而 ohmo 是基于它构建的个人 AI 助手。它解决的不是"再做一个聊天框",而是把 Agent 在长会话里真正"替你干活"所需的脚手架全部铺好——tool-use、skills、memory、多 agent 协同。

OpenHarness 项目封面

仓库目前 15k+ Star、2.4k+ Fork,114 个测试通过、43+ 工具、54 个斜杠命令,社区反馈活跃度属于近期 Agent 框架里第一梯队。

二、核心功能与架构

进阶 · 推荐细读

整个仓库围绕 10 个子系统展开:engine 负责 Agent 主循环(query → stream → tool-call → 循环),tools 提供 43+ 个开箱即用工具(文件 I/O、Shell、搜索、Web、MCP),skills.md 文件按需加载领域知识,permissions 做多级安全拦截,hooks 暴露 PreToolUse/PostToolUse 生命周期钩子。

一句话判断:模型负责"想什么",Harness 负责"怎么安全地做"——权限、钩子、工具编排、日志它全包了,你只关心业务。

剩下的子系统同样关键:coordinator 处理多 Agent 协同(subagent 派生、team 调度),memory 跨会话持久化记忆,mcp 内置 Model Context Protocol 客户端可直接挂外部 MCP 服务,配合 React+Ink 写的 TUI 和兼容 Anthropic 协议的 API Client,整套从 CLI 到 UI 都是可替换的。

三、动手实践

入门 · 1 分钟版

环境准备:Python ≥ 3.10、Node(仅 TUI 需要),以及一个 Claude Code 或 Codex 订阅账号——ohmo 直接复用订阅,不另收 API key。

安装有两种姿势,二选一:

# 一键安装(macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/HKUDS/OpenHarness/main/scripts/install.sh | bash

# 或走 PyPI
pip install openharness-ai

装好后先做一次 dry-run,零消耗地看一眼 runtime 是否就绪:

oh --dry-run

这条命令会输出 ready / warning / blocked 三档判断,并附上下一步建议——比如 auth 没配、MCP 配置坏了,还是可以直接跑 prompt。是上线前的健康检查神器。

最小可运行示例:让 ohmo 在本地仓库开分支、写代码、跑测试、提 PR:

oh "为当前仓库新增 README 中文翻译,并跑一遍 pytest"

第一次执行会触发权限弹窗(permissions 子系统),选 allow-for-session 即可。

两个常见踩坑

  1. IM 接入不响应:很多人把 ohmo 接到飞书/Slack 后发现 bot 不说话,原因是它走的是出站 WebSocket而不是入站 webhook,需要在 ~/.openharness/config.yaml 里填 feishu.app_idapp_secret,由 ohmo 主动连 IM 网关。
  2. 工具调用静默失败:八成是 permissions 默认模式拦截了 bash 工具,先跑 oh --dry-run 看清楚 warning 列表再放行。

四、进阶玩法

深入 · 老手可选

想在团队里复用 ohmo 的工作流,最直接的做法是写自定义 plugin。下面是一个简化版配置,挂上去 /deploy 命令就能被 ohmo 识别:

# ~/.openharness/plugins/deploy.yaml
name: deploy
description: 部署当前分支到 staging
commands:
  - name: deploy
    handler: ./handlers/deploy.py
    permission: write
hooks:
  PreToolUse:
    - match: "bash"
      deny_regex: "^rm -rf /"

文件丢到 ~/.openharness/plugins/ 后,oh --dry-run 会立刻把它列在已加载插件里。

作者视角:如果你是做后端开发的,建议优先研究 engine/query_engine.pytools/registry.py——这两个文件决定了工具怎么注册、prompt 怎么组装。把它们读懂,再去看 coordinator/ 的多 Agent 调度,理解路径最短。

更激进的玩法是把 ohmo 接到内部 MCP 服务(例如自家的日志查询、CI 触发器):

# ~/.openharness/mcp.yaml
servers:
  - name: internal-logs
    command: ["python", "-m", "my_company.mcp_logs"]
    env:
      LOG_TOKEN: ${env:LOG_TOKEN}

oh 启动时会自动发现并加载,模型调用工具时可直接用 mcp__internal-logs__query 这种命名空间前缀。

架构流程示意

五、判断与建议

进阶 · 推荐细读

应该选它:你已经在用 Claude Code 或 Codex,想把"在 IM 里喊一句,机器人就把 PR 开了"这个工作流跑起来;或者想搭一套自己的 Agent 基础设施,又不想从零写 tool-use 循环、权限拦截、hooks 这些脏活。

不该选它:你只想要一个本地跑命令的轻量 CLI——oh 自带 43+ 工具和 React TUI,对纯脚本场景偏重;或者你的模型不在 Anthropic 兼容协议范围里(虽然 API Client 可替换,但默认没适配)。

一句话结论:把它当成"Agent 时代的 Rails"——基础设施给你铺好,差异化靠你自己的 plugin 和 skill,而不是重新发明轮子。

项目信息

项目
仓库 HKUDS/OpenHarness
语言 Python
Star 15,042
Fork 2,450
主页

参考链接