DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Index Tap Bridge — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
I

dsh-index-tap-bridge

Index Tap Bridge

让依赖 webServer.tapIndex 注入脚本的 DSH 插件在官方 Harness 桌面版里也能生效:把 tapIndex 的 HTML 变换自动翻译成桌面外壳认的结构化注入行(webserver/index-inject)。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:VCPr0j3k7/dsh-index-tap-bridge#3b3bee5f71af1cd5fafcdd21d2035de934c1ccff
README兼容性版本

兼容性与来源证明

Index Tap Bridge 以 dsh-index-tap-bridge 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/25

版本

0.1.0stable
2026/9/25

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/25
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Univer Officedsh-univer-officeDSH × Univer 集成,内置协作 Gateway 和 Viewer:内联预览、实时浮动 Worktree 窗口,以及 DeepSeek Harness 中的会话结束审查操作。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Bridge@wenbin_wb/dsh-bridge手机扫码即可在移动端/公网继续用 DeepSeek Harness,人不在电脑前也能接着干。一键局域网二维码、Cloudflare 公网隧道、自建隧道与微信 / QQ / 飞书 / Telegram Bot(多工作区/会话持久化/媒体/卡片审批/流式输出),无需自己搭公网服务器。

README

dsh-index-tap-bridge

为 DeepSeek Harness (DSH) 提供 tapIndex 注入通道的兼容层,使依赖该通道的第三方插件在官方 Harness 桌面版中同样生效。

本插件以独立 bundle 形式装入 DSH profile,无需修改目标插件的任何源码。


目录

  • 问题背景
  • 环境要求
  • 安装
  • 卸载
  • 工作原理
  • 翻译规则
  • 启用条件
  • 测试
  • 已知限制
  • 许可

问题背景

@deepseek-ai/dsh-host-webserver 提供两条向 index.html 注入内容的通道:

通道主要使用者官方桌面版
结构化注入行(webserver/index-inject 事件)官方插件(dsh-client-modules 等)生效
索引变换(tapIndex(html => html))大量第三方插件不生效

原因在于官方桌面版不渲染 Host 的 index.html:

  1. 窗口加载的是外壳内置的 SPA(自定义 scheme dsh-app://app/,资源来自 dsh-web-frontend/dist);
  2. Host 启动完成后,仅通过 IPC 上报一次 collectIndexInjections() 的结果,由外壳按注入行的 kind 逐条应用;
  3. tapIndex 注册的变换仅在 renderIndex() 内执行,而 renderIndex() 只会在 Host 自行渲染 index 时被触发 —— 桌面版不会走到该路径。

由此产生的现象是:插件加载过程无任何报错,插件列表中也显示为已启用,但其注入的 <script> / <style> 从未被加载。

@deepseek-ai/dsh-host-webserver 源码中对 applyIndexTaps() 的注释原文: "the escape hatch for markup no IndexInjection row expresses"

环境要求

项要求
Node.js^22.19.0 || >=24
DeepSeek Harness已在官方桌面版 0.1.7-rc.2 上验证

安装

# 装入指定 profile(web 为 dsh 首次运行时自动创建的 profile)
dsh plugin --profile web add github:VCPr0j3k7/dsh-index-tap-bridge

官方 Harness 桌面版使用 desktop profile:

dsh plugin --profile desktop add github:VCPr0j3k7/dsh-index-tap-bridge

无需手动修改 dsh.profile.bundles。dsh plugin 在 pnpm 执行完毕后会运行一次 reconcilePlugins(),凡声明了 dsh.bundle.patch 的依赖会被自动追加进 bundle 层栈。

确认已登记:

dsh --profile web --dump-config      # 输出中应包含 index-tap-bridge

安装完成后需重启目标 harness。桌面版在启动时加载插件,运行中的实例不会热更新。

卸载

dsh plugin --profile desktop rm dsh-index-tap-bridge

reconcilePlugins() 会在依赖被移除后同步清理 dsh.profile.bundles 中的对应条目;若发现残留, 手动删除该条目即可。卸载后同样需要重启 harness。

工作原理

在 webserver/index-inject 事件发射的时刻(此时所有插件均已加载、tap 均已注册):

  1. 读取 webServer.indexTaps(tapIndex() 的实现即向该数组 push,参见官方实现);
  2. 将每个变换作用于一份最小骨架 HTML,提取其新增的标记;
  3. 将新增标记翻译为结构化注入行,push 进注入表;
  4. 按 kind 与载荷去重,避免重复推送。

整个过程对原插件透明:其变换仍保留在 indexTaps 中,浏览器与 dsh web 经由 renderIndex() 的路径行为不变。桥接逻辑仅在桌面外壳中启用,判据见启用条件。

翻译规则

原始标记翻译结果
<script src="U">{ kind: 'script-src', src: 'U' }
<script>内联代码</script>{ kind: 'script', text, placement }
<style>…</style>{ kind: 'style', text }
<link>、div、span、template、noscript、iframe、meta{ kind: 'html', placement, html }

<script> 必须单独映射为 script / script-src,不能由 html 行承载:桌面前端对 html 行 使用 insertAdjacentHTML(),以此方式插入的 <script> 不会被执行。

启用条件

判据为 process.argv 的前两位中是否包含 dsh-desktop-host(官方外壳正是以该方式 spawn Host)。 这是目前唯一能可靠区分「Host 的 index 是否会被渲染」的信号 —— 若改用 Electron 或 --expose-internals 等特征判断,会将自包含外壳(自行加载 Host URL、走 renderIndex() 路径) 一并误判,导致重复注入。

排障时可强制覆盖:

环境变量取值作用
DSH_INDEX_TAP_BRIDGEon强制启用
DSH_INDEX_TAP_BRIDGEoff强制关闭

测试

npm test

test/check.mjs 为纯逻辑自检(23 项),不依赖 DSH 运行时,覆盖各翻译分支、空载荷丢弃、 顺序保持、不可翻译标记的上报,以及桌面外壳判定。当前 23/23 通过。

端到端验证:安装并重启桌面版后,原本不显示挂件的插件应开始正常工作;若插件带有日志, 可观察到其注入的资源被请求。

已知限制

  • 仅翻译可翻译的标记。 若 tapIndex 中执行的是修改已有标记(而非新增),则无法翻译。 此类标记会通过 console.warn 列出,不会被静默忽略。
  • 官方若变更 indexTaps 字段名,桥接将静默失效(存在 Array.isArray 守卫,不抛错)。 届时需改为包装 tapIndex() 的方式实现。
  • <canvas> 一类标记不会被强行翻译为 html 行:insertAdjacentHTML 无法表达「替换已有 节点」的语义,强行翻译会产出错误结果,因此此类标记会被明确报告为未翻译。
  • 官方桌面版的插件库开关会重写 dsh.profile.bundles(内部调用 sanitizeProfile(...) 清理 非官方 bundle)。若桥接突然失效,应首先检查 bundles 中该条目是否仍然存在。

许可

MIT