你的运行环境(版本号「点击帮助-关于-复制」):
TRAE Work CN
版本: 0.1.43
提交: 428b3440427a64b51632df94fd7d6611443d246b
日期: 2026-07-30T13:55:06.215Z
Electron: 39.2.7-release.1.46.1 (aha)
Node.js: 22.21.1
V8: 14.2.231.27-electron.0
OS: Windows_NT x64 10.0.19045
构建版本: 2.3.62834
设备ID: c479bc303fa2180fa2dfaa5a44f4fae934673eeb61a210c5a55056c339de7fb4
Web SDK Version: 1.6.26
Device Id: 973508010875882
问题描述(你遇到了什么问题?):
Trae work 突然无法调用内置浏览器了,从08.03开始突然无法调用了。08.02之前该功能是正常的。
复现步骤(如何才能重现这个 Bug/问题?):
1.Trae work CODE模式,提示词为:/内置浏览器 用内置浏览器打开baidu.com进行 页面验证,在搜索框查询azithromycin,能否正确查询。(不使用playwright,我在测试内置浏览器的功能
2. 无法打开内置浏览器进行操作。
3.
报错信息或截图(如有):
903139266137433:55e2ed50ae5fc26fb7902bee9022397d_6a715a556123e539b87946c1.6a715a556123e539b87946c4.6a715a556123e539b87946c2:TRAE Work CN.0.1.43.no_sid.no_ppe.T(2026/8/4 11:19:49)
The user wants me to use the built-in browser (the “浏览器控制” plugin - trae-remote-official:browser) to open baidu.com, verify the page, search for “azithromycin” in the search box, and check if the query works correctly. They explicitly said NOT to use playwright, they’re testing the built-in browser functionality.
Let me look at the plugin description: “浏览器控制 : AI-driven built-in browser automation. (path:c:\Users\xuhui.trae-cn\plugins\trae-remote-official\browser\1.0.3)”
I need to understand how to use this browser plugin. Let me check the plugin directory to understand its capabilities. The plugin is at c:\Users\xuhui.trae-cn\plugins\trae-remote-official\browser\1.0.3.
Let me first check the memory guidelines - this is a self-contained task, testing browser functionality. Probably doesn’t need memory lookup.
Let me explore the plugin to understand how to invoke it. The Skill tool has available skills listed but I don’t see a browser skill in the available_skills list. The plugin “浏览器控制” is listed in the plugins section but there’s no specific skill for it in available_skills.
Wait, looking at the available_skills list, I don’t see browser-related skills. The plugin is “浏览器控制” but it seems the plugin may provide MCP tools or other capabilities. Let me explore the plugin directory to understand what’s available.
Let me look at the plugin folder structure first.
Let me look at the plugin.json to understand the capabilities of this browser plugin.
The plugin.json doesn’t tell me much about how to invoke the browser. This is a plugin for the “built-in browser”. The capabilities are “Interactive”.
Since this is a plugin, its underlying skills/MCP tools would be invoked via the plugin mechanism. Let me search for how this browser plugin works. Maybe there are MCP tools available through run_mcp, or there’s a skill. But the available_skills list doesn’t include a browser skill.
Let me check if there’s an MCP server associated with this plugin. The plugin mechanism says: “Plugin-contributed MCP tools: via run_mcp, server_name = mcp_{registry}plugin{plugin_name}_{server_name}”. But I don’t have a run_mcp tool in my available tools.
Hmm, I don’t have run_mcp tool available. Let me check the plugin directory more thoroughly - maybe there are more files I missed. The LS showed only plugin.json, assets, .success. That’s a very minimal plugin.
Maybe the “built-in browser” refers to a browser automation feature of the IDE itself. Since this is an “Interactive” capability plugin, perhaps there’s an interface in the IDE for it.
Actually, this looks like a special built-in browser plugin. Since there’s no MCP server, no skill, and no CLI, the browser control might be exposed through the IDE’s native browser preview feature.
Wait - maybe the plugin is designed to be invoked through the browser control functionality. Let me think about what tools I have: I have OpenPreview which shows a preview URL.
Actually, the built-in browser might work through a browser automation interface. Since I don’t have an explicit browser automation tool in my toolset, maybe I should look more carefully.
Let me search the plugins directory for any other related plugins or skills that might handle browser control.
I see there’s a
browser-bridgefolder withbrowser-bridge.exeandcom.solo.browser_bridge.json. This might be the mechanism for the built-in browser. Let me look at that JSON file to understand the interface.The browser-bridge is a Native Messaging Host for a Chrome extension. That’s for external Chrome, not the built-in browser.
The user wants me to use the “built-in browser” (内置浏览器). The plugin “浏览器控制” (browser/1.0.3) is described as “Use TraeWork’s built-in browser to automatically perform web actions.”
I don’t have a specific browser automation tool in my tool list. The plugin has “Interactive” capability. Maybe the built-in browser is controlled via the IDE itself, and I need to use the browser through some interface.
Let me check if there are MCP tools related to this. The industry-researcher plugin has .mcp.json and connector.json. Let me check if the browser plugin has any MCP configuration… The browser plugin folder only has plugin.json, assets, .success. No MCP config.
Hmm. So how do I control the built-in browser? Maybe there’s a system-level mechanism. Let me check if there are any other tools in my environment related to browser control. Looking at my available tools: Task, Skill, SearchCodebase, Glob, LS, Grep, Read, WebSearch, WebFetch, RunCommand, CheckCommandStatus, StopCommand, DeleteFile, SearchReplace, Write, AskUserQuestion, TodoWrite, Schedule, NotifyUser, OpenPreview, PureShowWidget, RequestAuthorization.
No explicit browser automation tool. But wait — maybe the built-in browser can be controlled via the browser-bridge.exe? No, that’s for external Chrome extension.
Actually, let me reconsider. Maybe the built-in browser control works through a special MCP or through the browser-bridge. Let me check the browser-bridge.exe more. Actually, let me search for any documentation about how the built-in browser plugin works.
Actually, in Trae IDE, the “内置浏览器” (built-in browser) feature — the AI can control it. There might be a mechanism where I can issue commands to the built-in browser. Let me look for MCP tools. Maybe I should check if the browser-bridge supports running commands.
Let me check the VERSION file and see what the browser-bridge.exe is.
The browser-bridge is for the external Chrome extension (nbmnklcgnddbjafigmlhfjhefcfcgggn). Not the built-in browser.
So how does the built-in browser plugin work? The plugin.json says capabilities: [“Interactive”]. In Trae IDE, “Interactive” capabilities might mean the plugin just shows up in the UI and the IDE handles the browser interaction through its own native mechanism.
Actually, I recall that Trae’s built-in browser control works via special browser automation tools that get injected into the conversation when the user selects the browser plugin. But I don’t see those tools in my available tools.
Wait — maybe I should check the MCP configuration. Let me check whether the IDE exposes browser automation via some MCP server that I can invoke through run_mcp. But I don’t have a run_mcp tool.
Hmm, let me think about what I CAN do. Perhaps the built-in browser control is exposed via a skill? Let me check the available_skills list again… No browser skill there.
Alternatively, maybe the built-in browser is controlled by directly communicating with a local HTTP server or via the browser-bridge protocol. The browser-bridge.exe is a native messaging host for Chrome extension. The built-in browser in Trae might actually be a Chromium-based browser that uses the same bridge.
Actually, wait. Let me reconsider. The user said “用内置浏览器打开baidu.com进行页面验证” - use the built-in browser to open baidu.com for page verification. Maybe the way this works in Trae IDE is that the plugin enables browser automation tools in the agent’s toolset. Since I was invoked with the browser plugin command, maybe I should just try to use the browser automation capabilities that might be available.
Let me check if there are MCP servers configured in the project or globally that relate to browser. Let me search the .mcp.json files.
Only the industry-researcher has an .mcp.json. The browser plugin doesn’t have an MCP config.
So how does the built-in browser control work? Let me think about Trae’s built-in browser feature. In Trae IDE (and Trae Work), there’s a “内置浏览器” (built-in browser) that can be controlled by the AI through dedicated tools. These tools might be injected into the agent context when the plugin is active.
Since I don’t see those tools in my current toolset, maybe the built-in browser control is done via the browser-bridge.exe using stdin/stdout protocol (native messaging host protocol). The bridge is for Chrome extension. But maybe there’s a way.
Actually, wait. Let me reconsider the architecture:
- “browser” plugin (1.0.3): “Use TraeWork’s built-in browser to automatically perform web actions” - 内置浏览器
- “chrome” plugin (1.0.3): “Connect your Chrome to let TRAE Work automatically perform web actions using Chrome, Doubao Browser, Edge” - external browser via extension
The browser-bridge.exe with the chrome extension ID “nbmnklcgnddbjafigmlhfjhefcfcgggn” is the external Chrome mechanism.
For the built-in browser, the control is likely done through the IDE itself. The IDE might expose browser automation tools to the model. Since I’ve been invoked with the browser plugin command, perhaps the tools are available but I need to look at how.
Hmm, actually maybe I should check whether there’s a way to launch browser-bridge.exe and interact with it via stdio, where it might control the built-in browser. Let me try running it with --help or similar.
Actually, let me first check what happens when I run browser-bridge.exe with no args or --help.
Interesting! The browser-bridge.exe is actually a server that binds to a socket. The error says “Failed to bind: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次” (usually only one usage of each socket address is permitted) - os error 10048 (address already in use). This means the browser-bridge is ALREADY RUNNING (bound to its port). So it’s a server that’s already active.
So the browser-bridge.exe is a local server that controls the built-in browser. Let me find out what port it uses. Since it’s already running, maybe there’s a way to talk to it via HTTP.
Let me check the running processes to find the browser-bridge and its listening port.
The browser-bridge is already running and listening on port 19234 (127.0.0.1). There are established connections, so something is already connected to it (probably the built-in browser or the IDE).
Now I need to figure out the protocol. The browser-bridge.exe is described as “TRAE SOLO Browser Bridge - Native Messaging Host” but it actually runs as a server on port 19234. This is likely an HTTP server that the built-in browser connects to.
Let me try to query it via HTTP to understand the API. Let me try common endpoints like /status, /api, etc. First, let me just try a basic HTTP request.
Timeout on plain HTTP GET. Maybe it’s a WebSocket server, or it uses a different protocol. Let me try a WebSocket connection. Or maybe it requires a specific protocol.
Actually, this might be the mechanism the IDE uses to control the built-in browser. But wait - the user is testing the “内置浏览器” (built-in browser) functionality of Trae IDE. This browser control is probably supposed to be used through the IDE’s built-in browser panel, which I (the AI) should be able to control.
Hmm, but I don’t have any browser control tool in my toolset. Let me reconsider: maybe the built-in browser control is exposed to me through a mechanism I haven’t found yet.
Wait - maybe I should check if there’s an MCP server or a different tool registration. Let me check the .mcp.json in industry-researcher to understand the format, and also look for any browser-related tool configuration in the IDE.
Actually, let me step back. The user invoked the “browser” plugin (内置浏览器/浏览器控制). In Trae IDE, when you select this plugin and ask to control the browser, the IDE typically injects browser automation tools (like browser_navigate, browser_click, browser_type, etc.) into the agent’s context. But I don’t see these tools in my available tools list.
Alternatively, maybe I need to interact with the browser-bridge server directly via WebSocket. Let me check if port 19234 speaks WebSocket.
Let me try a WebSocket connection using a quick .NET WebSocket or use a tool like wscat if available. Actually, let me check what the established connections are to understand what protocol is being used. The established connections on 19234 suggest a client connected. Let me check what process is connected.
Both endpoints are owned by browser-bridge itself (process 2684), which is odd - probably the bridge proxies connections to another internal port (maybe the browser is listening on the remote end but through a different mechanism). The remote ports 58459/58460 are owned by the same browser-bridge process, so it’s likely browser-bridge connects to itself or to an embedded browser.
This is getting complicated. Let me step back and think about the actual mechanism for the “built-in browser” in Trae.
Actually, I recall now: In Trae IDE, there’s a built-in browser automation feature where the AI gets tools like
browser_open,browser_click,browser_input, etc. These are provided by the IDE itself when the browser plugin/capability is active. The plugin.jsoncapabilities: ["Interactive"]indicates it’s an interactive plugin.The user’s intent is clear: they want to test the built-in browser by opening baidu.com, searching “azithromycin”, and verifying it works. They explicitly said “不使用playwright” (don’t use playwright).
Given my toolset, I don’t have direct browser automation tools. But maybe… the browser-bridge.exe protocol can be used. Let me try WebSocket on port 19234.
Actually, wait. Let me reconsider. Perhaps I DO have browser control capability that will be revealed. The browser-bridge.exe with the socket… Let me look at the strings in the exe to understand its API.
Actually, let me try a different approach - let me check if the exe has help output or a different port. Let me examine the binary strings for HTTP routes.
The exe is a Rust binary, and I can’t easily find HTTP routes from ASCII strings. The routes might be in UTF-16 or compressed. Let me search for strings like “navigate”, “click”, “websocket”, “ws”, “jsonrpc” etc. in the binary.
Interesting! “navigate” is found at 890596 in the ASCII. Let me extract strings around that location to understand the protocol. Let me pull context around index 890596 and other interesting areas.
The strings I found are just Rust stdlib strings, not protocol routes. The “navigate” was just btree/navigate.rs from the Rust stdlib. So string extraction won’t easily reveal the protocol.
Let me think differently. This browser-bridge.exe is “TRAE SOLO Browser Bridge - Native Messaging Host” for the Chrome extension. It binds port 19234 and talks to the Chrome extension via WebSocket probably. It’s a local proxy. This is for the EXTERNAL Chrome, not the built-in browser.
For the built-in browser in Trae IDE… hmm.
OK here’s another thought: maybe the “built-in browser” in Trae IDE is controlled directly by the IDE via a native API, and when the user asks the AI to use it, the IDE provides special tools. Since the user explicitly selected the “浏览器控制” plugin in this command (trae-remote-official:browser), the IDE should have enabled those browser tools for me.
But I don’t see them in my toolset. Hmm. Wait - maybe I should re-read my tool descriptions. I have OpenPreview. No browser tools.
Let me reconsider - maybe the built-in browser in Trae IDE is the same browser-bridge but with the built-in browser acting as the client. The IDE’s built-in browser panel would connect to the bridge via WebSocket on port 19234, and the bridge provides a JSON-RPC API over WebSocket.
Let me try connecting via WebSocket to 127.0.0.1:19234 and see what happens. I can use .NET ClientWebSocket in PowerShell.
Actually, wait. Let me reconsider the whole thing. Maybe I’m overcomplicating this.
Perhaps the correct approach: the Trae IDE built-in browser control is exposed through the “browser” plugin, and the IDE automatically injects browser automation MCP tools. Maybe these tools are available but not listed in my system prompt (the system prompt lists tools but they may be dynamically available).
Actually, you know what, let me just try the WebSocket approach to understand the protocol. If the bridge speaks JSON-RPC over WebSocket, I might be able to drive the built-in browser through it.
Actually, hold on. Let me reconsider. The connections to port 19234 show both ends owned by browser-bridge (2684). That means the bridge has a connection to itself, i.e., it proxies to an embedded browser or internal HTTP server. Remote ports 58459, 58460 with process 2684… The bridge process might have a thread that accepts and another that connects to an embedded browser (like a headless chrome). Actually the remote connections owned by the same PID might be the browser-bridge connecting to ITS OWN internal browser instance, or a child process that reports as browser-bridge.
Hmm, actually processes can’t have connections where both sides are owned by the same process unless it’s loopback with the same process (possible - a process can connect to itself via loopback; both endpoints belong to the same process).
Let me try WebSocket connection to the port.
WebSocket connection failed. The bridge is probably not a WebSocket server, or it only accepts connections from the Chrome extension with specific origin/headers.
Let me step back and think about what the actual mechanism for the built-in browser is.
Actually — I bet the built-in browser control in Trae IDE works through MCP tools that the IDE injects. Let me check the current project for any MCP config, and also check the user’s Trae settings for enabled MCP servers.
Actually, wait. Let me re-read the plugin description: “Use TraeWork’s built-in browser to automatically perform web actions.” and the capabilities are [“Interactive”]. The plugin has no skill, no MCP server, no CLI. This strongly suggests that the browser control is provided by the IDE’s native tooling when this plugin is active.
In Trae IDE, I recall there IS a built-in browser automation. Let me check if maybe the IDE exposes these tools to me as a “run_mcp” style tool or if they appear when I look at my tools… I can’t “look” at my tools.
Alternative approach: Maybe I should check the IDE’s extension/automation directory to see what browser automation tools exist. Let me search for browser automation related files in the Trae installation directory.
Actually, let me reconsider once more. The user said: “用内置浏览器打开baidu.com进行 页面验证,在搜索框查询azithromycin,能否正确查询。(不使用playwright,我在测试内置浏览器的功能。)”
Translation: “Use the built-in browser to open baidu.com for page verification, search for azithromycin in the search box, and check whether it queries correctly. (Don’t use playwright, I’m testing the built-in browser functionality.)”
So the user wants me to actually operate the built-in browser. The most likely mechanism in Trae IDE: the built-in browser is controllable by the AI through specific tools. Let me search the Trae installation for anything related to “built-in browser” or browser automation commands.
Let me check where Trae is installed and look for browser-related tooling.
Trae IDE is running (“TRAE SOLO CN”). The browser-bridge is running.
Now, the question is how the AI can control the built-in browser. In Trae IDE, I believe the built-in browser automation is provided through a built-in MCP server or through the “Browser Use” feature.
Hmm, let me look for MCP servers configured in Trae’s config. Let me check ~/.trae-cn for mcp-related configs, or check the project’s .trae folder.
Actually — wait. I recall that in Trae IDE, browser automation tools ARE exposed to agents as part of the IDE’s built-in capabilities. The tools might be like:
- browser_open / browser_navigate
- browser_click
- browser_input/type
- browser_screenshot
- etc.
But they’re not in my toolset now. Maybe because the plugin needs to be “activated” in the conversation first, and the plugin’s skill mechanism provides them. But there’s no skill in the browser plugin.
Hmm, let me check the chrome plugin again - maybe both browser and chrome plugins work the same way, and the mechanism is via the browser-bridge. Let me look at whether the IDE passes special context. Actually let me search the Trae IDE installation for browser automation MCP or tool definitions.
There’s a
browserUseWorkerMain.jsin the IDE. This is the “Browser Use” worker for the built-in browser. Let me read it to understand how the built-in browser is controlled.The built-in browser plugin doesn’t expose a skill; let me check how the IDE’s “Browser Use” worker is invoked.
This is the worker for “browser use” - but this worker only handles accessibility tree to YAML conversion. It’s a worker used by the Browser Use feature in the IDE. This tells me the built-in browser automation in TRAE SOLO is a real feature. The worker handles converting accessibility tree to YAML, which is the “Browser Use” (browser automation) flow.So the built-in browser in Trae IDE is controlled via an internal mechanism where the IDE executes actions. The question remains: how does the AI agent (me) issue browser commands?
Given the constraints of my toolset, I don’t have a browser control tool. This is a real problem for fulfilling the user’s request.
Wait — maybe I should reconsider. Perhaps in this environment, the browser plugin activation means the IDE will intercept certain actions. Or maybe there IS a mechanism via the browser-bridge.
Let me think about the actual TRAE built-in browser architecture:
- The IDE has a built-in browser panel.
- When the AI needs to control it, the IDE runs a “browser use” worker that captures accessibility snapshots and executes commands.
- The AI model gets tools like
browser_snapshot,browser_click,browser_type, etc.Since I don’t have these tools in my current context, maybe I need to look for a different entry point. Let me check the iCubeCommands service to find the command interface. Let me search for the browser use related service files in the IDE.
Only one file. Let me search more broadly in the IDE for “browserUse” or “BrowserUse” or “browser use” commands, and the tool definitions for the AI agent (like “browser_take_snapshot”).
Let me look at how the browser use tools are defined. Let me search for the tool names that the AI would use, like “browser_open” or “browser_navigate” or “browser_snapshot”.
The IDE has browser automation tools implemented in workbench.desktop.main.solo-lite.js. These tools (browser_click, browser_type, browser_scroll, browser_snapshot, browser_wait) are the built-in browser automation tools that the AI can use. They’re part of the IDE’s native toolset.
Now, these are tools in the IDE’s AI tool system. When the user asks me to use the browser, the IDE would normally provide these tools to me. But in my current toolset, I don’t see them. However, the user DID select the “browser” plugin, which suggests the IDE activated the browser control capability.
Hmm. The tools might be exposed through a different mechanism. Since I can’t directly call browser_click etc., maybe I should check if these are available as MCP-style tools. Actually, maybe they ARE available and the tool registration just isn’t in my system prompt, but I can’t call tools not in my list.
Wait, let me re-read my system prompt… My available tools: Task, Skill, SearchCodebase, Glob, LS, Grep, Read, WebSearch, WebFetch, RunCommand, CheckCommandStatus, StopCommand, DeleteFile, SearchReplace, Write, AskUserQuestion, TodoWrite, Schedule, NotifyUser, OpenPreview, PureShowWidget, RequestAuthorization.
No browser tools. So I cannot natively call browser_click.
Given that, I need another approach to control the built-in browser. The browser-bridge.exe on port 19234 - let me investigate its protocol more. The Chrome extension connects to it. Actually, the built-in browser in TRAE SOLO might connect through the same bridge.
Actually wait, let me reconsider. Let me check if the browser-bridge has an HTTP API. Earlier HTTP GET timed out. Maybe it’s a WebSocket server but requires specific path or protocol. Let me look at how the IDE main process connects to the bridge. Let me search the IDE code for port 19234 or “browser-bridge”.
Very informative. Key insights:
The built-in browser automation is configured via
AI.agent.v2.browserAutomationsetting. Values: “chrome” (external Chrome via extension) or “browserTab” (built-in browser tab). The commandicube.common.commands.browserUse.setBuiltinBrowserswitches from “chrome” to “browserTab”.The browser bridge (
browser-bridge.exe) is a Native Messaging Host used by the Chrome extension for external Chrome control. It binds a local port (19234) and the Chrome extension connects to it.The built-in browser is “browserTab” mode — the built-in browser panel in the IDE.
The browser automation tools (browser_snapshot, browser_click, browser_type, browser_scroll, browser_wait, etc.) are implemented in the AI agent backend (service “browser”), accessed through
ai-agentvia the default client with{service:"browser", method:"..."}.The key insight: the AI agent (me) talks to the backend through the “ai-agent” client. The tools are defined in the backend and are supposed to be exposed to me as agent tools. But they’re not in my toolset…
Hmm wait, but maybe they ARE available - the browser tools would be registered in my context when the browser plugin is active. Since the user selected the browser plugin, the tools should be active. But my available tools list doesn’t show them.
Actually, let me reconsider. Maybe the tools ARE exposed and I should just try invoking them… but I can’t invoke tools that don’t exist in my list.
OK here’s the thing. Since I can’t natively call the browser tools, I need to either:
- Use the
RunCommandto interact with the browser-bridge directly (reverse engineering the protocol).- Ask the user to confirm the browser tools should be available.
- Check if there’s an MCP endpoint or HTTP API exposed by the ai-agent.
Actually, wait. Let me re-read the situation. The user selected the “浏览器控制” (browser) plugin and asked me to use the built-in browser. This is a TEST of the built-in browser functionality. The IDE is supposed to give me browser tools. If the tools are not in my toolset, that might be a configuration issue.
Actually, I realize I should look at how the built-in browser tools get exposed. Let me search for where the browser tools are registered as agent tools (like “browser_snapshot” registration) in the backend code. The tools are likely in a Rust backend (icube_server_rs) or in the extension host. Let me search for the tool registration.
Actually, let me search for where browser tools get defined in JS - e.g., “browser_open_tab” or “browser_take_snapshot” or similar tool names.
Now I understand the architecture much better:
- The built-in browser automation runs inside the IDE renderer (
workbench.desktop.main.solo-lite.js), NOT in the backend.- The tools are:
browser_navigate,browser_snapshot,browser_click,browser_type,browser_fill,browser_scroll,browser_press_key,browser_wait_for,browser_evaluate,browser_take_screenshot, etc.- These are invoked through
executeJavaScriptinto a browser webview editor (built-in browser panel). Thethis.nis a service that executes JavaScript in the browser webview.- The
BrowserUseToolingService(Dqe) is registered as a service in the IDE, and it’s exposed to the AI agent as tools (browser_navigate, etc.).So the built-in browser tools are exposed through the IDE’s agent service. When I (the AI agent) should call them, the IDE would route them to
Dqe.run().Since I don’t have these tools in my toolset, I cannot call them directly. Hmm.
BUT WAIT. Let me reconsider. These tools are “agent tools” exposed to the LLM. In my environment, I’m the agent. The tools should be registered in my context. Since they’re NOT in my list… maybe they’re exposed through some mechanism I’m not seeing.
Hmm, actually let me reconsider. This is TRAE SOLO (a cloud IDE variant?). The tool calls I can make are listed. The browser tools are not among them.
Alternative: I could drive the built-in browser webview via the browser-bridge or via the IDE’s internal channels. But the built-in browser is a webview in the IDE UI; the automation goes through
executeJavaScriptin the webview.Actually — wait. Let me reconsider the whole thing. There’s ANOTHER possibility: The “built-in browser” might be accessible via the
browser-bridge.exeon port 19234. The bridge runs a local server, and both the Chrome extension AND possibly the built-in browser webview connect to it. The bridge might proxy commands.Actually, the code shows: for external Chrome, the flow is: extension ↔ browser-bridge (port 19234, native messaging + local TCP) ↔ ai-agent/IDE. For built-in browser, the flow is: webview (executeJavaScript) directly in the renderer.
So to control the built-in browser, I need to send a message to the renderer to run the browser tool. There’s no direct channel for me (the agent) to do that except the agent tool interface.
Given that I cannot call the browser tools natively, maybe the RIGHT answer is: this is a testing scenario, and the user wants to verify whether the built-in browser works. The tools may fail to be exposed if the configuration
AI.agent.v2.browserAutomationis set to “chrome” (external) rather than “browserTab” (built-in).Hmm, but I should try to actually accomplish the task. Let me think about what I CAN do:
Option A: Use the browser-bridge.exe directly. The bridge is a TCP server on port 19234. The Chrome extension connects via WebSocket or TCP with a protocol. If I can figure out the protocol, I can send commands to control the EXTERNAL Chrome (if it’s connected). But the user wants the BUILT-IN browser.
Option B: Check if the built-in browser tools ARE actually available to me but I need to trigger them properly. Since the user selected the browser plugin, maybe the IDE expects me to call the tools. Let me just try… I can’t - they’re not in my tool list.
Option C: The built-in browser webview might be controllable via CDP (Chrome DevTools Protocol). If the built-in browser is a Chromium webview, and the IDE exposes its debugging port… Let me check if there’s a CDP endpoint available.
Let me first check the settings to see what browserAutomation mode is set, and check if there’s a CDP debugging port for the built-in browser.
Actually, let me look at the code more to understand how the built-in browser executes. Let me read the section around line 3843 and 5378 more, and also find where the browser webview (“browserTab” / BROWSER_TYPE_TAG) is created and how executeJavaScript works.
Actually, hold on. Let me step back and think about what the user is really testing.
The user says: “用内置浏览器打开baidu.com进行页面验证,在搜索框查询azithromycin,能否正确查询。(不使用playwright,我在测试内置浏览器的功能。)”
They want to test whether the built-in browser can be controlled. The purpose is a FUNCTIONAL TEST of the IDE’s built-in browser automation feature.
The most direct path: I need to invoke the browser tools. If the tools aren’t exposed to me, the test would FAIL — which might be exactly what the user wants to find out (i.e., testing if it works).
But before concluding failure, let me check the configuration. Maybe the built-in browser feature needs to be enabled (the setting
AI.agent.v2.browserAutomationshould be “browserTab”, and the browser plugin needs to be enabled). Also there might be a check that requires the browser tools to be exposed.Actually, let me look at how these tools get registered to the agent - maybe via a special mechanism in the extension host that I can trigger. Let me search for “browser_tabs” tool registration or how Dqe.run gets called by the agent.
I found the key:
browserUseTool(e)→this.L.run(e)where L is theBrowserUseToolingService(nps = IICubeBrowserUseToolingService). This is exposed vialo(Jr.BROWSER_USE_TOOL)commandbrowserUseTool.So the flow: The AI agent (me) calls tool “browser_use_tool” → routed to
browserUseToolcommand →Dqe.run().The tools I see in my toolset don’t include a “browser_use_tool”. But WAIT — the agent tools are usually exposed to me as native tools. Since I don’t have them, maybe the mechanism is different for this IDE.
Hmm, actually, this is the renderer-side command registration. The AI agent calls these commands via the “ai-agent” backend. My toolset is what the backend gives me.
OK let me take a completely different approach. The user is testing whether the built-in browser works. I’ve established:
- The built-in browser tools exist in the IDE (browser_navigate etc.) via
browserUseToolcommand.- These tools are NOT exposed to my current toolset.
Now, maybe the reason they’re not exposed is that the browser plugin/feature needs the setting
AI.agent.v2.browserAutomation = "browserTab"(built-in mode) rather than “chrome” (external). The user selected the “browser” plugin (内置浏览器), which suggests they want browserTab mode.Actually, maybe I should just check the current config to see the browser automation mode. Let me look for the config file. The setting is
AI.agent.v2.browserAutomation. Config files for TRAE are in the user data directory. Let me find them.Actually, more importantly: maybe I’m overcomplicating this. Let me re-read the task:
“用内置浏览器打开baidu.com进行页面验证,在搜索框查询azithromycin,能否正确查询。”
“Use built-in browser to open baidu.com for page verification, search azithromycin in the search box, check if it queries correctly.”They want me to drive the built-in browser. Given my tools, the ONLY way to interact with a browser is… hmm.
Actually WAIT. Let me reconsider. The browser-bridge on port 19234 — the built-in browser might ALSO connect through it. Let me examine how the built-in browser webview connects. The bridge serves BOTH the external Chrome extension AND possibly the built-in browser.
Let me look at the preload-browserView.js and how the built-in browser webview works.
Actually, I realize I should check something more direct: does the built-in browser webview expose a CDP debugging port? TRAE SOLO is Electron-based. The built-in browser webview would be a tag or BrowserView in Electron. If the IDE runs with --remote-debugging-port, I could connect via CDP.
Let me check the running processes and command line arguments for any debugging port.
No CDP remote debugging port is exposed. The IDE doesn’t run with --remote-debugging-port.
OK, at this point I’ve spent a lot of effort reverse-engineering. Let me step back and think about the practical path forward.
The built-in browser tools (browser_navigate, browser_snapshot, etc.) are implemented in the IDE renderer and exposed to the AI agent through the
browserUseToolcommand channel. In a NORMAL Trae session, the AI agent has access to these as native tools. In MY session, they’re not in my toolset.Wait — maybe I should reconsider. Let me look at the mechanism once more:
browserUseToolis a tooling command (lo(Jr.BROWSER_USE_TOOL)). The AI agent calls tooling commands through the “ai-agent” service. The backend exposes a set of tools to me. Browser tools are among them IFenable_browser_toolsis true (fromgetHubClientInfo:enable_browser_tools: awhereacomes fromNpt(this.S)— the browser config).Let me look at
Nptto understand the conditions for enabling browser tools.Let me check the IDE’s browser automation configuration to understand the current state.
Now I understand the browser tool enablement logic:function Npt(i){ const e=i.getValue("AI.agent.v2.browserBuiltinEnabled"), t=i.getValue("AI.agent.v2.browserChromeEnabled"), s=i.getValue("AI.agent.v2.browserAutomationMode"), n=i.getValue("AI.agent.v2.browserAutoScreenshot"); let r,o; return e!=="off" ? (r=!0, o=s==="chrome"?"chrome":"default") : t!=="off"||s==="chrome" ? (r=!0, o="chrome") : (r=!1, o="default"), {enable_browser_tools:r, browser_config:{mode:o, auto_screenshot:n}} }So
enable_browser_toolsis true unlessAI.agent.v2.browserBuiltinEnabled === "off"AND chrome also off. This config is sent to the backend (...bspread into client_info) and the backend exposes browser tools to the agent.So the browser tools SHOULD be enabled for me… unless the backend doesn’t expose them in this specific session type.
Hmm, this is TRAE SOLO — this is a desktop IDE (“TRAE SOLO CN”). I’m running as the agent. The tools like
browser_navigateetc. are exposed by the backend as “agent tools” — probably namedbrowser_navigateetc.Wait, actually let me reconsider. Maybe these tools ARE exposed to me but through a DIFFERENT mechanism than what I think. Let me look at how the agent backend exposes these tools. In the IDE, the tool definitions the model sees might include “browser_navigate” etc. But in my case, the platform that hosts me (the model) decides my tools. If browser tools were enabled, they’d be in my toolset. They’re not.
OK, I need to be pragmatic here. The user is TESTING the built-in browser. I’ve been asked to use it. My toolset doesn’t include browser tools, which means in this session the built-in browser tools are NOT available to me.
But wait — let me reconsider once more. Maybe the tools are exposed through the “Skill” or through the browser-bridge in a way I can drive. Actually, let me check: is there a way for me to invoke IDE commands? I have RunCommand (PowerShell terminal). The IDE has commands like
icube.common.commands.browserUse.setBuiltinBrowserandicube.common.commands.browserUse.checkBridge. These are registered in the renderer, not the terminal.Hmm, could I use
codeCLI? TRAE SOLO has its own CLI? Let me check if there’s a “trae” CLI that can execute commands. TRAE has “TRAE CLI” per the TRAE-product-knowledge skill. But TRAE SOLO may not.Actually, you know what? Let me reconsider the browser-bridge. Port 19234, browser-bridge.exe is a local server. The Chrome extension connects to it via WebSocket. My earlier WebSocket attempt to ws://127.0.0.1:19234/ failed. But maybe the bridge only accepts connections from the extension (allowed origin) — or maybe it requires a specific path like ws://127.0.0.1:19234/bridge or similar.
Actually, the bridge is native-messaging-host based (stdio) for the extension, but ALSO runs a TCP server on 19234 for the AI agent to talk to. The AI agent (backend) talks to the bridge on 19234 to control the EXTERNAL Chrome. The built-in browser doesn’t use the bridge.
OK so here’s my decision: I cannot directly control the built-in browser with my current toolset. The proper way is via the browser_* agent tools which are NOT exposed in this session.
BUT — I should still try my best. Options:
- Check the current configuration to see if browser tools are enabled.
- Try to use the built-in browser anyway through some mechanism.
Actually, WAIT. Let me re-examine. Let me re-read the tool names in my system prompt one more time… No browser tools.
Hmm, hold on. Let me reconsider whether maybe I should just try to see if the environment has additional tools I can access via the “Task” tool’s subagents. No, subagents have the same core tools.
Let me think about what the user’s REAL goal is: “我在测试内置浏览器的功能” - “I’m testing the built-in browser functionality.” They want to verify: can the built-in browser open baidu.com and search azithromycin correctly?
If the browser tools aren’t available to me, the honest answer is that the built-in browser control isn’t accessible in this session. But maybe I can still check the configuration and report the state, and possibly enable the tools.
Actually, let me check the config file to see the current browser automation settings. The settings are stored in the user data directory: C:\Users\xuhui\AppData\Roaming\TRAE SOLO CN\User\settings.json or similar.
The settings.json only has two settings. No browser automation settings. So defaults apply. According to
Npt, with defaults (browserBuiltinEnabledunset/not “off”,browserChromeEnabledunset/not “off”,browserAutomationModeunset),enable_browser_tools= true with mode “default”. So browser tools SHOULD be enabled.This means the browser tools (browser_navigate etc.) should be exposed to the AI agent. But they’re not in my toolset. This is confusing.
Wait… maybe I’m wrong about my toolset. Let me re-read my tools once more:
- Task, Skill, SearchCodebase, Glob, LS, Grep, Read, WebSearch, WebFetch, RunCommand, CheckCommandStatus, StopCommand, DeleteFile, SearchReplace, Write, AskUserQuestion, TodoWrite, Schedule, NotifyUser, OpenPreview, PureShowWidget, RequestAuthorization
No browser tools. Hmm.
But wait — maybe the browser tools get exposed dynamically when the browser plugin is activated in the conversation. The user activated the “trae-remote-official:browser” plugin (the command says “User selected Plugin: trae-remote-official:browser”). Maybe the plugin activation should inject the browser tools, but in this environment, they’re not injected into my available tools.
Hmm, this is a genuinely tricky situation. Let me think about what the built-in browser actually is and whether I can interact with it another way.
Actually — let me look at the “browserTab” mode more carefully. In
browserTabmode, the built-in browser is a webview EDITOR in the IDE. TheBrowserUseToolingService.run()executes JavaScript in that webview viathis.n.executeJavaScript(t,e).The built-in browser webview editor:
ci.BROWSER_TYPE_TAG(“browserTab”?). Let me check how the browser tab is created/opened. There might be a command to open it, likeicube.common.commands.browserUse.openBrowseror similar. And the webview itself might serve a special page.Actually — here’s a thought. Maybe I can trigger the built-in browser through the IDE’s command system via a CLI. TRAE SOLO might have a CLI executable like “trae” or “code” in its installation. Let me check.
Actually, better idea: Let me check if there’s a way to call IDE commands from the terminal. TRAE/VS Code supports
code --command? No, that’s not a thing. But Electron apps can be driven via… hmm.OK let me take yet another approach. Let me look at how the built-in browser webview works and whether it’s an HTTP-served page I can access. The “browserTab” editor… let me search the code for BROWSER_TYPE_TAG and how the built-in browser is implemented.
This is getting too deep into reverse engineering. Let me step back and make a decision.
The reality:
- The user wants to test the built-in browser.
- The built-in browser automation is controlled via
browser_*agent tools (browser_navigate,browser_snapshot,browser_type, etc.).- Those tools are NOT in my available toolset in this session.
- The browser-bridge (port 19234) is for EXTERNAL Chrome via the extension, not the built-in browser.
Wait, actually… let me reconsider point 4. Maybe the built-in browser ALSO uses the browser-bridge. The bridge binds port 19234 and has established loopback connections to itself. Maybe the built-in browser webview connects to the bridge.
Actually, let me reconsider what the “built-in browser” (browserTab) is in TRAE SOLO. In the code,
Dqe(BrowserUseToolingService) usesthis.n.executeJavaScript(t, e)wherethis.nseems to be a webview JavaScript execution service. Let me find where the built-in browser editor/webview is created and check if it’s accessible via a local HTTP server.Hmm, actually — I recall that in TRAE, the built-in browser opens pages in a webview. The
browserTabeditor showshttps://www.baidu.cometc. via a webview. The automation executes JS in the webview.The only agent-accessible path is the browser_* tools. Since they’re not in my toolset, maybe I should test whether the tools exist by attempting… but I can’t.
Let me try ONE more thing: maybe the browser tools ARE available as MCP tools or through a different naming. Let me check the MCP config in the industry-researcher plugin to understand how MCP tools are named, and also check if there’s a built-in MCP server for browser.
Actually, you know what, let me just try a completely different and pragmatic approach:
Try to use the browser-bridge protocol directly. The bridge listens on port 19234. The AI agent backend talks to it. If I can figure out the protocol, I can send commands. But wait — the bridge is for external Chrome. The user wants the built-in browser. Hmm.
Actually wait, actually — let me re-read the plugin descriptions:
- browser plugin: “用 TraeWork 内置浏览器,自动完成网页操作。” (Use TraeWork’s built-in browser to automatically complete web operations.)
- chrome plugin: “连接你的 Chrome,让 TraeWork 使用 Chrome、豆包浏览器、edge 等浏览器自动完成网页操作。” (Connect your Chrome…)
The user selected the “browser” plugin (内置浏览器). The browser-bridge is used by the “chrome” plugin (external). So the bridge is NOT what I need for the built-in browser.
The built-in browser requires the
browser_*tools. Those are enabled by default per the Npt() logic.Hmm, so why aren’t they in my toolset?
Ohh, wait. Maybe I need to reconsider. Maybe the browser tools ARE provided but they’re provided to me through a mechanism that only appears when I actually attempt a browser operation. In some IDEs, browser tools are “dynamic tools” that get added mid-conversation.
OR maybe — the tools are there but named differently. The agent backend might expose them as tools with names like
browser_navigate,browser_click, etc. And maybe my toolset would include them if the session had them.I can’t verify directly. Let me try the pragmatic approach: attempt to invoke the browser through available means and see what happens.
Actually — here’s a cleaner idea. Let me check if TRAE SOLO has a CLI binary that can open the built-in browser tab or run commands. Let me look at the installation directory for CLI tools.
There’s a CLI:
D:\Program Files\TRAE SOLO CN\bin\trae-solo-cnandtrae-solo-cn.cmd. Let me check what the CLI supports. Maybe it can open the browser or run commands.Actually, the TRAE CLI is typically for headless/terminal AI. But it might support
--command? Let me check its help.The CLI doesn’t have browser control commands in the visible help (it’s the standard VS Code CLI). There might be more options after “Extensions Management”. But probably no browser control.
OK. Let me take stock and make a pragmatic decision now. I’ve spent considerable effort. The key findings:
- The built-in browser automation exists in TRAE SOLO via
browser_*tools (browser_navigate, browser_snapshot, browser_type, etc.), enabled by default.- These tools are NOT exposed in my current agent toolset.
- The browser-bridge (port 19234) is for external Chrome via extension, not the built-in browser.
- There’s no CDP port, no direct HTTP API for the built-in browser.
Given this, I have two realistic paths:
A) Try to invoke the browser_* tools anyway — but they’re not in my toolset, so this would be fabrication.
B) Be honest with the user: the built-in browser control tools are not available in this session, so I cannot directly drive the built-in browser.Hmm, wait. But before giving up, let me reconsider once more. Maybe the tools ARE exposed to me and I should look more carefully at whether there’s something I’m missing. In some TRAE versions, the browser tools are exposed to the agent as regular tools with names like
browser_navigate. The system prompt would list them. Mine doesn’t.BUT — there’s one more possibility I haven’t fully explored: the
Skilltool. The available skills include… no browser skill.And what about the “agent-reach” skill? “Give your AI agent eyes to see the entire internet. 17 platforms via CLI, MCP, curl, and Python scripts.” It’s for search/social/web. Not browser automation of the built-in browser.
Hmm, actually, wait. Let me reconsider the agent-reach skill - it could potentially fetch/search web pages. But the user explicitly wants the BUILT-IN BROWSER, not a fetch tool. Using agent-reach would be circumventing the test.
Let me reconsider the problem from the user’s perspective. They’re testing whether the built-in browser functionality works in their IDE. This might be a test of whether the browser plugin is properly set up. The honest result might be: “the built-in browser tools are not exposed to the agent in this session, so I can’t operate the built-in browser.”
But actually, maybe I should verify this claim by checking whether the tools would be exposed. Let me check the ai-agent backend or look at how tools get registered. Actually, the enablement logic (Npt) is in the RENDERER and it sends
enable_browser_tools: trueto the backend. The backend then exposes browser tools to the agent.Actually, hold on! Let me reconsider. Maybe I should look at this from a different angle. Since the tools aren’t in my toolset, maybe the IDE provides them through a DIFFERENT chat interface - e.g., a “browser use” special mode in the AI chat where the model gets those tools. When the user invokes the browser plugin via a slash command or by selecting the plugin, the chat switches to a mode where browser tools are available.
In this session, the user sent the message through the normal chat with the browser plugin selected. If the IDE supports it, the tools should be there.
You know what, let me just be direct and pragmatic. Let me try to verify whether the built-in browser is currently available by checking what I can observe:
- Check if a built-in browser tab/editor is currently open in the IDE.
- Try to trigger the browser.
Actually, here’s yet another idea: Maybe I can control the built-in browser through the renderer via the browser-bridge! Let me re-examine: the bridge has ESTABLISHED connections (from itself to itself - odd). Maybe the built-in browser webview ALSO connects to the bridge at 19234, and the bridge routes to whatever browser is attached. The bridge is spawned by the ai-agent backend…
Wait, actually. The
browser-bridge.exeinc:\Users\xuhui\.trae-cn\plugins\browser-bridge\— the IDE installs it there and registers it as a native messaging host for Chrome/Edge/etc. It’s for the EXTERNAL Chrome extension. When the Chrome extension connects to the bridge (via native messaging), the bridge starts a TCP server on 19234 for the ai-agent to send commands. So port 19234 is live only when an external browser is connected. The loopback established connections = the bridge forwarding between the native messaging channel and the TCP channel.So if I connect to port 19234 and speak the protocol, I could control EXTERNAL Chrome (if connected). That’s the “chrome” plugin, not the “browser” (built-in) plugin.
OK, decision time. I’ll be honest and practical:
The built-in browser (内置浏览器) is controlled via browser automation tools that are part of the IDE’s agent toolset. In this session, those tools aren’t exposed to me. I cannot directly drive the built-in browser.
BUT — I should not give up so easily. Let me try ONE more concrete thing: attempt to interact with the bridge on port 19234 with a proper WebSocket handshake including the origin header, and see what it responds. If it’s the browser bridge for external Chrome, I might at least be able to list tabs or something. Actually no - that’s not the built-in browser either.
Hmm, let me reconsider the whole thing ONE more time. Actually, maybe the user’s IDE is configured such that browser tools ARE available but the agent framework I’m running under is a “sub-agent” without them. In that case, I could delegate to a subagent via the Task tool that has more tools? No, subagents have the same tools.
OK final approach. I’ll:
- Report honestly what I found: the built-in browser automation is available via browser_* tools in the IDE, but those tools aren’t exposed in this agent session.
- Check the current browser config state to give the user useful diagnostics.
- Offer to do the equivalent verification using available tools (e.g., WebSearch/WebFetch to verify baidu.com and the azithromycin search) as a fallback, OR guide them on enabling the browser tools.
Actually wait — before all that, let me reconsider whether the browser tools might be callable through the
Tasktool with ageneral_purpose_tasksubagent… no, subagents can’t do it either.Hmm, hold on. Actually, let me reconsider whether I should check the TRAE browser plugin’s activation one more time. The plugin was selected by the user (the trae_command shows it). The plugin.json says capabilities: [“Interactive”]. For “Interactive” plugins, the IDE provides the interaction UI.
You know what — let me look at how the AI agent exposes these browser tools. Maybe the agent backend runs on a local port and I can query it. The ai-agent process — let me check its port. Earlier I saw
getAiAgentRpcClientvia a “modular manager”. The ai-agent is a local server (RPC over WebSocket on localhost). If I can find its port and the RPC protocol, I could… this is getting way too deep.Actually, let me just try the most direct thing possible: use WebFetch/WebSearch to at least verify that baidu.com is reachable and search for azithromycin, as a page-level sanity check — NO wait, the user explicitly wants the built-in browser test. Using WebFetch would defeat the purpose.
Let me reconsider: is there ANY chance the built-in browser is available as a preview URL I can open via OpenPreview? No — OpenPreview shows a local dev server preview.
Hmm, what about this: the
browserTabbuilt-in browser opens a webview editor. Maybe I can trigger opening the browser tab by… no terminal command.OK, let me look at this from the angle of: “what does the AI agent toolset actually contain for browser in a normal session?” — and whether there’s a config that would enable them. Let me search the config schema for the browser settings to confirm names.
Let me quickly check network reachability to baidu.com as diagnostics before concluding.
Now I have the definitive answer about configuration:The setting
AI.agent.v2.browserAutomation:
- enum: [“off”, “browserTab”, “chrome”]
- default: “browserTab”
- “Controls whether browser automation tools are available to the AI agent.”
- “Enable browser automation via Browser Tab” (内置浏览器)
The user’s settings.json has no browserAutomation setting, so it defaults to “browserTab” → built-in browser tools SHOULD be enabled.
So the browser tools should be available to the AI agent. But they’re not in my toolset.
Given all this reverse engineering, I now strongly believe: the browser tools (browser_navigate, browser_snapshot, etc.) are supposed to be exposed to me as native agent tools when the browser plugin/feature is active, but in this particular session they were not injected into my toolset.
This is a significant finding for the user’s test. But wait — maybe I’m wrong. Maybe they ARE exposed and I just don’t “see” them because the system prompt I received was generated before the plugin was activated. Hmm.
Actually, you know what? Let me just try to accomplish the task using what I CAN observe, and be honest about the mechanism. Let me think about what actually CAN be done:
The most honest and useful path:
- Report that I investigated and the built-in browser automation relies on browser_* tools which aren’t exposed in this session.
- Ask the user whether they want me to (a) proceed with an alternative approach (e.g., verify via web fetch, or use the external chrome extension bridge if available), or (b) help configure/enable the browser tools.
Actually hold on. Before asking, let me try ONE concrete thing that might just work: the browser-bridge on port 19234. Let me figure out the protocol. The bridge serves the EXTERNAL Chrome extension. But maybe TRAE SOLO’s built-in browser ALSO registers with the bridge… no, we established it doesn’t.
Hmm wait, actually — let me reconsider. There’s a chance the user has an external browser connected (the bridge has established connections!). The bridge has 2 established connections on port 19234 (both owned by bridge process — loopback). That might mean a browser (external Chrome with the extension) is connected. If so, I COULD control that external browser via the bridge — but the user explicitly wants the BUILT-IN browser.
OK. Decision: I’ll try to speak to the bridge to understand what’s connected, since it’s quick. Then make a final call.
Actually, let me first try a WebSocket with proper headers/origin (chrome-extension origin) to ws://127.0.0.1:19234. The extension ID is nbmnklcgnddbjafigmlhfjhefcfcgggn. Maybe the bridge requires the Sec-WebSocket-Protocol or a specific path.
Actually, the bridge is described as “Native Messaging Host” with “type: stdio”. When Chrome launches it, it communicates via stdin/stdout (native messaging format: 4-byte length prefix + JSON). But there’s ALSO a TCP server on 19234 (that’s how the AI agent connects). The TCP protocol might be: length-prefixed JSON or newline-delimited JSON.
Let me try connecting via TCP with a simple JSON-RPC-ish message and see if I get a response. Let me write a small PowerShell TCP client. Common protocol: 4-byte big-endian length + JSON payload (native messaging format).
Actually, this is the path to controlling EXTERNAL Chrome, not built-in. I should stop going down this path.
FINAL DECISION: I cannot operate the built-in browser with my current tools. Rather than guess further, I should:
- Be transparent with the user about what I found.
- Ask how they want to proceed.
Actually — wait, wait. Let me re-read the user’s request once more: “用内置浏览器打开baidu.com进行页面验证,在搜索框查询azithromycin,能否正确查询。(不使用playwright,我在测试内置浏览器的功能。)”
Hmm, “我在测试内置浏览器的功能” — I’m testing the built-in browser feature. Maybe the expected outcome IS a report on whether it works. If the tools aren’t exposed, the honest report is “the built-in browser control is not accessible from this agent session” — which is a valid (negative) test result, possibly indicating a setup issue.
But actually, before concluding, let me reconsider whether I should try to enable/trigger it. There’s a config:
AI.agent.v2.browserAutomationdefaults to “browserTab” already. So it should be on.Hmm, but here’s another thought — maybe the issue is that this chat session was started BEFORE the browser tools feature was available, or the model/tool-set doesn’t include browser tools because the backend filters them for this model. The user might need to start a new chat or ensure the browser plugin is toggled on.
OK here’s my plan:
First, quickly try the TCP bridge protocol on port 19234 to see if there’s a connected browser and what state it’s in. This is fast and informative. Actually no — let me not. It’s for external Chrome, and the user wants built-in.
Ask the user via AskUserQuestion how to proceed:
- Option A: 我尝试用 WebFetch/搜索验证 baidu.com 和 azithromycin 查询(代替内置浏览器)
- Option B: 检查/启用内置浏览器工具配置后重试
- Option C: 其他
Hmm, but wait. Actually, hold on. Let me reconsider whether the browser tools might be accessible through a different avenue that I’ve overlooked: the Task tool with general_purpose_task subagent. Subagents are described with tools: Skill, SearchCodebase, Glob, LS, Grep, Read, WebSearch, WebFetch, DeleteFile, SearchReplace, Write, RunCommand, CheckCommandStatus, StopCommand, GetDiagnostics, TodoWrite, OpenPreview, PureShowWidget, RequestAuthorization. Same toolset, no browser tools.
And the search subagent: Skill, SearchCodebase, Glob, LS, Grep, Read, TodoWrite, RequestAuthorization. No browser tools either.
OK so no subagent has browser tools.
Alright, let me also reconsider: is there ANY chance the built-in browser is already open in the IDE and I can interact with it via… no.
FINAL PLAN: Be honest + ask the user. But before that, let me do a quick sanity check of baidu.com reachability from this machine (simple TCP/HTTP check via PowerShell) so my report to the user includes whether the network can reach baidu at all — this is useful diagnostic info for the “页面验证” (page verification) part. Actually, that’s not the built-in browser test either, but it’s useful diagnostics. Let me do a quick check.
Actually, let me also reconsider using the AskUserQuestion tool. The user gave a clear instruction: use built-in browser to do X. My ability to do X depends on tools I don’t have. This is a genuine blocker requiring user input. I should ask.
But actually — hmm, let me reconsider ONE more time whether the browser tools might be available in a way I haven’t tried.
What if I’m in a “subagent-like” context within the AI chat, and the MAIN agent has the browser tools? No, I AM the agent.
What if the IDE intercepts certain tool names and routes them? Like if I “call” browser_navigate, the platform handles it? I can’t call tools not in my list.
OK. Let me do the diagnostic network check (quick), then present findings and ask the user.
Actually, let me reconsider the AskUserQuestion approach vs just reporting. The user’s instruction is clear and the task is well-defined. The blocker is environmental (no browser tools). Rather than asking a question with options that might confuse, maybe I should:
- Report clearly what happened and why (browser_* tools not exposed in this session).
- Offer concrete next steps.
Actually, I realize I should use AskUserQuestion since I need a decision on how to proceed. Let me first gather the network diagnostics to include useful context.
Let me quickly test baidu.com reachability.
I’ve completed the investigation. Here’s what I found:
诊断结果:
内置浏览器自动化机制:TRAE SOLO 的内置浏览器(browserTab 模式)由
browser_navigate/browser_snapshot/browser_type/browser_click等 IDE 原生 Agent 工具驱动,默认配置AI.agent.v2.browserAutomation = "browserTab"即为启用状态(你的 [settings.json](file:///C:/Users/xuhui/AppData/Roaming/TRAE%20SOLO%20CN/User/settings.json) 未覆盖该配置)。关键问题:当前会话中,我的工具集里没有注入任何
browser_*浏览器控制工具,因此我无法直接驱动内置浏览器去打开 baidu.com 并执行搜索。已确认该机制与 playwright 无关,是 IDE 自身的浏览器自动化通道,但该通道在本会话未向我开放。网络层面:baidu.com 可达(HTTP 200,页面标题"百度一下,你就知道"),说明不是网络问题。
Network is fine — baidu.com returns 200 with the correct title “百度一下,你就知道”.Now, the key issue: I don’t have browser automation tools in my toolset. Before asking the user, let me try the ONE remaining idea: maybe the browser-bridge TCP protocol can be used and maybe it’s actually connected to a browser. The bridge has established connections. Let me quickly probe the TCP protocol on 19234 with the native messaging format (4-byte length + JSON). If a browser is connected, this might give me tab info. But again — that’s external Chrome, not built-in.
Hmm, actually, let me reconsider the whole situation ONE more time, because I want to give the user the most accurate and useful result.
Key facts:
AI.agent.v2.browserAutomationdefault = “browserTab” → built-in browser automation enabled by default. User settings don’t override.- The built-in browser tools (browser_navigate etc.) are exposed to the AI agent when enabled.
- In THIS session, my toolset does not include any browser_* tool.
Conclusion: The IDE backend did not expose browser tools to this agent session. This is the core finding.
Possible reasons:
- The model/session type I’m running under may not receive browser tools.
- The browser plugin might need re-activation.
- A restart of the chat may be needed.
Now, the user is TESTING the built-in browser. The most valuable thing I can do:
- Report the finding clearly: built-in browser tools are not available to this agent session, so I couldn’t execute the browser operations.
- Give diagnostics: config default is browserTab (enabled), network to baidu is fine (200).
- Ask how to proceed: retry in a new chat / re-enable plugin, OR use fallback verification.
Actually, hmm, wait. Let me try to probe the bridge TCP port after all — quickly, one attempt, to see if anything responds. If the bridge is connected to a browser, it might respond to a length-prefixed JSON. This could tell me whether there’s ANY browser automation channel available. But it’s for external Chrome.
No. Stop. The user wants the built-in browser. The bridge is external. Let me not conflate.
Actually — hold on, one more consideration. What if the built-in browser automation is ALSO routed through the bridge in this version? The code I read says the built-in browser executes JS directly in the webview (via
this.n.executeJavaScript). So no.Let me also double check: maybe there’s a dedicated “browser use” mode in the AI chat UI that the user needs to enable — e.g., a toggle “浏览器控制” in the chat. The user selected the plugin, which should do that.
OK. Time to present findings and ask. Let me use AskUserQuestion with clear options:
Question: 内置浏览器控制工具(browser_navigate 等)在当前会话中没有暴露给我,无法直接操作内置浏览器。如何处理?
Options:
- 我在新会话/重新激活插件后再试(推荐)— 可能需要重启对话让浏览器工具注入
- 用可用的网络工具做等效验证(WebFetch baidu + azithromycin 搜索页,非内置浏览器)
- 只报告诊断结果,不做操作
Hmm, actually, let me reconsider. Wait — before asking, is it possible that the browser tools ARE in my toolset but under plugin names? The plugin mechanism says: “Plugin-contributed MCP tools: via run_mcp, server_name = mcp_{registry}plugin{plugin_name}_{server_name}, tool_name = original tool name”. But the browser plugin has no MCP server.
And “If the user explicitly names a plugin, prefer capabilities from that plugin. If a plugin lacks relevant capabilities for the request, say so and continue with fallback.” — This is from the Plugins section of my instructions! The browser plugin lacks callable capabilities (no skill, no MCP tools) in my environment.
So per my own instructions: “If a plugin lacks relevant capabilities for the request, say so and continue with the best fallback.”
The fallback would be: use available web tools (WebFetch/WebSearch) to at least verify baidu.com page and azithromycin search results — giving the user equivalent page verification, while being clear it’s not the built-in browser.
Hmm, but the user EXPLICITLY said they’re testing the built-in browser and not to use playwright. Using WebFetch isn’t playwright, but it also isn’t the built-in browser. The user’s goal is to test the built-in browser functionality. If I can’t drive it, the test result is “not accessible from this session.”
I think the right move: explain the situation concisely, then ask the user whether to (a) retry after they restart/re-activate, or (b) do an equivalent verification with web tools as fallback.
Actually, let me reconsider option (b) more carefully. The user wants to verify: does baidu.com load, and does searching “azithromycin” return correct results? I CAN verify both with WebFetch:
- Fetch https://www.baidu.com → verify page loads (title, search box).
- Fetch 百度安全验证 → verify search results contain azithromycin content.
This gives the user real page verification, just not via the built-in browser UI. It partially serves their intent (verify the flow works), but not the built-in browser test.
Let me ask the user how to proceed. Actually — you know, let me think about what’s most helpful. The user is clearly testing whether the built-in browser works in their Trae IDE. The KEY question they’re answering is “can the AI control the built-in browser?” If the answer in this session is “no, tools not exposed,” that’s the test result. But maybe they’d want to verify the flow with fallback tools anyway.
I’ll ask via AskUserQuestion. Keep it concise.
The user chose “只报告诊断结果” (only report diagnostic results). No operations. I’ll write up the final diagnostic report concisely.
Let me summarize the findings clearly:
- Built-in browser mechanism in TRAE SOLO: browserTab mode, driven by browser_* tools (browser_navigate, browser_snapshot, browser_type, browser_click, etc.). These are IDE-native agent tools.
- Config:
AI.agent.v2.browserAutomationdefaults to “browserTab” (enabled). User settings don’t override it. So the feature is enabled by default, but the tools were not injected into this agent session.- The browser plugin (trae-remote-official:browser) has no skill/MCP tool of its own — it relies on the IDE’s native browser tooling.
- browser-bridge.exe (port 19234) is for EXTERNAL Chrome via the extension (chrome plugin), not the built-in browser.
- Network: baidu.com reachable, HTTP 200, title “百度一下,你就知道”.
Conclusion: Built-in browser test cannot be executed from this session because browser_* tools are not exposed. This is a session/tool-injection issue, not a network or config issue.
Next steps for the user (brief): new chat or re-activate plugin to get tools injected; or check settings 浏览器自动化 setting.
Keep it concise.
内置浏览器功能诊断报告
测试目标:用内置浏览器打开 baidu.com,搜索 azithromycin,验证能否正确查询。
测试结果:未能执行 —— 内置浏览器控制工具在当前 Agent 会话中未注入。诊断明细
检查项 结果 内置浏览器自动化配置 AI.agent.v2.browserAutomation默认 =browserTab(内置浏览器,已启用),你的 [settings.json](file:///C:/Users/xuhui/AppData/Roaming/TRAE%20SOLO%20CN/User/settings.json) 未覆盖该配置浏览器插件(trae-remote-official:browser) 无独立 Skill / MCP 工具,依赖 IDE 原生 browser_*工具链当前会话工具注入 browser_navigate/browser_snapshot/browser_type等工具均未暴露给我网络连通性 baidu.com 可达:HTTP 200,页面标题"百度一下,你就知道",非网络问题 browser-bridge(127.0.0.1:19234) 属于外部 Chrome 插件通道(chrome 插件),与内置浏览器无关
结论:内置浏览器的自动化通道(IDE 原生
browser_*工具)在本会话未向我开放,因此无法执行打开 baidu.com 并搜索 azithromycin 的操作。该结果与 playwright 无关,属于工具注入/会话层面的问题,而非配置或网络问题。建议排查方向(供你测试时参考):
- 新建一个对话会话,激活"浏览器控制"插件后再尝试 —— 工具可能在会话创建时注入;
- 确认设置中"AI 代理 → 浏览器自动化"未被改为
off或chrome;- 如需我重新执行该测试,随时告诉我。
903139266137433:5a7608a144c02b5d3ca08da644b5ad26_6a715a556123e539b87946c1.6a715c646123e539b87947cf.6a715c646123e539b87947cd:TRAE Work CN.0.1.43.no_sid.no_ppe.T(2026/8/4 11:28:36)
我来全面检查浏览器自动化相关配置的所有位置。
The user wants me to check the “AI 代理 → 浏览器自动化” (AI agent → browser automation) setting to confirm it’s not set to “off” or “chrome”.
I already know from the settings.json that there’s no AI.agent.v2.browserAutomation setting (it only has AI.rules.importClaudeMd and AI.toolcall.v2.ide.command.mode), which means the default “browserTab” applies.
But let me check more thoroughly - there could be other places where settings are stored:
- User settings.json (already checked - C:\Users\xuhui\AppData\Roaming\TRAE SOLO CN\User\settings.json)
- Machine settings
- Workspace settings in the project (.trae or .vscode folders)
- Cloud/server-synced config (iCubeApp config)
- The backend config (iCubeApp config pulled from server)
Let me check:
- Workspace-level settings in d:\JHCONBA API intelligence (.vscode/settings.json, .trae/settings.json, etc.)
- Machine settings at C:\Users\xuhui\AppData\Roaming\TRAE SOLO CN\User\machine/settings.json
- Also check the “autoRunConfig” iCubeApp settings which might override
Let me do a comprehensive check.
No workspace settings, no .trae settings. Only the user settings.json which I’ve already read (no browserAutomation setting).
Let me also check:
- The machine settings (machine/settings.json) — glob pattern **/settings.json only found the User one, but machine settings might be at User/machine/settings.json. Let me check.
- The iCubeApp remote config (server-pushed config) — stored somewhere. This could override. Let me search for config files related to iCubeApp.
- Check state.db or similar storage for the setting value.
Let me check the machine settings directory and any other config storage.
The settings.json is the only settings file (no machine/settings.json). The state.vscdb is a SQLite database that stores workbench state, including possibly settings values and the “AI.agent.v2.browserAutomation” config if it was ever changed via UI.
Let me check the state.vscdb for any browser automation related values. I can query it with a quick PowerShell/Python approach… Actually, let me use the sqlite. Does the machine have sqlite3? Python might be available. Let me check the state.vscdb for the browserAutomation key.
Also, there’s globalStorage/.ckg/storage with file cache DBs — those are file caches, probably not relevant.
Let me query state.vscdb. I’ll use Python if available, else try sqlite3 CLI.
The quoting got mangled in PowerShell. Let me write a small Python script to a temp file instead, or use a different quoting approach. Let me write a temp script file.
No output? Strange. Maybe python printed but output got swallowed, or the DBs don’t exist and it printed nothing… Actually it should print “DB: … exists= …”. Let me check the command output again - maybe there was an error. Let me re-run with explicit flush and check exit.
The output file doesn’t exist and the command exited 0 without printing. This suggests python might be the Windows Store stub (python.exe alias) that does nothing without install, or python isn’t actually available. Earlier the first attempt DID show a Python SyntaxError, which means python.exe runs and interprets code. So python works.
Wait, the first attempt showed the syntax error which means python.exe executed the -c code. So python works. But now with the script file, no output at all and no file created… The redirect *> should have created the file. The fact that the file doesn’t exist is odd. Maybe the python process crashed silently or the script has an issue.
Actually wait — maybe python here is the py launcher alias resolving differently, or the *> redirect with python writing to stdout… Let me try running python directly with the file and capturing output differently. Let me also check python version.
Python 3.12.10 works, but the script produces no output at all. That’s very strange — the script has print statements at the top that should always execute. Unless… the script file has an encoding issue? Or the print output is being buffered and lost?
Wait — the Write tool wrote the file. Let me verify the file content is correct by reading it back.
The script file is EMPTY! The Write tool reported success but the file is empty. That’s odd — perhaps the Write tool wrote it but something (the file path with backslashes?) didn’t work, or it was written to a different location. Let me rewrite it using forward slashes or a different approach.
Actually, let me just rewrite the file and verify.
The Write tool is restricted to the working directory. The earlier “success” was misleading (file created empty, probably a stub). I should write the script inside the working directory instead: d:\JHCONBA API intelligence.
Let me write the script into the project directory (or use a subfolder). Since I don’t want to pollute the project, I’ll write it to a temp subfolder in the project and delete it afterward. Actually, simplest: write to the project root with a clear temp name, run, then delete.
状态库中也没有浏览器相关键。再查一下云端/插件配置缓存。
Confirmed: no browser-related keys in the IDE state databases either. So:
- User settings.json: no browserAutomation setting → default applies
- Global state.vscdb: no browser keys
- Workspace state.vscdb: no browser keys
- No workspace settings, no .trae settings
The AI.agent.v2.browserAutomation default is “browserTab” (built-in browser enabled).
But wait — I should also check the iCubeApp remote/server config (cloud-pushed config), which uses iCubeApp.browserUse.isolateBrowserForSession etc. and could include browser config. Also there’s the trae.mcp config and possibly a cloud config that gets pulled. The getConfigData() returns iCubeApp config pulled from server. Let me check if there’s a local cache of the iCubeApp config that might contain browser settings.
Also, I should check for the plugin enablement: the browser plugin might be disabled. Let me check plugin config storage. The plugins are managed via scan_plugins and config in state storage. Let me check the plugin installation state — is the browser plugin (trae-remote-official:browser) enabled? The user selected it, so presumably it’s active.
Also check for the “AI.agent.v2.browserAutomation” in any other config: there might be an autoRunConfig or iCubeApp JSON cached locally (e.g., in %APPDATA%\TRAE SOLO CN or in the .trae-cn folder).
Let me search for config caches. Also, there’s C:\Users\xuhui\.trae-cn — let me look for iCubeApp config files there.
Let me also search the settings.json once more — already done (no browser key).
Let me do a broader search for “browserAutomation” or “browserBuiltin” in config-like files under AppData and .trae-cn.
No matches in .trae-cn for browser automation settings. The AppData grep hit locked files (leveldb etc.) but those are browser profile files, not settings. No matches for browserAutomation etc. in the accessible files.
Note interesting: Partitions\icube-web-crawler-shared-session-v1.0 and Partitions\trae-webview — these are browser partitions used by the IDE (trae-webview partition is used for webviews including possibly the built-in browser). But that’s the browser profile, not settings.
So the conclusion is solid:
AI.agent.v2.browserAutomationis NOT set anywhere (user settings, machine settings, workspace settings, state DBs, cloud config cache) → default “browserTab” applies = 内置浏览器自动化已启用,未被改为 off 或 chrome。
Let me also verify the plugin enablement state for the browser plugin, since the user selected it. Let me check the plugin config. The plugin state might be in the workspace storage or global storage. Let me search for “browser” plugin ID in state or config json. Actually, the user selected the plugin via the command, so it should be active in this conversation. The check they asked for is specifically about “AI 代理 → 浏览器自动化” setting, which I’ve now confirmed.
Let me also double check: is there any iCubeApp config cached locally that might contain browser-related overrides? The iCubeApp config is pulled from the server. Let me check for a cached copy. It’s often stored in the product data folder. Let me search for “browserUse” in config-like JSON files under AppData (excluding locked leveldb).
Actually, the grep already covered most of it (only locked files errored). Let me do a targeted grep for “browserUse” in .json files under AppData and .trae-cn to catch any iCubeApp cache.
发现了关键线索 —— 内置浏览器工具是通过 MCP 服务(integrated_browser)提供的。让我查看这个 MCP 配置。
MAJOR FINDING!
C:\Users\xuhui\.trae-cn\mcps\s_6a714b6b6123e539b879426b-2d6ea921\solo_work_lite\integrated_browser\tools\browser_wait_for.json etc.
There’s an MCP server directory with integrated_browser MCP tools! The MCP server is at .trae-cn/mcps/s_6a714b6b6123e539b879426b-2d6ea921/solo_work_lite/integrated_browser/tools/. This contains the browser_* tools (browser_wait_for, browser_waiting_for_user_interaction, browser_unlock, and probably more like browser_navigate, browser_snapshot, browser_click, browser_type…).
So the built-in browser automation is exposed as an MCP server named “integrated_browser” in the “solo_work_lite” scope! This is how the agent gets the browser tools. The MCP server id is s_6a714b6b6123e539b879426b-2d6ea921.
Let me explore this MCP directory to see all the tools and the MCP server config. If this is a local MCP server, maybe I can invoke it via its transport (stdio or HTTP). Let me look at the directory structure.
This is the MCP server definition for the built-in browser (integrated_browser)! All the browser_* tools are here. Let me look at the SERVER_METADATA.json to understand how to connect to this MCP server.
Only server_name. Let me check the parent directories for the MCP config - there might be a config.json or .mcp.json at the mcp id level. Let me also look at the plugin-config.json that was found earlier, which might have the MCP server config for integrated_browser.
Confirmed:
trae-remote-official:browserplugin: user_enabled=true ✓trae-remote-official:chromeplugin: user_enabled=false ✓ (external chrome is disabled)
Now let me find the MCP server config for “integrated_browser”. The MCP server directory is at C:\Users\xuhui\.trae-cn\mcps\s_6a714b6b6123e539b879426b-2d6ea921\. Let me check what’s in the parent directories - there might be a .mcp.json or config.
The MCP directory only contains the tool definitions and SERVER_METADATA.json. These are the tool schemas that get exposed to the AI agent. The actual MCP server is likely the “ai-agent” (the s_... id is a session/server id). The tool definitions here are cached schemas.
The key insight: integrated_browser MCP server provides the browser tools. The plugin-config.json confirms both plugins are enabled (browser enabled, chrome disabled).
So the conclusion for the user’s question (“确认设置中 AI 代理 → 浏览器自动化 未被改为 off 或 chrome”):
AI.agent.v2.browserAutomation— NOT set anywhere (user settings, machine settings, workspace, state DBs) → default “browserTab” (内置浏览器) applies. ✓ NOT off, NOT chrome.- Browser plugin (trae-remote-official:browser) — user_enabled: true ✓
- Chrome plugin (trae-remote-official:chrome) — user_enabled: false ✓ (external chrome not enabled)
- The integrated_browser MCP server exists with all browser tools defined.
Let me also check the installed-plugins.json to confirm, and verify there are no other settings locations like a config.json at the IDE level. Actually, I’ve been thorough enough.
One more thing worth checking: the CachedConfigurations\defaults\configurationDefaultsOverrides\configuration.json — this might contain server-pushed defaults that override. Let me quickly check it for browser keys. Also let me check the ai-agent sandbox config for the current session which might define which tools are available (this could explain why tools aren’t exposed to me).
Actually, let me check the sandbox config files since they might show the MCP/tools configuration for sessions. The file 6a714b6b6123e539b879426d.json matches the mcp directory id prefix 6a714b6b6123e539b879426b… similar but not identical. Let me check these sandbox files for tool config.
Actually, let me stay focused on the user’s request: confirm the browser automation setting isn’t off or chrome. I’ve confirmed that. Let me do one final check of the CachedConfigurations override file and the ai-agent vm tools.json to be thorough, then report.
No browserAutomation override in the defaults override file.
Now let me check the ai-agent sandbox config for the current session, which might reveal the tools config and explain why browser tools weren’t exposed to me. Let me check the sandbox files.
清理临时脚本,然后给出结论。
This is a sandbox permission config, not related to browser tools.
OK, I have enough information now. Let me clean up the temp script and give the final report.
Summary of findings for the user’s request (“确认 AI 代理 → 浏览器自动化 未被改为 off 或 chrome”):
- User settings ([settings.json](file:///C:/Users/xuhui/AppData/Roaming/TRAE%20SOLO%20CN/User/settings.json)): 只有
AI.rules.importClaudeMd和AI.toolcall.v2.ide.command.mode,没有AI.agent.v2.browserAutomation→ 使用默认值。 - 配置默认值(IDE 内置 schema):
AI.agent.v2.browserAutomation默认 = “browserTab”(内置浏览器,非 off,非 chrome)。 - 状态数据库(globalStorage/workspaceStorage 的 state.vscdb):无任何 browser 相关键 → 未在 UI 中改动过。
- 云端/默认覆盖配置(CachedConfigurations/configurationDefaultsOverrides):无 browserAutomation 覆盖。
- 插件状态(plugin-config.json):
trae-remote-official:browser(内置浏览器)→ user_enabled: true ✓trae-remote-official:chrome(外部 Chrome)→ user_enabled: false ✓
- 内置浏览器 MCP 工具(integrated_browser)已注册:browser_navigate / browser_snapshot / browser_type / browser_click 等 20 个工具定义存在。
结论:设置确认无误 —— 浏览器自动化未被改为 off 或 chrome,处于内置浏览器(browserTab)启用状态,且内置浏览器插件已启用、外部 Chrome 插件已禁用。工具未在本会话注入属于会话层问题。
Also I should delete the temp script file I created in the project directory.
Now give the final report. Be concise and clear.
检查结果:浏览器自动化设置确认正常 
我检查了所有可能的配置位置,确认 AI 代理 → 浏览器自动化 没有被改为 off 或 chrome:
| 检查位置 | 结果 |
|---|---|
| [用户设置 settings.json](file:///C:/Users/xuhui/AppData/Roaming/TRAE%20SOLO%20CN/User/settings.json) | 无 AI.agent.v2.browserAutomation 键 → 走默认值 |
| 配置默认值(IDE 内置) | AI.agent.v2.browserAutomation 默认 = browserTab(内置浏览器,非 off 非 chrome) |
| 全局/工作区状态库(state.vscdb) | 无任何 browser 相关键,说明未在设置 UI 中改动过 |
| 云端配置覆盖(CachedConfigurations) | 无 browserAutomation 覆盖 |
| 插件状态([plugin-config.json](file:///C:/Users/xuhui/.trae-cn/plugin-config.json)) | 内置浏览器插件 browser = enabled ✓;外部 Chrome 插件 chrome = disabled ✓ |
| 内置浏览器 MCP 工具(integrated_browser) | 20 个 browser_* 工具定义均已注册(navigate/snapshot/type/click 等) |
结论:设置层面完全正常 —— 浏览器自动化处于"内置浏览器(browserTab)"启用状态,内置浏览器插件已启用、外部 Chrome 已禁用,MCP 工具链也已注册。上一轮"工具未注入当前会话"是会话创建/工具注入层面的临时问题,不是配置问题。
建议:新建一个对话会话(或重启 IDE 后重开对话)再试一次,browser_* 工具应当会正常注入,届时我可以直接执行打开 baidu.com 搜索 azithromycin 的测试。
903139266137433:91aa5909f44578ab50a98a787236ed42_6a715a556123e539b87946c1.6a7160fb2528a065e3c75fac.6a7160fb2528a065e3c75faa:TRAE Work CN.0.1.43.no_sid.no_ppe.T(2026/8/4 11:48:11)
让我查看内置浏览器的运行日志和错误信息。
The user is asking about the integrated browser MCP tool failing to start. Let me check the logs and try to understand what’s happening with the integrated_browser MCP.
Let me look at the most relevant log files - the “Built-in MCP” log and the mcp-servers-host.log for today.
关键线索!查看内置 MCP 激活日志:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
[Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false
[Computer Use] Skipped registration: dynamicConfig=false, settings=false
内置浏览器 MCP 工具是通过 Computer Use(record & replay) 插件动态注册的,而该插件当前 enabled=false。让我查看 Computer Use 的设置。
Now I can see the issue clearly. The 1-Built-in MCP.log shows:
[2026-08-04T03:36:04.282Z] [builtin-mcp] activate start
[2026-08-04T03:36:04.282Z] [builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
[2026-08-04T03:36:04.699Z] [Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false
[2026-08-04T03:36:04.699Z] [Computer Use] Skipped registration: dynamicConfig=false, settings=false
The built-in MCP is activating, but it’s tied to the computer-use plugin. The integrated_browser MCP that was configured isn’t starting at all—it’s only registering when the computer-use plugin is enabled, which currently shows as disabled.
现在清楚了根因。让我再确认一下集成浏览器工具的定义文件,以及如何在设置中开启。
Now I have a clear picture. The 1-Built-in MCP.log shows:
[builtin-mcp] activate start[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use[Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false[Computer Use] Skipped registration: dynamicConfig=false, settings=false
The integrated_browser tools are only registered when the Computer Use feature is enabled. The Computer Use feature is controlled by AI.soloLite.computerUse.enable or AI.ide.computerUse.enable settings, both defaulting to false.
But the .trae-cn\mcps directory actually has the integrated_browser tools cached, which suggests they were registered at some point in a previous session. Let me check if the tool definition files are present.
Now I see the full picture. Let me look at the specific lines around line 1373 to understand the condition for integrated_browser registration.
Now I have all the information needed to provide a comprehensive answer. Let me summarize what I found:
-
Root cause: The integrated_browser MCP tools (browser_navigate, browser_snapshot, browser_type, browser_click, etc.) are registered dynamically through the Computer Use plugin system. The log shows:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use [Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false [Computer Use] Skipped registration: dynamicConfig=false, settings=false -
The settings
AI.soloLite.computerUse.enable(UAn) andAI.soloLite.recordReplay.enable(qAn) control this behavior. Both are set tofalseby default, though recordReplay can be enabled separately. -
The MCP tools definition files exist at
C:\Users\xuhui\.trae-cn\mcps\s_6a714b6b6123e539b879426b-2d6ea921\solo_work_lite\integrated_browser\tools\, but they’re not being registered because the Computer Use plugin is disabled.
The issue is clear now: even though the integrated browser tools are defined, they’re not being activated because the underlying Computer Use plugin isn’t enabled.
找到根本原因了。
诊断结果
内置浏览器 MCP 工具无法启动的根因:
从激活日志 [1-Built-in MCP.log](file:///C:/Users/xuhui/AppData/Roaming/TRAE%20SOLO%20CN/logs/20260804T113601/window1/exthost/output_logging_20260804T113604/1-Built-in%20MCP.log) 可以看到:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
[Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false
[Computer Use] Skipped registration: dynamicConfig=false, settings=false
内置浏览器(integrated_browser)的 MCP 工具是通过 Computer Use 插件动态注册的,而 Computer Use 功能当前处于禁用状态,所以 browser_navigate、browser_snapshot 等工具从未被注册到当前会话。
解决方案
需要启用 Computer Use(Record & Replay) 功能。有两个相关设置:
| 设置键 | 默认值 | 说明 |
|---|---|---|
AI.soloLite.computerUse.enable |
false |
Solo Lite 模式下的 Computer Use |
AI.soloLite.recordReplay.enable |
true |
仅 Record & Replay 功能(默认已开) |
操作步骤:
- 在 TRAE SOLO CN 中打开设置(
Ctrl+,) - 搜索
AI.soloLite.computerUse.enable - 将其设为
true
或者直接在 [settings.json](file:///C:/Users/xuhui/AppData/Roaming/TRAE%20SOLO%20CN/User/settings.json) 中添加:
{
"AI.rules.importClaudeMd": true,
"AI.toolcall.v2.ide.command.mode": "alwaysRun",
"AI.soloLite.computerUse.enable": true
}
重启 IDE 后,内置浏览器的 MCP 工具(browser_navigate、browser_snapshot 等 20 个工具)应当会被正常注册并注入到对话中。
注意:启用 Computer Use 后,AI Agent 将获得浏览器控制能力,用于自动化网页操作。如果测试完成后不再需要,可以改回 false。
903139266137433:d2bf36266ed85543e37ace7c75ae6222_6a715a556123e539b87946c1.6a7170b67faa47d190bae856.6a7170b67faa47d190bae854:TRAE Work CN.0.1.43.no_sid.no_ppe.T(2026/8/4 12:55:18)
让我先确认内置浏览器工具是否已注入。
The user wants me to use the built-in browser to test opening baidu.com and searching for “azithromycin”. Let me first check if the browser tools are now available in this session.
工具定义文件还在。让我检查重启后内置浏览器工具是否已激活。
The MCP tools are still there. But I need to check if the browser tools are now available in my current session. Let me check the latest logs to see if the computer use plugin was enabled and the integrated browser tools were registered.
日志显示重启后配置已读取(settings=true),但插件状态仍为 gatedIn=false, installed=false,说明 cuConfig 的 enable 仍为 false——这是服务端动态配置覆盖的结果。让我深入查看。
The logs show that even after the restart (at 12:54:55), the Computer Use plugin is still enable=false:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
[Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false
But wait - I see a key difference in the second session log (125455):
[Computer Use] Skipped registration: dynamicConfig=false, settings=true
vs the previous session:
[Computer Use] Skipped registration: dynamicConfig=false, settings=false
So settings=true in the second session - this means the settings were loaded (the AI.soloLite.computerUse.enable: true was picked up). But the plugin is still enable=false. This suggests that the cuConfig.enable is NOT simply reading from AI.soloLite.computerUse.enable setting. It might be reading from a different setting or the server-side config.
Let me look at what cuConfig is. The log says cuConfig: enable=false, plugin=trae-remote-official:computer-use. So the cuConfig has enable=false. This might be a cloud-side dynamic config that overrides the local settings.
Actually, looking at the code I found earlier:
UAn="AI.soloLite.computerUse.enable"
The settings key is AI.soloLite.computerUse.enable. But the plugin state shows gatedIn=false, installed=false, enabled=false. The installed=false is interesting - it means the computer-use plugin hasn’t been installed. The gatedIn=false means it’s not gated in (feature flag).
The issue is that gatedIn=false - the plugin isn’t being loaded at all because it’s gated. This is likely a server-side feature flag. The settings change alone isn’t enough - the feature needs to be enabled on the server side too.
Let me check the logs more carefully to understand what’s happening with the plugin initialization.
The key insight is that the plugin state shows installed=false, which means the computer-use extension isn’t even being loaded. Combined with gatedIn=false, this suggests the feature is gated by server-side configuration. I need to check if there’s a way to bypass this gating or if the feature needs to be enabled server-side first.
I'm seeing the extension activation logs now, which should show whether the builtin-mcp extension is loading and what state it's in. The previous session had `settings=false` and skipped registration, but this new session shows `settings=true` yet still skipped - so the settings are being read but the extension itself isn't installing. This points to the gating being the real blocker.
The logs show that even after the restart with the settings change, the builtin-mcp plugin still reports:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
[Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false
This means the cuConfig.enable is still false even though we set AI.soloLite.computerUse.enable=true. The cuConfig is likely coming from the server-side dynamic config, not from the local settings. The settings=true means the local settings were loaded, but the cuConfig.enable=false suggests the server config is overriding it.
I need to dig into the ai-agent logs around those line numbers to see what the server is actually returning, and also check the dynamicConfig log to understand how these configurations are being resolved.
Now I see the full picture. The cuConfig: enable=false is coming from the server-side dynamic config. The dynamic config response is {\"success\":true,\"hasData\":true,\"isSuccess\":true} - which seems to be a minimal response. The cuConfig.enable=false means the server-side config is overriding the local settings and keeping Computer Use disabled.
This is a server-side gating issue - the cuConfig (Computer Use config) is being set to enable=false by the server-side dynamic configuration. Even though we set AI.soloLite.computerUse.enable=true locally, the server config is overriding it.
The key log line is:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
The cuConfig comes from the server-side dynamic config, not from the local settings. The local settings (settings=true) are being read, but the server config takes precedence and forces enable=false.
This means I can’t enable the built-in browser tools through local settings alone - the feature needs to be enabled on the server side, either through a product update, a server-side feature flag, or by reaching out to TRAE support to get it enabled for this user account.
现在我完全了解了情况。让我直接说明问题所在。
诊断结论
修改设置已经生效(settings=true),但内置浏览器工具仍无法启动。根本原因是服务端动态配置(Dynamic Config)强制覆盖:
[builtin-mcp] cuConfig: enable=false, plugin=trae-remote-official:computer-use
[Record & Replay] Reconcile skipped: trigger=extension activation, dynamicConfig=false, settings=true
[Computer Use] Plugin state: gatedIn=false, installed=false, enabled=false
[Computer Use] Skipped registration: dynamicConfig=false, settings=true
关键对比:
- 旧日志(之前):
dynamicConfig=false, settings=false— 本地设置和动态配置都为 false - 新日志(重启后):
dynamicConfig=false, settings=true— 本地设置已读取,但服务端动态配置cuConfig.enable仍为 false,覆盖了本地设置
cuConfig 来自服务端接口 https://api.trae.com.cn/icube/api/v1/native/config/query,该配置控制 Computer Use 插件的启用状态。当前该服务端配置将 enable 设为 false,本地 settings.json 的修改无法覆盖。
解决方案
这属于服务端功能灰度控制,客户端设置无法绕过。你有以下选择:
- 联系 TRAE 官方支持,说明你的账号(UID: 903139266137433)需要启用 Computer Use / 内置浏览器自动化功能
- 等待产品更新,该功能可能在后续版本中逐步开放
- 临时替代方案:如果测试需求紧急,可以考虑启用外部 Chrome 浏览器模式(需安装 TRAE Chrome 扩展),设置
"AI.agent.v2.browserAutomationMode": "chrome",但这也需要 Chrome 扩展配合
内置浏览器工具的功能启用不在用户可控范围内,需要产品侧开放权限。




