dsh-doyourweb
Verifieddsh-doyourweb · v0.1.6 · MIT · Web UI
Browser tabs, element annotations and MCP/CLI-first desktop app control for DeepSeek Harness
Install
dsh plugin add dsh-doyourweb Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-doyourweb
本地 HTML:在 Chrome / Edge 扩展详情中开启“允许访问文件网址”,重新加载扩展后,已打开的 file:// 页面会出现在 @ 菜单,可读取、操作和批注。该开关由浏览器管理。
让 DeepSeek Harness 引用并操作你已经打开、保持登录的 Chrome 和 Edge 页面,用精简的页面上下文和批量操作减少重复读取。
0.1.6 改善桌面输入、快照句柄与连接界面,新增 app_type 打字和快捷键。支持页面元素批注和 @ Windows 应用。批注先加入聊天草稿,可积累多条后按 Enter 发送;应用控制先查匹配的 MCP,已安装的本地 MCP 直接连接,缺少时询问安装;未发现 MCP 时使用 computer use。新提出的配置、远程端点和桌面驱动首次连接仍需确认,详见批注与应用控制。
English | 简体中文

本地配对页面:将浏览器扩展连接到 DSH 插件,保留现有标签页和登录状态。
01 · 项目介绍
网页任务常常依赖已经打开的页面和已经登录的账号。dsh-doyourweb 面向希望直接在 DeepSeek Harness 中处理这些页面的用户,不需要另开自动化浏览器,也不需要导出 Cookie。
项目由 DSH 插件和配套的 Manifest V3 浏览器扩展组成。插件接入原生 @、/ 菜单,扩展提供标签页信息和控制通道。完成一次配对后,扩展会在后台重连,不必一直打开弹窗。
当前版本为 0.1.6,包和浏览器扩展版本一致,变更见更新记录。
02 · 功能预览
- 在 DSH 输入
/browser,打开连接页面并查看扩展目录。 - 在 Chrome 或 Edge 加载扩展,核对并批准四位配对码。
- 用
@或/选择已经打开的页面,再向 DSH 描述任务。
首屏截图展示的是配对界面,不是自动化任务录像。
在线体验说明
项目没有公共在线演示。启用 DSH 插件后,默认本地连接页面为 http://127.0.0.1:43187/setup。浏览器控制通过这个本地桥接服务和已安装的扩展完成。
03 · 核心功能
| 功能 | 当前实现 |
|---|---|
| 复用已有页面 | 连接 Chrome、Edge 的普通 HTTP/HTTPS 和已授权的本地 file:// 标签页,保留登录状态。 |
| 原生页面引用 | 在 DSH 的 @、/ 菜单中展示页面标题、站点和图标。 |
| 精简读取 | 使用可访问性快照,支持选择器、查询过滤和游标分页;初始引用上下文默认共用 2,400 字符预算。 |
| 批量操作 | 单次最多执行 12 个结构化动作,失败或发生导航时停止。 |
| 结果提取 | 按需返回 text、value、href 字段,每次提取最多 20 行。 |
| 简短回执 | observe: "summary" 跳过下一次页面快照;动作结果有 1,600 字符输出预算。 |
| 页面截图 | 将 PNG 保存到本地,返回文件路径,不把 base64 塞进文本上下文。 |
| 后台连接 | 保存配对配置、自动重连,并在空闲时释放调试连接。 |
| 元素批注 | 页面右上角“批注”选择元素,将说明、CSS 选择器、样式、位置和可选局部截图追加到聊天草稿;浮窗可拖动,多条批注一起发送。 |
| 应用引用 | @ 搜索运行中的 Windows 窗口,显示程序图标,用进程启动时间和窗口句柄防止旧引用误控新进程。 |
| MCP / CLI | 默认查询匹配的 MCP;支持本机 stdio、Streamable HTTP、自定义连接器和有来源的配置提议。 |
| 安装确认 | DSH 原生提问或 /apps 本地页面批准安装;固定包版本,npm 禁用安装脚本,关闭重复询问仅限已审阅和信任的来源。 |
| 桌面回退 | 使用 Cua Driver MCP,默认只读有限控件树、按需截图;尽量显示所选窗口,也支持后台执行,反复读取无变化时停止。 |
| 键盘输入 | app_type 支持文本加 Enter、Tab、Esc 或组合键;可选 expect 一次读取校验结果。 |
| 鼠标操作 | app_mouse 支持点击、双击、右键、滚动和拖拽,一次画面读取最多执行 8 个已知目标动作;前台操作单独确认。 |
浏览器输出预算按 JavaScript 字符计算,包含 JSON 转义和元数据;应用工具的 limit 限制正文,状态、步骤和图片路径等元数据另计。MCP 不重复返回相同 JSON,CLI 的 stdout 与 stderr 共用正文预算。字符数不等于模型 token 数,输出预算也不限制 DOM 遍历耗时。
WebMCP 优先控制(实验性)
0.1.1 会先检测页面提供的 WebMCP 工具。有适合任务的工具就调用,没有再读取普通页面快照。页面和工具注册未变化时,复用目录和参数校验器;成功调用后返回新的单次凭据,连续操作不用反复列工具。WebMCP 需要浏览器 API 和网站工具支持,普通网页仍使用 DOM 操作。浏览器要求、工具用法和本地测试见实验说明。
04 · 技术架构
| 层级 | 技术 |
|---|---|
| DSH 主机插件 | Node.js 22+、JavaScript ESM、Cordis 集成 |
| 原生客户端 UI | React、DSH UI primitives |
| 浏览器引擎 | Playwright Core 1.64.0、Chrome DevTools Protocol |
| 网站工具 | document.modelContext、Ajv 8.20.0 参数校验 |
| 本地桥接 | WebSocket(ws)、Zod 校验 |
| 浏览器扩展 | Manifest V3、chrome.tabs、chrome.debugger |
| 应用连接器 | 官方 MCP SDK 1.32.1、stdio / Streamable HTTP、无 shell 字符串的 CLI 参数调用 |
| 构建与检查 | esbuild、Node.js 测试运行器、GitHub Actions |
flowchart LR
subgraph DSH["DeepSeek Harness"]
UI["原生 @ / 菜单"]
Host["主机插件"]
Grants["会话授权与上下文预算"]
Engine["Playwright 引擎"]
Bridge["本地 WebSocket / CDP 转发"]
end
subgraph Browser["已有 Chrome / Edge"]
Extension["Manifest V3 扩展"]
Tabs["已登录的 HTTP/HTTPS 页面"]
end
UI <-->|"Strict Remote RPC"| Host
Host --> Grants --> Engine
Engine <-->|"CDP"| Bridge
Bridge <-->|"来源校验与配对令牌"| Extension
Extension <-->|"标签页信息与调试接口"| Tabs
Engine -->|"快照、回执、PNG 路径"| Host
Host --> Apps["应用发现与人类审批"]
Apps --> Structured["官方 / 社区 MCP 与 CLI"]
Apps --> Desktop["Cua Driver 桌面回退"]
模型的浏览器工具只能访问用户在当前会话中引用的标签页。网页内容是不可信数据,不会作为用户指令或操作授权。
05 · 快速开始
安装要求
- Node.js 22+ 和 npm。
- DeepSeek Harness;插件 API 已对照
0.2.0-rc.2检查兼容性。 - 基于 Chromium 的 Chrome 或 Edge 125+,允许开启开发者模式并加载解压后的扩展。
安装 DSH 插件
通过 npm 安装时,在 DSH 打开 插件 > 添加插件,安装源选择 npm 官方源,输入:
dsh-doyourweb
这种方式需要包已经发布。若官方源返回 404,可用下面的本地安装方式。新版本在镜像源中的同步可能有延迟。
构建并安装本地版本
git clone --branch ver0.1.3 https://github.com/SheepofSheep/dsh-doyourweb.git
cd dsh-doyourweb
npm ci
npm run build
在 DSH 中打开 插件 > 添加插件,填入构建完成后的项目目录绝对路径。插件启用时会启动桥接服务,不需要另开开发服务器。
连接浏览器
- 在 DSH 输入
/browser,打开本地连接页面。 - 打开
edge://extensions或chrome://extensions,开启开发者模式,将项目中的extension/目录作为解压后的扩展加载。 - 核对扩展徽标上的四位码与连接页面中的待配对请求,然后批准。
- 回到 DSH,用
@选择标签页并发送任务。
配对页面和扩展弹窗都可以关闭。安装 DSH 插件不会自动安装浏览器扩展。
升级 DSH 插件后,需要从托盘完全退出 DSH 再重新打开,确保加载新版本的主机模块。
配置
默认配置位于 cordis.patch.yml:
| 配置项 | 默认值 | 用途 |
|---|---|---|
port |
43187 |
本地桥接端口 |
snapshotChars |
2400 |
页面读取和初始引用上下文的字符预算 |
idleTimeoutMs |
120000 |
空闲多久后释放调试连接,单位毫秒 |
数据目录为 <DSH_HOME>/browser-tabs/;未设置 DSH_HOME 时使用 ~/.dsh/browser-tabs/。插件显式配置的 home 优先。环境变量需要设置给 DSH 进程,插件不需要单独配置模型 API Key。
使用文档
引用页面后,可以这样描述任务:
读取这个页面的结果列表,整理标题和链接,不要提交表单。
| 模型工具 | 用法 |
|---|---|
browser_read |
默认 mode: "auto" 先检测 WebMCP,没有可用工具时返回 DOM 快照。工具不适合任务时用 mode: "dom",可按 selector、query、depth 缩小范围;cursor 对 DOM 内容分页,limit 范围为 400~8,000 字符。 |
browser_act |
使用最新快照 ID,执行点击、填入、按键、选择、勾选、悬停、滚动、导航、前进后退、等待或提取。 |
browser_capture |
需要检查画面时,将截图保存到本地。 |
browser_webmcp_list |
发现页面工具,或通过 query 缩小工具目录;目录有效时可直接复用。 |
browser_webmcp_call |
用 catalog、name、arguments 调用匹配的页面工具,成功后返回 nextCatalog 供下一次调用。 |
同时授权了多个标签页时,工具调用需要通过 tab 指定已引用的页面。
批注与应用控制
安装或升级插件后,从托盘完全退出、重启 DSH,并重新加载浏览器扩展。本地开发时,先构建项目,再在 DSH 安装项目的绝对路径。不要同时启用 npm 版和本地版,以免占用同一端口。
- 批注:打开扩展弹窗,点“批注当前页面”,或者引用页面后让 DSH 开启批注。点选元素、填写说明,按 Enter 或点“加入聊天草稿”,说明和局部截图会追加到工具条所示会话的输入框。可拖动浮窗、连续添加多条批注,回到聊天后按 Enter 一起发送;Shift+Enter 换行。不再保存独立批注文件或维护批注库。受控页面右上角也会显示批注按钮。
- 应用:输入
@Unity或其他运行中的程序名,选中窗口后描述任务。AI 先用app_discover查连接器,再用app_connect请求连接或安装,最后通过app_call调用。目录未收录的连接器可凭官方文档或仓库提出配置,同样需要你确认。 - 管理:输入
/apps打开本地“应用管理”,批准请求、配置连接器和安装策略,不用一直开着。@中的文件、文件夹和对话分别显示 3 条预览,可展开或收起;单个文件夹仍可进入目录。 - 回退:结构化接口不适合当前任务时才调用
app_desktop。默认读取有限控件树、不截图;需要画面时才传screenshot: true,再用app_mouse批量点击、滚动或拖拽,最多 8 步,中间不自动截图。MCP/CLI 不要求窗口打开;桌面读取会尝试启动所选程序,重新读取后才能操作。启动失败可交由 computer use 检查,反复读取无变化会返回stop: true。使用 DSH computer-use 同源的 Cua Driver,不会绕过系统权限。
工具示例:读取页面,再提取简短的结果列表
仅有一个已授权标签页时,调用 browser_read:
{
"mode": "dom",
"depth": 8,
"limit": 2400
}
将返回的快照 ID 填入 browser_act,选择器需要替换为实际页面中的选择器:
{
"snapshot": "<latest snapshot ID>",
"observe": "summary",
"steps": [
{
"op": "extract",
"selector": "a.result-title",
"fields": ["text", "href"],
"maxRows": 10
}
]
}
这些是模型工具参数,不是终端命令。summary 不返回新快照,下次操作前需要重新读取。
06 · 项目结构与技术细节
src/
host.js 插件生命周期、工具和会话上下文
client.js 原生 @ 和 / 菜单数据源
client-entry.js React UI 与图标
bridge.js 配对、扩展连接和 CDP 转发
engine.js 快照、操作、提取与截图
annotations.js 隔离元素选取与批注直达会话
apps/ 应用枚举、发现、审批、安装和 MCP/CLI/桌面调用
manage.js 本机应用与连接器管理页面
webmcp.js 网站工具发现、路由、校验与调用
grants.js 按会话管理标签页授权
protocol.js 页面引用与 Remote RPC 描述
output.js 序列化输出预算
vendor/ 适配后的 Playwright 浏览器模型
extension/ Manifest V3 扩展和弹窗
scripts/ 构建、集成测试和兼容性检查
test/ 单元测试与测试页面
docs/setup-page.png 配对页面截图
cordis.patch.yml DSH 插件注册与默认配置
lib/ 生成的构建产物,不提交到 Git
快照与操作。 完整快照文本缓存在本地,供游标分页使用。元素引用需要有效快照;读取、操作和导航都可能让旧引用失效。同一标签页上的调用按顺序执行。取消操作会报告已完成或状态不确定的步骤,不承诺撤销已经发生的操作。
连接生命周期。 空闲时释放调试连接,但不关闭标签页;再次读取时重新连接。浏览器重启会更新页面引用所属的会话,需要重新用 @ 选择页面。
数据处理。 配对凭据和授权记录保存在本地数据目录,截图保存在其中的 captures/。已引用页面的片段会进入 DSH 模型上下文,可能发送给你配置的模型服务。不要公开配对文件和私人截图。购买、删除和敏感提交需要用户明确授权;插件没有独立的交易确认弹窗。
开发检查命令
npm run build
npm test
npx playwright-core install chromium
npm run test:browser
npm run verify:dsh -- --asar "<path to DeepSeek Harness app.asar>"
CI 配置了 Windows、Linux 单元测试,以及 Linux 上隔离的无头 Chromium 集成测试。徽章指向实际工作流状态,不是固定的“构建通过”图片。无头测试不替代日常浏览器配置与 DSH 原生界面的端到端验证。
07 · Roadmap / FAQ / License
Roadmap
0.1.3 包含页面批注、应用引用和 MCP 优先的应用控制。后续重点是更多应用的实机兼容验证与连接器配置体验,暂未公布交付时间。问题反馈和功能讨论见 Issues。
FAQ
每次都要打开扩展吗? 不需要。配对一次后,扩展会在后台重连;更新扩展文件后需要重新加载。
为什么有些页面不显示? 只提供普通 HTTP/HTTPS 和已授权的本地 file:// 标签页,不包含浏览器内部页面和无痕页面。全部页面都不显示时,先检查扩展是否启用、是否完成配对。
43187 端口被占用怎么办? 不要让两份插件同时使用同一端口。停止重复的桥接服务,或修改插件的 port 配置,并让扩展重新连接到对应端口。
目前有哪些限制? 浏览器扩展通过加载解压目录安装,尚未上架扩展商店;不支持 Firefox 和 Safari。主机 API 已对照 DSH 0.2.0-rc.2 检查,其他版本及原生界面流程仍需各自验证。
贡献与协议
欢迎提交 Issue 和 Pull Request。反馈时附上复现步骤、DSH 和浏览器版本;日志中请移除令牌、私人网页内容和账号数据。修改代码后,运行与改动相关的检查。
项目代码使用 MIT 协议。Playwright 衍生代码和 Lucide 图标保留各自协议,详见 NOTICE、Apache-2.0 和 ISC。