把 Claude Code 拆成乐高积木:OpenHarness 让 TypeScript 写 Agent 像拼乐高
TypeScript 写 Agent 的「乐高积木」,把 Claude Code 拆给你看。
如果你用过 Claude Code、Codex 这类终端 Agent,一定会感慨它们的能力上限——但真要把它内嵌到自己产品里,官方 SDK 又重得像砖头。OpenHarness 就是来解这事的:把 Claude Code 那一整套能力拆成可组合的代码原语,让你在自己的应用里像搭乐高一样构建 Agent。
它在解决什么问题
Claude Agent SDK 和 Codex App Server 都是「大而全」的方案,你要么吞下整套范式,要么全部放弃。OpenHarness 的思路不一样——它把 Agent 当成「无状态的执行器」:你传历史进去,它吐事件出来,中间所有逻辑(上下文压缩、重试、持久化、子代理委派)都拆成独立的中间件,你想用哪个就装哪个。
它建在 Vercel AI SDK 5 之上,所以你天然能用上 AI SDK 的所有 provider(OpenAI、Anthropic、Gemini、Ollama 本地模型都行),不是只能绑死一个供应商。
核心特性:可组合是核心
- Stateless Agent:Agent 就是纯执行器,不背任何状态,状态全部交给 Session。这点设计很聪明——你可以随时序列化、调试、替换,而不会因为某个隐藏状态踩坑。
- Middleware 链:会话压缩、重试、回合追踪、持久化,全部是可链式调用的中间件。和 Express / Hono 的中间件思路一脉相承,写过 Node 服务的同学一秒上手。
- 子代理委派:Agent 可以 spawn 自己的子 Agent 处理子任务,深度可配,还能后台运行(独立 run ID + session ID)。
- MCP 集成:原生支持 Model Context Protocol,stdio / HTTP / SSE 三种传输方式都能接。
- 流式 UI:
@openharness/react和@openharness/vue包给前端工程师打包好了——开箱即用的流式聊天 UI,类型完整。
一段代码看懂用法
import { Agent, createFsTools, createBashTool, NodeFsProvider, NodeShellProvider } from "@openharness/core";
import { openai } from "@ai-sdk/openai";
const agent = new Agent({
name: "dev",
model: openai("gpt-5.4"),
tools: {
...createFsTools(new NodeFsProvider()),
...createBashTool(new NodeShellProvider()),
},
maxSteps: 20,
});
for await (const event of agent.run([], "Refactor the auth module")) {
if (event.type === "text.delta") process.stdout.write(event.text);
}
想加上下文压缩?套一层 withCompaction。想加重试?再套一层 withRetry。每一个能力都是独立可组合的,不会污染你的业务逻辑。
适合谁用
- 想在自家产品里嵌入 Agent 能力、又不想被某个大厂 SDK 绑死的团队
- 需要做内部 Copilot、代码审查机器人、自动化运维 Agent 的工程团队
- 已经在用 Vercel AI SDK、想升级到完整 Agent 形态的 TypeScript 团队
实际使用注意
当前对 OpenAI 依赖比较重(默认 examples 都用 OPENAI_API_KEY),其它 provider 需要自己接。文档站 docs.open-harness.dev 写得挺干净——Agents、Sessions、Middleware、Tools、Subagents、MCP、UI Integration 七大模块,每个都有完整例子。CLI demo 和 Next.js / Nuxt 聊天 demo 都跑通,直接 clone 就能玩。
总星数 600+,MIT 协议,TypeScript 项目,最近 3 周刚更新过。比起那些动辄 10w+ 星的「全家桶型」框架,OpenHarness 走的是轻量、克制、可组合的路子——如果你信奉「组合优于继承」,这玩意很对你的胃口。
GitHub: https://github.com/MaxGfeller/open-harness
评论区
登录后可评论。