deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:youyli03/dsh-bib
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
在 DSH(DeepSeek Harness)对话内嵌入可控的真实浏览器视口 —— 人和 AI 代理共享同一个浏览器标签页。
通过 Edge 扩展(chrome.debugger)+ 本地中继桥,让 AI 代理和人类共同操作同一个真实浏览器标签页:AX 树感知、坐标/ref 点击、实时画面预览、单标签锁定(AI 操作不打断你的浏览)。复用你的真实 Edge 登录态,无需 headless、无需重新登录。

详细规格见
docs/spec.md(v1 定稿 · 已实现)。
| 能力 | 说明 |
|---|---|
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。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 加载,重启后消失。edge://extensionsextension/ 目录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(唯一需要改的位置)。
在对话中让模型调用 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(此时会短暂激活标签页)。<select> 可后台直接设值;依赖 UI 点击的自定义下拉可能需要前台。Math.random 生成(Host 沙箱无 CSPRNG builtin),正式部署建议自行加固。browser_switch / browser_open(会激活目标标签)。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。