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

@kyoukisu/dsh-rich-ui

Rich Ui

DeepSeek Harness 中的 ChatGPT 风格丰富回答:实体面板、KPI 卡片、图表、表格、图层和本地控件。

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

npx -y @deepseek-ai/dsh plugin --profile web add @kyoukisu/dsh-rich-ui@0.6.2
README兼容性版本
Software shortlist with wide screenshots on the left, full descriptions and source links on the right, followed by a captioned screenshot galleryDashboard answer with three KPI cards, a two-series line chart, a sortable, filterable table with status pills and a vertical flowThe same dashboard on a 390 pixel phone: two-column KPI cards, all six chart month labels and a four-column table that fits

兼容性与来源证明

Rich Ui 以 @kyoukisu/dsh-rich-ui 发布,当前版本为 0.6.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.6.2stable
2026/11/1
0.6.1stable
2026/11/1
0.6.0stable
2026/11/1
查看其余 32 个版本收起版本
0.5.10stable
2026/10/31
0.5.9stable
2026/10/31
0.5.8stable
2026/10/31
0.5.7stable
2026/10/31
0.5.6stable
2026/10/31
0.5.5stable
2026/10/31
0.5.4stable
2026/10/31
0.5.3stable
2026/10/31
0.5.2stable
2026/10/31
0.5.1stable
2026/10/30
0.5.0stable
2026/10/30
0.4.3stable
2026/10/30
0.4.2stable
2026/10/30
0.4.1stable
2026/10/30
0.4.0stable
2026/10/30

相关插件

正在加载相关插件…

最新版
0.6.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
297 kB
文件数
9
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
6,230
安全扫描
✓ v0.6.2 扫描通过
最近提交
2026/11/1
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
0.3.9stable
2026/10/30
0.3.8stable
2026/10/29
0.3.7stable
2026/10/29
0.3.6stable
2026/10/29
0.3.5stable
2026/10/29
0.3.4stable
2026/10/29
0.3.3stable
2026/10/29
0.3.2stable
2026/10/29
0.3.1stable
2026/10/29
0.3.0stable
2026/10/29
0.2.9stable
2026/10/29
0.2.8stable
2026/10/29
0.2.7stable
2026/10/29
0.2.6stable
2026/10/29
0.2.5stable
2026/10/29
0.2.3stable
2026/10/28
0.1.0stable
2026/10/28

相关插件

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

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Claude Designdsh-claude-designDeepSeek Harness 插件:来自 baoyu-design 的 claude-design 技能。智能体将画板画布写入文件,并在本地画布编辑器中打开它们。Claude Slidesdsh-claude-slidesDeepSeek Harness 插件:来自 baoyu-design 的 claude-slides 技能。代理会将可编辑的幻灯片演示文稿写入文件,并在本地幻灯片编辑器中打开。Claude Design Systemdsh-claude-design-systemDeepSeek Harness 插件:来自 baoyu-design 的 claude-design-system skill。代理将设计系统(令牌、字体、组件、资源)写入文件,并在本地 design-system 页面中打开。

README

DSH Rich UI

ChatGPT-style rich answers inside DeepSeek Harness.

Entity collections with detail panels, KPI cards, multi-series charts, sortable tables, flow and layered architecture diagrams, calculators that recompute as you drag — rendered natively inside DeepSeek Harness.

stars license last commit

Live demo · Install · Quick start · Contract · Design notes · Safety

A product listing rendered by the plugin: summary strip, real photos, prices and a green highlight badge

What this is, and why

A model can describe a comparison, but a wall of Markdown makes the reader do the layout work. This plugin gives the model a small declarative language for the cases where structure carries the answer: side-by-side options, an object you want to inspect, a number the reader will change.

The renderer is a real React tree behind a strict schema. There is no generated HTML, no eval, no shell access, and no page-level JavaScript from the model. Local controls recompute in the browser; the model is only called again when the reader explicitly asks.

Film collection reflowed beside an open detail panel with two posters, facts, cast and sources
In the lab the answer reflows beside the open panel. In Harness the same entity opens as a native right-column tab, so the conversation narrows instead of being covered — see the integration notes.

Software shortlist with wide screenshots on the left, full descriptions and source links on the right, followed by a captioned screenshot gallery
entity-list layout:"feature" gives a software shortlist a wide preview, the whole description and its sources. Below it, a captioned gallery shows one screenshot at a time.

Dashboard answer with three KPI cards, a two-series line chart, a sortable, filterable table with status pills and a vertical flow
Metrics, a two-series chart with units and hover, a filterable table with status pills and an ordered flow — one document.

Layered architecture: HTTP handlers containing a connection pool with three connections, an arrow to PostgreSQL, and a Go code block with syntax colour
Boxes inside boxes: the pool holds connections, the arrow shows what it talks to. The code block keeps language label, syntax colour and copy.

A calculator with sliders that recompute the result locally
Sliders recompute the number in the browser; the model is not called again.

The same dashboard on a 390 pixel phone: two-column KPI cards, all six chart month labels and a four-column table that fits
390 px: KPI cards in two columns, every chart label, and a table that still fits.

Live demo

rich-ui.beako.best — the real renderer in laboratory conditions, no install. Scenarios: dashboard, films, listing, calculator, configurator, technical breakdown and the rejected-block diagnostic; add &theme=dark for the dark theme. Demo data is illustrative.

Install

Requires DeepSeek Harness 0.2.x and Node 22.19+. No NixOS change, no patched Harness.

dsh plugin --profile web add @kyoukisu/dsh-rich-ui
systemctl --user restart deepseek-harness   # or restart however your Harness runs

From a checkout — this is the loop the author uses:

git clone https://github.com/kyoukisu/dsh-rich-ui && cd dsh-rich-ui
npm ci && npm run build:plugin
dsh plugin --profile web add link:$PWD

Unreleased commits: dsh plugin --profile web add github:kyoukisu/dsh-rich-ui.

The plugin registers itself as a bundle; the fence language is rich-ui.

Quick start

Ask for something that benefits from structure, in a new session:

Compare three electric kettles by price, volume and features. Make it clickable.

The reply arrives as an interface: a summary strip, rows with photos, and a green highlight on the cheapest option. Opening a row shows facts, sources and related items without leaving the conversation.

Things worth trying: "build a budget calculator with three sliders", "show this quarter as a chart and a table", "make a configurator with tabs and conditional warnings".

What it can render

GroupNodes
Layoutstack, row, grid, card, divider, meta
Texttext with inline code, bold, links and [[entityId]] chips; callout with optional title; code with syntax colour, language label, line numbers and copy
Objectsentity-ref, entity-list in compact or layout:"feature" rows, with poster, square or landscape previews; entity details dock in the native right column or fall back to an in-page drawer, with a two-up photo gallery or one captioned screenshot at a time, plus cast
Datastat (KPI card), progress, status, table (sortable, filterable, status and progress columns, scroll hint when it overflows), chart (bar / line / area / donut / scatter, 1–6 series, units, tooltips), computed
Flowdiagram with ordered steps, connector labels and branch depth; layers for boxes-inside-boxes architecture with member chips
Mediaimage with caption, image-group with optional per-frame captions and an inline presentation:"gallery", video and audio with native controls, gallery lightbox, popover, tooltip
Controlsinput (text / number / date), select, slider, switch, checkbox, radio, segmented, tabs
Logicexpressions (add, mul, round, comparisons…), conditional, local actions, send-message

Roughly 150 Lucide icons resolve by name, with semantic tones (success, warning, danger, muted) so colour means something. Light and dark themes follow the host palette and font.

The contract in ten lines

```rich-ui
{"version":1,"title":"Budget","initialState":{"spend":1200},
 "nodes":[
  {"type":"slider","stateKey":"spend","label":"Monthly spend, €","min":100,"max":5000,"step":100},
  {"type":"computed","label":"Per year, €","expr":{"op":"mul","args":[{"state":"spend"},12]}},
  {"type":"callout","tone":"info","content":"Recomputed locally — no model call."}
 ]}
```
Entities, tables, charts and actions — one complete document
{"version":1,"title":"Films for tonight",
 "entities":[{"id":"a","kind":"Film","title":"Arrival","subtitle":"2016 · science fiction",
   "image":"https://example.org/poster.jpg",
   "facts":[{"label":"Director","value":"Denis Villeneuve"}],
   "sources":[{"title":"TMDB","url":"https://www.themoviedb.org/movie/329865-arrival"}],
   "badge":{"label":"Editors' pick","tone":"success"}}],
 "nodes":[
  {"type":"meta","items":[{"icon":"film","text":"3 films"},{"icon":"clock","text":"2 hours"}]},
  {"type":"entity-list","entityIds":["a"]},
  {"type":"table","columns":[{"key":"k","label":"What"},{"key":"v","label":"How many"}],
   "rows":[{"k":"Screenings","v":3}]},
  {"type":"chart","kind":"bar","data":[{"label":"Mon","value":2},{"label":"Tue","value":5}]}]}

The authoritative text is prompt-rich-ui/prompt.md; exact fields, enums and budgets live in references/schema.md, and working documents in references/examples.md.

How it works

flowchart LR
  A["Model writes a rich-ui fence"] --> B["Adapter finds the code block"]
  B --> C{Strict JSON schema}
  C -- invalid --> D["Stays a normal code block"]
  C -- valid --> E["React renderer mounts"]
  E --> F["Local state, no model call"]
  F -- explicit button --> G["rich-ui action message"]
  • Node half registers one always-on system-prompt section with the whole contract and the absolute path of the reference files, plus the rich_ui_validate tool. The model can validate the exact JSON before emitting it; a schema error comes back as a tool result, not a visible user message.
  • Browser half validates the fence and mounts into a plugin-owned root. While the model is still writing, closed nodes render in an inert preview and become interactive when the block settles.
  • A malformed document is never patched in place and never triggers an automatic message: it shows a diagnostic card with the exact error and the rejected JSON, plus a copy button. A browser plugin has no tool channel, so the card deliberately has no "ask the model" button. Unfinished streams stay code until the model closes them.

Safety

RiskMitigation
Arbitrary code executionDeclarative JSON only; no HTML, CSS, JS, eval or property paths
Prompt-injected actionsLocal actions cannot call tools; send-message needs an explicit click and is delivered as ordinary user text
Secrets in the UIPassword/secret state keys are rejected; no secret input components exist
Hostile URLshttp(s) only, credentials in URLs rejected
Resource exhaustionBounded depth, node count, string size and expression budget
Stored dataPersistence is opt-in, per session, and never stores text or date inputs

Parity with the reference

Measured, not claimed: 19 of 27 reference scenarios reproduced, 2 partial, 6 missing — with an itemised deviation list in docs/PARITY.md. Missing today: Mermaid/ER graphs, math, maps, artifacts, persistent panels and mini-apps.

Known limitation: the fence label is not preserved by Harness, so an unlabelled block is claimed only when its payload looks like a spec document and passes the strict parser. A json-labelled block is never claimed.

Troubleshooting

The block stayed as code. The JSON did not pass the schema — usually an unknown field (title inside a node that has none, or items from another plugin's syntax). A claimed fence shows the exact error and the rejected source, and copies them on request. Nothing is executed, rewritten or sent automatically. The model should call rich_ui_validate before sending; if it did not, ask it to fix the document and validate it.

Diagnostic card: rich block not parsed, missing value, and copy error
A rejected block explains itself and copies the exact error and source. Nothing is sent automatically.

Images show a placeholder. The URL is wrong, blocked by the remote host, or not http(s). Ozon/WB CDNs reject hotlinks; use a permitted source or your own media host.

Old dsh-ui messages stopped rendering. That is a different plugin's syntax. This one claims rich-ui only.

Development

npm ci
npm run dev            # lab at http://127.0.0.1:4173, HMR, no Harness needed
npm run build          # typecheck + lab build
npm run build:plugin   # the two real bundle artifacts
npm test               # 217 unit, schema and DOM tests
npm run test:browser   # 58 Playwright desktop + mobile checks (goldens never auto-update)
# Interaction timings: docs/PERFORMANCE.md

Browser tests run in a pinned container so no system libraries are required:

docker run --rm --network host --ipc host --user "$(id -u):$(id -g)" \
  -e HOME=/tmp -v "$PWD:/work" -w /work \
  mcr.microsoft.com/playwright:v1.64.1-noble npx playwright test

Scenarios in the lab: ?demo=dashboard, films, listing, apps, calculator, configurator, technical, primitives, plus &theme=dark.

Screenshots in this README are captures of that lab, not mockups. Golden images under tests/ are regression baselines and say nothing about fidelity to another product.

License

MIT — see LICENSE. Demo photography comes from Wikimedia Commons under free licences; prices and metadata are illustrative. DeepSeek Harness is a separate project by DeepSeek; this plugin is unaffiliated. ChatGPT is a trademark of OpenAI: the description points at the style of rich answers, not at any affiliation, endorsement or shared code.