~/satyajit

LobeHub's week of self-improvement: what 21 of 30 can tell you

mdjsonmcp

2026-10-11 · 21 min · agents · harness · self-improvement · benchmarks · agentic-coding · kimi

Why read this

Solidtop 85%

Reads LobeHub's own FrontierHarness runner and the benchmark's per-task data to show why 21/30 with selected retries cannot rank thirteen harnesses.

  • Original analysis
  • Concrete numbers to act on
  • Explained from first principles

Agents & harnessesAPI onlyPractitioner teardown

How this was scored
Is it new?
1 of 3: An incremental tweak
Can I trust it?
2 of 3: Measures key facts from files, code or configs
Can I run it?
1 of 3: API-only, gated or restrictive licence
Will I understand it?
2 of 3: Mechanism from first principles with figures
Can I act on it?
2 of 3: A concrete recipe, numbers or comparison
Will it last?
1 of 3: Relevant for months
Does it affect many?
1 of 3: A specialist community
Only here?
2 of 3: A teardown or measurement few others did

Score 55 of 100, ranked 338 of 494 rated articles. Each question is answered 0–3 by hand, and a 3 is rare. How articles are scored

On 10 October LobeHub posted the result of an experiment they had been running for seven days. They pointed Lobe Agent at its own harness, let it "explore and optimize" for a week with what they call their RSI framework, and then ran the resulting agent on FrontierHarness with Kimi K3 as the model. The headline: 70.0% pass rate, 21 of 30 tasks, "ranking #1 among 13 harnesses in our preliminary comparison", at $1.68 per successful task against $3.47 for Codex and $18.34 for Claude Code. Median cache-hit rate 86.2%, median completion time 7m 19s.

The post is careful in places. It says the comparison "includes selected retries and differences in execution environments, and should not be interpreted as an official leaderboard ranking", and that the scripts, trajectories and a technical report are planned for release. It is less careful in the chart, which puts a big orange star above everyone else.

I wanted to know two things. What did a week of self-optimisation change in the harness? And can thirty tasks rank thirteen harnesses at all? The first question has no answer yet. The second has a fairly firm one, and it comes from the benchmark's own data.

Scatter plot of pass rate against median cost per task for thirteen harnesses on FrontierHarness. LobeHub is an orange star at the top left, 70.0% at $1.68. Codex sits at 66.7% and $3.47, DSH Creator 63.3% at $3.28, Pi 60.0% at $2.43, Exo Harness 53.3% at $1.05, Hermes and OpenCode at 50.0%, and Claude Code far right at 63.3% and $18.34. An orange line joins the cost-efficient baselines. The footnote reads: 21/30 tasks, one selected trial per task, provisional comparison.
The chart from LobeHub's post. It is the benchmark's own chart template with LobeHub added; note the x-axis label and the footnote, 'one selected trial per task'. (LobeHub's X post, image 1).

Thirty tasks, one model, one attempt

FrontierHarness Eval is not a LobeHub benchmark. Runta, a company that sells isolated agent runtimes, built it and published it on 1 September 2026 (blog post by Shilin Zhu and Shiqi Mei; data and scripts at frontier-harness-eval/eval). The design is the one the harness effect argued for: hold the model fixed, change only the loop around it, and see what moves.

That last rule matters for everything below. The benchmark was built to make one attempt per task meaningful, and the thing LobeHub changed was exactly that.

Scatter plot of the twelve published FrontierHarness configurations, pass rate against median cost per pass with failures included. Codex at 66.7% tops the plot; DSH Creator and Claude Code tie at 63.3%; Pi, DSH Standard and DSH PTC at 60.0%; Kimi Code, Oh My Pi and DSH Minimal at 56.7%; Exo Harness at 53.3%; Hermes and OpenCode at 50.0%. Claude Code sits far to the right near $20.
The published field before LobeHub: twelve configurations, all on Kimi K3, all one attempt per task. Every y-axis value is a whole number of tasks out of thirty. (Runta, Introducing FrontierHarness Eval, results chart).

I pulled results/eval-data.json and counted the per-task outcomes. Of the 30 tasks, 12 were passed by all twelve configurations and 3 were passed by none. Only 15 tasks separate one harness from another. Every published pass rate sits between 15 and 20 tasks, so the whole published field, top to bottom, is a five-task spread on a fifteen-task discriminating set.

What LobeHub actually ran

The post does not say how the run was set up, but LobeHub's main repository does. Their agent skills include .agents/skills/run-eval-harbor/, a runner for "Harbor or FrontierHarness evaluations against local production LobeHub or LobeHub Cloud", with one script for a local or SSH Docker host and one for Runta.

Reading it explains "differences in execution environments" better than the post does. The benchmark's baselines run each harness inside the task container. LobeHub's adapter (scripts/lh/) installs the lh CLI in the container and connects it as a device to LobeHub Cloud; the agent loop runs on LobeHub's servers and sends tool calls down to the container. Three details from the code:

The collected run record sets "methodology_comparable": False (frontierharness-local.py:324). And the helper that adds LobeHub's icon to the chart, frontierharness-chart-icon.mjs, rewrites the footnote to "LobeHub · local Docker run · shown for context, not ranked". The published chart says "provisional comparison" instead, and the post says "#1".

None of this is hidden. It is LobeHub's own code, in public, and it describes an honest internal run carefully. What it describes is a run for context, which the post then ranked.

What did the week change?

This is the question several repliers asked, and the one I cared about most. "Most 'rsi' runs i've seen just reword the prompt", one wrote. "Would love to see the harness changes alongside the trajectories."

There is no diff. No repository called anything like lobehub/rsi is public (I probed the obvious names; all came back private or missing), the post links only to Awesome-RSI, and the promised report is not out. So I cannot tell you whether the agent changed prompts, tools, context compaction, retry policy or caching. Anyone who does is guessing.

What is public is the substrate, and LobeHub described its direction in May in "Build a Harness That Builds Itself" by Arvin Xu. The argument is that the harness is an operating system for the model, and that it goes stale as models and providers change.

Isometric illustration of an agent harness as an operating system: the agent application sits on top; the harness layer holds prompt presets, tool handling, lifecycle hooks, planning, filesystem access and sub-agent management; below it the model is labelled CPU and the context window RAM.
LobeHub's picture of the harness: model as CPU, context window as RAM, harness as the operating system that schedules them. (LobeHub blog, Build a Harness That Builds Itself, figure 1).

The concrete loop in that post is narrower than "RSI". Every agent run is recorded step by step (packages/agent-tracing in the repository). An agent reads failed traces in bulk, buckets errors by provider, type and message, compares them against a library of known patterns, updates matching rules for user-side errors itself, and files root-cause tasks for genuine harness bugs. Over nine rounds the pattern library grew from 31 to 104 entries while new patterns per round fell to zero, and the agent surfaced 20+ harness defects along the way: incompatible tool schemas, a negative max_tokens, dropped DeepSeek reasoning_content, context overflow. LobeHub reports production agent success rising from about 75% to above 95% over those rounds.

Bar chart titled Agent Operation Success Rate Improvement across nine inspection rounds: 75% at R1, 78%, 82%, 90%, 91%, 92%, 93%, 94%, and 95% at R9, with a dashed trend line flattening near the top.
LobeHub's production success rate across nine rounds of automated error-pattern inspection. These are their numbers from their own traffic; I could not check them. (LobeHub blog, Build a Harness That Builds Itself).

The repository has grown since. packages/agent-tracing now ships objective tool-result metrics (analysis/toolFeedback.ts scores each tool result for token count, self-redundancy and markup noise, "to rank which tools pollute the context window"), a context linter, and a replay command that re-scores a trace with the same LLM-judge rubric the eval pipeline uses. The trace metadata records the context engine's "cache-warmth gates". And apps/server/src/services/goal/ holds an opt-in exploration mode for long-running Goals: a baseline experiment, then a planner that may only expand (derive a new experiment from an earlier one), revise (rerun one with a corrected protocol) or verify (ask for independent acceptance), under a --max-experiments cap.

A week-long harness search would need exactly this machinery: per-step traces, cheap signals about which tools and context waste tokens, a replay judge, and a bounded experiment graph. Whether the RSI run used any of it, I don't know; nothing in the repository is labelled RSI. The plausible reading of 86.2% median cache hits and $1.68 per pass is that the week found ways to waste fewer tokens. That is a guess, and the report should replace it.

One question matters more than the diff. A reply asked whether the 30 evaluation tasks were kept out of the optimisation loop. The tasks are public, and LobeHub's repository contains a working FrontierHarness runner, so an agent with its own repository in front of it could have run them. If the loop's fitness signal was FrontierHarness, then 21 of 30 is a training-set score. The recent harness-evolution papers treat this as the central risk: RRSI adds a leakage critic and annealed edit budget precisely because harness search on a fixed task set memorises it, and ModularRSI evolves against 2,000 tasks disjoint from its evaluation benchmarks. LobeHub's post does not say which tasks the agent optimised against.

Can 21 of 30 rank anything?

Every pass rate here is k out of 30, and a binomial proportion on n = 30 is wide. At a true pass rate of 0.6 the standard deviation of the count is about 2.7 tasks. The 95% Wilson interval for 21/30 runs from 52.1% to 83.3%. Codex's 20/30 runs from 48.8% to 80.8%. Hermes and OpenCode at 15/30 run from 33.2% to 66.8%. All of those overlap.

Overlap of intervals is a loose test, so I ran proper ones. Fisher's exact test, 21/30 against 20/30, gives p = 1.0. Against the bottom of the field, 15/30, it gives p = 0.187. With thirty tasks, 21 passes would be distinguishable from another harness's count at p < 0.05 only if that harness scored 12 or fewer. Nobody in the field did.

That test ignores that every harness saw the same tasks, which throws away information. The published baselines come with per-task results, so between two baselines I can run an exact McNemar test, which looks only at the tasks where they disagree. Across all 66 baseline pairs the smallest p-value is 0.0625: Codex against Hermes, where Codex passed 5 tasks that Hermes failed and Hermes passed none that Codex failed. Even the top-versus-bottom gap in the published field is not separable at the conventional threshold. Runta's own blog put it mildly: "The pass rates for all 12 configurations are close."

Thirty tasks, seventeen pass rates, 95% intervals
click a row to compare against it
30%40%50%60%70%80%90%100%Alma25/30 p 0.360MiniMax Code23/30 p 0.771KOT23/30 p 0.771Maka23/30 p 0.771LobeHub21/30 refCodex20/30 p 1.000DSH Creator19/30 p 0.785Claude Code19/30 p 0.785Pi18/30 p 0.589DSH PTC18/30 p 0.589DSH Standard18/30 p 0.589Oh My Pi17/30 p 0.422Kimi Code17/30 p 0.422DSH Minimal17/30 p 0.422Exo Harness16/30 p 0.288OpenCode15/30 p 0.187Hermes15/30 p 0.187
against LobeHub (21/30)
0 of 16 other rows differ at p < 0.05.
ᵖ paired exact McNemar on the shared per-task results; otherwise Fisher's exact test on the counts, because no per-task data is public for that row.
best of N tries, average baselineN = 1
expected 17.4/30 (58.1%), the dashed line.

Click LobeHub and every other row stays grey. Click Alma, the top third-party candidate, and only Hermes and OpenCode turn red, at p = 0.0127. On this benchmark a ranking by pass rate is mostly a ranking by noise; the benchmark's authors seem to know it, which is why their write-up leads with cost.

Selected retries

Now add "one selected trial per task". If a harness runs a task more than once and keeps the best attempt, its score goes up even if nothing about it improved. How much depends on how many tasks are coin flips for it.

The baseline data gives a rough estimate. Treat each task's share of passes across the twelve configurations as the chance that an average harness passes it on one attempt. Summed over the thirty tasks that gives 17.4 expected passes, which matches the field's 209 of 360. Let that average harness keep the best of two attempts and it scores 20.0. Best of three: 21.6. Best of five: 23.5. The slider in the widget draws this as the dashed line.

This is a model, not a measurement. Harnesses differ, and a real harness is more consistent on its own task mix than the field average is, which would shrink the boost. But it shows the scale: selection on a handful of retried tasks is enough to move a mid-field harness to 21. The post does not say how many tasks were retried or how many attempts each got. Until it does, 21 of 30 is an upper bound on what this harness does in one try.

The field LobeHub left out

The "13" in "#1 of 13" is the twelve published configurations plus LobeHub. But other teams have already filed results against the same thirty tasks, as pull requests to the benchmark repository, each with one attempt per task:

Dark scatter plot titled mcode versus FrontierHarness Eval v1.0: an orange point labelled mcode at 76.7% and $1.83 sits above and left of the twelve grey baseline points, which range from Codex at 66.7% and $3.47 down to Hermes and OpenCode at 50.0%, with Claude Code far right at $18.34.
MiniMax Code's candidate result on the same benchmark, one attempt per task, cost repriced at the baseline price card. It is unmerged and unverified, like LobeHub's. (frontier-harness-eval/eval PR #13, report chart).

None of these is merged or verified either, and each has its own deviations: MiniMax ran Kimi K3 through Moonshot's API rather than Fireworks and rebuilt its checkpoint mid-run, Alma's run is marked comparable: false by the normaliser, Maka used a custom relay. A reply under LobeHub's post pointed at the MiniMax number. I would not rank any of them either. But if the comparison includes self-reported, non-comparable candidates, LobeHub's 21 with selected retries is fifth of the five that exist, not first of thirteen.

The cost numbers

The cost claim is the more interesting one, because cost is where FrontierHarness actually found large differences: pass rates within 17 points, cost per pass across a 17x range.

Start with a worry that turns out not to apply. Comparing cost per success across different models would be meaningless; Claude Code on Claude and Codex on GPT bill at different prices. Here every row used Kimi K3, and the benchmark reprices every run at one frozen card (pricing.json, version kimi-k3-2026-08-20): $3.00 per million fresh input tokens, $0.30 per million cached input tokens, $15.00 per million output tokens. Same model, same price list. That part is fair.

What is not settled is which metric $1.68 is. The chart's x-axis says "Median cost per task". Asked in the replies whether that was the same as per successful task, LobeHub answered "per successful task". The benchmark's own number is neither a median nor per task: effective_cost_per_pass is the total spent across all 30 tasks, failures included, divided by the number of passes (normalize-results.mjs:109). That is how Codex gets $3.47. LobeHub's runbook also distinguishes the actual LobeHub bill (lh usage spend) from the repriced benchmark figure and says to report them separately; the post gives one number. And with selected retries the question is whether the discarded attempts were billed. If they were not, the numerator shrinks and the denominator grows at the same time.

The second issue is the cache. The cost of an input token on this card is

cin=3.00 (1−h)+0.30 hdollars per millionc_{\text{in}} = 3.00\,(1-h) + 0.30\,h \quad \text{dollars per million}

where hh is the share of input tokens served from cache. Fresh tokens cost ten times cached ones, so the bill is driven by the misses: at h=0.862h = 0.862 the misses are 13.8% of input tokens but about 61% of input cost. A long-running agent re-sends a growing prefix on every call, which is why cache behaviour dominates these numbers.

Where a dollar per pass comes from
Kimi K3 card: $3 / $0.30 / $15 per M
one attempt costs
■ fresh input $0.58■ cached input $0.36■ output $0.26
$1.20 per attempt; the 13.8% of input that misses the cache is 48% of the bill.
cost per pass = 30 attempts x $1.20 / 21
$1.71
One attempt per task, every attempt billed: the benchmark's own rule.

The defaults are my back-solve: at 86.2% cache and an assumed 17K output tokens per attempt (Codex's mean, from the benchmark data), about 1.4 million input tokens per attempt lands near $1.68 per pass with 21 passes. Raise attempts per task to 1.5 and bill the discards, and the same run costs over $2.50 per pass. Untick the box and it goes back to $1.71.

Why Claude Code costs $18.34

The comparison against Claude Code is the eye-catching one, and Runta's write-up explains most of it. Claude Code's median per-task cache-hit rate was 67.8%, but weighted by tokens it was 25.0%, against 91.6% to 99.1% for every other harness. One task, python-statemachine-state-data-scoping, took Claude Code 381 turns, cost $64.36, and ran at a 15.7% hit rate; it accounts for 68% of Claude Code's input tokens by itself. Pi passed the same task for $2.50 at 98.2%.

Runta's diagnosis is harness-model fit, not a defect: Claude Code is built around Anthropic's explicit cache-control semantics, and K3 behind Fireworks exposes an implicit prefix cache. In one archived session the same append-only conversation was cached in full on roughly one call in five and not at all on the others. Runta writes that the $18.34 and $64.36 figures "describe the exact configuration we tested, not Claude Code in isolation". So "$1.68 against $18.34" mostly measures how badly Claude Code's caching transfers to this gateway, not how good LobeHub's harness is.

The fair comparison is against the harnesses with healthy caches. Codex ran at an 88.0% median cache-hit rate and $3.47 per pass, Pi at 79.4% and $2.43, Exo Harness at $1.05. LobeHub's 86.2% is in that pack, slightly below Codex. Its 7m 19s median time on successful tasks is slower than Codex's 6m 43s and well behind the 4m 32s and 4m 33s that Alma and MiniMax Code report. Cache rates also depend on the provider (minimum prefix length, time-to-live), and LobeHub's traffic went through LobeHub Cloud rather than the benchmark's Fireworks gateway.

If $1.68 holds up under the benchmark's own accounting, with retries billed, it would be a good number: second only to Exo Harness among published configurations, at a much higher pass rate than Exo's 16 tasks. That would be the real result of this experiment, and it is worth publishing properly.

Is this recursive self-improvement?

The word matters here, because LobeHub also maintains a list that defines it. Awesome-RSI (lobehub/awesome-rsi, CC0, 243 linked entries) draws four distinctions in its scope section:

Banner titled Awesome RSI, A Research Map of Recursive Self-Improvement: a cycle of Generate, Evaluate, Improve and Repeat around an AI System made of Model, Context and Memory, Harness and Tools, Code and Training, and Evaluation, with a sweeping arrow labelled Improve the improvement process.
Awesome-RSI's banner. The arrow at the bottom, 'Improve the improvement process', is the part that makes self-improvement recursive. (lobehub/awesome-rsi, README).

By that definition the experiment is clearly persistent self-improvement: harness changes carry into the next round. Whether it is recursive depends on a detail the post leaves out. If Lobe Agent edited the same harness it was running in, then the improver is part of what is improved, and that is the self-referential structure of STOP or the Darwin Gödel Machine. If a fixed RSI framework drove a Lobe Agent that edited a copy of the harness, the improver never changed, and it is harness optimisation by an agent: useful, but one level down.

LobeHub's May post gives its own scale, and it is more modest than the X post.

Pyramid diagram titled Agent Evolution Pyramid with four levels: L1 Passive Response, people identify and fix problems; L2 Agent-Assisted, agent detects and human confirms; L3 Agent-led Execution, agent detects, analyzes, resolves and verifies; L4 Self-Evolving, agent detects, analyzes and proposes, human confirms approach, agent executes and verifies.
LobeHub's own levels of harness self-evolution. In May they placed their error-pattern inspection at L3, with L4 still keeping a human confirmation step. (LobeHub blog, Build a Harness That Builds Itself).

The precise name for what the post describes is "agent-driven harness optimisation, with the weights frozen". Several groups do the same thing under that kind of name: Sakana and Berkeley's recursive harness self-improvement compares each harness only against its predecessor; RRSI regularises the search so it transfers; Dream-RSI rewrites a scheduler around a frozen model and is explicit that the model is not what recurses. "RSI" is not wrong for this family, and the list LobeHub maintains files it under "Harness-level RSI". It is a big word for one week and one benchmark, and the post would have lost nothing by saying which loop was closed.

Where this sits

The case for harness work is real, and the site has covered it from both sides. Agent harnesses made the argument that the loop around the model matters as much as the weights; the harness effect measured a 41% cost cut from an orchestration swap at equal quality. Multi-harness RL goes the other way and trains the weights inside unmodified harnesses.

The strongest counterpoint was posted under LobeHub's announcement as a screenshot: Apple and EPFL's how little harness a strong agent needs, which found that under an equal time budget, elaborate open-source harnesses gave no advantage over a single minimal coding-agent session on MLE-bench. The two are less opposed than they look. That paper measures quality, where FrontierHarness also finds the harness barely matters. FrontierHarness finds the harness matters a lot for cost, and that is where LobeHub's week, if the number holds, did something.

What I'd want in the report

LobeHub has promised scripts, trajectories and a technical report. Four things would settle most of this:

  1. The harness diff, before and after, with the round in which each change was accepted.
  2. The task set the loop optimised against, and whether any FrontierHarness task was in it.
  3. Every attempt on all 30 tasks, not the selected one, with its token usage, so the benchmark's normalize-results.mjs can compute single-attempt pass rate and effective_cost_per_pass with discards billed.
  4. A matched control: the pre-optimisation Lobe Agent run once through the same adapter and topology, so the week's effect is measured against LobeHub's own starting point instead of against harnesses run somewhere else.

The fourth is the one that would make this an experiment. The benchmark repository already recommends it: "Evaluate a control harness under the same policy and environment before claiming comparability." Item 4 alone would turn "#1 of 13" into a before-and-after that no one could argue with, at the size of effect thirty tasks can resolve.

lobehub/awesome-rsi@e3a14cf · snapshot 2026-10-11
tracked files
13
license
CC0-1.0
branch
main
tests
none found
commit date
2026-10-06

local clone, 2026-10-11 at e3a14cf — branch, commit, commitDate, fileCount, hasTests, license, licenseFile, shallow

shallow clone: counts describe the pinned tree, not the history

frontier-harness-eval/eval@e837a70 · snapshot 2026-10-11
tracked files
117
branch
main
tests
6 files
source
205.6 kB
commit date
2026-09-08
source by language
JavaScript119.8 kB(14)Shell65.4 kB(7)Python20.5 kB(5)

by size of tracked source at this commit, file counts in brackets; docs, data and vendored trees excluded

local clone, 2026-10-11 at e837a70 — branch, commit, commitDate, fileCount, hasTests, languages, shallow, testFileCount

shallow clone: counts describe the pinned tree, not the history

How I checked

Cite this article

For attribution, please use the following reference or BibTeX:

Satyajit Ghana, "LobeHub's week of self-improvement: what 21 of 30 can tell you", ai.thesatyajit.com, October 2026.

bibtex
@misc{ghana2026lobersiharness,
  author = {Satyajit Ghana},
  title  = {LobeHub's week of self-improvement: what 21 of 30 can tell you},
  url    = {https://ai.thesatyajit.com/articles/lobe-rsi-harness},
  year   = {2026}
}
share