DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-visual

Visual

在 dsh 对话中以内嵌方式显示交互式可视卡片:模型发布自包含的 HTML(在带有自身脚本的 Shadow DOM 中渲染)或可拖动的流程图;工具会一直阻塞,直到用户提交,之后评论、字段、流程和卡片状态都会作为工具结果返回。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-visual@0.1.1
README兼容性版本
dsh-visual card

兼容性与来源证明

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

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

版本

0.1.1stable
2026/10/26

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包Client Ui Market@linxin666/dsh-client-ui-marketWorkshop 浏览卡片:浏览来自 dsh-market.com 的皮肤、宠物和社区插件,并在 GUI 中安装(资源安装到 DSH 主目录,插件通过可选的插件管理器安装)。

README

dsh-visual

Interactive cards inside a DeepSeek Harness conversation. The model publishes a self-contained HTML card (or a draggable flowchart), the tool blocks until the user submits, and the user's click, comments, form fields and card state come back as the tool result.

No assistant text, no chat message, no artifact preview — a real card in the message stream.

dsh-visual card

Features

  • Blocking, not fire-and-forget. visual stays pending until the user submits, so the answer arrives as the tool result and the agent continues in the same turn.
  • Scriptable cards. Inline <script> runs per card through a small bridge (dshVisual.root, dshVisual.setState), so cards can toggle, validate and prefill themselves.
  • Structured answers. Buttons (data-visual-action), inputs (data-visual-field), comments and card state are merged into one JSON answer.
  • Comments with pins. Right-click any element to leave a comment; the answer carries the element's selector and label so the model knows exactly what each note is about.
  • Flow editor. Pass a flow graph instead of HTML: drag nodes, double-click to rename, connect, delete, then hand the edited graph back.
  • Parallel safe. Several cards in one turn each get their own bridge and state; nothing leaks between them.
  • Cancellable and time-bounded. timeoutMs and a stop button turn the card read-only instead of hanging forever.

Requirements

  • DeepSeek Harness 0.1.0-rc.1 and newer, below 0.3 (prerelease builds included)
  • Node.js 20 or newer

Install

dsh plugin --profile desktop add dsh-visual

Restart DeepSeek Harness once so the host half loads. After that, changes to lib/client.js only need a page refresh (⌘R).

For local development, link the directory instead:

dsh plugin --profile desktop add /path/to/dsh-visual
dsh plugin --profile desktop remove dsh-visual   # uninstall

Quick start

Ask for a card in plain language:

用 visual 发一张发布确认卡,让我选版本并留一句备注

The model calls the tool roughly like this:

{
  "title": "发布确认",
  "height": 360,
  "html": "<h3>发 0.1.1 到 npm?</h3><textarea data-visual-field=\"note\"></textarea><button data-visual-action=\"approve\">发</button><button data-visual-action=\"hold\">先别发</button>",
  "actions": [{ "id": "approve", "label": "发" }, { "id": "hold", "label": "先别发" }],
  "timeoutMs": 600000
}

When the user clicks, the tool returns one answer object:

{
  "action": "approve",
  "payload": { "fields": { "note": "记得打 tag" } },
  "state": { "checks": ["install"] },
  "comments": [{ "selector": "h3", "label": "h3", "text": "标题再短一点" }]
}

Parameters

ParameterTypeDescription
titlestringCard header title.
htmlstringComplete, self-contained HTML document. Styles are scoped; scripts run per card.
flowobjectFlow graph {nodes, edges} rendered as an editable canvas instead of HTML.
dataobjectInitial state exposed as dshVisual.data to the card script.
heightnumberInitial card height in px (160–900). The card can resize itself.
actionsarrayAction registry {id, label} for the footer chips and button labels.
timeoutMsnumberHow long to wait for a submit (default 10 min, max 1 h).

Every field is optional except one of html or flow.

Card protocol

Buttons and fields

  • data-visual-action="id" — clicking submits that action together with the fields, state and comments.
  • data-visual-field="name" — read from the card on submit and returned under answer.payload.fields.
  • The footer always shows a neutral 交还 button (answer.action = "done"). It never implies approval: review cards should carry an explicit approve/revise action of their own.

Scripts and state

<script>
(function (dshVisual) {
  var state = Object.assign({ on: false }, dshVisual.data || {})
  dshVisual.root.querySelector('.toggle').addEventListener('click', function () {
    state.on = !state.on
    this.textContent = state.on ? '开' : '关'
    dshVisual.setState(state)   // returned as answer.state
  })
})(dshVisual)
</script>

Each card is compiled as new Function('dshVisual', source)(bridge), so parallel cards cannot see each other's state.

Comments

Right-click any element inside the card, type a note, and it is pinned with a number. The answer carries them in answer.comments as { selector, label, text }.

Timeout and cancel

When timeoutMs elapses the call returns action: "timeout"; stopping the turn returns action: "cancelled". In both cases the card becomes read-only and its footer explains why.

Development

npm run check        # syntax of both entries + docs/code consistency guard
npm pack --dry-run   # inspect the published file list

The client half is a hand-written module-loader bundle, so no build step is required.

Releasing

Publishing is automatic: pushing a v* tag runs the release workflow, which verifies npm run check, publishes to npm with provenance, and opens a GitHub Release.

npm version patch   # or minor / major
git push --follow-tags

Publishing uses npm trusted publishing: the workflow exchanges the GitHub OIDC token for a short-lived npm credential, so no NPM_TOKEN secret is stored. Configure it once under the package's Settings → Trusted publishing on npmjs.com (owner MjxUpUp, repository dsh-visual, workflow publish.yml).

License

MIT © MjxUpUp