为 DeepSeek Harness 集成 Tabbit 浏览器自动化能力,自动检测浏览器版本与运行时,缺失时后台下载适配的安装包。
- 语言
- JavaScript
- 分支
- main
安装
$ 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-browser或skill({ 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.0 | DSH 内部依赖,提供 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.5 | Skill Provider 注册框架 |
| Node.js | >=20 | 由 package.json#engines.node 声明 |
| 平台 | macOS (arm64/x64) / Windows x64 | Linux 未在安装包清单中,源码会抛错 |
安装方式
dsh plugin --profile web add github:Tabbit-Browser/dsh-plugin
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
tabbit_browser_install.refresh | boolean | 强制重新跑一次浏览器与运行时检测,丢弃当前会话缓存。只有在 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.yml 把 skill-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: 插件会读取系统地区:大陆地区 CN 从 tabbit.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 的「前提」与「范围」章节。
已知问题与限制
- 不识别开发版:只检测稳定版
Tabbit与Tabbit Browser,开发版会被忽略(installer.js 硬编码channel: 'stable') - 不自动启动安装包:下载完成后只把路径告诉用户,由用户手动双击
.dmg/.exe,插件不会代为打开(README.md:67 明确说明) - 不会替换或补充原生浏览器工具:本插件只暴露
tabbit_browser_install,不提供tabbit_browser_evaluate等直接调用浏览器的工具(README.md:96 明确说明) - Windows 沙箱模式受限:DSH 在 Windows 上的
read-only与workspace-write模式使用受限令牌,无法写入 Runtime 命名管道;只有 Browser、launcher、Runtime 都检测到但 CLI 连接失败时,才提示用户切到 Full Permission,并停止任务,不重试 - 不支持 Linux:
installer.js只定义了 macOS 与 Windows 三种 platform/arch 组合,Linux 既不在检测范围也没有可用下载源(installer.js:113-140) - 多 Tabbit 实例会被提示歧义但不报错:如果同时有多个 Tabbit 运行,检测结果会标记
playwrightRuntimeAmbiguous: true并提示设置TABBIT_PLAYWRIGHT_INSTANCE环境变量,而不是误判为 Runtime 未运行
English | 简体中文

A plugin for DeepSeek Harness (DSH) that gives the agent control over your Tabbit Browser: real pages, real login state, and real interactions, driven through tabbit-cli — the task-isolated Playwright CLI owned by the browser itself. Use it for web automation, information extraction, QA, and benchmarks.
What you get
| Component | Description |
|---|---|
tabbit-browser skill | The working guide for browser automation: persistent task spaces, locators and waits, screenshots, receipts and recovery. Discovered and loaded automatically with the plugin — no separate skill install. The model loads it via skill({ name: "tabbit-browser" }) or /tabbit-browser. |
tabbit_browser_install tool | Environment preflight: detects installed stable Tabbit editions, requires version 1.9.0 or newer, and verifies the tabbit-cli resident runtime. When Tabbit is missing or outdated, it starts a DSH background job that downloads the region-appropriate installer. |
tabbit_plugin_update tool | Plugin update check: compares the installed plugin version with the published changelog at most once a day, silently skips offline failures, and records a version the user declined. When a newer release exists, the skill loads with an update notice showing what the new version added. |
Installation
1. Check or install DeepSeek Harness
Check whether DSH is already installed:
dsh --version
If the command prints a version number, continue to the next step. If it is not found, install it for your operating system.
macOS
Install Node.js 20 or newer, then install DSH:
brew install node
npm install -g @deepseek-ai/dsh
Windows
Install Node.js LTS in PowerShell:
winget install OpenJS.NodeJS.LTS
Reopen PowerShell after the installation, then install DSH:
npm install -g @deepseek-ai/dsh
Run dsh --version again to confirm DSH works.
2. Install the tabbit-browser plugin
dsh plugin --profile web add github:Tabbit-Browser/dsh-plugin
3. Start DSH
dsh web
How it works
After installation, the bundle automatically registers its skill provider. The model loads the skill via skill({ name: "tabbit-browser" }) or /tabbit-browser. Before the first browser operation in a task, the skill calls tabbit_browser_install:
ready— a stable Tabbit edition at1.9.0or newer is installed and the runtime is running; the agent continues with thetabbit-cliworkflow.restart-required— the installed version is sufficient, but thetabbit-cliruntime is not running; the user is asked to restart Tabbit Browser once.background— no stable edition is installed, or none reaches1.9.0; the tool starts a DSH background job that reads the operating system's configured region (macOS reads the system locale, Windows calls the system region API) and downloads the matching stable installer: the domestic build fromtabbit.comfor mainland China, or the international build fromtabbit.aifor every other or unknown region. It selects the right Windows x64, macOS Apple Silicon, or macOS Intel package, saves it to the user'sDownloadsfolder, reports download progress, and notifies the absolute installer path on completion.
The environment check also:
- Treats the runtime as available when multiple Tabbit instances are running; the agent sets
TABBIT_PLAYWRIGHT_INSTANCEfrom the CLI's hint instead of reporting the instance ambiguity as an unavailable runtime. - Diagnoses the DSH sandbox mode required to invoke the CLI on the current platform: Windows reports
cliSandboxMode: danger-full-access, other platforms reportdefault. - Caches a successful environment check per agent session and re-checks only after a Runtime/launcher failure or an installation change, via
refresh: true.
Requirements
- A stable Tabbit Browser at version
1.9.0or newer: either the internationalTabbitor the domesticTabbit Browser— installing either one is enough. If it is missing or outdated, the plugin downloads the installer for you. - The current DSH profile provides
ctx.skills,ctx.tools, andctx.jobstogether with the corresponding model tools. dsh-tool-jobsprovides background job control and completion notifications for the current agent.- The current DSH profile provides a Bash/Shell tool running on the same host machine as Tabbit Browser.
- The shell's execution environment can reach the Browser-owned Runtime Service.
- On Windows, DSH's
read-onlyandworkspace-writerestricted tokens cannot write to the Runtime named pipe. The skill first runs the normaltabbit-cli tasksconnection probe and requests no permission at all when it succeeds. Only when the Browser, launcher, and Runtime processes are all detected but the connection returnsBROWSER_RUNTIME_UNAVAILABLEdoes it ask the user to switch the current DSH session to Full Permission — and it then stops the task immediately, without retrying or continuing browser operations.
Notes and limitations
- Mainland China uses the domestic
tabbit.comdownload source; all other regions use the internationaltabbit.aisource. - The background download reports progress and notifies the absolute installer path when it finishes. It never opens the
.dmg/.exeautomatically. - Development builds are not detected.
- The plugin does not provide native browser tools such as
tabbit_browser_evaluate. - If DSH's Bash runs in a sandbox such as E2B or a remote container that cannot access the local GUI browser, this skill cannot make Tabbit automation work there.
Development
npm test
npm pack --dry-run
License
MIT
收录徽章
[](https://deepseek-plugin.org/plugins/Tabbit-Browser/dsh-plugin)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。