DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-desk-card

Desk Card

用于 DSH 审批、问题、回合完成和错误的右下角原生桌面卡片:自行绘制的 WPF 卡片,可直接在卡片中批准;全屏应用或 Do-Not-Disturb 处于活动状态时会跳过显示。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:nanshang328/dsh-desk-card#0d7b8c9813bb53455e70e87bc2eefd21c19e8019
README兼容性版本

兼容性与来源证明

Desk Card 以 dsh-desk-card 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/10/14

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/14
查看源码 ↗
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 配置层Ab Chartdsh-ab-chart带有绘制其调用的浏览器卡片的图表渲染工具,封装在一个可发布的插件包中Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-desk-card

Bottom-right native desktop cards for DSH (DeepSeek Harness) approvals, questions, turn completion and errors.

Each card is a small always-on-top window drawn by PowerShell/WPF — not a system toast — so it can carry a button that answers the request. An approval can be allowed straight from the card, and the moment a card would interrupt something else (a fullscreen app, a game, Do-Not-Disturb) it is skipped and the decision goes back to the normal DSH UI.

Windows only. No dependencies, no network, no build step.

Why not just a toast

system toastthis card
carries a button that returns an answerdepends on the shell / extra runtimeyes, the card's own button
can allow an approval in placeno (toasts only focus the app)yes — 确认允许 / Allow
respects fullscreen games and Do-Not-Disturbonly if the OS suppresses itexplicit gate, checked before the window is drawn
UI languagewhatever the OS showsfollows the DSH locale, or forced with language

Screenshots

approval card

completion card

error card

two cards stacked

Requirements

  • Windows 10/11 (cards are drawn with powershell.exe + WPF, which ship with Windows).
  • DSH desktop profile (the cards are injected by the host process, no browser side needed).
  • Node.js 20+ (whatever DSH ships is fine).

Install

From this repository:

dsh plugin --profile desktop add github:nanshang328/dsh-desk-card

Or from a local clone / download:

dsh plugin --profile desktop add ./dsh-desk-card

Then restart DSH. The package declares dsh.bundle, so the CLI records it in dsh.profile.bundles and mounts it as a normal profile layer — no hand-written paths.

Windows developer helper: powershell.exe -File tools/deploy-local.ps1 copies the working tree into %USERPROFILE%\.dsh\profiles\desktop\plugins\dsh-desk-card and registers it the same way.

What shows up

cardwhenauto-closebuttons
Approvala tool call needs permissionnever (waits for you)确认允许 / Allow approves once · clicking the card opens DSH for the full dialog
Questionthe agent asks you somethingnever, closes when the question is answered知道了 / Got it
Completiona turn ends normallydoneTimeoutSeconds (default 5s)知晓 / OK
Errora turn failsnever知道了 / Got it

The completion card also carries a short summary of your last message, the elapsed time, the remaining todo count and the turn/session token usage.

Cards never overlap: a new card stacks above the ones already on screen. If the DSH window is closed while a card is open, the card closes itself too.

Configuration

Everything has a built-in default, so this section is optional. To change something, add a row with the same id from your profile's own cordis.patch.yml (~/.dsh/profiles/desktop/cordis.patch.yml):

- insert:
    - id: dsh-desk-card
      name: dsh-desk-card
      config:
        doneTimeoutSeconds: 10
        scale: 1.0
        language: en

Only the keys you list are changed — a config object replaces the whole object, and every key you leave out falls back to the defaults below.

keydefaultmeaning
timeoutSeconds0auto-close seconds for cards that wait for you (approval / question). 0 = stay until answered
doneTimeoutSeconds5auto-close seconds for the completion card. 0 = keep it until clicked
scale1.2card scale factor
skipWhenFullscreentrueskip cards while a fullscreen app is in the foreground, or while Windows says Do-Not-Disturb
notifyQuestionstrueshow the question card
notifyErrorstrueshow the error card
notifyDonetrueshow the completion card
languageautoauto (follow the DSH locale), zh or en
hostProcessDeepSeek Harnessthe process whose window is brought to front when you click a card

The three notify* switches only control the cards — approvals and questions always keep working, the card just does not appear.

The fullscreen gate

A card is not drawn when either of these is true:

  • SHQueryUserNotificationState reports a fullscreen app, presentation mode or Do-Not-Disturb; or
  • the foreground window covers its whole monitor and is not the desktop (this keeps games that hide the real state from being interrupted).

When a card is skipped the approval is handed back to the normal DSH UI (with prepend: true this plugin speaks first, and a skipped card always delegates to the next answerer), so nothing gets stuck. Two test tools reproduce the condition without a game:

powershell.exe -File test/gate-probe.ps1 -MaxSeconds 20          # watch the gate flip blocked -> free
powershell.exe -File test/fake-fullscreen.ps1 -HoldSeconds 8     # paint a fullscreen window for 8s

How it works

lib/index.js      host half: listens to approval/request, user-questions/request,
                  agent/error, agent/status; spawns one card per event and maps the
                  card's exit code back to an approval outcome.
scripts/card.ps1  render half: one PowerShell process per card. Runs the gate, draws the
                  WPF window, stacks it above sibling cards, runs timers, then exits with
                  a code that the host half reads.

Exit-code protocol between the two halves:

codemeaning
10the card's primary button was pressed
12the card body was clicked — bring the DSH window to the front, let the UI decide
0gate skipped the card (fullscreen / Do-Not-Disturb)
3rendering failed

Being one process per card keeps the render half stateless: a card can never wedge the host, and a card that is killed by the OS just delegates the decision.

Logs and troubleshooting

%TEMP%\dsh-desk-card.log records card placement, exit codes, config and gate decisions:

apply() started config={"skipWhenFullscreen":true,...}
showCard[approval]: exit 10
approval resolved: allowed-once
done card (41234ms, autoClose=5s)

Cards are spawned without a console window. If no card ever appears, check in order: a fullscreen app is holding the gate (-SkipWhenFullscreen false for a manual test), PowerShell is blocked by policy for the DSH process, and finally the log file.

Manual card render (bypasses the host half entirely):

$payload = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('{"badge":"test","head":"hello","body":"line","okLabel":"OK","okCode":10}'))
powershell.exe -File scripts/card.ps1 -Payload $payload -TimeoutSeconds 5 -Scale 1.2 -SkipWhenFullscreen false -DebugLog "$env:TEMP\card-test.log"

Limitations

  • Windows only. The render half is PowerShell + WPF; there is no macOS/Linux path.
  • Cards are ordinary top-level windows, so they appear above other windows but not above a fullscreen exclusive game — which is why the gate exists.
  • One PowerShell process per card (about 100 ms of warm-up). A card is not a notification center entry: once it is closed it is gone.
  • This plugin deliberately does not restart or shut down DSH. If you want power controls, dsh-power-button and dsh-restart do that well.

Privacy

The host half never opens a socket and never reads a file. It spawns one local PowerShell process per card and appends a line to %TEMP%\dsh-desk-card.log. Card payloads contain short excerpts of your session (task title, tool name, approval reason, error message) and are passed to that child process as a command-line argument.

License

MIT