yuzi-ska/DSH-Chrome-devtools

Plugin插件 Native原生 ⭐ 4 Search & Web Access搜索与联网

用于DeepSeek Harness代理的真实Chrome浏览器控制,由Chrome DevTools MCP驱动

Project Overview项目介绍

DSH-Chrome-DevTools integrates the chrome-devtools-mcp server into DeepSeek Harness, exposing 28 browser automation tools covering navigation, clicks, form filling, DOM snapshots, screenshots, console messages, network request capture, performance traces, and Lighthouse audits. Install with one command; the server downloads via npx on first use, then stays resident. Use it for web scraping, UI validation, or automated testing. Caveat: browser capability equals shell-level trust, so run only in trusted sessions.

DSH-Chrome-DevTools 插件把 chrome-devtools-mcp 服务器接入 DeepSeek Harness,提供 28 个浏览器自动化工具,支持导航、点击、表单填写、DOM 快照、截图、控制台读取、网络请求捕获、性能轨迹录制和 Lighthouse 审计。安装一条命令完成,首次 npx 下载后常驻;适用于网页抓取、UI 验证、自动化测试等场景。提示:浏览器能力等同 shell 信任,请只在可信会话使用。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:yuzi-ska/DSH-Chrome-devtools

yuzi-ska/DSH-Chrome-devtools 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-chrome-devtools — DeepSeek Harness × Chrome DevTools 集成

English | 中文

让 DeepSeek Harness 的 Agent 通过 chrome-devtools-mcp 驱动一个真实 Chrome 浏览器:导航、点击、输入、截图、DOM 快照、控制台、网络请求、性能轨迹、Cookie。

唯一安装方式:官方 dsh plugin 一键安装(GitHub 源,无需克隆本仓库)。 本仓库根目录就是官方 bundle 插件包(package.json 声明 dsh.bundlecordis.patch.yml 是补丁层):MCP 服务器行由插件自带,安装后开箱即用, 不需要安装任何附加组件、不需要自己配置 MCP。

特性

  • 一键安装dsh plugin add github:... 一条命令,自动进入 profile 补丁层栈,零手工配置
  • npx 开箱即用:服务器经 npx -y chrome-devtools-mcp@latest 首次自动下载 (与 Claude Code / Claude Desktop / Cursor 的 chrome-devtools-mcp 用法一致), 之后命中 npx 缓存秒级启动——不需要全局安装、不需要任何前置步骤
  • 全局可用:宿主重启后,所有会话(含子 agent)都能用 mcp__chrome-devtools__* 工具
  • 真实浏览器:有头或无头 Chrome、多标签、Cookie、网络拦截、性能轨迹,一应俱全
  • 自动重连:服务器崩溃由 dsh-mcp-client 指数退避重启,失败预算防无限重启
  • 跨平台:Windows / macOS / Linux;仓库自带零依赖安装脚本(纯 Node 标准库)

环境要求

依赖 说明
DeepSeek Harness 随官方发布,自带 @deepseek-ai/dsh-mcp-client 桥接插件
Node.js ≥ 20 npx 在 PATH 上(Node 自带)
pnpm dsh plugin 的底层包管理器(npm i -g pnpmcorepack enable
Chrome / Chromium / Edge 本机安装;可在插件 args--channel 指定

安装

dsh plugin --profile web add github:yuzi-ska/DSH-Chrome-devtools

(非 web 界面可把 web 换成你的 profile 名,如 tui / headless。)

安装后重启宿主dsh web / 你的启动方式)。重启后所有会话都会出现 mcp__chrome-devtools__navigate_pagetake_snapshottake_screenshotlist_console_messagesget_network_requestperformance_start_trace 等工具(以服务器实际声明为准),无需任何额外配置。

首次使用会经 npx 下载服务器(约 30-60 秒)+ 启动 Chrome;之后常驻、秒级启动。

卸载:

dsh plugin --profile web remove dsh-chrome-devtools

仓库一键脚本(开发/本机场景)

git clone https://github.com/yuzi-ska/DSH-Chrome-devtools.git
cd DSH-Chrome-devtools

node scripts/install.mjs            # 安装到 web profile(本地 link,改代码重启即生效)
node scripts/install.mjs --check    # 环境自检(只读)
node scripts/install.mjs --uninstall
node scripts/install.mjs [options]
  --check             环境自检:node/pnpm/dsh/浏览器/DSH_HOME,不写任何文件
  --uninstall         卸载(dsh plugin remove)
  --profile <name>    目标 profile(默认 web)
  --dsh-home <path>   覆盖 DSH_HOME(默认 $DSH_HOME 或 ~/.dsh)
  --harness <path>    harness 仓库/安装路径(dsh 不在 PATH 时用 node 直接跑 CLI)
  --plugin-spec <s>   插件源(默认本仓库根目录;可填 npm 包名、git 源或本地路径)
  --package-name <n>  卸载时按此包名移除(默认 dsh-chrome-devtools)

架构

Harness(profile 组装)
   │
   │  bundle 插件补丁层(本仓库 cordis.patch.yml)
   ▼
@deepseek-ai/dsh-mcp-client 行(stdio,随 Harness 发布,配置由插件内置)
   │
   ▼
chrome-devtools-mcp 服务器(npx -y chrome-devtools-mcp@latest,宿主进程 spawn,首次自动下载,之后缓存命中)
   │
   │  Chrome DevTools Protocol
   ▼
一个共享的 Chrome 实例(自动启动本机已安装的 Chrome/Chromium/Edge)
  • 每个 MCP 工具以 mcp__chrome-devtools__<tool> 名称注册进 ctx.tools,模型当作原生工具调用。
  • 一个 profile 只挂载一份常驻服务器:所有会话共享同一个浏览器。
  • 服务器崩溃由 dsh-mcp-client 的 supervisor 以指数退避自动重连;连续失败 10 次后工具注销(重启宿主恢复)。
  • 单次工具调用最长 120 秒(可配置)。

工具能力

以服务器实际声明为准(当前版本 28 个工具):

工具(mcp__chrome-devtools__ 前缀)
页面 navigate_page / new_page / close_page / select_page / list_pages / resize_page
快照 take_snapshot(DOM/无障碍树)/ take_screenshot(截图)
交互 click / fill / fill_form / type_text / press_key / hover / drag
脚本 evaluate_script(页面内执行 JS,返回 JSON)
模拟 emulate(视口/网络/UA/地理/色域)
控制台 list_console_messages / get_console_message
网络 list_network_requests / get_network_request(含请求/响应体)
性能 performance_start_trace / performance_stop_trace / performance_analyze_insight
审计 lighthouse_audit
其他 handle_dialog / upload_file / wait_for

配置参考

默认配置已开箱即用;以下为可选项(改 cordis.patch.yml 后需重启宿主)。

mcp 行(插件内置)

- id: mcp-chrome-devtools
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: chrome-devtools     # 工具命名空间:mcp__chrome-devtools__*
    transport: stdio
    command: npx
    args: ['-y', 'chrome-devtools-mcp@latest']
    toolCallTimeoutMs: 120000
    failOnStartupError: false
字段 默认 说明
serverName chrome-devtools [A-Za-z0-9_-]{1,32},进程内所有 mcp-client 实例唯一
command / args npx -y ... stdio 启动命令;与 Claude Code 生态一致;Windows 下 npx 由 SDK 的 cross-spawn 正确解析
toolCallTimeoutMs 120000 单次工具调用超时;页面加载/轨迹录制建议放宽
failOnStartupError false true 时首连失败直接拒绝所在组装;false 时记日志并按退避重连
env / cwd 附加环境变量 / 工作目录(默认继承宿主)
reconnect.* 见文档 重连预算:initialDelayMs 500 / maxDelayMs 30000 / maxAttempts 10

chrome-devtools-mcp 服务器选项(放进 args

选项 作用
--headless 无头模式,不弹窗口
--channel <name> 选择浏览器:chrome(默认)/ stable / beta / dev / canary / msedge / 可执行文件路径
--browserUrl <url> 附加到已在调试端口运行的 Chrome(如 http://localhost:9222
--isolated 每个服务器进程使用全新隔离的 Chrome profile
--viewport <WxH> 固定窗口/视口尺寸,如 1280x720
--proxy-server <url> 为浏览器设置代理
--user-data-dir <path> 自定义 Chrome 用户数据目录
--keepAlive 所有 MCP 连接关闭后保持服务器存活(默认开启)

完整清单以官方 docs/cli.md 为准。

共享语义

  • 工具注册在 host 组装:profile 下每个 agent(含子 agent)都可见。
  • 所有会话共享一个浏览器与服务器进程,会话之间的浏览器状态(标签、Cookie、控制台缓冲)互相可见。
  • 需要隔离的浏览器场景:修改 serverNameargs(如 --isolated 或单独 --user-data-dir)另装实例。

安全说明

  • 浏览器能力与 shell 访问同级信任:可读写 Cookie、发任意请求、访问内网。只给可信会话使用。
  • 页面内容(DOM 快照、控制台、响应体)会进入模型上下文与会话日志,注意敏感页面。
  • 全局模式下每个请求都会携带该组工具的 schema(token 成本)。
  • failOnStartupError: false 下,服务器持续崩溃会消耗重连预算后注销工具——这是 刻意的失败可见性,不会无限重启。

故障排查

现象 处理
首次调用较慢(30-60s+) npx 首次下载 + Chrome 首次启动,一次性成本;之后命中缓存、常驻
无浏览器工具出现 看宿主日志的 mcp-client(chrome-devtools) 行:reconnecting(warn)、recovered(info)、disabled-loss(error)
安装后工具没出现 bundle 插件在启动时加载,必须重启宿主;profile 补丁层的配置热重载对新增行不生效
Chrome 未安装/找不到 args--channel(如 msedge),或确认默认 Chrome 存在
npx 无法下载 检查 npm registry 网络;可固定版本 args: ['-y', 'chrome-devtools-mcp@<固定版本>'] 减少漂移
想附加已开的 Chrome Chrome 以 --remote-debugging-port=9222 启动后,args--browserUrl http://localhost:9222
dsh plugin 报 pnpm 缺失 安装 pnpm(npm i -g pnpmcorepack enable
工具调用超时 单次 120s;网络差或页面卡死时提高 toolCallTimeoutMs
从本地 link 切换 GitHub 源报 EPERM Windows junction 无法被 pnpm rename 覆盖:先 dsh plugin remove,再 add 新源

开发与迭代

git clone https://github.com/yuzi-ska/DSH-Chrome-devtools.git
cd DSH-Chrome-devtools

# 本地 link 安装(改 cordis.patch.yml 后重启即生效;无需每次推送)
node scripts/install.mjs --harness <harness仓库路径>

# 无重启验证组装树(boot-free)
node <harness>/apps/cli/lib/bin.js --profile web --dump-config | grep -A8 mcp-chrome-devtools
  • 推送后远程安装:dsh plugin --profile web add github:yuzi-ska/DSH-Chrome-devtools
  • 内部开发文档 docs/development.md 不上传远程(.gitignore 排除)。

参考

上一个 Prev dsh-proactive 下一个 Next dsh-GreaterClarity-plugin