dsh-plugin

90Star7Fork8Issue0Watching

为 DeepSeek Harness 集成 Tabbit 浏览器自动化能力,自动检测浏览器版本与运行时,缺失时后台下载适配的安装包。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
分支
main
browser-automationbrowser-usedeepseek-harnessdsh-plugindsh-plugin-marketdsh-plugin-verifydsh-pluginsplaywright

安装

$ dsh plugin --profile web add github:Tabbit-Browser/dsh-plugin

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 Tabbit-Browser/dsh-plugin:先查看仓库 https://github.com/Tabbit-Browser/dsh-plugin.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

DSH 插件市场中以「Tabbit 浏览器」为品牌的 DSH 包,给 DeepSeek Harness 装上一个能控制本机 Tabbit 浏览器进行自动化操作的 Skill,并在浏览器缺失或版本过低时自动下载安装包。

核心能力

  • 在 DSH 中注册名为 tabbit-browser 的 bundled Skill,使模型能通过 /tabbit-browserskill({ name: "tabbit-browser" }) 调用
  • 提供 tabbit_browser_install 工具,自动判断本机是否安装了 1.9.0 及以上的稳定版 Tabbit
  • 检测 tabbit-cli 常驻运行时和 Playwright Runtime 进程(browser-runtime-service.mjs / nodejs-playwright-runtime.mjs
  • 按 agent session 缓存检测结果,减少重复检测开销;通过 refresh: true 主动失效重检
  • 当浏览器缺失或版本不符时,通过 DSH 后台任务下载适配地区和架构的安装包到 Downloads 目录
  • 按系统地区自动选择下载源(大陆 tabbit.com,其他地区 tabbit.ai),并校验文件格式(exe/dmg)

技术实现

  • 语言: JavaScript (ESM)
  • 关键依赖: @deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-jobs@deepseek-ai/dsh-skill
  • 架构模式: DSH bundle 包 + Cordis patch 注入;声明 inject: ['skills', 'tools', 'jobs'],通过 cordis.patch.yml 在宿主启动时插入 Skill Provider,并通过 apply(ctx) 注册 bundled Skill 与检测工具
  • 入口文件: index.js(主入口)+ installer.js(环境检测与安装包下载实现)

适用场景

当用户希望让 AI 代理直接操作本机浏览器完成网页交互、数据提取、自动化测试或评测任务时,本插件把 Tabbit 浏览器作为受控的 Playwright 运行时暴露给 DSH 模型。它适合「代理在沙箱内跑、浏览器跑在宿主机 GUI」的桥接场景;当用户没有手动装 Tabbit 时,插件还能替用户代劳下载阶段。

前置依赖与兼容性

依赖最低版本说明
DSH 宿主dsh CLI必须能在执行 dsh --version 的环境运行
Cordis>=4.0.0DSH 内部依赖,提供 Skill/Tool/Job 注册能力
@deepseek-ai/dsh-jobs>=0.1.0-rc.5后台任务支持,本插件通过 ctx.jobs.start 启动下载
@deepseek-ai/dsh-tools>=0.1.0-rc.5工具注册框架
@deepseek-ai/dsh-skill>=0.1.0-rc.5Skill Provider 注册框架
Node.js>=20package.json#engines.node 声明
平台macOS (arm64/x64) / Windows x64Linux 未在安装包清单中,源码会抛错

安装方式

dsh plugin --profile web add github:Tabbit-Browser/dsh-plugin

配置项

配置类型说明默认值
tabbit_browser_install.refreshboolean强制重新跑一次浏览器与运行时检测,丢弃当前会话缓存。只有在 Runtime/launcher 报错或浏览器被更新/重启后使用false

本插件无 DSH 全局配置项,所有可调参数都是工具调用时传入的参数。

常见问题

Q: 必须在使用前手动安装 Tabbit 浏览器吗?

A: 不必须。插件会先尝试检测系统上是否已经有 1.9.0 及以上的稳定版 Tabbit;如果没有,会自动启动后台任务下载对应地区、对应架构的安装包到 Downloads 目录,由用户手动完成最后的原生安装。

Q: 支持哪些操作系统?

A: 仅支持 macOS(Apple Silicon 与 Intel)和 Windows 64 位。源码中只声明了这三种 platform/arch 组合的安装包规格,Linux 会因为找不到匹配的下载配置而报错。

Q: 装好插件后是否还需要单独安装 tabbit-browser Skill?

A: 不需要。插件随包自带 bundled Skill,通过 cordis.patch.ymlskill-tabbit-browser 插入到 DSH 宿主,DSH 启动后 Skill 即可见。

Q: 检测结果会不会每次都跑?

A: 不会。成功的检测结果按 agent session 缓存到 WeakMap,后续调用直接返回 cached: true。只有在 Runtime/launcher 失败或浏览器发生变更时,传 refresh: true 才会失效并重跑。

Q: 同一个 agent 内同时跑多次下载会怎样?

A: 插件会跟踪当前进行中的 job,重复调用会返回已有的 jobId 并提示「已经有下载在跑」,不会并发启动多个下载任务。

Q: Windows 上 CLI 连接失败(BROWSER_RUNTIME_UNAVAILABLE)该怎么排查?

A: 插件不会主动要求 Full Permission。先正常调用 tabbit-cli tasks 做连接探测;如果浏览器、launcher、Runtime 进程都已检测到却仍报这个错误,才让用户把当前 DSH 会话切到 Full Permission,并停止当前任务,不要重试或换浏览器。

Q: 国内和海外用户下载到的安装包有什么区别?

A: 插件会读取系统地区:大陆地区 CNtabbit.com 下载国内版(Tabbit Browser,bundleId com.tab-browser.Tabbit),其他或未知地区从 tabbit.ai 下载国际版(Tabbit,bundleId com.tabbit-ai.Tabbit)。两套版本都支持,但显示名与 bundleId 不同。

Q: 如何卸载?

A: 使用 dsh plugin --profile web remove github:Tabbit-Browser/dsh-plugin。插件不修改系统外的持久数据,检测缓存仅在当前 DSH agent 会话内存中,重启即失效。

上手难度

入门 — 安装命令一行到位,插件会自动处理 Skill 注册与浏览器检测;只有在需要排查 Runtime 连接或下载失败时才需要看 README 的「前提」与「范围」章节。

已知问题与限制

  • 不识别开发版:只检测稳定版 TabbitTabbit Browser,开发版会被忽略(installer.js 硬编码 channel: 'stable'
  • 不自动启动安装包:下载完成后只把路径告诉用户,由用户手动双击 .dmg / .exe,插件不会代为打开(README.md:67 明确说明)
  • 不会替换或补充原生浏览器工具:本插件只暴露 tabbit_browser_install,不提供 tabbit_browser_evaluate 等直接调用浏览器的工具(README.md:96 明确说明)
  • Windows 沙箱模式受限:DSH 在 Windows 上的 read-onlyworkspace-write 模式使用受限令牌,无法写入 Runtime 命名管道;只有 Browser、launcher、Runtime 都检测到但 CLI 连接失败时,才提示用户切到 Full Permission,并停止任务,不重试
  • 不支持 Linuxinstaller.js 只定义了 macOS 与 Windows 三种 platform/arch 组合,Linux 既不在检测范围也没有可用下载源(installer.js:113-140)
  • 多 Tabbit 实例会被提示歧义但不报错:如果同时有多个 Tabbit 运行,检测结果会标记 playwrightRuntimeAmbiguous: true 并提示设置 TABBIT_PLAYWRIGHT_INSTANCE 环境变量,而不是误判为 Runtime 未运行

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/Tabbit-Browser/dsh-plugin)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录
dsh-plugin — DeepSeek Harness 插件 | deepseek-plugin.org