Preface¶
In DeepSeek Harness (DSH), many tasks can be accomplished with plain text: question answering, rewriting, summarization, and simple lists. However, when users need to visualize complex relationships or simultaneously handle multiple interdependent choices, back-and-forth descriptions often become inefficient. A common approach is to use a pre-built component directory, allowing the model to output fixed-structure cards or forms. This solution is suitable for assembling known components but struggles to cover tasks where the structure and interactions cannot be determined in advance.
Below introduces the community plugin DeepSeek Harness GenUI (dsh-plugin-genui). It adopts a code-first approach: the Coding Agent writes standard React + TypeScript code for the current task. The interface captures user selections and inputs, which are then read and processed by the next Agent turn.
What Is This¶
DeepSeek Harness GenUI is maintained by pengyue-polaron and categorized as a “Client” in the SkillHub Plugin Directory. The plugin’s purpose is to generate task-specific React applications for DeepSeek Harness and carry meaningful state into subsequent Agent turns.
The source code is hosted on GitHub under the MIT license, with the current version being 0.13.1.
Core Features¶
Code-First Interface Generation¶
The Agent writes standard React + TypeScript code, and the plugin handles building and checking. The generated code runs in a sandbox, independent of component tree DSL or intermediate representations (IR).
Cross-Turn Task State Retention¶
The interface saves semantic values such as selections, form answers, drafts, and progress to the current task. When the user continues asking questions, the Agent can read these results without requiring the user to re-describe them. Inline, Canvas, full-screen, and CLI/localhost are different entry points for the same task state; content saved from any entry point can be used in subsequent turns.
Dual Forms: Inline and Canvas¶
The same application can be embedded in the response (Inline) or opened on the right side of the conversation (Canvas). The former is suitable for compact controls or focused selections, while the latter provides more space while preserving the conversation context.
Permission Declaration and Sandbox Isolation¶
The application only declares the Harness/MCP/Skill tools it actually needs, or public HTTPS interfaces that require no credentials. Before opening a connection-type application, Harness displays a complete permission checklist for user confirmation in one go. It re-prompts when capabilities change, and undeclared calls are rejected. MCP credentials do not enter the generated code. On the web, permissions can be viewed or revoked from the page card.
Failed Updates Do Not Override Usable Versions¶
Subsequent modifications update the same application. If an update fails, it does not replace the currently usable version.
DESIGN.md Design Language¶
In Settings → Plugins → Plugin Configuration, you can set default designs for new applications: automatic selection, using built-in styles, importing a custom DESIGN.md, or exporting the current design as a starting point. DESIGN.md controls the design language without restricting page structure.
Built-in styles include:
| Design Style | Visual Language |
|---|---|
material-3 |
Google Material 3: tonal surfaces, vibrant primary colors, clear hierarchy |
apple-human-interface |
Apple Human Interface: restrained, precise, content-first |
shadcn-ui |
shadcn/ui: semantic color variables, clean borders, compact forms |
Division of Labor with Component Tree Renderers¶
The plugin does not replace the lightweight dsh-ui component renderer. The component protocol is suitable for assembling cards, tables, or forms with known components; GenUI is suitable for writing React applications tailored to tasks where structure and interactions cannot be determined in advance, such as freeform simulations, spatial tools, connection-based workflows, or multi-step state management.
Installation and Activation¶
Environment requirements: Node.js ^22.19.0 || >=24, DeepSeek Harness ^0.1.0-rc.6.
The Web profile supports Inline, Canvas, full-screen, and localhost links. The terminal profile replaces web with tui in commands; TUI returns local links and does not embed Canvas.
dsh plugin --profile web add dsh-plugin-genui
dsh --profile web
MCP still connects to the same profile as before. The plugin does not download or launch browsers; each candidate version must pass compilation and source code contract checks before replacing the last usable version.
Typical Usage¶
Two-Minute Trial¶
Create a new Web session and copy any of the following prompts:
Help me plan a Saturday itinerary that includes an art museum, riverside gardens, and dinner. Create an interface where I can directly adjust the times and skip the garden if it rains.
Based on the current repository source code, explain how generated pages enter a runtime with permission control. Create an interactive code path diagram and mark out files, functions, and permission checks.
Create an interactive double-slit interference experiment where I can adjust wavelength, slit spacing, and screen distance, and observe the fringe changes in real-time.
After modifying and saving in the interface, ask:
What did I select in the interface just now? Please continue based on the saved results.
What needs to be verified is not just whether the page appears, but whether the next Agent turn can continue from the previous operations.
CLI Example¶
The terminal profile returns a localhost page, and the next turn can directly reference the paths the user selected on the page:
❯ Explain how generated pages in this repository enter a runtime with permission control. Create an interactive code path page and return a localhost address.
I mapped out src/tools.ts → src/artifacts/builder.ts → src/runtime/server.ts
→ src/artifacts/registry.ts.
http://127.0.0.1:<port>/genui/app/<task-app>
❯ Where did the path I selected stop just now?
It reached the permission check in src/runtime/server.ts and then stopped before the actual tool call, because this access has not yet been granted permission.
Three Scenarios in Documentation¶
The README lists three typical tasks as capability references:
- Selecting Calendar Slots: Converts candidate free times into actionable 90-minute slots. The page saves the selected three slots back to the task.
- Exploring Photosynthesis: Interactively observes the effects of variables like light, carbon dioxide, temperature, and stomatal opening on the reaction through control panels.
- Tracking Code Paths: Generates local pages based on real project source code, listing files, functions, branches, and user-selected paths.
Use Cases and Notes¶
Who Is It For
- Developers who need to generate customized interfaces for specific tasks in DSH, rather than assembling fixed components.
- Scenarios involving multi-step state, spatial tools, simulators, or connection-based workflows where user operations should be written into the task state.
Security and Lifecycle
- Generated code runs in a sandbox; pages directly connected to APIs only support declared, credential-free public HTTPS interfaces.
- Temporary links and granted permissions expire after 7 days; task state expires 7 days after the last update.
Pre-Installation Notes
The plugin runs with the permissions of the current dsh process. Before installation, check the source code and MIT license to ensure the permission declaration mechanism meets expectations. SkillHub is an independent community directory, with no official affiliation to DeepSeek or High-Flyer.
Conclusion¶
DeepSeek Harness GenUI combines “writing React for the current task” with “carrying user state into the next Agent turn”: more flexible than fixed component directories, yet more focused on the DSH task lifecycle than cross-client UI protocols. If your workflow often involves steps where “text is unclear, but after selection, you need to continue,” you can install it using the commands above and verify with the two-minute trial prompts whether the state truly persists across turns.
- Plugin Directory: skillhub.cn/plugins/pengyue-polaron/deepseek-harness-genui
- Source Repository: github.com/pengyue-polaron/deepseek-harness-genui