<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>HKUDS on KnightLi Blog</title>
        <link>https://www.knightli.com/en/tags/hkuds/</link>
        <description>Recent content in HKUDS on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sun, 12 Apr 2026 23:45:00 +0800</lastBuildDate><atom:link href="https://www.knightli.com/en/tags/hkuds/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>What Is OpenHarness: What This Open Source Agent Harness Can Do</title>
        <link>https://www.knightli.com/en/2026/04/12/openharness-basic-functions/</link>
        <pubDate>Sun, 12 Apr 2026 23:45:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/en/2026/04/12/openharness-basic-functions/</guid>
        <description>&lt;p&gt;If you have been following open source AI agent tools lately, &lt;code&gt;HKUDS/OpenHarness&lt;/code&gt; is a project worth watching. It is not just another chat wrapper. Instead, it pulls the infrastructure layer for a runnable, extensible, and governable agent into a standalone open source &lt;strong&gt;Agent Harness&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;According to the official README, OpenHarness provides a lightweight but fairly complete set of agent capabilities, including tool calling, skill loading, memory, permission governance, and multi-agent coordination. The bundled &lt;code&gt;ohmo&lt;/code&gt; is the personal AI assistant application built on top of that foundation.&lt;/p&gt;
&lt;h2 id=&#34;01-what-is-openharness&#34;&gt;01 What Is OpenHarness
&lt;/h2&gt;&lt;p&gt;You can think of OpenHarness as the runtime layer that gives a foundation model hands, memory, and boundaries.&lt;/p&gt;
&lt;p&gt;A model may already be good at reasoning and generation, but if you want it to function as a long-running agent, it usually still needs these surrounding capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calling tools instead of only producing text&lt;/li&gt;
&lt;li&gt;Reading and writing files, executing commands, and using search and web access&lt;/li&gt;
&lt;li&gt;Preserving context and memory across long sessions&lt;/li&gt;
&lt;li&gt;Applying permission controls to risky actions&lt;/li&gt;
&lt;li&gt;Splitting larger tasks across multiple sub-agents in parallel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal of OpenHarness is to turn that engineering layer around the model into a clear, open source, inspectable Python implementation. It is closer to an agent operating substrate than to a single model experience or a single chat interface.&lt;/p&gt;
&lt;h2 id=&#34;02-the-projects-basic-functions&#34;&gt;02 The Project&amp;rsquo;s Basic Functions
&lt;/h2&gt;&lt;p&gt;Based on the current GitHub homepage and README, OpenHarness centers on the following capability areas.&lt;/p&gt;
&lt;h3 id=&#34;1-agent-loop&#34;&gt;1. Agent Loop
&lt;/h3&gt;&lt;p&gt;This is the core execution loop that lets an agent keep working over multiple steps. The official highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Streaming tool-calling loops&lt;/li&gt;
&lt;li&gt;API retries with exponential backoff&lt;/li&gt;
&lt;li&gt;Parallel tool execution&lt;/li&gt;
&lt;li&gt;Token accounting and cost tracking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The practical point is that the agent is not limited to a one-shot response. It can observe, reason, call tools, read results, and continue iterating within the same task.&lt;/p&gt;
&lt;h3 id=&#34;2-tools-skills-and-plugins&#34;&gt;2. Tools, Skills, and Plugins
&lt;/h3&gt;&lt;p&gt;OpenHarness puts serious effort into the tool layer. The project page says it already includes built-in tools for files, Shell, search, web access, and MCP, and it supports on-demand loading of Markdown skill files.&lt;/p&gt;
&lt;p&gt;Its value is not only that it has many tools, but that the composition model is fairly open:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can use built-in tools directly&lt;/li&gt;
&lt;li&gt;You can load skills for a specific task&lt;/li&gt;
&lt;li&gt;You can extend hooks, skills, and agents through plugins&lt;/li&gt;
&lt;li&gt;It is compatible with the &lt;code&gt;anthropics/skills&lt;/code&gt; ecosystem and related plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to turn repeated workflows into reusable capabilities rather than re-describing them in prompts every time, this layer is especially useful.&lt;/p&gt;
&lt;h3 id=&#34;3-context-and-memory&#34;&gt;3. Context and Memory
&lt;/h3&gt;&lt;p&gt;This is one of the more important differentiators in OpenHarness. The official keywords include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; discovery and injection&lt;/li&gt;
&lt;li&gt;Automatic context compression&lt;/li&gt;
&lt;li&gt;Persistent memory through &lt;code&gt;MEMORY.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Session recovery and history continuation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That means it is not only reacting to the current input. It is designed to preserve project conventions, historical tasks, and long-term preferences, making the agent better suited for ongoing work instead of always starting from scratch.&lt;/p&gt;
&lt;h3 id=&#34;4-permission-governance-and-safety-boundaries&#34;&gt;4. Permission Governance and Safety Boundaries
&lt;/h3&gt;&lt;p&gt;Once an agent starts interacting with the filesystem, terminal, and network, governance becomes critical. OpenHarness provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple permission modes&lt;/li&gt;
&lt;li&gt;Rule controls based on paths and commands&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PreToolUse&lt;/code&gt; / &lt;code&gt;PostToolUse&lt;/code&gt; hooks&lt;/li&gt;
&lt;li&gt;Interactive approval prompts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, it is not only about enabling the agent to do things. It also defines which things can be done directly and which ones should require confirmation first.&lt;/p&gt;
&lt;h3 id=&#34;5-multi-agent-coordination&#34;&gt;5. Multi-Agent Coordination
&lt;/h3&gt;&lt;p&gt;OpenHarness also supports delegating work to sub-agents. The currently public materials mention capabilities such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sub-agent creation and delegation&lt;/li&gt;
&lt;li&gt;Team registration and task management&lt;/li&gt;
&lt;li&gt;Background task lifecycle management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more complex work, this means it can move beyond a single serial agent and attempt parallel collaboration.&lt;/p&gt;
&lt;h3 id=&#34;6-multi-provider-workflows&#34;&gt;6. Multi-Provider Workflows
&lt;/h3&gt;&lt;p&gt;OpenHarness does not treat providers as mere API labels. It abstracts them as workflow + profile combinations. According to the README, current directions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude / Anthropic-compatible&lt;/li&gt;
&lt;li&gt;OpenAI-compatible&lt;/li&gt;
&lt;li&gt;Codex Subscription&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Compatible backends such as Moonshot(Kimi), GLM, and MiniMax&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That makes it feel more like a multi-model, multi-entry agent runtime framework rather than something tied to a single vendor.&lt;/p&gt;
&lt;h3 id=&#34;7-react-tui-and-non-interactive-mode&#34;&gt;7. React TUI and Non-Interactive Mode
&lt;/h3&gt;&lt;p&gt;OpenHarness ships with a terminal UI. Running &lt;code&gt;oh&lt;/code&gt; opens a React/Ink TUI, and the official README says it supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A command picker&lt;/li&gt;
&lt;li&gt;Permission confirmation&lt;/li&gt;
&lt;li&gt;Model switching&lt;/li&gt;
&lt;li&gt;Provider switching&lt;/li&gt;
&lt;li&gt;Session recovery&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you do not want to enter an interactive interface, you can also use non-interactive mode to run a task once and return the result as standard output, JSON, or streaming JSON, which is helpful for scripting and automation.&lt;/p&gt;
&lt;h2 id=&#34;03-what-is-ohmo&#34;&gt;03 What Is &lt;code&gt;ohmo&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;If OpenHarness is the infrastructure layer, &lt;code&gt;ohmo&lt;/code&gt; is the personal agent application built on top of it.&lt;/p&gt;
&lt;p&gt;The project homepage is very clear about its positioning: it is not just a generic chatbot, but a personal assistant that can keep working across long conversations. The official description says it can interact with you through channels such as Feishu, Slack, Telegram, and Discord, and carry out tasks like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;forking a branch&lt;/li&gt;
&lt;li&gt;writing code&lt;/li&gt;
&lt;li&gt;running tests&lt;/li&gt;
&lt;li&gt;opening a PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The README also highlights that &lt;code&gt;ohmo&lt;/code&gt; can run on top of your existing Claude Code or Codex subscription, so it does not necessarily require you to provision a new API key. For people already using those subscriptions, that lowers the barrier considerably.&lt;/p&gt;
&lt;h2 id=&#34;04-what-scenarios-it-fits&#34;&gt;04 What Scenarios It Fits
&lt;/h2&gt;&lt;p&gt;From the currently public capabilities, OpenHarness is a strong fit for people who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Want to study what a production-grade agent is actually made of&lt;/li&gt;
&lt;li&gt;Want to build an extensible open source agent runtime of their own&lt;/li&gt;
&lt;li&gt;Want tools, skills, memory, permissions, and multi-agent coordination in one framework&lt;/li&gt;
&lt;li&gt;Do not want to be locked into a single model vendor or client form factor&lt;/li&gt;
&lt;li&gt;Want to build vertical agents or personal assistants on top of an existing architecture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is simply to find a finished assistant that can chat right away, OpenHarness itself may not be the lightest option. But if you care more about agent infrastructure, engineering control, and long-term extensibility, it is a very worthwhile project to study.&lt;/p&gt;
&lt;h2 id=&#34;05-a-quick-way-to-understand-its-positioning&#34;&gt;05 A Quick Way to Understand Its Positioning
&lt;/h2&gt;&lt;p&gt;In one sentence:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenHarness turns foundation models into agents that can actually execute work, while &lt;code&gt;ohmo&lt;/code&gt; packages that capability into a personal assistant that can keep working with you over time.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can also think of it as two layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenHarness: an open source Agent Harness, essentially the infrastructure layer&lt;/li&gt;
&lt;li&gt;ohmo: a personal-agent app built on top of that infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As of &lt;strong&gt;April 12, 2026&lt;/strong&gt;, the GitHub homepage shows the project had already advanced to &lt;strong&gt;v0.1.6 (April 10, 2026)&lt;/strong&gt;, with continued emphasis on automatic context compression, MCP transport support, the React TUI, and runtime stability for multi-agent workflows. That suggests it is still evolving quickly, but its direction is already quite clear.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub repository: &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/OpenHarness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;English README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/OpenHarness/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chinese README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness/blob/main/README.zh-CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/OpenHarness/blob/main/README.zh-CN.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
