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 fieldschoice: a focused choice with optional supporting fieldsreview: structured sections plus explicit confirm/cancel actionsstatus: 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_textfor 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.