DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

yale-demo-plugin

Yale Demo Plugin

一个最小的 DeepSeek Harness 插件:在 Web 设置中添加 demo-plugin 部分。

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

npx -y @deepseek-ai/dsh plugin --profile web add yale-demo-plugin@0.1.0
README兼容性版本

兼容性与来源证明

Yale Demo Plugin 以 yale-demo-plugin 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/23

版本

0.1.0stable
2026/9/14

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
15.4 kB
文件数
7
Surface
web
许可证
MIT
发布源
npm
周下载
26
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Web App@monotykamary/dsh-web-appdsh browser-surface 捆绑包:在 dsh-base 之上的 Web 补丁层,加上运行时衔接插件(前端 dist 提供服务、web-surface 提示符、Bash 运行时变量、URL 行)

README

yale-demo-plugin

DeepSeek Harness(DSH)示例插件 —— 在 Web 设置页左侧新增一项 demo-plugin,点进去右侧显示 hello dsh plugin.。

仓库名是 dsh-demo-plugin,npm 包名是 yale-demo-plugin。两者不一致是有意的:仓库用来归类,包名跟着发布者走。

用来演示两件事:

  • 一个树外(不在 DSH 仓库里)插件包,如何被 dsh plugin add 安装进 profile;
  • 一组 Host 半侧 + 浏览器半侧,如何通过 settings.section slot 往设置页塞一个页面。

安装

dsh plugin --profile web add yale-demo-plugin

在 deepseek-harness 源码目录里则用 pnpm dsh plugin --profile web add yale-demo-plugin(pnpm dsh 就是「用 pnpm 跑 dsh CLI」)。

装完重启 dsh --profile web,打开设置,左栏就是 demo-plugin。

移除:

dsh plugin --profile web remove yale-demo-plugin

开发

npm install
npm run build      # tsc 出 Host 半侧到 lib/,tsdown 出浏览器半侧到 client/client.js
npm run check      # 校验产物齐全、且浏览器 bundle 带正确的模块表握手前缀
npm run typecheck  # 两个 project:Host(tsconfig.json)与浏览器(tsconfig.client.json)

pnpm 同样可用(.npmrc 已经设好 node-linker=hoisted,原因见文末)。

本地联调不必发布,直接装这个目录:

dsh plugin --profile web add ./yale-demo-plugin

发布

npm publish

prepare 会在打包前先跑 build,所以 npm 上拿到的是预构建产物,用户安装时不需要任何构建授权(对比 git 安装:那种方式拉源码、要用户显式允许 prepare 执行)。

推到 GitHub

仓库 yiou362/dsh-demo-plugin(私有)。一条命令搞定建仓 + 推送:

bash scripts/publish-to-github.sh

首次运行会走 GitHub 的设备登录(浏览器里粘一次一次性码),然后自动建私有仓库、推 main。重复运行是安全的 —— 已有仓库和远端会被复用。

脚本优先用 PATH 上的 gh,找不到就用捆绑副本 ~/.workbuddy/binaries/gh/extracted/bin/gh。若都没有,就手动来:

# 先在网页上建好私有仓库(不要勾 README/.gitignore/license)
git remote add origin https://github.com/yiou362/dsh-demo-plugin.git
git push -u origin main

本机环境注意(pnpm 的布局选择)

结论:pnpm 能用,不需要开发者模式。 坑在布局(layout)上,dsh plugin add 不受影响。

这台机器确实建不出目录 symlink(fs.symlinkSync(t, l, 'dir') 和 'file' 都报 ENOENT,Windows 要开发者模式或管理员权限)。但 junction 和硬链接都正常 —— 于是关键在于 pnpm 用哪种布局:

布局顶层包怎么挂本机
isolated(pnpm 默认)目录 symlink❌ 建不出来。而且不报错:包全在 .pnpm/,顶层空着,.bin 不生成,prepare 里 tsc 报「不是内部或外部命令」
hoistedjunction + 硬链接✅ 正常

DSH 的 profile 初始化时就写死了 hoisted,见 ~/.dsh/profiles/<name>/pnpm-workspace.yaml:

packages:
  - .

nodeLinker: hoisted
autoInstallPeers: false

而 dsh plugin 只是个 pnpm 转发器(源码 apps/cli/src/plugin.ts),所以 dsh plugin --profile web add <包名> 开箱可用,装第三方插件不受 symlink 权限影响。

本项目自己也走 hoisted,配置在 .npmrc:

node-linker=hoisted

有了它 pnpm install 和 npm install 都通(npm 忽略这个键)。已验证:pnpm install → prepare → .bin 齐全 → lib/ + client/client.js 产出 → preflight ok。

顺带一个 dsh 的提示含义:warning: <pkg> declares no dsh.bundle 这条既表示「包没有声明 dsh.bundle」,也表示「包解析不到」(exportsPatch() 解析失败时按普通依赖处理)。看到它先确认包真的装上了,再怀疑声明。

目录

yale-demo-plugin/         # 仓库名 dsh-demo-plugin
├── package.json          # dsh.bundle(贡献哪一层)+ dsh.client(浏览器半侧声明)
├── cordis.patch.yml      # 本包贡献的 patch 层
├── .npmrc                # node-linker=hoisted(见文末「本机环境注意」)
├── tsdown.config.ts      # 浏览器 bundle:__ModuleLoader__ 闭包工厂产物
├── src/
│   ├── index.ts          # Host 半侧(空操作)
│   └── client/
│       ├── index.ts      # 注册 settings.section
│       ├── DemoSection.tsx
│       ├── DemoSection.module.css
│       └── locales.ts
└── scripts/preflight.mjs

lib/ 与 client/ 是构建产物(已被 .gitignore 忽略)。发布时由 prepare 现场生成。

三个要点

包名即入口名。 cordis.patch.yml 里的 name: 'yale-demo-plugin' 是包名而非相对路径,Node 的模块解析才能找到已安装的代码。

浏览器半侧靠声明被发现。 package.json 里的 dsh.client + exports["./client"] 一起,让 client 模块系统扫描已启用的 Loader entry 时能找到并加载这个 bundle —— 不用改 Web 应用、不用重新构建。

bundle 必须自己注册。 产物是一个 CJS 闭包工厂脚本,开头是 window.__ModuleLoader__.load({ id, factory }),require() 只认 loader 模块表里的条目(react 等由宿主提供,其余全部内联)。preflight.mjs 就是在守这条:丢了 banner 的 bundle 照样构建成功、照样 200,只在浏览器里运行时炸。

改点什么

换文案:改 src/client/locales.ts 的 zh / en 即可,demo-plugin 这个名字来自 nav 键。

加设置项控件:如果这一页要读写配置,Host 半侧需要用 ctx.settings.installSection() 注册一个命名空间,浏览器半侧改用 settings.plugin.item 卡片并绑定 ctx.settingsScope。参考 DSH 仓库 docs/cookbook/adding-a-settings-card.zh.md。

换位置:想放进已有的「插件」设置项里当标签页,把 slot 从 settings.section 换成 settings.plugins.tab。

License

MIT