DeepSeek Harness (DSH) adopts a plugin-based architecture. In regular conversations, the default input box is sufficient. However, when processing Markdown, code blocks, or scenarios requiring precise indentation, the interaction limitations of a traditional input box become apparent. DSH-Codinput modifies the conversation.composer.bar slot, replacing the chat input box with a code-editor-like panel and providing an input experience closer to a code editor.
Core Features¶
By taking over the host’s original slots, the plugin provides the following capabilities:
- Tri-state single instance: There are only three forms for the input entry. Exactly one is active at any time, and it never coexists with the official input box.
- Normal mode: By default, the takeover card occupies the original input position.
- Floating mode: Press and drag the empty area of the card’s top bar to detach it into a floating window. Its position and size can be adjusted and will be remembered.
- Sidebar mode: Open the “Codinput” tab in the right sidebar. When the sidebar is collapsed, it does not yield; it is recalled via the circular handle below the title bar. Typing
/codinputin the sidebar returns directly to the official input box and closes this tab.
- Editor-style input: Based on CodeMirror 6. It supports line numbers (can be disabled), current-line and line-number highlighting, soft wrap, Tab indentation, and line-column indicators.
- Split editing and preview: Supports real-time Markdown rendering, displayed with a strict half-and-half split.
- Undo history preserved across modes: After dragging to floating mode or switching to sidebar mode and back,
Ctrl+Zstill works. All three states share the same official input engine, and the draft is the single source of truth. /and@trigger pipeline: Fully follows the official pipeline (track → official menu store → MenuView replicated item by item). Candidate menus, drill-down, and crumbs align one-to-one with the official behavior.- Model and permission reading: The model and thinking intensity are read from the official shared store (the same state source as
/model). Permissions are the three official presets, including a risk confirmation modal for full permissions. - Attachment support: Supports slash “Add · File”, image pasting, and dragging files into the card. Clicking an image thumbnail opens a full-image preview.
- Voice input synchronization: When the official desktop input box includes a voice button, Codinput renders the same button in the same position.
- Performance and usage: Replicates the official stats dock. It displays turns/steps · tok/s, cumulative tok · cache hits, and a small context usage ring.
Installation and Activation¶
Use the official package manager to install it in a single command:
dsh plugin --profile web add dsh-codinput
Enable it after installation. In Settings → Codinput, you can configure takeover activation, line numbers, font, shortcuts, and more. If it is not enabled, opening the Codinput tab in the right sidebar enables it directly.
Typical Usage¶
- Switch to floating mode: Press and drag the empty area of the card’s top bar.
- Switch to sidebar mode: Open the “Codinput” tab in the right sidebar.
- Exit sidebar mode: Type
/codinputin the sidebar.
Notes and Limitations¶
The plugin depends heavily on host-internal structures. After upgrading the host, test it according to TESTING.md.
- No syntax highlighting: A product decision (the input panel is not a code reader).
- No Esc functionality.
- Single input entry: While the Codinput tab exists, the main input is hidden entirely (single input entry convention; browsing other tabs in the same pane does not restore it).
- Tab limitation: If a second “Codinput” tab is duplicated in the same pane, the second panel only shows a prompt and does not render a second editing surface.
- Gesture limitation: In floating mode, only the gesture “drag back to the bottom input area = normal” is retained.
- Third-party dependencies: CodeMirror 6 (MIT), marked (MIT), and DOMPurify (Apache-2.0 / MPL-2.0).
Conclusion¶
DSH-Codinput resolves the fragmented experience caused by DSH’s standard input box in complex input scenarios. By replicating the official pipeline and interfaces, it achieves seamless integration. It is suitable for users who need to write code, format long documents, or perform fine-grained interactions within Harness. The project source code and details are available on GitHub.