dsh-intelligence-ui: Rendering DSH assistant responses into an interface

Introduction

When working with agents in DeepSeek Harness (DSH), one of the most common reply types looks like this: KPI comparisons are written as a string of text, timelines fall into Markdown tables, hierarchy is lost on narrow screens, and trends are invisible. Markdown is suitable for prose, not for structure. MarkYangKp’s dsh-intelligence-ui is a niche choice in this direction: it doesn’t replace the chat window, only replaces the assistant message renderer. It renders the structured content written by the model into cards, tables, charts, and flowcharts, while keeping the prose parts in Markdown as is.

What is it

dsh-intelligence-ui is a client-side plugin under the “everything is a plugin” philosophy in the DeepSeek Harbor ecosystem, classified as “Client” on the official directory page. It is a low-heat project with only 1 star in the community directory. Maintainer MarkYangKp, version v1.1.1, MIT license.

One-sentence positioning: It is a replacement for the DSH assistant message renderer. It receives three types of replies—OpenUI Lang fences, structured Markdown, and plain text—rendering the first two into an interface, while plain text passes through the host’s Markdown renderer unchanged.

The problem solved is: DSH’s chat window defaults to Markdown rendering, but model replies often contain more structured content than prose (metrics, comparisons, timelines, code changes), which the default renderer lacks expressiveness for.

Core Capabilities

The plugin is registered on the assistant-step render slot (priority -20), running a three-mode pipeline:

  • Native Fences: If the reply contains ```openui code, it follows the parse → evaluate → render flow, rendering components in place with the highest fidelity.
  • Auto-compile: Without fences, but containing Markdown tables, KPI lists, or ordered steps, the client compiler upgrades them into cards, charts, and search tables.
  • Plain Text: In other cases, it passes through the host Markdown renderer unchanged.

Rendering is additive: no merging, no rewriting, no swallowing content. Text outside fences renders normally, so a single reply can be “explanation → chart → additional explanation”.

The component surface covers ten categories for a total of 44 primitives (layout, containers, text, data, charts, geographic, code & files, processes, interactions). Full signatures are in the repository’s docs/COMPONENTS.md.

On the compilation side, two design constraints are worth noting: the renderer implements graceful degradation for “broken programs”—invalid fields are downgraded to local hints without interrupting the entire message. Unclosed fences render incrementally during streaming generation; final versions do not remount control instances. The second point is key to avoiding flickering in long reply scenarios.

Regarding themes, colors, border-radius, and font sizes are all taken from host theme tokens (--dsw-*). Light and dark themes follow automatically, and tests in the repository ensure zero hardcoded colors. The plugin relies on host-provided --dsw-* theme tokens and @deepseek-ai/dsh-client-* platform modules, requiring no global installation.

Installation and Enablement

The official installation method is to first pull the repository locally and then register the directory in DSH’s plugin manager. Prerequisites are that the host build supports plugin bundles (engines.dsh >= 0.2.1-rc.0), and the desktop application is downloaded from deepseek.com/harness with models configured in DSH.

git clone https://github.com/MarkYangKp/dsh-intelligence-ui.git

After cloning, no build steps are needed—lib/client.js is already in the repo. Then open DSH’s plugin manager, select “Install bundle from local directory”, and point it to the repo root. Menu wording varies slightly across DSH versions.

After restarting DSH and opening the chat window, you should see [dsh-intelligence-ui/1.1.1] in the browser console.

If step 3 does not exist in your DSH build, it means the build does not enable plugin bundle capabilities and cannot load this plugin. You need to upgrade DSH or use a build that supports bundles. The repository’s built-in engines.dsh >= 0.2.1-rc.0 is the explicit declaration of this boundary.

Source build (optional, only needed for Node builds, running tests, or modifying source code):

pnpm install
pnpm build          # 产出 lib/client.js

pnpm version is fixed at 12, managed by the packageManager field, and Corepack will use it automatically. Node requires >= 20.

Typical Usage

Write Markdown normally and insert fences where interfaces are needed. Below is a postmortem example from the README:

故障复盘:
```openui
root = Stack([hd, tl, ok], "column", 16)
hd = Heading("故障复盘", 2)
tl = Timeline([{"title": "14:02 告警", "description": "错误率超过 15%", "time": "14:02", "variant": "error"}, {"title": "14:26 回滚完成", "description": "错误率回落至 0.4%", "time": "14:26", "variant": "success"}])
ok = Callout("下一步", "给索引任务补上连接池上限。", "info")
You can also skip writing fences; structured Markdown will be auto-upgraded. Both paths share the same `parse → evaluate → render` pipeline.

To temporarily disable auto-compile, execute in the browser console:
```js
localStorage['dsh-intelligence-ui:disable-auto'] = '1'

For troubleshooting, it’s worth referencing the command-line entry points: docs/COMPONENTS.md gives all component signatures, examples/README.md has 10 runnable examples, and docs/ARCHITECTURE.md explains the rendering pipeline and host injection mechanism.

Applicable Scenarios and Notes

Who is it for: People who need “structured presentation” for tasks like data analysis, postmortems, and code reviews in the DSH client. If your replies are mostly prose, the benefit is limited, and the plugin won’t change the plain text rendering behavior.

Three points to note:

First, the plugin runs with the permissions of the current DSH process. The interfaces it renders, scripts it injects, and the scope of data it accesses follow the process itself and are not more restricted than the host. Before installing, please read the repository source code and LICENSE: the license file is in the root directory, MIT—concise but complete. Confirm that your understanding of the author’s terms aligns with your usage.

Second, it relies on host-specific capabilities (--dsw-* theme tokens, @deepseek-ai/dsh-client-* platform modules, and a public renderer hook), which did not exist before the engines.dsh 0.2.x line. Version boundaries determine whether the plugin can load in the current DSH build; if not met, it will fail directly.

Third, the current version is 1.1.1 and community attention is low (1 star on the directory page). This means that when issues arise, you will likely need to read the source code and issues yourself to troubleshoot, as the maintainer’s response rhythm is unknown.

Conclusion

dsh-intelligence-ui does not solve an elegance problem, but the gap where “the model understands structure, but the renderer does not”: StatCards, Timelines, and Charts written by the model should not degenerate into walls of text. The plugin achieves this through three features—a three-mode rendering pipeline, degradation protection for incomplete output, and a zero-hardcoded-color theme system. Directory page: https://www.skillhub.cn/plugins/MarkYangKp/dsh-intelligence-ui ; Repository: https://github.com/MarkYangKp/dsh-intelligence-ui .

Please note that this plugin is a community project, and the corresponding directory page is a third-party site with no affiliation with the DeepSeek official app store. Before installing, verify the source code and license with the commands above, and do not trust it directly like an official component.

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye