DeepSeek Harness A2UI

August 29, 2026 ยท View on GitHub

A standalone DeepSeek Harness plugin for structured, replayable user interaction. It gives the model one a2ui_present Tool and renders the result as a native Harness Tool card without patching Harness core.

The wire format follows the current A2UI v0.9.1 protocol and its Basic Catalog.

Version 0.1 intentionally starts with a safe, useful subset: multi-field forms, contextual choices, review/confirm cards, and read-only progress. The model sends a bounded template, not arbitrary UI code. User actions return structured data to the model; any real-world effect still goes through ordinary Harness tools, approvals, and policy.

Install

DeepSeek Harness 0.1.0-rc.5 or a compatible later 0.1 prerelease is required. Version 0.1.1 was verified against both the current 0.1.0-rc.5 source checkout and the earlier 0.1.1-rc.2 package contracts. Until an npm release exists, clone this repository, build and pack it, then add the tarball to a profile:

npm ci
npm run check
npm pack
dsh plugin --profile web add ./chenjie1129-dsh-a2ui-plugin-0.1.1.tgz

Restart that profile after installation. The bundle patch mounts the host Tool automatically, and the package's dsh.client entry mounts the React card in the web UI.

What the model can present

  • form: text, multiline, checkbox, and single-choice fields
  • choice: a focused choice with optional supporting fields
  • review: structured sections plus explicit confirm/cancel actions
  • status: read-only progress steps; it returns immediately

All interactive surfaces wait for one valid user action. The output includes surface_id, outcome, action, and the complete declared data model. A single-choice field uses the Basic Catalog's ChoicePicker representation and returns a zero-or-one-item string array.

Configuration

actionTimeoutMs: 600000
maxPayloadBytes: 65536
authority: loopback

loopback is the safe default. Use trusted-host only when the Harness web UI is intentionally served through a configured trusted host. It is not an authentication mechanism.

Why this shape

  • Replay-stable: the UI is rebuilt from durable Tool arguments and results.
  • Reconnect-friendly: the browser can refresh while the host-side call remains pending.
  • Exactly once: duplicate and stale submissions fail closed.
  • Structured fallback: every call requires complete fallback_text for generic/raw views.
  • No hidden authority: an A2UI button reports intent; it cannot directly run a side effect.

See Architecture, Verification, and Security. A Chinese guide is available in README.zh-CN.md.

Compatibility and non-claims

The plugin emits the A2UI 0.9.1 v0.9 wire envelope and a bounded subset of the official v0.9 Basic Catalog. It is not a full renderer for arbitrary A2UI catalogs and does not claim AG-UI or A2A compatibility. React 19-only upstream renderer packages are deliberately not embedded in the Harness React 18 web app.