DeepSeek Harness Hub
← 返回列表

changyinliangbaikai/dsh-b2us-chrome-tool

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

面向 DeepSeek HarnessDSH的安全、本地 Chrome 自动化插件。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/3 · 已提供中文文档
综合分
28.5
GitHub 分
28.5
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add changyinliangbaikai/dsh-b2us-chrome-tool
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-agent-loop-testkit@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-b2us-chrome-tool

面向 DeepSeek Harness(DSH)的安全、本地 Chrome 自动化插件。

dsh-b2us-chrome-tool 通过 Chrome Manifest V3 扩展和经过身份验证的 loopback 桥接,连接用户正在使用的 Chrome 会话。它把受限的标签页、语义 DOM、页面交互、截图、可验证定位器和网络观测能力注册为 DSH tools,同时将原始页面数据隔离在独立 Browser Worker 中。

[!IMPORTANT]
本项目面向本地开发和受信任环境。它不会读取 Chrome 密码库,不会选择密码管理器候选项,也不会把密码输入框的值返回给 Agent。

[!NOTE]
dsh-b2us-chrome-tool 是项目与仓库名称。为保持兼容,当前可安装 npm 包、Cordis row、运行时路由和既有数据路径仍使用技术标识 dsh-auto-chrome-tool,因此安装及配置示例会继续使用该标识。

Harness 0.1.2-rc.1 兼容性

0.4.2 将全部 DSH 精确 peer 版本提升到 0.1.2-rc.1,不支持混用不同 Harness/插件预发布版本。Harness 在该版本中将可变的 Session 事件数组改为私有成员,因此插件现只通过公开、不可变的 snapshotEvents() 与 eventAt() 访问历史。

本次兼容调整不会改变 tools、Cordis row、HTTP 路由、扩展协议或持久化数据目录,也不需要迁移数据。请同时升级 Harness 与本插件,再重启 Profile。

核心能力

| 领域 | 插件能力 |
| --- | --- |
| 复用现有 Chrome 会话 | 控制用户已授权的现有浏览器标签页,无需另建自动化 Profile。 |
| 语义页面访问 | 返回有界的可访问名称、角色、状态和短期 opaque 元素引用,不向模型倾倒整页源码。 |
| 源侧检索 | page.find 先在页面运行时对相关元素排序,再把有限结果返回给模型。 |
| 可验证定位器 | page.locator 在实时 DOM 中生成 CSS/XPath 候选,并证明每个候选只能唯一命中目标元素。 |
| 页面交互 | 支持点击、按精确名称点击、非敏感文本输入、选择、滚动、等待和结构化提取。 |
| 截图与网络数据 | 将截图以及受限的 Fetch/XHR 元数据或正文保存为 opaque artifact,并执行脱敏、配额和过期控制。 |
| 上下文隔离 | fresh Browser Worker 接收页面数据和 Worker 专属工具;父 Agent 只接收有界的类型化结果。 |
| 可恢复交付 | 分别报告浏览器执行和文件交付状态;artifact 复制失败时可单独重试,而不重复登录、提交等浏览器动作。 |
| 安装引导 | 检测 Chrome,经 DSH 审批后准备随包扩展,并提供中英文 Harness 设置页查看状态、下载扩展及完成配对。 |
| 纵深防护 | bridge 仅监听 loopback,校验扩展 Origin,执行双向 nonce/HMAC 认证,并限制大小、并发、超时和资源生命周期。 |

工作原理

DeepSeek Harness / 父 Agent
├─ 状态、授权安装、任务委派、artifact 交付
└─ fresh Browser Worker Session
└─ Worker 专属的标签页、页面、定位器、截图和网络工具
└─ 经过身份验证的 loopback WebSocket bridge
└─ Chrome MV3 service worker
├─ 标签页与受限截图
├─ frame-aware DOM runtime
└─ 按需启用且经过脱敏的 network runtime

父 Agent 不能直接调用标签页、页面或网络低层工具。页面内容始终视为不可信输入;低层结果只保留一个 Worker 推理步骤;确定性 rollover checkpoint 不包含页面文本、网络正文、输入内容或元素引用。

安全边界

- WebSocket 服务只接受 127.0.0.1、::1 或 localhost。
- 配对 token 至少 16 个字符。token 不会写入扩展源码、URL 或 WebSocket 帧;双方通过绑定随机数的 HMAC-SHA-256 证明持有同一 token。
- 只有 chrome-extension:// Origin 可以进入鉴权阶段;正式部署建议把构建后的固定扩展 ID 写入 allowedExtensionIds。
- 插件不提供任意 JavaScript 执行或任意 Chrome DevTools Protocol 命令。
- 密码、OTP、CVV、token、secret 等字段只返回 sensitive 与 filled 状态,并拒绝向这些字段注入文本。
- Cookie、Authorization、API key、token、session 等网络数据会被脱敏;认证类 endpoint 默认不保留正文。
- 截图和网络正文 artifact 受配额、TTL 和 Worker 所有权约束,只能交付到发起 Session 的工作目录之下。
- 扩展准备必须经过 DSH 原生审批路径;插件不会修改 Chrome Profile、Preferences、Cookies、密码库或扩展策略。
- 加载 unpacked 扩展和授予本地网络权限的最终决定始终由 Chrome 与用户完成。

完整威胁模型和信任假设见安全模型。

环境要求

- Node.js ^22.19.0 || >=24.0.0
- Google Chrome 125 或更高版本
- package.json 声明的精确 DSH 0.1.2-rc.1 与 Cordis 4.0.2 peer 版本
- 至少 16 个字符的 bridge token,通过 authToken 或 DSH_AUTO_CHROME_TOKEN 提供

快速开始

桌面版内置安装

当桌面发行版已经内置本插件时,不要重复执行 dsh plugin add。

1. 在 Harness 中打开 设置 → 插件 → Chrome 浏览器。
2. 下载扩展 ZIP,并将其解压到长期保留的目录。
3. 打开 chrome://extensions,启用开发者模式,选择加载已解压的扩展程序,并选中包含 manifest.json 的解压目录。
4. 将 Harness 设置页显示的主机、端口和配对 token 复制到扩展弹窗,然后点击配对并连接。
5. 如果 Chrome 询问本地网络访问权限,请允许。返回 Harness 刷新状态,直至扩展和 bridge 均显示已连接。

设置页只读取同源 loopback 状态,并下载当前已安装插件包中的 MV3 bundle;它不会扫描 Chrome Profile 或静默安装扩展。桌面宿主必须提供 authToken 或 DSH_AUTO_CHROME_TOKEN;缺少有效 token 时插件会 fail closed。

独立开发或安装

安装依赖并运行仓库完整门禁:

npm ci
npm run check

生成 token,构建并打包插件,然后将 tarball 安装到隔离的 DSH profile:

export DSH_AUTO_CHROME_TOKEN="$(openssl rand -hex 32)"

npm run build
npm pack
dsh plugin --profile web add ./dsh-auto-chrome-tool-0.4.2.tgz
dsh --profile web --dump-config

发布 tarball 内置 fflate 与 ws 两项运行时依赖,可用于离线安装。DSH 与 Cordis 仍由宿主以 peer dependency 提供,不会复制进插件包。

配置

包自带的 cordis.patch.yml 包含完整默认配置。DSH patch 会替换整个 config 对象而不是进行深合并,因此覆盖 row 时需要保留部署所需的全部字段。

| 配置项 | 用途与默认值 |
| --- | --- |
| host / port | loopback bridge 地址;127.0.0.1:17321。 |
| authToken | 共享配对 token;为空时读取 DSH_AUTO_CHROME_TOKEN。 |
| allowedExtensionIds | 可选扩展 ID 白名单;空数组表示允许任何同时持有正确 token 的合法扩展 Origin。 |
| artifactMaxBytes / artifactTtlHours | 内部 artifact 总配额与保留时间;256 MiB、24 小时。 |
| chromeExecutablePath | 可选 Chrome 可执行文件绝对路径;为空时检查各平台标准目录和 PATH。 |
| extensionInstallDir | 稳定扩展准备目录;默认使用用户目录下的 .dsh-auto-chrome-tool/extension。 |
| openChromeOnInstall | 授权准备完成后打开 chrome://extensions;默认 true。 |
| browserWorkerLlmProvider / browserWorkerModel | 可选的 Worker 专用模型路由;两项必须同时配置。 |
| browserWorkerSoftTokenLimit / browserWorkerHardTokenLimit | fresh generation 换代阈值;96K、128K tokens。 |
| browserWorkerMaxSteps / browserWorkerMaxToolCalls | 单任务执行上限;32 个步骤、40 次浏览器调用。 |
| browserParentMaxDelegationsPerTurn | 父 Agent 单回合委派上限;8 次。 |
| browserParentMaxUnsuccessfulDelegationsPerTurn | 出现 2 次 blocked 或 failed 结果后打开仅限本回合的浏览器熔断。 |

观察、提取、网络预览、超时、历史、并发和消息大小等其他限制,以配置 schema 和默认 patch 为准。

工具隔离

父 Agent 只能看到以下浏览器相关工具:

- browser_status
- browser_extension_status
- browser_extension_install
- browser_delegate_task
- browser_artifact_deliver

fresh Browser Worker 获得低层 browser_tabs_、browser_page_ 和 browser_network_* 工具目录。执行阶段还会使用进程内身份 guard 强制执行同一边界,手工构造 tool call 也不能绕过 scoped catalog。

为 Selenium 或 Playwright 等可复用自动化生成定位器时,应要求 Worker 捕获已验证定位器。开放 Shadow DOM 会返回经过验证的 host chain;子 iframe 定位器只保证在 frame 文档内唯一,仍需单独验证 frame-switch 路径。

仓库结构

src/
browser-worker/  fresh Worker Session、隔离、预算、checkpoint
bridge/          鉴权 WebSocket 会话与生命周期
client/          Harness 设置页与中英文文案
config/          Schemastery 配置和解析
domain/          共享 JSON 与错误模型
extension/       MV3 background、DOM 和 network runtime
protocol/        版本化 DSH ↔ 扩展协议
services/        浏览器控制、定位器与 artifact 服务
settings/        同源状态和扩展下载路由
setup/           Chrome 检测、授权准备与启动引导
tools/           按能力拆分的 DSH tool 定义
extension/         manifest、popup/options UI 和扩展构建产物
tests/             单元、集成、打包、Client 与 snapshot 测试
docs/              架构、安全、开发与验证证据

开发与验证

npm run typecheck
npm test
npm run test:coverage
npm run test:snapshot
npm run test:built
npm run build
npm run check
npm pack --dry-run

npm run check 是交付前必须通过的仓库本地门禁,覆盖严格类型检查、Host/Web/扩展构建产物、行为与生命周期测试、宿主侧逐文件覆盖率门槛、打包后行为,以及已评审的无密钥 tool catalog snapshot。

自动化扩展模拟只证明协议和 bridge 行为,不能证明真实 Chrome MV3 连接、Chrome 权限弹窗、桌面打包或主观 UI 质量;这些验收层必须单独执行和报告。详见开发与验证及已记录的验证证据。

已知限制

- 普通 content script 无法控制 chrome://、Chrome Web Store、其他扩展页面或 closed Shadow Root。
- 子 frame 定位器只在对应 frame 文档内唯一;插件不会臆造 iframe selector chain。
- opaque DOM 引用刻意保持短期有效;导航或相关语义变化后必须重新获取。
- 打开 DevTools 可能抢占 chrome.debugger 会话;网络捕获会明确报告 detach。
- 普通 Chrome 仍需人工完成开发者模式 → 加载已解压的扩展程序确认;插件不会绕过 Chrome 安装策略。
- 扩展需要广域站点权限和 debugger 权限,才能实现全页 DOM 控制、截图及按需网络正文捕获。
- Browser Worker 隔离是 DSH 进程内的 Agent/Session/tool/context 边界,并非操作系统进程级隔离。
- DSH 0.1.2-rc.1 仍为预发布依赖,本项目有意固定精确 peer 版本。

文档

- 架构设计
- 安全模型
- 开发与验证
- Browser Worker 设计
- 已记录的验证证据

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(changyinliangbaikai)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群