dsh-markdown-input
Manifest valida dsh‑plugin for enhancing users' Markdown input experience | a dsh-plugin for enhancing users' markdown input experience
dsh-markdown-input
English | 简体中文
A DeepSeek Harness (dsh) plugin with one core capability — live Markdown rendering in the composer — so that prompts written in dsh are easier to organize and easier to think through.
Status: alpha, under active development. dsh itself is a developer preview with compatibility-breaking changes between versions — see Compatibility for what has actually been verified on a real machine.

What it does
Live-rendering composer
A low-priority entry on the host's conversation.composer election chain (ADR-0005) takes the composer over with a bundled CodeMirror 6 editor that renders while you type, Obsidian Live Preview style: bold, italic, inline code and strikethrough take their real styles, and syntax markers fold away once the cursor leaves their line. A toggle switches to source mode, where every marker stays visible. Enter sends (IME-safe), Shift+Enter breaks the line, and everything you type mirrors into the host draft, so it survives a page reload.

Markdown-rendered user messages
Sent user messages and queued steering messages render as Markdown in the chat history — reusing the host's own rendering pipeline — instead of a wall of plain text. @-mentions and skill chips are preserved, and the line breaks you typed are rendered as hard breaks.

Paste-to-Markdown
Pasting rich text from a web page or a word processor converts the clipboard's text/html into clean Markdown — in the takeover editor at the caret, and on the native composer through the host's version-guarded insertion API. Ctrl/Cmd+Shift+V still pastes plain text, and plain-text, file and image pastes keep their native behavior.

Graceful degradation, face by face
Every surface probes the host before it activates and degrades on its own: built-in takeover panels (approvals, questions, subagents) outrank this plugin and keep the composer whenever they need it; a missing host surface sheds its own feature, never the text face; and a card-level error boundary silently falls back to the native composer with the draft intact.
Install
Requires dsh with the web UI (the desktop app). Verified against dsh 0.2.0-rc.2 — see the compatibility matrix before installing on a newer dsh.
dsh plugin --profile web add dsh-markdown-input
dsh plugin --profile web add github:long6177/dsh-markdown-input
Compatibility
This project makes no range claims. What it has instead is a tested matrix — combinations actually run on a real machine, with dates and outcomes — and a standing watch on upstream drift.
| dsh version | Plugin versions verified | Last on-device verification | Result |
|---|---|---|---|
0.2.0-rc.2 | 0.2.0-alpha.0 → 0.2.0-alpha.20 | 2026-10-07 | Passed |
0.2.1-alpha.1 | — | — | Not verified |
- Every npm release so far —
0.2.0-alpha.0(2026-10-02) through0.2.0-alpha.20(2026-10-07) — was re-tested on the official desktop client running the0.2.0-rc.2kernel. Each release ships an acceptance checklist; the per-version index with dates lives in docs/release/README.md. - Upstream has published
0.2.1-alpha.1. This plugin's peer range is^0.2.0-rc.2(see package.json); by semver's prerelease rule, that range does not accept0.2.1-alpha.1. Verification of it is triggered by drift watch (below); until it passes, no compatibility is claimed for that version. - Drift watch. A scheduled repository workflow checks four upstream signals every day: the npm registry (new versions and dist-tags), upstream releases and tags, commits touching the contract paths this plugin depends on, and the official contract documentation. A new upstream version triggers the full test suite plus semver checks against it, and one tracking issue per version (labelled
upstream-drift). The workflow only opens issues — it does not change code and does not declare compatibility on its own.
Design notes
Four short lines here, deep dives in docs/design/:
- Why takeover — the composer route's engineering story (paint layer → takeover → revival) and the four precise gaps in the current extension model, each backed by upstream source locations.
- Extension points — a source-backed survey of what the dsh web UI lets plugins touch: slots, the composer election chain, message renderers.
- Native surfaces, rebuilt — surface-by-surface specs for the tool-row popups a takeover has to redraw (command menu, permission presets, model selection).
- Prior art — how mainstream chat composers handle Markdown input, compiled from first-party sources.
Decision records (editor choice, takeover, release ritual, dev-dependency model) live in docs/adr/.
Upstream wishlist. The gaps above translate into five concrete interface wishes — view-layer reuse, native seats surviving a takeover, a formal takeover contract with a conformance suite, plugin scaffolding, and a stability or deprecation policy for the preview period. They are written up in docs/design/why-takeover.md · upstream wishlist and will be published as a Discussions "Ideas" thread for community upvoting.
Contributing
CONTRIBUTING.md covers the environment (most work needs no dsh desktop app), what still has to be verified on a real device, and the merge gate: green tests plus a maintainer's on-device re-test. Bugs and feature requests go to Issues (templates provided). The path to becoming a co-maintainer is written down as well — this project is maintained with others, not just by one.
License
MIT. This is a community plugin — not an official DeepSeek product, and not affiliated with or endorsed by DeepSeek.
Comments
Loading…
From the same category
DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.
★ 41.7k
↓ 156/wk
MIT
Aug 24, 2026
dsh plugin --profile web add dsh-plugin-reactive-resumeby Tencent
Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.
★ 8.6k
↓ 6.1k/wk
MIT
TypeScript
Oct 10, 2026
dsh plugin --profile terminal add @wxg-prc-cpg/browser-skill-dsh-pluginby yjh051108
dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).
★ 7k
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby Q00
Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode,
★ 6.2k
MIT
Python
Oct 7, 2026
by dsh-market
The plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场
★ 6.1k
↓ 112.4k/wk
MIT
TypeScript
Oct 10, 2026
dsh plugin --profile web add dshmarketby superdesigndev
OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn
★ 5k
NOASSERTION
Python
Oct 11, 2026
dsh plugin --profile web add treg-dsh