youyli03 / dsh-bib

Listed

Embed a controllable real-browser viewport inside DeepSeek Harness — shared by humans and AI agents via an Edge extension + local relay bridge.

masterTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:youyli03/dsh-bib

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit d38df7aSynced Aug 18, 2026

dsh-bib

在 DSH(DeepSeek Harness)对话内嵌入可控的真实浏览器视口 —— 人和 AI 代理共享同一个浏览器标签页。

通过 Edge 扩展(chrome.debugger)+ 本地中继桥,让 AI 代理和人类共同操作同一个真实浏览器标签页:AX 树感知、坐标/ref 点击、实时画面预览、单标签锁定(AI 操作不打断你的浏览)。复用你的真实 Edge 登录态,无需 headless、无需重新登录。

dsh-bib 实际运行预览

详细规格见 docs/spec.md(v1 定稿 · 已实现)。


为什么需要它

  • AI 代理操作真实浏览器:不是截图猜测,而是通过 CDP 拿到页面的语义 AX 树(带坐标与稳定 ref),像人一样点击、输入、滚动。
  • 复用真实登录态:直接 attach 你日常使用的 Edge 标签页,登录过的站点(小红书、Google、企业后台等)开箱即用。
  • 人和 AI 共享视口:DSH 对话里嵌一个浏览器窗口,模型操作时画面实时跟进;你也可以随时切到真实 Edge 手动操作,互不干扰。
  • 单标签锁定:AI 永远在同一个标签页操作,点击链接弹出的新标签会被自动关闭,你的浏览器焦点永远不会被 AI 操作抢走。

特性

能力说明
browser_* 工具集status / open / navigate / go / reload / click / type / scroll / screenshot / eval / tabs / switch / activate / stop
AX 树感知每次操作后返回最新完整语义树(role + 名称 + 视口坐标 + ref_N 稳定引用);双通道提取:DOM walk 骨架 + CDP Accessibility 浏览器权威语义(覆盖 aria/shadow DOM,全站点通用),data-* 与无文本链接兜底(Steam 库存卡片类)
ref 点击树节点带 ref,点击时自动滚动到元素并点中心,无需手动算坐标
实时画面操作后主动截帧 + 2s 周期刷新,页面自身变化(懒加载/动画)也能跟上
单标签锁定target=_blank 新标签自动关闭;AI 操作(导航/点击/输入/滚动)全部后台进行,浏览器焦点不被抢
自动发现扩展经 DSH Web 路由 /dsh-bib/bridge-info 自动发现桥的端口与令牌,免手动配对
保活机制页面心跳动画 + chrome.alarms,规避 MV3 Service Worker 30s 空闲限制

架构

┌─────────────┐     HTTP + X-Bib-Token     ┌──────────────┐    stdin/stdout    ┌──────────────┐
│  Edge 扩展  │ ─────────────────────────▶ │  中继桥      │ ◀────────────────▶ │ DSH Host 插件 │
│ (debugger)  │ ◀───────────────────────── │ (bridge.js)  │    JSON 命令/事件  │ (host.js)     │
└─────────────┘     帧/命令结果/事件       └──────────────┘                   └──────┬───────┘
      │                                                              browser_* 工具 + bib/* RPC
      │ chrome.debugger attach 真实标签                                 │
      ▼                                                                 ▼
┌─────────────┐                                          ┌──────────────────────────┐
│ 真实浏览器   │                                          │ DSH Web GUI              │
│ (你的登录态) │                                          │ 对话内嵌浏览器窗口        │
└─────────────┘                                          │ (conversation.input.dock)│
                                                         └──────────────────────────┘
  • 扩展extension/):MV3 service worker,chrome.debugger attach 真实标签页,转发 CDP 帧/事件到桥,从中继桥取命令执行。
  • 中继桥bridge/bridge.js):零依赖 Node http 服务,命令队列(FIFO)、长轮询、鉴权(X-Bib-Token + Origin 校验)、CORS。
  • DSH 插件
    • 持久静态插件plugin-pkg/):npm 包形式固化的 bundle,挂进 web profile 后重启 DSH 仍然存在。Host 半区(lib/index.js)提供 14 个 browser_* 工具 + /dsh-bib/* HTTP RPC + 自动发现路由;Client 半区(lib/client.js,ModuleLoader bundle)把浏览器窗口注入 conversation.input.dock
    • 动态版本(plugin/ + deploy.json):开发/演示用,经 cordis_define 加载,重启后消失

安装

1. 加载 Edge 扩展

  1. 打开 edge://extensions
  2. 打开「开发人员模式」
  3. 点击「加载解压缩的扩展」,选择本仓库的 extension/ 目录

2. 安装持久静态插件(一键,重启仍在)

powershell -ExecutionPolicy Bypass -File scripts\install-static.ps1

脚本会把 plugin-pkg 以 junction 挂进 ~/.dsh/profiles/web/node_modules、补 @deepseek-ai/dsh-tools 解析链、在 profile 的 package.json 里追加依赖与 bundle(幂等,可重复运行)。然后重启 dsh web 生效,之后每次重启都在。

旧版动态安装(npm run build + npm run deploy + 让 AI 用 cordis_define 部署)仅用于开发调试,重启即失效。

若 DSH Web 端口不是 3080,修改 extension/background.js 顶部的 DSH_ORIGIN(唯一需要改的位置)。

3. 启动

在对话中让模型调用 browser_open <url>,扩展会自动发现桥并 attach 标签页。首次可能需要:打开扩展 popup 点一次「连接」完成 attach(部分 Edge 版本要求用户手势)。

使用

模型通过 browser_* 工具操作浏览器:

browser_open("https://www.xiaohongshu.com")   # 打开页面(当前标签内导航)
browser_tabs()                                 # 列出标签
browser_click(ref="ref_42")                    # 按树节点 ref 点击(自动滚动+点中心)
browser_type(text="关键词\n")                   # 输入文本(支持中文;末尾 \n 回车)
browser_scroll(dy=400)                         # 滚动
browser_screenshot()                           # 取当前帧
browser_eval(expression="...")                 # 执行 JS 取回结果

人类可以在 Edge 里直接操作同一个标签页;DSH 对话内的浏览器窗口会实时跟随(≤2s)。

测试

中继桥有冒烟测试(19/19 通过):

cd bridge
node bridge.test.mjs

目录结构

dsh-bib/
├── bridge/            # 中继桥(bridge.js + 冒烟测试)
├── docs/
│   ├── spec.md        # v1 定稿规格
│   └── archive/       # 历史设计文档
├── extension/         # Edge MV3 扩展(background + popup)
├── plugin/            # DSH 动态插件(host.template.js + 构建生成的 host.js + client.jsx)
├── plugin-pkg/        # DSH 持久静态插件(lib/index.js Host + lib/client.js Client + cordis.patch.yml)
└── scripts/           # 构建脚本(build-host.mjs / deploy.mjs / install-static.ps1)

已知限制

  • browser_type 输入:采用 DOM 方式注入(不打断浏览器焦点);对极少数依赖真实键盘事件序列的富文本编辑器可能不完整,会回退到 CDP(此时会短暂激活标签页)。
  • 自定义 JS 下拉组件:原生 <select> 可后台直接设值;依赖 UI 点击的自定义下拉可能需要前台。
  • 桥令牌:PoC 使用 Math.random 生成(Host 沙箱无 CSPRNG builtin),正式部署建议自行加固。
  • 多标签:单标签锁定模型下,从当前标签弹出的新标签会被自动关闭;若需多标签,模型可显式 browser_switch / browser_open(会激活目标标签)。

License

MIT

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

Plugin manifestDetected
TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 17, 2026, 11:45 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.