Meta-Harness 深度拆解:当 AI 编程进入「多 Agent 并行时代」——Databricks Omnigent、Zed ACP、Vercel HarnessAgent 三大开源方案如何用「Harness 之上的 Harness」重新定义 Agent 工程化的终极形态
2026 年 6 月,一周之内冒出一批 meta-harness 产品。Databricks CTO 亲自开源 Omnigent、Zed 推出 ACP 协议、Vercel 在 AI SDK 7 里加了 HarnessAgent、Cloudflare 发布 Flue + Dynamic Workflows——同一个抽象被上千家公司独立重新发明。这意味着什么?本文从架构、代码、选型三个维度深度拆解。
一、引言:为什么「Meta-Harness」突然火了?
2026 年 5 月之前,如果你问一个程序员什么是 Agent Harness,他大概率会说:「就是让 AI Agent 可靠干活的那层工程化包装。」四层架构——执行引擎、上下文管理、交互层、安全护栏——把模型从「能做」变成「可靠做」。
但到了 6 月,问题变了。
不是「怎么让一个 Agent 可靠地干活」,而是「怎么让一堆 Agent 一起可靠地干活,并且管得住」。
这就是 Meta-Harness 要解决的核心问题。
1.1 一条演进线看懂 Meta-Harness 的位置
| 阶段 | 时间 | 关注点 | 代表 |
|---|---|---|---|
| 代码补全 | 2023 | 模型够不够聪明 | GitHub Copilot |
| Agent Harness | 2024-2025 | 单个 Harness 行不行 | Claude Code、Codex、Cursor |
| Meta-Harness | 2026 | 怎么管住一堆 Agent | Omnigent、ACP、HarnessAgent |
关键判断(行业已基本达成共识):模型正在「商品化」。Claude、GPT、Gemini 在编程上的差距已经不大,胜负手从「模型多强」转移到了「Harness 做得好不好」——上下文管理、工具设计、沙箱、权限、审计。
有个反直觉的例证:Vercel 发现砍掉 80% 的工具后,Agent 反而更好用了——步数更少、Token 更省、成功率更高。这说明 Harness 本身就是一门工程学。
而当一个团队同时跑好几个 Harness 时,自然就需要「Harness 之上的 Harness」来统一管理。
Databricks 官方在开源 Omnigent 时给了一个传神的类比:
Meta-Harness 之于 Agent,约等于 Kubernetes 之于容器。
你不再手动 copy-paste 在五个 Agent 窗口之间倒腾,而是有一层统一的控制面。
1.2 为什么是「Meta-Harness Summer」?
之所以叫「夏天」,是因为这批产品几乎是在 2026 年 6 月同一周内集中冒出来——而且来自互不相干的多家公司,明显是同一个想法被「在上千家 AI 原生公司各自独立地重新发明」。
几个标志性时间点:
- 6 月 12 日,Vercel 在 AI SDK 7 里发布 HarnessAgent
- 6 月 13 日,Databricks CTO Matei Zaharia 开源 Omnigent,并直接用上了「meta-harness」这个词
- 同期,Zed 的 ACP、Cloudflare 的 Flue 与 Dynamic Workflows 等也在快速推进
这种「不约而同」往往是某个抽象层即将标准化的信号——和当年 MCP 出现前的氛围很像。
二、架构深度拆解:四大开源方案全景对比
2.1 玩家全景图
| 项目 | 背后 | 开源 | 所处层 | 一句话定位 |
|---|---|---|---|---|
| Omnigent | Databricks | ✅ Apache 2.0 | 完整控制面 | 多 Agent 的「操作系统」:接入 + 策略 + 协作 |
| ACP | Zed | ✅ Apache 2.0 | 协议 | 「Agent 界的 LSP」:任意 Agent 接任意编辑器 |
| HarnessAgent | Vercel (AI SDK 7) | ✅ | SDK/库 | 在代码里像换模型一样换 Harness |
| Flue + Dynamic Workflows | Cloudflare | ✅ MIT (DW) | 云端运行时 | 把 Agent Harness 搬到边缘、按需休眠、海量并发 |
| Conductor | Melty Labs | ❌ 闭源 | 桌面客户端 | Mac 上用 git worktree 并行跑多个 Agent |
| RUFLO | RUVNET | ✅ | Swarm 编排 | 多玩家 Swarm、自适应记忆、RAG 集成 |
2.2 Omnigent:最完整的参考实现
如果你只看一个,看这个。Omnigent 由 Matei Zaharia 带一支精干小队用 6 周做出来,脱胎于 Databricks 内部工具,Apache 2.0 开源。
架构分两块:
┌─────────────────────────────────────────────────┐
│ Omnigent Server │
│ ┌─────────────┐ ┌─────────────┐ ┌──────────┐│
│ │ Policy │ │ Shared │ │ Web ││
│ │ Engine │ │ State │ │ API ││
│ └──────┬──────┘ └──────┬──────┘ └──────────┘│
│ │ │ │
│ ┌──────┴────────────────┴──────────────────────┐│
│ │ Session Manager ││
│ └──┬──────────┬──────────┬──────────┬─────────┘│
│ │ │ │ │ │
│ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ │
│ │Runner│ │Runner│ │Runner│ │Runner│ │
│ │Agent1│ │Agent2│ │Agent3│ │Agent4│ │
│ │Sandbox│ │Sandbox│ │Sandbox│ │Sandbox│ │
│ └──────┘ └──────┘ └──────┘ └──────┘ │
└─────────────────────────────────────────────────┘
Runner:把任意 Agent 包进一个带沙箱的统一会话,对外暴露一致 API;支持 CLI Agent,也支持用 YAML 定义自定义 Agent。
Server:提供策略/权限和共享,把每个会话同时暴露到终端、桌面 App 和 Web API。
核心能力:
# omnigent.yaml - 定义一个多 Agent 编排会话
name: "code-review-pipeline"
agents:
- id: "architect"
type: "claude-code"
model: "claude-sonnet-4"
role: "架构审查"
permissions:
read: ["src/**", "docs/**"]
write: []
- id: "reviewer"
type: "codex"
model: "o3"
role: "代码审查"
permissions:
read: ["src/**"]
write: ["src/**"]
- id: "security"
type: "custom"
command: "python security_scanner.py"
role: "安全扫描"
permissions:
read: ["src/**"]
write: []
orchestration:
strategy: "sequential" # sequential | parallel | debate
steps:
- agent: "architect"
task: "审查架构设计,输出改进建议"
- agent: "reviewer"
task: "基于架构建议进行代码审查"
- agent: "security"
task: "对修改后的代码进行安全扫描"
policy:
max_tokens_per_agent: 50000
max_cost_per_session: 5.00
require_approval: true # 人类审批关键操作
亮点能力:
- 多 Agent 编排:让 Codex 和 Claude Code 不再是「各跑一遍挑好的」,而是协作、辩论、收敛到更好的结果
- 多人实时协作:可以邀请同事进同一个会话围观、纠偏、下指令
- 部署灵活:本地、Docker、Railway、fly.io 都行,Agent 可跑在 modal / daytona,模型层接任意 provider
# 快速启动 Omnigent
git clone https://github.com/omnigent-ai/omnigent
cd omnigent
docker compose up -d
# 连接到本地 Claude Code Agent
omnigent connect --agent claude-code --session my-review
# 连接到远程 Codex Agent
omnigent connect --agent codex --session my-review --remote
Databricks 的核心论点是:Agent 工程的前沿正在「上移一层」,最好的结果不再来自「单模型 + 单 Harness」。
2.3 Zed ACP:「Agent 界的 LSP」
Zed 的 Agent Client Protocol (ACP) 走的是协议标准化路线,定位类比当年的 LSP:
LSP 把「语言智能」从 IDE 里解耦,ACP 想把「Agent」从编辑器里解耦——任意 Agent 接任意编辑器。
技术上是一组极简的 JSON-RPC over stdio 端点,把 Agent 当子进程拉起来:
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"clientInfo": {
"name": "zed-editor",
"version": "0.190.0"
},
"capabilities": {
"textDocument": true,
"workspace": true
}
}
}
生态已经相当广:
- 编辑器侧:Zed、JetBrains、Neovim、Emacs
- Agent 侧:Cline、Cursor、Gemini CLI、OpenCode、Goose、Kimi CLI 等
- Claude Code 和 Codex CLI 通过适配器接入
- Zed 还上线了 ACP Registry 做分发——「实现一次,处处可用」
# ACP 协议核心:Agent 作为子进程
import subprocess
import json
class ACPClient:
def __init__(self, agent_command: str):
self.process = subprocess.Popen(
agent_command,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
text=True
)
def initialize(self, capabilities: dict) -> dict:
"""握手:建立连接"""
request = {
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {"capabilities": capabilities}
}
self._send(request)
return self._receive()
def execute(self, task: str, context: dict) -> dict:
"""执行任务"""
request = {
"jsonrpc": "2.0",
"id": 2,
"method": "execute",
"params": {
"task": task,
"context": context,
"workspace": "/path/to/project"
}
}
self._send(request)
return self._receive()
def _send(self, data: dict):
message = json.dumps(data)
self.process.stdin.write(f"{message}\n")
self.process.stdin.flush()
def _receive(self) -> dict:
line = self.process.stdout.readline()
return json.loads(line)
这一层和 Meta-Harness 是互补的:ACP 解决「接入与互操作」,Omnigent 这类解决「调度与治理」。
2.4 Vercel HarnessAgent:在代码里换 Harness
Vercel 在 AI SDK 7 里加了 HarnessAgent——一个统一 API,可以在代码里运行 Claude Code、Codex、Pi 等成熟 Harness。
理念和它一贯的「换模型不用重写」一脉相承——现在是「换 Harness 也不用重写」。
import { createHarnessAgent } from '@vercel/ai/harness';
// 定义一个通用的 Agent Harness 抽象
const claudeCode = createHarnessAgent({
provider: 'claude-code',
model: 'claude-sonnet-4',
sandbox: 'modal', // 可选:modal, daytona, local
});
const codex = createHarnessAgent({
provider: 'codex',
model: 'o3',
sandbox: 'daytona',
});
// 写一次 Agent 逻辑,用最好的 Harness
async function reviewCode(codebase: string) {
// 同一个函数,可以随时切换底层 Harness
const agent = process.env.USE_CODEX ? codex : claudeCode;
const result = await agent.run({
task: `审查以下代码库的安全性和性能`,
context: { codebase },
tools: ['read_file', 'search_code', 'run_tests'],
});
return result.analysis;
}
// 并行跑多个 Harness,取最好的结果
async function competitiveReview(codebase: string) {
const [claudeResult, codexResult] = await Promise.all([
claudeCode.run({ task: '审查代码', context: { codebase } }),
codex.run({ task: '审查代码', context: { codebase } }),
]);
// 用第三个 Agent 做仲裁
const judge = createHarnessAgent({ provider: 'claude-code', model: 'claude-opus-4' });
return judge.run({
task: '对比两份代码审查报告,给出综合建议',
context: { report1: claudeResult, report2: codexResult },
});
}
配套的是 Vercel 的 Sandbox 微 VM——Conductor 正是把本地并行 Agent 搬到云端的案例(关上笔记本,Agent 继续跑)。
2.5 Cloudflare Flue + Dynamic Workflows:云端规模
Cloudflare 在 Agents Week 2026 上推出 Flue 和 Dynamic Workflows(约 300 行、MIT 许可的 durable execution 库),它的论点很硬核:
当全世界知识工作者每人并行跑几个 Agent,你需要的是千万级并发会话的算力。
// Cloudflare Dynamic Workflows:300 行实现持久化工作流
import { Workflow, step } from 'cloudflare:workflows';
export class CodeReviewWorkflow extends Workflow<Env> {
@step
async start(input: { repo: string; pr: number }) {
// Step 1: 克隆仓库
const repo = await this.cloneRepo(input.repo);
// Step 2: 并行运行多个 Agent 审查
const reviews = await Promise.all([
this.runAgent('claude-code', repo, '架构审查'),
this.runAgent('codex', repo, '代码质量'),
this.runAgent('security-scanner', repo, '安全扫描'),
]);
// Step 3: 合并结果
const merged = await this.mergeReviews(reviews);
// Step 4: 提交 PR 评论
await this.postPRComment(input.pr, merged);
return merged;
}
@step
async runAgent(type: string, repo: string, task: string) {
// 每个 Agent 跑在独立的 Durable Object 里
// 空闲时自动休眠,零成本
const agent = await this.env.AGENT_KV.get(type);
return agent.execute({ repo, task });
}
}
2.6 RUFLO:Swarm 编排的开源先驱
RUFLO 自称是「The original agent meta-harness」,定位偏向 Swarm(群体智能)编排:
- 多玩家 Swarm:部署智能多 Agent 集群,协调自主工作流
- 自适应记忆:Agent 在多轮交互中保持长期记忆一致性
- RAG 集成:内置检索增强生成能力
- 原生集成:支持 Claude Code、Codex、Hermes 等多种 Agent
⚠️ 安全警告:2026 年 8 月,RUFLO 被曝出严重漏洞 CVE-2026-59726(RufRoot),CVSS 满分 10.0,影响 3.16.3 之前所有版本。攻击者可通过 MCP 桥接劫持 AI Agent、窃取 API 密钥、篡改持久化记忆。使用 RUFLO 的团队务必升级到最新版本。
三、四层架构深度分析
根据 HKUST KnowComp 实验室的 Agent Harness Survey 论文,Agent Harness 可以被组织为一个统一的四层架构:
┌────────────────────────────────────────────────────┐
│ Layer 4: Constraints & Guardrails │
│ 访问控制 · 权限管理 · Agent 注入防御 · 审计日志 │
├────────────────────────────────────────────────────┤
│ Layer 3: Interaction & Execution Env │
│ 工具调用 · MCP/ACP 协议 · 沙箱执行环境 · 代码运行 │
├────────────────────────────────────────────────────┤
│ Layer 2: Context & Trajectory Mgmt │
│ 状态压缩 · 轨迹持久化 · 记忆层次 · 可观测性 │
├────────────────────────────────────────────────────┤
│ Layer 1: Execution & Orchestration │
│ 执行循环 · 模型路由 · 多 Agent 组合 · 任务分发 │
└────────────────────────────────────────────────────┘
Meta-Harness 在这个架构之上,增加了一个编排控制面:
┌────────────────────────────────────────────────────┐
│ Meta-Harness: Orchestration Plane │
│ 统一接入 · 策略管理 · 成本归口 · 多人协作 · 审计 │
├────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Agent A │ │ Agent B │ │ Agent C │ │
│ │ (Harness)│ │ (Harness)│ │ (Harness)│ │
│ │ ┌──────┐ │ │ ┌──────┐ │ │ ┌──────┐ │ │
│ │ │Layer │ │ │ │Layer │ │ │ │Layer │ │ │
│ │ │ 1-4 │ │ │ │ 1-4 │ │ │ │ 1-4 │ │ │
│ │ └──────┘ │ │ └──────┘ │ │ └──────┘ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────────────┘
3.1 五大核心维度
把各家放在一起,能提炼出 Meta-Harness 的 5 个共同核心维度——也是你评估任何一个 Meta-Harness 的检查清单:
| 维度 | 说明 | Omnigent | ACP | HarnessAgent |
|---|---|---|---|---|
| 统一接入 | 一套接口接入异构 Agent | ✅ YAML 定义 | ✅ JSON-RPC | ✅ TypeScript API |
| 安全隔离 | 沙箱会话 + 权限策略 | ✅ 完整策略引擎 | ⚠️ 依赖 Agent 自身 | ⚠️ 依赖 Sandbox |
| 调度编排 | 多 Agent 并行/协作/辩论 | ✅ 完整编排 | ❌ 只管接入 | ⚠️ 需手动编排 |
| 可观测审计 | 谁改了什么、花了多少 | ✅ Web API | ❌ 无 | ⚠️ 基础日志 |
| 状态恢复 | 会话持久化、云端继续 | ✅ | ❌ | ✅ (Modal) |
四、边界辨析:Meta-Harness 和 MCP / Runtime / 协作平台什么关系?
这一层最容易和旁边几个概念混。一张表说清:
| 概念 | 解决的是 | 代表 | 和 Meta-Harness 的关系 |
|---|---|---|---|
| MCP | Agent ↔ 工具/数据 的接口 | Anthropic MCP | 在 Meta-Harness 之下,每个 Agent 仍用它连工具 |
| ACP | Agent ↔ 编辑器 的接口 | Zed ACP | 并列/互补,解决「接入与互操作」 |
| Agent Runtime | 单个 Agent 的执行/恢复/隔离 | Google AX、Dapr Agents | 在 Meta-Harness 之下,是被编排的执行单元 |
| 协作平台 | 人 + Agent 团队的任务/调度 | Slock、Multica | 高度重叠,偏「团队协作/管理」视角 |
| Meta-Harness | 你 ↔ 多个 Agent 的统一接入与治理 | Omnigent | 本文主角 |
简单记:MCP 管工具、Runtime 管执行、ACP 管接入、协作平台管团队,而 Meta-Harness 想把这些统到一个控制面下。
五、实战:用 Omnigent 搭建多 Agent 代码审查流水线
5.1 环境准备
# 安装 Omnigent
pip install omnigent
# 或者从源码构建
git clone https://github.com/omnigent-ai/omnigent
cd omnigent
pip install -e .
# 配置 API Keys
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
5.2 定义多 Agent 编排策略
from omnigent import Orchestrator, Agent, Policy
# 定义 Agent
architect = Agent(
name="architect",
provider="claude-code",
model="claude-sonnet-4",
system_prompt="你是一位资深架构师,专注于系统设计和架构审查。",
tools=["read_file", "search_code", "list_directory"],
permissions={
"read": ["src/**", "docs/**"],
"write": [],
}
)
reviewer = Agent(
name="reviewer",
provider="codex",
model="o3",
system_prompt="你是一位代码质量专家,专注于代码规范、性能和可维护性。",
tools=["read_file", "search_code", "run_tests"],
permissions={
"read": ["src/**"],
"write": ["src/**"],
}
)
security = Agent(
name="security",
provider="claude-code",
model="claude-sonnet-4",
system_prompt="你是一位安全专家,专注于识别代码中的安全漏洞。",
tools=["read_file", "search_code", "run_security_scan"],
permissions={
"read": ["src/**"],
"write": [],
}
)
# 定义策略
policy = Policy(
max_tokens_per_agent=50000,
max_cost_per_session=5.00,
require_human_approval=True,
audit_log=True,
)
# 创建编排器
orchestrator = Orchestrator(
agents=[architect, reviewer, security],
policy=policy,
strategy="sequential", # 顺序执行
)
5.3 运行多 Agent 审查
# 启动审查会话
session = orchestrator.create_session(
name="pr-review-123",
context={
"repo": "https://github.com/myorg/myrepo",
"pr_number": 123,
"diff": "...",
}
)
# 顺序执行:架构审查 → 代码审查 → 安全扫描
result = session.run(
steps=[
{
"agent": "architect",
"task": "审查 PR 的架构设计,关注模块划分、依赖关系、接口设计",
},
{
"agent": "reviewer",
"task": "基于架构审查意见,审查代码质量、性能、可维护性",
},
{
"agent": "security",
"task": "对最终代码进行安全扫描,识别潜在漏洞",
},
]
)
# 输出综合报告
print(f"审查完成,总成本: ${result.total_cost:.2f}")
print(f"架构建议: {result.steps[0].output}")
print(f"代码建议: {result.steps[1].output}")
print(f"安全报告: {result.steps[2].output}")
5.4 辩论模式:让 Agent 互相挑战
# 辩论模式:两个 Agent 各自审查,然后互相挑战
debate_session = orchestrator.create_session(
name="debate-review-456",
strategy="debate",
)
result = debate_session.run(
agents=["architect", "reviewer"],
task="审查这个 PR 的实现方案",
rounds=3, # 辩论 3 轮
convergence_threshold=0.8, # 相似度超过 80% 时收敛
)
六、性能优化与生产实践
6.1 Token 成本控制
多 Agent 并行的最大痛点是Token 成本翻倍。几个优化策略:
# 策略 1:分层路由——简单任务用小模型
policy = Policy(
routing_rules=[
{"condition": "task_complexity < 0.3", "model": "claude-haiku"},
{"condition": "task_complexity < 0.7", "model": "claude-sonnet-4"},
{"condition": "task_complexity >= 0.7", "model": "claude-opus-4"},
]
)
# 策略 2:共享上下文——避免重复读取
orchestrator = Orchestrator(
shared_context=True, # 所有 Agent 共享文件读取缓存
cache_strategy="lru",
max_cache_size="100MB",
)
# 策略 3:早停机制——发现严重问题立即终止
policy = Policy(
early_stop_rules=[
{"condition": "security_vulnerability_found", "action": "abort"},
{"condition": "architecture_violation", "action": "escalate"},
]
)
6.2 并发与隔离
# 每个 Agent 跑在独立的沙箱里
sandbox_config = {
"type": "docker",
"image": "python:3.12-slim",
"resources": {
"cpu": "2",
"memory": "4Gi",
"disk": "10Gi",
},
"network": {
"allowed_hosts": ["api.github.com", "registry.npmjs.org"],
"blocked_hosts": ["*"], # 默认拒绝所有
},
"timeouts": {
"per_step": 300, # 每步最长 5 分钟
"per_session": 1800, # 每个会话最长 30 分钟
}
}
七、选型指南:你现在该怎么办?
个人开发者 / 单 Agent
别上。 你的 Claude Code / Codex 自带的 Harness 已经够用,Meta-Harness 只会徒增复杂度。了解概念、留意标准走向即可。
已经在批量跑 Agent 的团队
现在是评估期。 优先解决治理问题:权限边界(谁能让 Agent 改哪个仓库、碰不碰生产密钥)、审计、成本归口。
可以先用 Conductor 这类轻量方案验证「多 Agent 并行」的价值,再评估 Omnigent 这种完整控制面。标准未定,别急着押单一方案。
平台 / 基础设施方
这是新战场。值得借鉴的组合是:Omnigent 的 runner+server+策略模型、ACP 的接入协议、Cloudflare 的云端规模与休眠、Vercel 的「换 Harness 不用重写」。
八、安全警示:Meta-Harness 的新攻击面
Meta-Harness 在提供统一控制面的同时,也引入了新的攻击面:
- MCP 桥接劫持:RUFLO 的 CVE-2026-59726 证明,Agent 间的通信通道可以被恶意注入
- 策略逃逸:如果策略引擎有漏洞,Agent 可能绕过权限限制
- 记忆篡改:持久化记忆如果缺乏完整性校验,可被恶意修改
- 成本炸弹:恶意任务可能触发 Agent 无限循环,烧光 API 额度
生产环境必须做到:
- 所有 Agent 间通信走 mTLS
- 策略引擎独立部署,不与 Agent 共享权限
- 记忆存储用 append-only 日志 + 哈希校验
- 设置硬性 Token 上限和超时机制
九、总结与展望
2025 年大家在比「谁的 Agent 强」,2026 年的问题已经变成「怎么把一堆 Agent 管好」。
Meta-Harness 就是这个问题被顶到的新一层。它还很早、标准未定,但方向相当清晰——模型在商品化,价值在上移。
参考 MCP 的成功路径,开放标准的赢面更大——尤其当同一个抽象正在被上千家公司独立重新发明时,标准化几乎是必然。Omnigent 选择 Apache 2.0 开源、ACP 走 LSP 式开放协议,都是在抢这个位置。
但短期内多半是「分层共存」:
- 接入层很可能被某个开放协议(ACP 是当前热门候选)统一
- 编排/治理层则可能开源方案(Omnigent)与云厂商方案(Cloudflare、Vercel)并存一段时间
- 底层 Runtime / 沙箱已经在走「Harness 与算力分离」的多 Provider 格局
对选型者的实用结论很简单:现在不要押注单一厂商锁定,优先选开放、可迁移、能接入异构 Agent 的方案。 等尘埃落定,再收敛。
下一个像 Kubernetes、像 MCP 那样的「理所当然的标准」,很可能就出在这一层。
参考资源:
- Omnigent: github.com/omnigent-ai/omnigent (Apache 2.0)
- Zed ACP: zed.dev/acp (Apache 2.0)
- Vercel AI SDK 7 HarnessAgent: sdk.vercel.ai
- Cloudflare Dynamic Workflows: developers.cloudflare.com/workflows
- Awesome Agent Harness: github.com/HKUST-KnowComp/Awesome-Agent-Harness
- RUFLO: github.com/RUVNET/RUFLO