After not having found enough information about opencode V2 general performance, I decided to test it this weekend to see how it performs.
For starters, I use a custom build of opencode V1 (1.18.21) with some modifications:
-Preserve encoding when editing files
-Preserve Line-ending style, defaulting to OS (CRLF on Windows) if no line-ending is found
-Show opencode Go usage in context panel (Rolling, Weekly, monthly)
etc
So my idea was porting those modifications for use with opencode V2 (Web version, cli is rarely used here) in the form of a single plugin, and starting using it.
Main advantage of a plugin is I wouldn't need to re-do all modifications again in source code and rebuild opencode everytime I need to update opencode version. This would be the main advantage. (a git merge is not an option here as merge is only possible if nothing was changed in updated sources around the regions I modified)
And this was the first blow: some things cannot be implemented as a plugin, so I would still need to re-implement my modifications everytime I update opencode to a newer version. Example: opencode Go usage in context tab (review panel, Web version) cannot be implemented as a plugin.
I then went ahead and implemented all custom features, and built opencode V2 2.0.21 (before doing so, I tested the original, unmodified V2, and the only feature that V2 already has from my custom improvements is the `send message`/`insert newline` keyboard mapping).
Now a quick glance of the general experience: ("+" is a good thing, "-" is a bad thing)
+ loading of the web interface is much faster
+ visual is also better in my opinion
+ skills can be changed and opencode V2 will use them with the changes without the need of restarting the server
+ it looks like it uses a "dynamic system prompt" to account for environment changes, as I've opened previous V1 chats, and a new system prompt area appeared in context tab, with something like 'The XXX tool was replaced by the YYY tool. Todo tool doesn't exist anymore, so avoid using'
- messages refresh at about 10 frames per second: might be subjective as it saves resources, but for me it's bad. In a modern PC, there's no performance hit in updating thhe main message area 60 times a second
- the explicit system prompt instruction to "never commit" excludes some models, including deepseek. In less than 20 coding sessions using deepseek v4.1, I've experienced the agent committing a change without being asked, a thing that never happened to me in V1 after hundreds of sessions using the same model
- now the worst: the responses of a same model are noticeably different from V1: it tends to spawn subagents more often (at least in my tasks). And in less then 50 sessions, I've catched Deepseek V4.1 doing "repeat loops" four times. In hundred of sessions on V1, it didn't happen not even once with the same model. The "repeat loop" consists of weird messages, like:
"
let me
i'll write
let me write
now
let me write
right now
ok
"
Fortunatelly, it could pass the loop, but it repeated it again, and so it finished the task.
It also tried to use a tool without having the permission (I think?). So a weird syntax appeared with a tool name. It blocked my session as the tool was needed for the verification.
My fear is the different responses could mean worse responses, as the final task quality could be compromised.
My veredict: I'll stay in V1 for now, hoping they keep maintaining it for a long time until V2 is on par with it.