华为开源 openJiuwen:固定策略做运行时自适应,SWE-bench 82.6% 超榜 3.4 点

openJiuwen: Beyond Static Harnesses for Long-Horizon Coding Agents

openJiuwen Team, Tao Yu, Xinyu Zhang, Qianqian Chen, Xiaoneng Xiang, Chia Kwangyang, Xingchen Huang, Ran Chen, Yangkai Ding, Zheng Wang, Yeo Boon Hong, Bingzheng Gan, Enrui Hu, Shuo Cheng, Deyang Li, Ruifeng Shi, Hongbo Wang, Qi Ye, Xuefeng Jin, Zhangchun Zhao

cs.AI

2026-08-28

华为开源的 openJiuwen 把能力组合和运行时自适应做成同一套 harness。SWE-bench Verified 用 Claude Opus 4.5 做到 82.6%,Terminal-Bench 2.1 用 GPT-5.6 Sol 做到 87.19%,分别比所选官方榜首高 3.4 和 3.39 个百分点。

这篇在解决什么

长程 coding agent 已经不是单次补丁生成。它要在仓库状态不停变的轨迹上跑几十上百步:读文件、改代码、跑测试、再根据失败改下一刀。能力也从单 agent 扩到委派子 agent 和多 agent 协同。把模型、工具、上下文、生命周期粘在一起的那层系统,也就是 harness,变成一等公民。

现有系统各走各的路:Pi 用扩展往极简运行时里塞高级行为,DeepSeek Harness 把核心组件做成可替换插件,DeerFlow 走主 agent 加委派,Codex 和 Claude Code 做成成熟产品。能力都有了,组合它们时却经常要为每种拓扑重写一套编排。任务进行中才冒出来的语义诊断、测试结果、进度信号、上下文压力,多数被当成日志,进不了下一步的框架决策。

华为的 openJiuwen 把这两件事收成两个设计目标:结构可组合(Structural Composability)和运行时自适应(Runtime Adaptivity)。代码开源。

方法

所有 agent 实例共用同一套双循环执行核,单 agent、委派子 agent、Swarm Flow 里的节点都走这套语义。

Inner Loop 是有步数上限的 ReAct:拼上下文、调固定策略 π、执行工具、写回观察。Outer Loop 把一次完整 Inner Loop 当成一轮,再决定继续、完成还是停。继续条件由可组合的评估器给出,包括语义完成、资源上限、用户条件。横切能力不写进循环本体,挂成 Rail。安全、记忆、规划、上下文工程、语义反馈、委派、人机交互都走这条路。每条 Rail 声明自己盯哪些生命周期钩子、处理器、优先级。同钩子上按优先级顺序执行,优先级相同则确定性打破平局。再加可见性门控:同一个执行核,主 agent、子 agent、leader 可以看见不同的 Rail 和工具。加一条能力等于改 Rail 配置,不用换引擎。

Swarm Flow 把多 agent 协同收成一组可拼的算子。budget() 暴露剩余预算,parallel() 并行分支,compact() 丢掉空结果,pipeline() 边到边处理,agentsession() 跨阶段保持有状态会话,human() 必要时介入,return 收口。论文里的示例是 leader 按预算起 worker、并行出候选、过审、仲裁。这只是一种拼法。

运行时自适应明确不改模型参数,改的是框架控制的三块:上下文构造、接受与停机、诊断注入。

Context Management 按压力做渐进压缩:对话摘要、增量压缩、整段 compaction。结构化 diff 和日志先确定性裁剪,无产出的重复调用直接塌缩,大产物外置只留句柄。

Goal Mode 把语义评估输出成 continue、complete、blocked,和步数、时间、资源硬上限分开。支持自评、独立评估、混合三种。它只管当前任务,跨任务的经验复用交给 Self-Reflection。

LSP-Driven Passive Feedback 在代码变更后,由语言服务器给出诊断,按文件上限和总量上限排序去重,再注入下一步。定义查询、引用查询仍要 agent 主动要。它只能看见类型错误、符号关系这类静态诊断,看不出架构好坏或业务对不对。

Self-Reflection 在任务结束后抽出可复用经验,下一任务按查询取回,仍要过 Context Management。模型权重始终不动。

结果

两套榜,模型并不统一。论文自己也写明,这是系统级对比,不是 harness 消融。

设置分数对照
SWE-bench Verified,Claude Opus 4.5 high82.6%所选官方榜最强 79.2%(live-SWE-agent 与 Sonar Foundation Agent,同用 Claude 4.5 Opus)
Terminal-Bench 2.1,GPT-5.6 Sol high87.19%Claude Code + Fable 5 xhigh 的 83.8%
Terminal-Bench 2.1,Fable 5 high(同模型)84.04%Claude Code 的 83.8%,Terminus 2 的 80.4%

同模型 Fable 5 只高 0.24 点。主打的 87.19% 换了 GPT-5.6 Sol,模型能力混在里面。openJiuwen 这边用 high,Claude Code 的 Fable 5 条目是 xhigh,推理强度也不齐。

SWE-bench Verified 共 500 题,按预估修复时长切桶,对照都用 Opus 4.5:

时长题数openJiuwen high该档最强对照
不到 15 分钟19491.75%mini-swe-agent high 89.18%
15 分钟到 1 小时26181.23%Sonar medium 77.78%
1 到 4 小时4252.38%live-SWE-agent medium 54.76%
超过 4 小时333.33%各家都是 33.33%

1 到 4 小时那档没有拿到第一。同一档里 mini-swe-agent 的 high 推理只有 35.71%,低于 medium 的 42.86%。论文猜测 high 更费 token、更挤上下文;openJiuwen 同样用 high 却到 52.38%,被写成上下文管理顶住了压力。这是事后解读,没有隔离推理 token 或上下文溢出的对照。

Terminal-Bench 2.1 共 89 题、16 类。Fable 5 同模型下,文件操作 0.76,Claude Code 0.56、Terminus 2 0.52;系统管理 0.889,对照是 0.778 和 0.844。GPT-5.6 Sol 把系统管理推到 0.956、软件工程 0.908、数据科学 0.950。视频处理反向:openJiuwen 的 Fable 5 只有 0.20,Claude Code 是 0.80。论文把工具密集型类别的优势部分归给开箱工具集,同时承认榜单没有把工具可用性和其它 harness 机制拆开。

为什么重要

主张很明确:编排不要写进每种拓扑,运行时证据不要当日志。Rail 加双循环是一套可复用的执行语义;自适应发生在框架状态上,模型策略可以冻住。

能当结论用的数字,是同模型 Fable 5 那 0.24 点,以及 SWE-bench 上同用 Claude 4.5 Opus 时相对 79.2% 的 3.4 点。prompt、工具、实现差异仍在;主结果用 high,时长表里 live-SWE-agent 用 medium。没有机制消融,82.6% 里各模块贡献多少论文没给。要跟进的是代码和能否在自己的工具集上复现。

局限与存疑

论文自己列了四条。Self-Reflection 和离线演化还是两段,没有拧成闭环;Goal Mode 只盯任务级目标,没有层级目标;上下文策略怎么按状态自动选,还要人配;评测只有两个榜,缺更细的消融和更多模型。

同模型对照几乎打平,跨模型的 87.19% 不能当成 harness 增益。LSP 被动反馈被写成闭环语义纠正,范围其实是静态诊断。1 到 4 小时桶上输给 live-SWE-agent,超过 4 小时只有 3 题。官方榜点估计的日期从 2025 年 7 月跨到 2026 年 8 月,榜面本身在动。

术语

原文与代码

社区讨论

相关论文

全部论文解读