I also feel like the apply models need to be smarter and improved. Thankfully it seems that Claude is more aware when the apply model makes a mistake, but I feel it’s a bandage solution.
I should stress the strength of the Cursor generative apply model is making very large edits (say 200+ lines) on codefiles <1000 lines - claude CLI (currently) needs to generate the entire search and replace string which can in some cases be slower than the Cursor generative apply approach. The Cursor model only needs fuzzy (error-prone but clever), sparse or dense replacement code, not search code. Its weakness is sparse updates on large codefiles and whitespace-based changes. Cursor apply model is fast (5000tps - when it works lol) on files <4000 lines.
Is there a reason why your files are 4k+ lines? I would always split files up once they go beyond a few hundred for readability. I have never noticed any slowdown with that. I suspect cursor have not optimised for huge files because it’s not a good way to organise code.
It’s a fair comment, this particular example is a data access file i.e. loads of simple functions which do SQL statements against a database so very low complexity. It’s an interesting data point though that genai code apps have moved to a sparse code retrieval model (including Cursor recently). By the way, Cursor could presumably do sparse updates with their generative apply model with a few tweaks.
The annoying part about the apply model is that it will fix indentation and whitespace when it’s a bit messy, even in JS, and then you end up with a diff the size of the entire file. Even working alone it’s a mess because i can’t find specific changes in commits, but this makes working in a team a complete disaster.
Gotta ask. What kind of project has 4k lines of code in a single file?
Heck yeah! I like your energy.
We should build something together
No
Using gemini-2.5-pro for example, I am paying extra for requests. When the apply model fails to make the correct change, worst case scenario I have to make the same request again - paying double for the same thing…
Doesnt the model re-try on Apply failure?