JevAgentHarness: Benchmarking, Deploying and Training Decision Models That Share Control with LLMs
Organizations: University of Illinois Urbana-Champaign · Princeton University · Google
Abstract
Large language model (LLM) agents now fix software, operate computers and serve customers, but their harnesses, the programs that run them, call a large LLM at every step, which makes long tasks slow and costly. Most of these calls end in a multiple-choice decision, such as which tool to call next. Decision models such as Jev answer these questions directly, at a fraction of an LLM call's time and price. We ask how a harness can delegate these decisions to a decision model with little loss of success. To evaluate decision models in agentic tasks, we build AgentDecisionBench, which tests them from isolated questions up to control of a running agent, on public benchmarks and our DecisionGym environment. The decision model most accurate on isolated questions solved only 69.5% of agent tasks, and without a fitted confidence threshold, delegating tool choices lowered success by 19.0 points. Building on these findings, we then design JevAgentHarness, which fits this threshold for each choice on the agent's own trajectories and lets the LLM decide below it. Because existing decision models never see the states an agent reaches after its own mistakes, we train AgentDecision-4B, an open 4B model, on such states with Jev's answers as labels. On tasks unlike its training data, the agent solved 91.5% of them with AgentDecision-4B and 82.0% with Jev. On tasks like their training data, 4B models trained this way made agents 81.1-89.0% cheaper and up to 2.5 times faster, without losing 3 or more points of task success. The models, data, and harness will be released at https://github.com/JevAgentHarness/JevAgentHarness.
Figures & tables
Appendix figures & tables46 assets
Supplementary material from the paper’s appendix.
Appendix
| Decision point | Q | Rep | Cas | Ass | Gua | Tri |
| Tool selection | Choice | ✓ | ✓ | ✓ | ✓ | |
| Tool arguments | Choice | ✓ | ✓ | |||
| Memory write | Noul | ✓ | ||||
| Memory read | Choice | ✓ | ||||
| Reflection | Noul | ✓ | ||||
| Stopping | Noul | ✓ | ✓ |
| Suite | Size | Decision points |
| L1: isolated | ||
| BFCL v4 (6 categories) | 1,114 | tool, args, none |
| When2Call (test) | 928 | call/ask/refuse/answer |
| L2: step-level, recorded states with an answer key | ||
| DecisionGym common states | 200 | tool |
| L3: task-level, our own agent loop | ||
| (a) Ask before acting ( clarify , which order is missing; development seed 600) | |
|---|---|
| Request | “The customer Lena Wang asked us to cancel their pending order. Please do it.” |
| Hidden state | Lena Wang (U2883, basic tier) has two pending orders, ORD-3872 (monitor, 278.07). Asked which one, the scripted customer replies “please cancel order ORD-4002 (the mouse).” |
| Plan | find_user(Lena Wang) get_orders(U2883, pending) ask_user(order_id) cancel_order(ORD-4002, customer_request) finish(done) |
| Answer key | At the start: find_user or ask_user . After the two lookups: only ask_user for the order (three steps to go). There, get_order(ORD-4002) and a question about the refund method are detours, and finish is premature. |
| Fails the task | cancel_order(ORD-4002, customer_request) before asking, although it names the right order; cancelling ORD-3872; cancel_order_item(ORD-4002, mouse, customer_request) . Each ends the episode. |
| (b) A rule instead of named operations ( DecisionGym -Hard, tier rule, ten customers; development seed 7003) | |
| Guard | Rate (%) [95% CI] (proposals) | System-2 Flash | System-2 Flash-Lite |
|---|---|---|---|
| Stop | FAR, model-generated wrong finishes | 3.7 [ , ] (241) | 12.3 [ , ] (689) |
| FAR, the LLM’s own wrong finishes | – (0) | 40.7 [ , ] (91) | |
| FRR, the LLM’s own right finishes | 8.0 [ , ] (200) | 1.2 [ , ] (409) | |
| Tool | FAR, fatal proposals (edits, transplants) | 7.7 [ , ] (181) | 5.7 [ , ] (470) |
| FAR against progress (own, transplanted) | 0.0 (2) | 67.4 [ , ] (43) | |
| FRR against progress (own, transplanted) | 1.3 [ , ] (1631) | 1.3 [ , ] (4078) |
| All | Hard | After | ask_user | Flash | |
| states | (union) | off-plan | next | states | |
| States | 5,314 | 957 | 386 | 582 | 1,498 |
| Tasks | 200 | 135 | 57 | 100 | 200 |
| Agent LLM (Flash) a | 99.9 | 100.0 | – | 100.0 | 99.9 |
| Jev | 91.5 | 69.4 | 81.5 | 64.4 | 92.0 |
| Intern-Decision-4B | 75.2 | 55.7 | 47.6 | 59.6 | 76.3 |
| Mode | Own loop | pi | Codex | DSH | mini-SWE |
|---|---|---|---|---|---|
| Replace / Cascade tool | ✓ | – | – | – | – |
| Assist (prune tools) | ✓ | ✓ | – | – | n/a |
| Guard (approve) | ✓ | ✓ | deny only | ✓ | ✓ |
| Trigger stop | ✓ | ✓ | ✓ | ✓ | ✓ |
| Trigger routing | ✓ | ✓ | record only | ✓ | ✓ |
| Trigger memory/reflect | ✓ | ✓ | ✓ | ✓ | ✓ |
| shared GPU | dedicated GPU | |
| Success, LLM-only (%) | 99.5 | 99.5 |
| Success, final harness (%) | 100.0 | 100.0 |
| difference [95% CI] | +0.5 [+0.0, +1.5] | +0.5 [+0.0, +1.5] |
| $ / episode, LLM-only | 0.0434 | 0.0431 |
| $ / episode, final harness | 0.0078 | 0.0102 |
| of which GPU | 0.00192 | 0.00438 |
| Saved | Time (s) | Fast | |||||||
| Arm | Res. | W/L | $/inst. | (%) | med. | mean | (%) | Limit | |
| DeepSeek-V4: strong = V4-Pro with thinking, fast = V4-Flash without | |||||||||
| Strong alone | 100 | 81 | – | 0.0411 | – | 238 | 399 | 0.0 | 0 |
| Routing ( 0.50) | 100 | 81 | 3/3 | 0.0324 | 21.3 | 219 | 354 | 23.5 | 0 |
| Fast alone | 100 | 78 | 3/6 | 0.0108 | 73.7 | 187 | 272 | 100.0 | 0 |
| Gemini 3.8 Flash: strong = thinking high, fast = low (no development run) | |||||||||
| Arm | Succ. (%) | pt [95 %] | NI | $/task | Cost (%) | Time (s) | Time (%) | Fast (%) | |
| pi on Terminal-Bench 2.0 | |||||||||
| Strong LLM alone | 89 | 42.7 | – | – | 0.5103 | – | 257 / 121 | – | 0.0 |
| Routing by Jev | 89 | 50.6 | + [- , + ] | yes | 0.4611 | 9.6 | 260 / 120 | 1.0 | 12.4 |
| Fast LLM alone | 89 | 36.0 | - [- , + ] | no | 0.1484 | 70.9 | 336 / 150 | 30.5 | 100.0 |
| SWE-agent on SWE-bench Verified | |||||||||
| Strong LLM alone | 100 | 63.0 | – | – | 0.2605 | – | 110 / 98 | – | 0.0 |
| Role | What it decides | Our status |
|---|---|---|
| Tool choice | the next tool, or a shortlist of tools for the LLM | live, registered |
| Tool arguments | the values of bounded or copied arguments | live, registered (with tool choice) |
| Ask or act | ask the user now, or act | live, registered (an option of tool choice); offline by state type |
| Stop and verify | accept a proposed finish, or send the agent back | live, registered ( DecisionGym ); live, exploratory (mini-SWE-agent, pi); offline as a gate |
| Reflection | stop and rethink now, or go on | live, registered ( DecisionGym ); live, exploratory (pi) |
| Memory write and read | store this observation; which notes to show the LLM | live, exploratory ( DecisionGym ); hooks implemented, not evaluated |
| Gate | BFCL | DecisionGym | ||
|---|---|---|---|---|
| Model | set | dev | shadow | Replace |
| Jev | 0.971 | 0.965 | 0.933 | 0.944 |
| Intern-Dec. 4B | 0.862 | 0.953 | 0.760 | 0.423 |
| Intern-Dec. 2B | 0.638 | 0.906 | – | 0.162 |
| Intern-Dec. 0.8B | 0.571 | 0.929 | – | 0.038 |
| Shifted tasks (%) | |||||
|---|---|---|---|---|---|
| Option | Training cost | L1 | L2 | must-ask | L3 |
| Jev , off the shelf | none (API) | 86.4 | 91.8 | 58.3 | 82.0 |
| Qwen3-4B, untrained | none | 71.4 | 52.9 | 27.6 | 13.5 |
| RL only (GRPO) | 1.6 GPU-h, $21.34 | 71.4 | 50.2 | 27.6 | 11.5 |
| + SFT on agent states | 2.2 GPU-h, $5.28 | 78.4 | 98.4 | 95.0 | 96.0 |
| + GRPO ( AgentDecision-4B v1 ) | +4.5 GPU-h, +$26.53 | 78.8 | 98.6 | 90.8 | 96.0 |
| v1 dev | Common states | |||||||||
| Checkpoint | Data and training signal | GPU h | API $ | acc. | recov. | ECE | acc. | off-plan | ECE | Dev |
| Track 1: Qwen3-4B, LoRA ( AgentDecision-4B v1 ) | ||||||||||
| Untrained | – | – | – | 70.1 | 66.3 | 0.278 | 50.1 | 26.7 | 0.160 | – |
| SFT v0 | 1,225 recorded success-only states; gold | – | – | 95.2 | 92.2 | 0.022 | – | – | – | 88.0 |
| SFT v1 | 15,694 visited states (30.9% off-plan); gold + Jev | 2.2 | 5.28 | 99.7 | 99.8 | 0.029 | 99.2 | 93.8 | 0.011 | 100.0 |
| + OPD, it. 12 (dropped) | own states, forward KL to Jev | 3.7 | 12.11 | 98.9 | 97.9 | 0.023 | – | – | – | 100.0 |
| (%) | Dev. (%) | |||||
| Arm | Tasks | SFT min | all | off-plan | all | off-plan |
| SFT v1 (all tasks) | – | – | 99.2 | 93.7 | 99.7 | 99.8 |
| 50% of tasks | 293 | 266 | 99.1 | 92.6 | 99.6 | 99.5 |
| 25% of tasks | 147 | 136 | 98.5 | 84.9 | 99.2 | 98.5 |
| 10% of tasks | 59 | 60 | 97.8 | 84.6 | 97.0 | 96.2 |
| 25%, gold labels only | 147 | 136 | 98.9 | 89.3 | 99.3 | 98.7 |
| Isolated (%) | Common states (%) | Closed | Serving | |||||
|---|---|---|---|---|---|---|---|---|
| Model | all | tools | all | off-plan | ask | loop % | ms | GB |
| AgentDecision-4B v1 | 78.8 | 88.4 | 99.2 | 94.7 | 100.0 | 100.0 | 319 | 22.0 |
| 0.8B, agent states (A) | 67.8 | 80.5 | 99.2 | 94.1 | 100.0 | 100.0 | 91 | 2.4 |
| 0.8B, generic mix (G) | 52.3 | 81.8 | 23.9 | 22.4 | 25.0 | 0.0 | 91 | 2.4 |
| 0.8B, both (AG) | 68.8 | 84.8 | 99.1 | 92.7 | 100.0 | – | – | – |
| Arm | Succ. | pt [95% CI] | Saved % | Took % | Acc. % | Wrong write |
| 10 customers, Stage-2 combination | ||||||
| LLM-only | 88.0 | – | – | – | – | 0 |
| Combination, Jev | 86.5 | [ , ] | 6.2 | 56.3 | 100.0 | 0 |
| Combination, AgentDecision-4B v1 | 3.0 | [ , ] | 69.4 | 99.9 | 81.7 | 152 |
| 12 customers, Stage-2 combination | ||||||
| LLM-only | 66.0 | – | – | – | – | 0 |
| L2 ALFWorld | Expert | L2 | Live alone | ||
| Model | seen | unseen | action | seen / unseen | |
| Trained on ALFWorld’s training games | |||||
| Qwen3-4B + SFT | 93.9 | 91.5 | 84.5 | – | 95.7 / 88.1 |
| Trained on -bench’s training tasks | |||||
| 0.8B scoring head + SFT | – | – | – | 46.6 | – |
| Trained on DecisionGym (transfer) | |||||
| Success (%) | ||||||||
| Test tasks | LLM | with | pt [95 %] | NI | LLM-free (%) | saved (%) | time (s) | |
| Fitted thresholds | ||||||||
| Both domains | 60 | 66.2 | 54.2 | [ , ] | 0.979 | 3.9 | 4.6 | 19.8 / 26.9 |
| Retail | 40 | 64.4 | 52.5 | [ , ] | 0.857 | 5.6 | 5.8 | 19.6 / 26.7 |
| Airline | 20 | 70.0 | 57.5 | [ , ] | 1.000 | 0.9 | 2.5 | 20.4 / 27.4 |
| Threshold 0.5 at both decision points | ||||||||
| All | Must- | After | Seen | Unseen | |
| states | ask | off-plan | key | key | |
| States | 5,314 | 267 | 386 | 4,874 | 440 |
| (a) Prior | 26.6 | 0.0 | 18.6 | 26.5 | 20.5 |
| (c) Last tool | 85.2 | 50.0 | 50.9 | 86.8 | 67.4 |
| (b) Tool sequence | 94.9 | 99.3 | 39.0 | 100.0 | 20.5 |
| (b+) Back-off | 97.5 | 99.3 | 62.9 | 100.0 | 67.4 |
| Artefact | Licence or terms |
|---|---|
| When2Call | CC BY 4.0 (attribution) |
| Intern-Decision 0.8B / 2B / 4B | Apache-2.0 (Qwen licence preserved) |
| StartLux-Decision (weights; server code) | CC BY-NC 4.0; Apache-2.0 |
| pi, DeepSeek Harness, mini-SWE-agent, -bench, ALFWorld | MIT |
| BFCL v4 (Gorilla), Harbor, Codex CLI (hook schemas) | Apache-2.0 |
| Qwen3, SWE-bench Verified, Terminal-Bench 2.0 / -Science | as stated at the source |
| Test | What is tested | Success difference, points [95% CI] | Cost saved (%) | Decided by the model (%) | Adjusted | Outcome |
| Stage 1: is each use of the decision model safe and useful? (11 tests; non-inferior to LLM-only on DecisionGym with Flash unless stated) | ||||||
| C1F | Model picks tool and arguments if confident ( Cascade ) | [ , ] | 27.2 | 0.001 | non-inferior (only Jev delegated) | |
| C1L | the same, with the cheaper Flash-Lite | [ , ] | 0.0 | 0.168 | not established (Intern-Decision inconclusive) | |
| C2F | Model shortlists three tools for the LLM ( Assist ) | [ , ] | – | 1.000 | not established (both models lose) | |
| C2L | the same, with Flash-Lite | [ , ] | – | 1.000 | not established (Intern-Decision loses) | |
| C3 | Jev ’s shortlist is better than a BM25 keyword shortlist | [ , ] | – | – | 0.001 | better |
| Jev | Intern-Decision-4B | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Test | 95% CI | Cov. | Sav. | 95% CI | Cov. | Sav. | Registered label | |||||
| Cascade, Flash | [ , ] | 0.001 | 27.2 | [ , ] | 0.001 | 0.0 | 0.001 | NI ∥ | ||||
| Cascade, Flash-Lite | [ , ] | 0.001 | 0.0 | [ , ] | 0.024 | 0.0 | 0.024 | not NI (split) | ||||
| Shortlist, Flash | [ , ] | 1.000 | – | [ , ] | 0.767 | – | 1.000 | not NI (both lose) | ||||
| Shortlist, Flash-Lite | [ , ] | 0.591 | – | [ , ] | 1.000 | – | 1.000 | not NI (Intern loses) | ||||
| Stop veto, Flash | [ , ] | 0.001 | – | [ , ] | 0.001 | – | 0.001 | NI | ||||
| Tool selection (BFCL) | Arguments (BFCL) | When2Call | Efficiency | |||||||
| Decider | Acc | ECE | AUROC | Acc | Acc | ECE | Acc | ECE | p50 ms | $/1k |
| System-2 LLM | ||||||||||
| Gemini 3.5 Flash, native FC | 84.2 | – | – | 96.3 | 98.3 | – | 42.1 | – | 884 | 1.17 |
| Gemini 3.5 Flash, typed question | 90.3 | 0.075 | 0.71 | 93.6 | 95.9 | 0.041 | 74.0 | 0.238 | 2551 | 0.63 |
| Typed decision models | ||||||||||
| Jev | 89.9 | 0.045 | 0.87 | 89.6 | 95.7 | 0.029 | 75.4 | 0.080 | 206 | 0.0167 |
| Test | Condition | Estimate [95% CI] | Null | Raw | Reading |
| With Jev | NI on success (pt) | [ , ] | 0.178 | not NI: loss of 2.2 pt (95 % CI entirely below 0) | |
| cost saving ($/ep.) | [ , ] | 0.001 | cost saving established | ||
| Against cascade alone | NI on success (pt) | [ , ] | 0.326 | not NI: loss of 2.6 pt (95 % CI entirely below 0) | |
| cost saving ($/ep.) | [ , ] | 0.001 | cost saving established | ||
| AgentDecision-4B v1 , same states | acc. vs. Intern (pt) | [ , ] | 0.001 | accuracy gain over Intern-Decision-4B established | |
| acc. vs. Jev (pt) | [ , ] | 0.001 | non-inferiority to Jev (no more than 5 pt less accurate) established |
| Success | Cost | By | Wall- | ||||
| Arm | % | pt | $/1k ep. | saved % | model % | clock s | Outcome |
| 500 fresh DecisionGym tasks, agent LLM Flash | |||||||
| LLM-only | 99.4 | 6.83 | reference | ||||
| Tool cascade alone, Jev | 99.8 | 18.8 | 28.9 | 7.61 | descriptive | ||
| Combination (cascade + trigger), Jev | 97.2 | 40.7 | 52.5 | 9.21 | ? | ||
| the same, vs. the cascade alone | 27.0 | ? | |||||
| Row of Table 1 | wins | losses | pt | 95% interval | ||
|---|---|---|---|---|---|---|
| DecisionGym -Hard, combination, Jev | 200 | 38 | 31 | + | [- , + ] | 0.061 |
| DecisionGym -Hard, combination, AgentDecision-4B v1 | 200 | 0 | 131 | - | [- , - ] | 1.000 |
| DecisionGym -Hard, AgentDecision-4B v1 retrained | 200 | 21 | 25 | - | [- , + ] | 0.402 |
| DecisionGym -Hard, AgentDecision-4B v1 trained on random rules | 200 | 18 | 16 | + | [- , + ] | 0.091 |
| DecisionGym -Hard, cascade refitted, Jev | 100 | 9 | 7 | + | [- , + ] | 0.117 |
| DecisionGym -Hard, GPT-6-Luna, cascade refitted | 100 | 44 | 6 | + | [+ , + ] | 0.000 |
| Isolated | Step-level: common states | Own | Task-level, model alone | API | ||||||
| Decision model | acc. | acc. | vs. Jev [95% CI] | off-plan | ECE | states | success | vs. Jev [95% CI] | Steps | $/ep. |
| Jev | 89.9 | 91.5 | – | 81.5 | 0.043 | 91.0 | 83.0 | – | 7.0 | 0.0144 |
| Intern-Decision-4B | 88.2 | 75.2 | [ , ] | 47.6 | 0.049 | 62.2 | 26.5 | - [- , - ] | 4.6 | 0.0080 |
| StartLux-0.8B ‡ | 88.2 | 48.3 | [ , ] | 31.5 | 0.056 | 35.8 | 17.5 | - [- , - ] | 7.0 | 0.0143 |
| StartLux-2B ‡ | 89.9 | 68.4 | [ , ] | 47.2 | 0.177 | 59.5 | 6.5 | - [- , - ] | 3.8 | 0.0049 |
| StartLux-4B | 91.3 | 89.1 | [ , ] | 76.8 | 0.078 | 81.6 | 60.0 | - [- , - ] | 6.2 | 0.0116 |
| L1: isolated | tool choice | L2: common states | L3: task level | ||||
|---|---|---|---|---|---|---|---|
| Decision model | Licence | acc. (%) | $ / 1k | isolated (%) | acc. (%) | ECE | success (%) |
| OpenJev-27B | CC BY-NC | 82.7 | 0.24 | 90.2 | 92.4 | 0.021 | 63.0 |
| OpenJev | Apache-2.0 | 78.8 | 0.091 | 91.2 | 91.1 | 0.030 | 62.5 |
| OpenAI Decisions | API | 79.2 | 0.027 | 90.6 | 90.9 | 0.193 | 78.5 |
| Imajev-4B | Apache-2.0 | 78.9 | 1.1 | 87.9 | 76.9 | 0.095 | – |
| JevK5 | Apache-2.0 | 70.3 | 0.048 | 86.4 | 65.0 | 0.228 | – |
| Isolated acc. (%) | Answers | $ per | Latency (ms) | ||||
| Decision model | Precision | here | Fig. 4(a) | per s | 1,000 | median | p90 |
| StartLux-0.8B | FP8 | 69.3 | 70.0 | 131 | 0.0017 | 32 | 34 |
| StartLux-2B | FP8 | 76.0 | 75.7 | 81.6 | 0.0027 | 34 | 36 |
| StartLux-4B | FP8 | 83.0 | 83.1 | 33.0 | 0.0068 | 44 | 69 |
| StartLux-9B | FP8 | 83.3 | 83.4 | 19.5 | 0.011 | 66 | 118 |
| StartLux-27B ∗ | Q4_K_M | 87.5 | 87.7 | 1.3 | 0.17 | 649 | 1,224 |
| Closed- | Com. | In C | Novel | Novel | Irrev. | Must-ask | Below 0.9 | |
| loop | states | acc. | acc. | share | first | tasks / acc. | wrong / right | |
| Jev | 83.0 | 91.5 | 95.1 | – | 0.0 | 17.0 | 34 / 73.5 | 86.8 / 18.9 |
| Intern-Decision-4B | 26.5 | 75.2 | 65.7 | – | 0.0 | 59.5 | 78 / 31.6 | 82.0 / 60.9 |
| StartLux-0.8B | 17.5 | 48.3 | 52.1 | 9.2 | 75.2 | 28.0 | 25 / 100.0 | 100.0 / 94.7 |
| StartLux-2B | 6.5 | 68.4 | 73.9 | 26.1 | 31.9 | 83.0 | 78 / 33.3 | 97.8 / 88.9 |
| StartLux-4B | 60.0 | 89.1 | 89.0 | 96.5 | 44.6 | 35.0 | 90 / 41.1 | 73.4 / 43.1 |
| Isolated | Common | Must- | Delegated | Errors: gate / | Pred. | |
| (%) | states (%) | ask (%) | (%) | best member | L3 (%) | |
| Best single off-the-shelf model | 87.7 | 93.9 | 25.5 | – | – | 78.5 |
| Off the shelf, majority vote | 86.4 | 94.9 | 47.3 | – | – | 81.0 |
| Off the shelf, weighted vote | 86.4 | 94.9 | 47.3 | – | – | 81.0 |
| Off the shelf, all of 4 agree | – | 97.5 a | 61 b | 88.8 | 63 / 50 | 86.1 |
| Hosted ( Jev + Decisions API), weighted vote | 84.1 | 92.2 | 31.5 | – | – | 75.0 |
| Isolated (%) | Step | Task | ||||
|---|---|---|---|---|---|---|
| Arm | tool | args | When2Call | all | level | level |
| AgentDecision-4B v1 | 88.4 | 85.0 | 54.0 | 78.8 | 99.2 | 100.0 |
| A: AgentDecision-4B v1 + more data | 88.8 | 90.1 | 66.9 | 84.3 | 99.1 | 100.0 |
| B: StartLux-9B + recipe | 90.0 | 91.9 | 63.6 | 84.8 | 99.3 | 100.0 |
| Best untrained open model ∗ | 90.8 | 89.1 | 81.2 | 87.7 | 93.9 | 74.0 |
| Held-out rows | Common states | Calibration states at | Serving (ms) | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Read-out | acc. (%) | ECE | acc. (%) | off-plan (%) | tools (%) | args (%) | errors | ||
| (i) scoring head | 99.7 | 0.001 | 99.2 | 94.1 | 80.0 | 78.8 | 0+0 | 92 | 204 |
| (ii) one-token read-out | 99.7 | 0.001 | 99.0 | 92.3 | 100.0 | 88.5 | 0+0 | 247 | 796 |
| AgentDecision-4B v1 | – | – | 99.2 | – | 100.0 | 77.5 | 0+1 | 318 | 875 |
| Rule on the common states | coverage (%) | accepted right (%) | accepted errors | deferred right (%) |
|---|---|---|---|---|
| arm A + defer head, defer iff | 98.5 | 99.1 | 46 | 78.5 |
| arm A at its fitted threshold | 78.0 | 100.0 | 0 | 94.6 |
| arm A, every decision taken | 100.0 | 98.8 | 63 | – |
| AgentDecision-4B v1 at its fitted threshold | 99.9 | 98.9 | 57 | 0.0 |
| arm F (the option trained in), defer iff | 100.0 | 98.8 | 63 | – |
| Common states, accuracy (%) | Live success (%) | |||||
| Decision model | in-domain | shift | must-ask | renamed | in-domain | shift |
| Untrained Qwen3-4B | 50.1 | 52.9 | 27.6 | 44.7 | 13.0 | 13.5 |
| + SFT | 99.2 | 98.4 | 95.0 | 98.1 | 100.0 | 96.0 |
| AgentDecision-4B v1 | 99.2 | 98.6 | 90.8 | 98.3 | 100.0 | 96.0 |
| AgentDecision-4B (+ public data) | 99.1 | 94.9 | 67.4 | 93.8 | 100.0 | 91.5 |
| StartLux-4B + recipe | 99.6 | 98.5 | 100.0 | 98.0 | 100.0 | 98.0 |
| Taken (%) | Wrong | Saved | Every | ||||
|---|---|---|---|---|---|---|---|
| Decision model | Succ. | tools | args | taken | (%) | tool | |
| AgentDecision-4B v1 | 94.0 | 6.0 | 99.6 (100.0) | 58.9 (85.5) | 62 | 64.8 | 96.0 |
| AgentDecision-4B | 92.5 | 7.5 | 100.0 (100.0) | 62.2 (92.3) | 22 | 69.7 | 91.5 |
| 0.8B head + deferral | 64.5 | 35.5 | 67.2 (100.0) | 56.6 (98.7) | 383 | 24.8 | 17.5 |
| LLM alone | 100.0 | – | – | – | – | – | – |
| Configuration | Succ. | (LB90) | W/L | p50 s | p90 s | $/task | Steps | Screen | Faster |
| SWE-bench Verified (100 instances, ), mini-SWE-agent | |||||||||
| Unmodified harness | 75.0 | – | – | 111 | 435 | 0.563 | 60.6 | – | – |
| + command Guard | 76.0 | 1.0 ( 4.0) | 7/6 | 132 | 425 | 0.554 | 58.5 | pass | no |
| + submit Guard | 74.0 | 1.0 ( 6.0) | 6/7 | 125 | 556 | 0.619 | 63.5 | fail | no |
| + routing Trigger | 77.0 | 2.0 ( 3.0) | 8/6 | 116 | 326 | 0.464 | 54.1 | pass | no |
| Terminal-Bench-Science (15 hard tasks, ), pi + Harbor | |||||||||
LLM Agent Harnesses
LLM agent harnesses are the software and runtime systems that organize an agent’s tools, context, state, execution, and safeguards.
See all 357 papers