feat(vscode): integrate world browser automation - #12754
Conversation
6d37d3b to
cad6769
Compare
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Incremental review of Files Reviewed (0 files in the incremental diff)The incremental range contains no file changes. Findings from earlier reviews remain on the PR as existing inline comments. Previous Review Summaries (10 snapshots, latest commit 04622f4)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 04622f4)Status: No Issues Found | Recommendation: Merge Incremental review of Files Reviewed (0 files in the incremental diff)The incremental range contains no file changes. Findings from earlier reviews remain on the PR as existing inline comments. Previous review (commit 405bbeb)Status: No Issues Found | Recommendation: Merge Incremental review of Files Reviewed (0 files in the incremental diff)The incremental range contains no file changes. Findings from earlier reviews remain on the PR as existing inline comments. Previous review (commit 43471b5)Status: No Issues Found | Recommendation: Merge Incremental review of Files Reviewed (0 files in the incremental diff)The incremental range contains no file changes. Findings from earlier reviews remain on the PR as existing inline comments. Previous review (commit fe1e3bc)Status: No Issues Found | Recommendation: Merge Incremental review of
Files Reviewed (3 files in the incremental diff)
The Previous review (commit 696c31c)Status: 2 Issues Found | Recommendation: Address before merge Incremental review of Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (4 files in the incremental diff)
The remaining files in the Fix these issues in Kilo Cloud Previous review (commit 3e5a991)Status: 5 Issues Found | Recommendation: Address before merge Incremental review of Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (4 files in the incremental diff)
Findings from earlier reviews on files outside this incremental diff are not repeated here; their existing inline comments remain on the PR. Fix these issues in Kilo Cloud Previous review (commit 71692a3)Status: 6 Issues Found | Recommendation: Address before merge Incremental review of Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (0 files in the incremental diff)The incremental range contains only the rebase onto new Fix these issues in Kilo Cloud Previous review (commit 016e7ba)Status: 6 Issues Found | Recommendation: Address before merge Incremental review of Overview
Issue Details (click to expand)WARNING
SUGGESTION
Verified fixed in this increment
Files Reviewed (1 file in the incremental diff)
Fix these issues in Kilo Cloud Previous review (commit dd774df)Status: 7 Issues Found | Recommendation: Address before merge Incremental review of Overview
New in this increment (6 issues)WARNING
SUGGESTION
Still open from earlier reviews (1 issue)WARNING
Verified fixed since the last reviewRe-checked against current HEAD; these earlier findings no longer reproduce:
Checked, not flagged
Files Reviewed (6 files in the incremental diff)
Fix these issues in Kilo Cloud Previous review (commit 11c11af)Status: 7 Issues Found | Recommendation: Address before merge Incremental review of Overview
New in this increment (6 issues)WARNING
SUGGESTION
Still open from earlier reviews (1 issue)WARNING
Verified fixed since the last reviewRe-checked against current HEAD; these earlier findings no longer reproduce and their inline threads can be resolved:
[Snapshot truncated.] Additional previous summary content was truncated to keep this comment within platform limits. Reviewed by kimi-k3 · Input: 58.2K · Output: 3.3K · Cached: 210.1K Review guidance: REVIEW.md from base branch |
cad6769 to
b098978
Compare
b098978 to
594a010
Compare
594a010 to
ced3da9
Compare
ced3da9 to
e24d88f
Compare
e24d88f to
1414ed0
Compare
1414ed0 to
7befaef
Compare
7befaef to
ef63c9c
Compare
ef63c9c to
11c11af
Compare
11c11af to
dd774df
Compare
71692a3 to
3e5a991
Compare
|
@IamCoder18 how would this differ from a model using playwright? Why should we do this internally, instead of letting the user configure this themselfs? I see the benefit of integrating an inline browser into agent manager sidebar and as separate tab, but this might be out of scope. |
|
It looks like a big effort from your side so I don't want to simply dismiss it, on the other hand this will add quite some complexity we will need to maintain. |
|
@marius-kilocode Thank you for taking time to look into this!
This offers a few advantages over Playwright:
I make World it's own package to minimize upstream merge conflicts. Additionally, I have tested thoroughly on Ubuntu 26.04 (CLI) and Windows 11 (CLI and VS Code). I admit it would require maintenance, and I won't always be able to always help out (especially with school starting in September). If you disagree with World for the project's long-term vision, I'd be fine with adding Playwright support to the CLI. Doing some benchmarking, it is using World proactively without explicit instructions to do so, and is using it to improve the quality of the output:
I'll share more results when I'm done. More results! Transparency first: the code I used to benchmark is available at https://gist.github.com/IamCoder18/ad7c646cd43326325bd0316b3e052954. Prompt: Create a dashboard with lots of charts and graphs populated with sample data. Add a button on the page that toggles all the graphs into a 3D space where the user can rotate the view with the mouse, zoom in/out with the scroll wheel, and pan/move around the scene with click-and-drag. Constraint: do not use any chart/graph library — write the visualization code yourself (e.g. SVG, Canvas, or raw DOM). You may use a 3D library such as three.js to render the 3D view. Results
No Playwright, No World (MiniMax M3, $0.0368, ~3m13s)
With Playwright (MiniMax M3, $0.0357 (<- highest cost out of the runs), ~4m12s)
Note: Some 3D controls were inverted, rotating caused text selection on cards, and there were a few visibility and contrast issues. With World (MiniMax M3, $0.0305, ~3m36s)
Notes: Cards always face the camera is a great touch. Winner: WorldPrompt: Turn Results
No Playwright, No World (MiniMax M3, $0.0245, 2m32s)
With Playwright (MiniMax M3, $0.0669, 3m11s)
With World (MiniMax M3, $0.0331, 2m16s) (half the cost of Playwright, fastest run)
Winner: WorldThough this run was close, World wins because it has better visuals to show data flow (an explicit part of the prompt) and has nicer 3D control. ResultsBoth Playwright and World drastically improve agent performance, however, World improves the quality of agents' work faster and cheaper than Playwright. Through earlier (undocumented) testing, World has a larger improvement on free models than smarter models, and is a valuable asset to users running free models for webdev. |
3e5a991 to
696c31c
Compare
43471b5 to
405bbeb
Compare
405bbeb to
04622f4
Compare
|
Tests failing are unrelated. |
04622f4 to
9f6b42d
Compare
|
Re-ran tests and the pass now! |
|
Do you have a link to the project? |
World is implemented in #12752 (new If you meant a link to the benchmark results, they're hosted on https://bench.aaravlabs.com/. Hope that helps. |
|
@IamCoder18 wait so this is custom code and no library? |
Yes, that is correct. It uses Playwright heavily under the hood, but World is a custom wrapper over it. |
|
To clarify: the heavy lifting (browser lifecycle, DOM interactions, page navigation, screenshots) is powered by standard Playwright. What is "custom" in @kilocode/world is the thin IPC/daemon bridge that lets the Kilo CLI and VS Code extension invoke Playwright commands consistently across surfaces without running a separate MCP server process. Additionally, it handles persisting browser sessions for each sessions and ensure other sessions cannot access other browser sessions, enhancing security. |
|
This allows me to add the entirely custom Computer Use in the same World surface, making it highly extensible. |
|
It's impressive work from you, but the problem with this is that this increases the maintenance risk since it hasn't been scaled to many users and the amount of edge cases is high. Can we go for the CLI playwrite route instead for now? We would much more rather adopt tools that are already tested in production for such complicated cases. |
@marius-kilocode I understand. However, as the benchmarks show, an agent running World is both faster and cheaper than Playwright, and delivers the same or better levels of intelligence. Therefore, Would it be possible to add World as an opt-in experimental feature? When users attempt to enable it, I can add a dialog that explains that it may have edge cases and might be unstable.
This solution would have the best of both worlds (pun intended), with 99% of sessions using stable, battletested Playwright, and the 1% who prefer World get access to it. Another benefit is keeping the door open for Computer Use. If you agree, I can make the changes across PRs. |
|
Comment to prevent this PR from automatically closing due to 30 days of inactivity. |

















Context
The native World tool should be available consistently in VS Code without the extension maintaining a separate Playwright MCP process. This PR replaces that older integration with the CLI-owned runtime from the preceding PRs, adds settings for the native browser, and renders World screenshots directly in chat.
Part of #12751.
Depends on #12753 and #12752. Until those PRs merge, review the focused VS Code-layer diff; GitHub will then reduce this PR’s Files changed tab to this layer automatically.
Implementation
I, a human, have manually reviewed every change in this PR.
Remove the extension-managed Playwright MCP service and its VS Code settings. The Browser settings page now writes directly to Kilo configuration, where World is enabled by default, runs headless by default, and can optionally use an installed Chrome with Chromium fallback. The experimental settings page exposes the same enable/disable flag, and all affected copy is translated across the 20 supported locales.
Package the World daemon beside every extension CLI binary and include it in local binary freshness checks, resource copying, and source watching. Chat registers a focused World renderer that shows action metadata and inline screenshot attachments with full-size preview support.
Update the changeset introduced in PR 2 to include the VS Code extension and describe the complete user-facing workflow.
Screenshots / Video
Headless
world_vscode_windows_headless.mp4
Headed
world_vscode_windows_headed.mp4
How to Test
Manual/local verification
local-trackinginstead ofremote.Reviewer test steps
packages/opencode, runbun run script/build.ts --single --skip-install.packages/kilo-vscode, runbun run extension --no-build, or use the normal extension development launch with the built CLI.Checklist
Get in Touch
Discord: @IamCoder18