Introduction¶
DeepSeek Harness (DSH) Web interface uses the Lexical plain text editor, and writing Markdown in the input box requires typing characters literally. dsh-composer-markdown is a pure client-side plugin designed to bring the Markdown editing experience in the input box up to the level of mature chat products.
The plugin focuses on visual presentation and key gestures in the editing state, ensuring that the submitted text remains literal Markdown, with no rewriting or beautification at submission time.
Core Features¶
The plugin primarily provides the following editing assistance:
- List handling: Supports automatic continuation and renumbering for unordered/ordered lists. Implements list hierarchy stepping: press Tab in a list item to indent, and use Shift+Tab or Backspace to outdent (the entire subtree updates together); outdenting at the top level restores the list to plain text. Supports atomic deletion and atomic arrow-key navigation; deleting the bullet marker also deletes the associated indentation.
- Inline code: Supports paired backtick styling. While editing, backticks are hidden and only the internal text’s style is shown; backticks are hidden immediately after the backtick pair is closed; supports WYSIWYG selection.
- Code fences: Supports automatic closing and rendering only on submission for
```/```ts. Supports one-click unwrapping at fence boundaries; use arrow keys to skip marker lines; press Shift+Enter inside a fence to insert a paragraph. - Keyboard interactions: All editing gestures rely on Shift+Enter; the Enter key retains DSH’s native submission semantics and is not intercepted.
Installation and Activation¶
Before installing, ensure the environment meets the following requirements:
* DSH version: 0.1.7-rc.x (0.1.7-rc.2 verified)
* Node.js version: ^22.19.0 || >=24.0.0
* Modern desktop browsers (Chrome/Edge/Firefox/Safari)
Use the official installation command:
dsh plugin --profile web add dsh-composer-markdown
After installation, you must restart the dsh web service to load the plugin. If installed via link:, the client.js file must be regenerated.
Usage¶
- List level switching: Place the cursor in a list item, press Tab to indent one level, and press Shift+Tab or Backspace (after the atomic element) to outdent one level.
- Code fence input: Type
tsat the beginning of any line; the cursor automatically moves inside the fence. Press Shift+Enter inside the fence to close the fence and jump to the next line (the fence is empty at this point). - Inline code: Type text wrapped in backticks; in the editing state, only the style is displayed, and backticks are invisible.
Use Cases and Precautions¶
- Editing-state enhancement only: The plugin only changes the visual behavior and key behavior during editing; it does not change the submitted text content. The submitted Markdown is a byte-for-byte faithful copy of the original input.
- No rich-text editing: The plugin does not support rich-text editing, nor does it rewrite or beautify Markdown at submission time.
- Environment dependencies: The plugin runs under the permissions of the DSH process; before installation, check the source code and license. If you modify the source code via
link:after installation, a rebuild is required.