This post is a Chinese tech-forum deep dive into Cursor's April 2026 engineering blog, Continually improving our agent harness. The most consequential takeaway: do not switch models in the middle of a task — a conclusion driven by engineering evidence, not preference.
Key points
1. Harness methodology: vision → hypothesis → experiment → iteration
- Cursor treats agent-harness building like any ambitious software product: form a vision of ideal agent experience, propose hypotheses, iterate with quant/qual signals, and invest in online and offline observability.
- Onboarding a new model takes weeks of tuning the harness around that model's strengths and quirks.
- Core principle: model capability is the base score; harness design is the multiplier. The same Claude Opus 4.6 can differ by up to 15 points on SWE-bench across harnesses.
- Late 2024: weak models required heavy guardrails — lint/type errors after every edit, rewriting underspecified file-read requests, tool-call limits, and large static context (repo layout, semantic snippets, compressed attached files).
- Today: most guardrails are gone. Static context is minimal (OS, git state, current/recent files); everything else is fetched dynamically by the agent.
- Lesson: scaffolding built to compensate for weak models should be removed once models improve — compensatory pipelines turn from assets into liabilities.
- Offline — CursorBench: fast, standardized, comparable over time, but only approximates real usage.
- Online — A/B tests with direct metrics (latency, token efficiency, tool calls, cache hits) and quality metrics:
- Keep Rate: share of agent-proposed changes still in the codebase after a fixed interval. Low Keep Rate signals poor initial response quality.
- LLM Judge: a model reads user reactions to infer satisfaction (moving to the next feature = strong positive; pasting a stack trace = strong negative).
- Example: summarizing context with a stronger model yielded negligible quality gains — not worth the cost. Keep Rate, not benchmark score, decides full rollout.
- Expected errors:
InvalidArguments,UnexpectedEnvironment,ProviderError,UserAborted,Timeout. Anything unclassified is treated as a harness bug. - Failed tool calls linger in context, waste tokens, and cause context corruption that degrades subsequent decisions. Watch not just call success rate, but whether failures keep polluting context.
- Different model families prefer different file-edit formats: OpenAI GPT uses patch/diff-based edits; Anthropic Claude uses string replacement. Cursor tunes tool formats and prompts per model — and even per version.
- New-model onboarding: start from the closest existing harness → offline evals → internal dogfooding → prompt tuning → rollout. Paper benchmarks only give a starting point; your own evaluation suite answers the real question.
- Cursor recommends subagents: they start with a clean context window, and users can now request a specific model for a subagent. The main conversation keeps one model and stays coherent; the subagent's internal reasoning never pollutes the main context. Model switching moves from an *intra-context* operation to an *inter-context* boundary.
- If you use Cursor: keep one model per complex task; use a subagent when you need a different model; watch your own "keep rate" — if you constantly hand-edit agent output, try a different model or adjust Rules.
- If you build agent systems: support switching technically but architecturally steer users toward subagents/new sessions; customize tool schemas per model family; adopt Keep Rate-style north-star metrics; periodically audit and remove compensatory guardrails.
- Cursor blog: https://cursor.com/blog/continually-improving-agent-harness
- yage.ai analysis: https://yage.ai/share/cursor-agent-harness-evaluation-first-20260501.html
- juejin.cn Cursor SDK analysis: https://juejin.cn/post/7635874903253991439
- atou.cc harness analysis: https://www.atou.cc/articles/continually-improving-our-agent-harness/