Open Agent Harness · HKUDS

OpenHarness

$ oh — 一条命令,解锁全部 Harness

为 LLM 提供完整基础设施:工具调用、技能系统、记忆管理、多智能体协调。 43+ 工具,54 条命令,支持 Anthropic + OpenAI 双格式,React TUI 终端界面, 114 项测试全部通过。

2.8K
Stars
43+
工具
54
命令
114
测试通过
MIT
License
☆ 查看源码 → 快速开始
核心概念

什么是 Agent Harness?

LLM 提供智能;Harness 提供双手、眼睛、记忆和安全边界。 OpenHarness 是完整包装 LLM 使其成为功能智能体的开源 Python 实现。

🧠 LLM Intelligence
+
🔧 Tools Actions
+
📚 Knowledge Skills
+
👁️ Observation Memory
+
🛡️ Permissions Safety
=
🤖 Agent OpenHarness

OpenHarness 为研究者、开发者和社区提供开源实现,帮助你理解生产级 AI 智能体的内部运作, 实验前沿工具与智能体协调模式,并在经过验证的架构上构建专属智能体。

核心特性

五大 Harness 能力

🔄
Agent Loop
  • 流式工具调用循环
  • 指数退避 API 重试
  • 并行工具执行
  • Token 计数&成本追踪
🔧
Harness Toolkit
  • 43 款内置工具
  • 按需技能加载(.md)
  • 插件生态系统
  • 兼容官方 skills/plugins
🧠
Context & Memory
  • CLAUDE.md 自动注入
  • 上下文自动压缩
  • MEMORY.md 持久记忆
  • 会话恢复&历史记录
🛡️
Governance
  • 多级权限模式
  • 路径级&命令规则
  • Pre/PostToolUse 钩子
  • 交互式审批对话框
🤝
Swarm
  • 子智能体生成&委派
  • 团队注册&任务管理
  • 后台任务生命周期
  • ClawTeam 集成(路线图)
系统架构

10 大子系统,完整 Agent 基础设施

🧠 engine/ 智能体循环 — query→stream→tool-call→loop
🔧 tools/ 43 个工具 — 文件、Shell、搜索、Web、MCP
📚 skills/ 按需知识加载 (.md 文件)
🔌 plugins/ 扩展 — 命令、钩子、智能体、MCP 服务
🛡️ permissions/ 多级模式、路径规则、命令拒绝
hooks/ 生命周期 — Pre/PostToolUse 事件钩子
💬 commands/ 54 条命令 — /help /commit /plan /resume…
🌐 mcp/ Model Context Protocol 客户端
🧠 memory/ 跨会话持久化知识
🤝 coordinator/ 子智能体生成、团队协调
agent_loop.py
# The heart of the harness while True: response = await api.stream( messages, tools ) if response.stop_reason != "tool_use": break # 模型完成 for tool_call in response.tool_uses: # 权限检查→钩子→执行→钩子→结果 result = await harness.execute_tool( tool_call ) messages.append(tool_results) # 循环继续 — 模型决定下一步
数据流向
User PromptCLI / React TUIRuntimeBundle
QueryEngineAPI ClientTool Registry
Permissions + HooksExecute↩ Loop
提供商兼容性

Anthropic + OpenAI 双格式,主流 LLM 全覆盖

🔵 Anthropic 格式(默认)
Anthropic默认 Claude 配置
Moonshot / KimiAnthropic 兼容端点
Vertex-compatibleAnthropic 风格网关
Bedrock-compatibleBedrock 风格部署
Generic任意 Anthropic 代理
🟢 OpenAI 格式(--api-format openai
阿里云 DashScopeqwen3.5-flash, deepseek-r1
DeepSeekdeepseek-chat, deepseek-reasoner
OpenAIgpt-4o, gpt-4o-mini
SiliconFlowDeepSeek-V3
Ollama (本地)任意本地模型
工具体系

43+ 工具,覆盖全场景

📁 文件 I/O 6
BashReadWrite EditGlobGrep
🔍 搜索 4
WebFetchWebSearch ToolSearchLSP
🤖 多智能体 4
AgentSendMessage TeamCreateTeamDelete
📋 任务管理 6
TaskCreateTaskGet TaskListTaskUpdate TaskStopTaskOutput
🌐 MCP 3
MCPToolListMcpResources ReadMcpResource
定时任务 4
CronCreateCronList CronDeleteRemoteTrigger
测试质量

全面测试覆盖,生产级可靠性

单元 + 集成测试
114
全部通过
CLI Flags E2E
6
真实模型调用
Harness 特性 E2E
9
重试、技能、并行、权限
React TUI E2E
3
欢迎页、对话、状态栏
TUI 交互 E2E
4
命令、权限、快捷键
官方 Skills + Plugins
12
anthropics/skills 验证
快速开始

5 分钟跑起第一个 Agent

安装 & 启动
# 克隆并安装 git clone https://github.com/HKUDS/OpenHarness.git cd OpenHarness uv sync --extra dev # 一句话体验(Kimi 示例) ANTHROPIC_BASE_URL=https://api.moonshot.cn/anthropic \ ANTHROPIC_API_KEY=your_kimi_key \ ANTHROPIC_MODEL=kimi-k2.5 \ uv run oh -p "Inspect this repo"
交互模式
# 启动交互终端 oh # 单提示词 → stdout oh -p "Explain this codebase" # JSON 输出(适合脚本) oh -p "List functions" --output-format json # 实时流式 JSON oh -p "Fix the bug" --output-format stream-json
OpenAI 兼容格式(阿里云示例)
uv run oh \ --api-format openai \ --base-url "https://dashscope.aliyuncs.com/compatible-mode/v1" \ --api-key "sk-xxx" \ --model "qwen3.5-flash" # 或通过环境变量 OPENHARNESS_API_FORMAT=openai OPENAI_API_KEY=sk-xxx OPENHARNESS_BASE_URL=https://dashscope.aliyuncs.com/... OPENHARNESS_MODEL=qwen3.5-flash uv run oh
插件管理
# 管理插件 oh plugin list oh plugin install <source> oh plugin enable <name> # 运行全套测试 uv run pytest -q python scripts/test_harness_features.py python scripts/test_real_skills_plugins.py
扩展能力

自定义工具、技能、插件

🔧
自定义工具
继承 BaseTool,实现 execute() 方法即可。 Pydantic 自动校验输入,JSON Schema 让模型自动理解工具用途, 权限与钩子系统开箱即用。
📚
自定义技能
创建 ~/.openharness/skills/my-skill.md, 按格式写好 frontmatter 和工作流步骤即可。 与 anthropics/skills 完全兼容。
🔌
自定义插件
.openharness/plugins/ 创建 plugin.json, 然后分别在 commands/hooks/agents/ 下添加对应的 .md 和 JSON 配置文件。