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

@valuz/dsh-valuz-genui

Valuz Genui

DeepSeek Harness 插件:generate_ui — 模型将请求(+数据)转换为 A2UI 文档,并在聊天中渲染为交互式界面,通过 dsh 自有的模型服务(valuz-genui core)生成

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

npx -y @deepseek-ai/dsh plugin --profile web add github:valuz-ai/dsh-valuz-genui#7c5f28f5c4610ef0d61d27798c0118a46e433bef
README兼容性版本

兼容性与来源证明

Valuz Genui 以 @valuz/dsh-valuz-genui 发布,当前版本为 0.2.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.2.2stable
2026/10/4
0.2.1stable
2026/10/4
0.2.0stable
2026/10/4
查看其余 2 个版本收起版本
0.1.1stable
2026/8/24
0.1.0stable
2026/8/17

相关插件

正在加载相关插件…

最新版
0.2.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 3
周下载
48
最近提交
2026/10/4
查看源码 ↗
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 Session Titles Bundle@deepseek-ai/dsh-experimental-session-titles-bundle新的用户提示到达时刷新会话标题。Personalized Recommendations@deepseek-ai/dsh-personalized-recommendations回答下方以卡片形式提供个性化页面和内置插件推荐Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-valuz-genui

A DeepSeek Harness plugin that gives the model a generate_ui tool: the model itself authors an A2UI v0.9.1 document and passes it to generate_ui, and the browser renders it as an interactive surface inline in the chat — charts, KPI cards, tables, forms, dashboards — streaming as the model writes the call, and whose interactions come back to the model.

There is no nested model call: the UI is the model's own streamed output, so it appears live (like a fenced block), costs one model turn, and can't fail with a mid-stream error from a second request. It builds on the provider-agnostic valuz-genui core (76-component A2UI catalog, streaming sanitizer, React renderer).

How it works

  • Authoring guide (system prompt + skill). The plugin teaches the model to author A2UI and deliver it by calling generate_ui with messages (the array of A2UI message objects). When the host supports skills, a compact guide (component names + purposes + message contract) is always on and the full field-signature catalog loads on demand via the genui skill; otherwise the full guide stays in the system prompt.
  • Streaming render. As the model writes the generate_ui arguments, each tool-call-delta reaches the browser as a transient assistant/live-chunk before the tool runs. A conversation node keyed by the generate_ui call id folds those deltas, extracts the complete A2UI messages authored so far, and renders them with the valuz <A2UIRenderer> — which keeps the last good surface while the tail is still being written. So the surface builds up component by component, live.
  • Settle + replay. When generate_ui executes (milliseconds — it only validates and never calls a model), it persists the canonical document to tool/result.meta. The node adopts that authoritative document. Live chunks are process-local and disappear when the model attempt settles, so after settling and on reload the node rebuilds from the durable tool/call arguments and tool/result.meta.
  • Turn end. When the turn completes, its settled surfaces render again after the final reply, outside dsh's collapsed process view, and the in-process copy shrinks to a one-line reference.
  • Interactions. A click/submit on a rendered surface is sent back to the model as an ordinary user message: <ui_action surface="…" component="…" name="…">{context}</ui_action> (model-visible ⟺ logged). The model answers in text or calls generate_ui again with the updated document.

Install

Compatibility

PluginDeepSeek Harness
0.2.x0.2.x (from 0.2.0-rc.2)
0.1.x0.1.0-rc.6 to 0.1.1

dsh 0.2 replaced the client Conversation APIs that 0.1.x uses, so 0.1.x fails to load there with pending (waiting for service: conversationEvents). dsh checks a plugin's declared peer ranges at install and startup, so an incompatible pairing is refused before it loads.

Into an existing profile that already has a model configured:

dsh plugin --profile web add @valuz/dsh-valuz-genui

The npm package ships a prebuilt lib/, so no build step or allowBuilds entry is needed. To pin an unreleased commit instead, install from git — pnpm ≥ 10 then blocks the git dependency's prepare build until you allow it; the first add fails and prints the exact key to copy into the profile's pnpm-workspace.yaml:

dsh plugin --profile web add github:valuz-ai/dsh-valuz-genui#<commit-sha>
allowBuilds:
  '@valuz/dsh-valuz-genui@https://codeload.github.com/valuz-ai/dsh-valuz-genui/tar.gz/<commit-sha>': true

Then restart dsh web and hard-refresh. Ask the model for a chart or dashboard to verify. No extra configuration is needed — the model authors the UI through whatever model the session is using.

Local development

The generation core and renderer come from npm (@valuz/genui-core, @valuz/a2ui, from valuz-ai/valuz-genui); the client bundle inlines them at build time:

git clone https://github.com/valuz-ai/dsh-valuz-genui.git
cd dsh-valuz-genui && pnpm install && pnpm run check
# install into a profile (rebuild lib/ first with pnpm run build)
dsh plugin --profile web add /absolute/path/to/dsh-valuz-genui

Restart dsh web and hard-refresh after each rebuild.

The tool

generate_ui(messages, title?)

  • messages — the array of A2UI v0.9.1 message objects the model authored: createSurface first, then updateComponents / updateDataModel; exactly one component has id "root". Written as native JSON (not a stringified blob), so it streams and validates cleanly.
  • title — optional short surface title.

The tool validates the document, pins the catalog id, drops schema-invalid components (siblings survive), and persists everything to tool/result.meta. The model receives a one-line receipt.

Configuration

Override the valuz-genui row by id in your profile's cordis.patch.yml:

KeyDefaultMeaning
maxDocumentBytes262144Inclusive byte cap on the serialized A2UI document.
alwaysOnFullGuidefalseKeep the full field-signature catalog in the system prompt instead of the on-demand genui skill.

Known Limitations and Deferred Work

  • Placement inside completed turns. dsh folds a completed turn's process (skill load, reasoning, tool calls) into a collapsed "Completed in Ns" disclosure. The plugin therefore shows a completed turn's settled surfaces at the end of the turn, after the final reply, through dsh's conversation.chat.turnTail slot, and replaces each surface inside the process with a one-line reference. A later surface with the same title counts as a revision, so only the latest one appears at the turn's end; surfaces with different titles all appear. A surface that never settled (for example, an interrupted call) stays inside the process.
  • Always-on prompt cost. Where the host supports skills (ctx.skills, e.g. the web profile), only a compact guide (~3.1k tokens: component names + one-line purposes + the message contract) stays always on, and the full field-signature catalog (~9k tokens) loads on demand through the genui skill. Where no skill capability exists (or alwaysOnFullGuide: true), the full guide stays in the system prompt. Both are stable prefixes (KV-cache-friendly). The model is told to load the genui skill before authoring; guessing fields drops components.
  • Authoring quality depends on the model. A2UI's 76-component graph is richer — and harder to author inline — than a compact DSL. Complex dashboards may need prompt tuning; the sanitizer tolerates and drops malformed components rather than failing the whole surface.
  • Client bundle is large (~3.5 MB). recharts, the A2UI renderer, and markdown-it are inlined. Phase 2 splits the chart engine into a lazily loaded plugin-served asset.
  • Theme bridge is coarse. The renderer follows light/dark but does not yet map A2UI --va2-* tokens onto the host --dsw-alias-* scale. Core semantic tokens (background, text, border, accent) can be mapped through a registered a2ui theme extension; chart palettes live in JS and need renderer support.
  • Interactions round-trip through the model. Every <ui_action> becomes a user message; there is no local-only handling yet.
  • No surface under the PTC (Code Mode) preset. With tool-presentation: mode: code the model may only call run_code; generate_ui runs from inside the program, so the model streams TypeScript rather than messages (no live rendering), and the nested result is logged as tool/ptc-dispatch — which carries content but no meta — so the settled surface never appears either; only run_code's text receipt does. Use the Standard preset, or copy a preset with mode: both so can still be called directly. Rendering under would need this node to match and dsh to carry on that event.

License

MIT

generate_ui
code
tool/ptc-dispatch
presentationMeta
  • No plugin-owned session events. Everything persisted goes through platform events (tool/call for the authored call, user/message for actions, tool/result.meta for the settled document), which is enough for the model-driven loop. Ephemeral surface state (form drafts, tab selection) is not model-visible and would belong in client-side storage, not the log. Only a surface update that no tool call produces (live data, host-pushed panels) would need plugin events, and dsh's Session.append has no way to mark an event ignorable, and dsh rejected event-type registration for third-party plugins.
  • Host-contract hardening. The client bundle mirrors dsh's platform module list (PLATFORM_MODULES in packages/client/web/src/platform.ts) by hand, so a host that changes it can break loading. The dsh peer ranges are capped to one minor line (>=0.2.0-rc.2 <0.3.0), so a new dsh minor needs a plugin release. Planned: run check against the latest dsh release in CI and add a recorded-session replay snapshot that pins the streaming node end to end.