DeepSeek Harness 插件

zhu1090093659/dsh-web#packages/dsh-web-all

Star 数 ★ 8597 下载量(近 30 天) 122,118 分类 UI 增强 收录于 2026-08-27 npm @linxin666/dsh-web-all

DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

安装

# npm 包(预构建)

dsh plugin --profile web add @linxin666/dsh-web-all

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:zhu1090093659/dsh-web#path:/packages/dsh-web-all

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

English | 中文

DeepSeek Harness(DSH)Web UI 与官方桌面客户端全家桶聚合插件:一键安装家族的全部功能插件(任务看板 / Git 图谱 / 桌面宠物 / 移动端远程 / SSH 运维 / 模型能力声明 / 会话归档 / 皮肤中心 / 设置区 / 社区插件,完整清单以本包 aggregate.yml 为准)。compat 桥接层已并入本包(src/client),因此无需独立的 compat npm 包。

注(alpha 分支,2026-09-17):本分支不内置任何外部插件。

是什么

  • 一次安装、全部到位:其 dependencies 引入家族的全部子插件包(任务看板 / Git 图谱 / 宠物 / 移动端远程 / SSH / 模型能力 / 皮肤 / 设置区 / 社区插件 等,完整清单以 aggregate.yml 为准),且本分支不内置任何外部 npm 插件。@mlgbnb/dsh-archive-manager(社区归档管理:按项目分组、搜索筛选、预览对话、一键恢复与删除)未内置——其上游构建仍 import 已移除的 @deepseek-ai/dsh-client-runtime 面。
  • 聚合载具:cordis.patch.yml 汇总各子插件的 insert 行与外部插件行,经 dsh 插件 profile 机制挂载。外部 profile bundle 由生成器展开:其 patch 行变成可导入的聚合行,bundle 自身的 harness-row patch 原样保留;标记了 "inactive": true 的外部行会在产物之后统一追加 disabled: true 覆盖行,未主动启用前不会挂载。
  • 故障隔离(shell 壳):DSH loader 把全部 patch 行作为一个事务组挂载——任何一个插件 import 或启动失败都会回滚整组并中止 dsh web。因此聚合包让每个家族插件都挂在永不失败的 shell 模块(本包 main 入口)之后:行 name 指向按家族划分的子路径导出 @linxin666/dsh-web-all/<family>,行 config 携带真插件包名。子路径即官方插件列表(设置 → 插件列表)展示的名称——每行一个独立的 web-all/<family> 标题(与宿主自带 web-app/startup 行的多条目惯例一致),而全部子路径都解析到同一个共享 shell 再导出模块,隔离语义完全不变。坏插件现在只降级自身(记录日志,并可经仅限 loopback 的健康路由 GET /api/dsh-web-all/degraded 查询),其余插件照常挂载。外部行(家族之外的 npm 包)仍直接挂载;dsh-i18n 直挂(宿主半区为空)。
  • 插件列表里的自有图标:本包内置 icon.svg 并在 package.json 顶层声明 icon——官方插件列表(设置 → 插件列表)读取的展示元信息字段,因此已安装卡片与详情页在明暗两种主题下都显示家族鲸鱼,而不是默认插画;家族每个包都带同一份素材,单独安装某一个也会显示。该字段按模块 specifier 解析:聚合自身导出了 package.json,家族子路径行没有,因此那些行保持默认插画与 web-all/<family> 标题。
  • 按需开启行:低频家族插件在聚合包中出厂默认关闭(目前是 SSH、skill-explorer,即 aggregate.yml 的 inactive 清单;liangshen 不在该清单内,梁神模式拨杆在新装环境即在位)。它们不加载、设置入口也不出现,需要时在 设置 → 插件 → 插件管理 中按行开启;独立包安装不受影响。聚合行还可携带与独立包默认值不同的播种配置(patches 清单),用户改动设置后以设置为准。
  • 逐行管理:每个家族插件都可单独启停——设置 → 插件 → 插件管理 中本包行展开为子插件列表,逐行开关即时写入 profile 覆盖层;宿主半经 GET /api/dsh-web-all/rows 告知浏览器半哪些行活跃,被停用的行连设置入口一并消失(路由不可达时失败放行、全部照常挂载)。停用即不再加载,代码仍随全家桶更新;需要独立版本管理的插件可另行安装独立包(双挂载保护下独立安装优先)。

安装

从 npm 安装(推荐)

DSH Web CLI(浏览器端):

dsh plugin --profile web add @linxin666/dsh-web-all@latest
# 重启 dsh web
dsh web

官方桌面客户端(DeepSeek Harness Desktop):

  • 打开官方桌面客户端,进入“设置 → 插件”(或左侧导航栏的插件入口)
  • 在插件安装输入框中输入 @linxin666/dsh-web-all 并确认安装
  • 安装完成后完全退出并重新启动官方桌面客户端

从仓库安装(开发调试)

git clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
pnpm install && pnpm -r build
node scripts/link-profile.mjs
dsh plugin --profile web add link:$(pwd)/packages/dsh-web-all

安装后重启 dsh web(或官方桌面客户端)使插件生效。

手工升级

在 profile 的 package.json 中改版本后执行 pnpm install,顶层 node_modules/@linxin666/* 条目不会总是被刷新:它们可能仍链接到旧版本的 store 目录,直到手动重建。升级后请确认这些链接已指向新版本目录(Windows 下:先 cmd /c rmdir <链接> 再 cmd /c mklink /J <链接> <目标>),然后重启 dsh web。

故障排查

"Failed to load plugins ... keyed slot settings.plugin.item requires options.key"(DSH 0.1.0-rc.6+)

聚合包内置的 dsh-client-ui-web-ui-settings 0.1.17 及更早版本把组卡片注册进 keyed 槽 settings.plugin.item 时传的是 id 而不是必填的 key(其他全家桶插件此前已注册进该组的 list 槽);DSH 0.1.0-rc.6 起在 loader entry 应用阶段直接拒绝这种注册,Web GUI 因此以 "Failed to load plugins" 启动失败。

0.1.18 起该组改为一级 settings.section 注册,0.2.0 已发布;main 上的代码与 rc.6 / rc.7 兼容。仍在报错的 profile 带的是冻结的旧安装:

  1. 把 profile package.json 里所有 @linxin666/* 依赖升到 ^0.2.0(至少 ^0.1.18)。
  2. 重装 profile 依赖(pnpm install),并按上文「手工升级」重建陈旧的 node_modules/@linxin666/* 链接。
  3. 重启 dsh web。

参见 issue #513。

已知限制

  • 各子插件随本包一起激活;若只需要其中一部分,请直接安装对应子插件包。
  • 聚合行 id 统一带 web-ui- 命名空间,本包可与同名独立插件包共存:loader 不再拒绝重复 id,host 半区只注册一次(第二个来源为空操作),浏览器半区按包名去重。两个来源并存没有额外收益,建议只保留一个。插件来自本包时,profile 里按 id 写的配置行要改用 web-ui- 前缀(如 remote-web-ui 的 autoTunnel 配置行写成 web-ui-remote-web-ui);独立安装时仍用插件原 id。聚合行的配置里 plugin 是壳自己的键(该行加载哪个模块),插件自身字段与它平级;设置卡片写出的就是这一形态,手写覆盖必须保留 plugin,否则该行什么都不挂载。
  • 依赖的 @deepseek-ai/* SDK 版本已锁定,兼容性跟随本仓库的发版节奏。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。