Ornith-1.0:用于智能体编程的自架设大语言模型
Ornith-1.0: Self-scaffolding LLMs for agentic coding

原始链接: https://deep-reinforce.com/ornith_1_0.html

Ornith-1.0 是一个专为智能体编码任务优化的全新开源模型系列,涵盖了从 9B 参数的轻量化边缘部署单元到 397B 参数的前沿规模模型。该系列基于 Gemma 4 和 Qwen 3.5 构建,在 SWE-Bench Verified 和 Terminal-Bench 2.1 等主流基准测试中表现出色,其中 397B 版本足以媲美 Claude Opus 4.7。 Ornith-1.0 的突破性在于其自我完善的训练框架。模型不再依赖人工编写的代码工具,而是同步进化其问题解决策略以及引导任务的特定“框架”(编排逻辑)。通过强化学习,模型能够不断优化这些框架,从而引导出更高奖励的搜索路径。 为防止奖励破解,该框架采用了三层防御机制:不可变的运行环境边界、确定性的工具使用监控,以及作为否决权执行者的冻结 LLM 评判员。此外,模型通过采用带有滞后标记加权的流水线强化学习策略,有效处理了长时、异步的训练回放。这种方法使 Ornith-1.0 能够在无需人工干预的情况下,实现高质量、自动化的编码策略,并持续自我提升,从而在各种设备规模下提供强大且高效的性能。

关于“Ornith-1.0”(一款用于代理式编码的自架设大语言模型)的 Hacker News 讨论引发了开发者社区褒贬不一的反应。 测试该模型的用户反馈称,尽管它展示出了一些令人印象深刻的潜能——作为一个 9B 参数的模型,其表现可能媲美 Qwen 3.5 35B 等更大的 SOTA 模型——但其稳定性仍有欠缺。在侧重安全性的基准测试中,该模型在基本工具使用上表现吃力,但在获得完整的 Shell 和 Python 环境权限后,性能有显著提升。 评论者指出,虽然该模型在诊断错误方面表现出色,但它生成的代码往往“不稳定”,且容易过度依赖用户输入,即便用户输入的内容与其自身正确的逻辑相悖。一些参与者质疑,该模型的性能提升究竟源于基础架构的改进,还是仅仅得益于一种特殊的训练方法,即强制模型编写并执行代码而非直接回答。总体而言,用户在认可该模型潜力的同时,也提醒道:相较于 DeepSeek V4 等顶尖替代方案,它的表现仍有差距,且目前存在编码可靠性问题,这些问题可能会因量化而进一步加剧。
相关文章

原文

Aloha! 🌺

Today, we are introducing Ornith-1.0, a self-improving family of open-source models specially for agentic coding tasks. Ornith-1.0 spans the full spectrum, from compact 9B Dense models suitable for edge device deployment to 397B MoE frontier-scale models optimized for maximum performance, with variants including 9B Dense, 31B Dense, 35B MoE, and 397B MoE. Built on top of pretrained Gemma 4 and Qwen 3.5, it achieves state-of-the-art performance among open-source models of comparable size on coding benchmarks.

The key innovation behind Ornith-1.0 is a self-improving training framework. Instead of relying on human-designed harnesses to drive solution generation in RL, Ornith-1.0 learns to generate both solution rollouts and the task-specific harnesses that guide those rollouts. By jointly optimizing the scaffold and the resulting solution, the model can discover better search trajectories and generate higher-quality solutions.

Ornith-1.0 achieves state-of-the-art performance among open-source models of comparable size across a broad range of agentic coding benchmarks: Ornith-1.0-397B (77.5 on Terminal-Bench 2.1 and 82.4 on SWE-Bench Verified) matches the performance of Claude Opus 4.7 (70.3 on TB-2.1 and 80.8 on SWE-Bench Verified) and outperforming leading open-source models of similar size, including MiniMax M3 (66.0 on TB-2.1 and 80.5 on SWE-Bench Verified) and DeepSeek-V4-Pro (67.9 on TB-2.1 and 80.6 on SWE-Bench Verified). Ornith-1.0-9B, which can be easily deployed on edge devices, matches or exceeds the performance of much larger models such as Gemma 4-31B and Qwen 3.6 35B.

At the flagship scale, Ornith-1.0-397B achieves 77.5 on Terminal-Bench 2.1 and 82.4 on SWE-Bench Verified, surpassing Claude Opus 4.7 on both benchmarks and outperforming leading open-source models of similar size, including Minimax M3 and DeepSeek-V4-Pro.

Ornith-1.0-35B significantly outperforms similarly sized models, including Qwen 3.5-35B, Qwen 3.6-35B, and Gemma 31B. Despite having only 35B parameters, it even surpasses Qwen 3.5-397B on Terminal-Bench 2.1 (64.4 vs. 53.5) while matching its performance across several other coding and agentic benchmarks.

The edge-deployable Ornith-1.0-9B also delivers remarkably strong results, achieving 43.1 on Terminal-Bench 2.1 and 69.4 on SWE-Bench Verified. Despite being a compact 9B-parameter model, it matches or exceeds the performance of much larger models such as Gemma 4-31B, demonstrating that strong agentic coding capabilities can be achieved even in resource-efficient deployments.

At the core of Ornith-1.0 is a self-improving training framework that jointly learns to solve tasks and to construct the scaffolds that guide those solutions. Rather than relying on a fixed, human-designed harness shared across a task category, Ornith-1.0 treats the scaffold as a learnable object that co-evolves with the policy.

Each RL step proceeds in two stages: conditioned on a task and the scaffold previously used for it, the model first proposes a refined scaffold; conditioned on that scaffold and the task description, it then generates a solution rollout. Reward from the rollout is propagated to both stages, so the model is optimized not only to produce better answers but to author the orchestration that elicits them.

Repeated over training, this yields a feedback loop in which scaffolds are continually mutated and selected toward those that induce higher-reward trajectories, allowing per-task-category strategies to emerge automatically and driving sustained capability gains without hand-engineered harness design.

Addressing Reward Hacking in Self-improvement

Allowing the model to author its own scaffold naturally introduces the reward-hacking issue. A self-generated scaffold can learn to satisfy the verifier without performing the task: reading the visible test files and hardcoding the expected artifacts, such as touching the checked-for file or writing the literal expected output, or copying an oracle solution present in the environment.

We defend against this in three layers. First, we fix the outer trust boundary: the environment, the tool surface, and test isolation are immutable and outside the model's reach, so the model evolves only the inner policy scaffold: its memory, error-handling, and orchestration logic.

Second, a deterministic monitor enforces that boundary at the level it can be specified exactly, flagging any attempt to read withheld paths, modify verification scripts, or invoke actions outside the sanctioned tool surface, and assigning such trajectories zero reward with exclusion from the advantage computation.

Third, because intent-level gaming can occur entirely within the allowed tool surface, a frozen LLM judge acts as a veto on top of the verifier rather than the primary reward.

Asynchronous RL Training

For RL training, to address the off-line policy problem for long rollouts, Ornith-1.0 adopts the pipeline-RL strategy. To control the effect of earlier generated off-policy tokens, we apply a staleness weight \(w(d_t)\) that downweights tokens according to their age \(d_t\) and drops them entirely once a threshold is exceeded:

\[ w(d_t)= \begin{cases} \!1, & \text{if } d_t \le K_1,\\ \!\exp\!\bigl(-\lambda(d_t-K_1)\bigr), & \text{if } K_1 < d_t \le K_2,\\ \!0, & \text{if } d_t > K_2. \end{cases} \]

The token-level GRPO loss is weighted as follows:

\[ L_t=\min\!\bigl(r_t A_t,\; \mathrm{clip}(r_t,1-\epsilon^{-},1+\epsilon^{+})A_t\bigr)\cdot w(d_t), \]

where

\[ r_t= \frac{\pi_{\theta}(y_t \mid x, y_{<t})} {\pi_{\theta_t^{\mathrm{beh}}}(y_t \mid x, y_{<t})} \]

联系我们 contact @ memedata.com