Preface

When interacting with an Agent using DeepSeek Harness (DSH), developers often need to provide feedback or correction suggestions for specific parts of a reply. Copying text directly or rewriting an entire message can easily lose context and is hard to map precisely. The dsh-message-annotator plugin is inspired by the interaction model of the Codex desktop version and aims to address this pain point by providing a structured quoting and annotation mechanism.

What is it

dsh-message-annotator is a client-side plugin maintained by Theoz001. Its core functionality is to let users quote and annotate Assistant replies (including intermediate steps or tool outputs) in the DeepSeek Harness Web UI. Users can temporarily store selected text and annotation content as numbered cards, then align and merge these cards with the draft and send them to the Agent as a single structured message.

Core features

The plugin provides the following main features:

  • Floating selection trigger: Select any text in the chat stream (Agent reply, intermediate step, or tool output), and an “Annotate” button appears next to the selection. Clicking it locks the quoted content to the selected text.
  • Per-message action: An “Annotate” button also appears in the action bar of each completed Assistant message (next to the like/dislike buttons). When no text is selected, clicking this button annotates the entire message.
  • Annotation dock: All pending annotations are listed above the input box as numbered cards (e.g., Annotation 1, Annotation 2…). Each card contains the quoted original text and editable annotation content, supporting individual removal and one-click clearing.
  • Collapsed bar: When there are many annotations, cards collapse into single-line chips. Hover to preview the content, click × to remove a chip, and the Send button remains available.
  • Aligned sending:
    • Send annotations: Merges the current draft with all annotations into one message, keeping each quoted block strictly aligned with its annotation content.
    • Insert into draft: Inserts only the formatted text (including the quoting and annotation structure) into the input box draft for user review.
  • Bilingual UI: The interface language follows the system environment and supports switching between Chinese and English.

Installation and activation

Install the plugin using the official command line:

dsh plugin --profile web add github:Theoz001/dsh-message-annotator

After running the command, restart dsh and refresh the Web UI to activate the plugin.

Typical usage

  1. Create an annotation: Select a piece of code or text in the chat interface, click the “Annotate” button that appears, and enter the annotation content in the pop-up editor.
  2. Manage annotations: In the dock above the input box, you can view, edit, or delete created annotation cards.
  3. Send the message:
    • If you want the Agent to adjust content based on the annotations, click “Send annotations”.
    • If you want to review the generated structured text first, click “Insert into draft”.

Notes

  • Trigger limitation: The “Annotate” button in the action bar appears only on the final message of each turn (this is an inherent slot constraint). For intermediate steps or non-final messages, use the floating selection button to annotate.
  • Data persistence: Pending annotations are only valid in the current session memory. Refreshing the page discards the annotation content (sent messages are not affected).
  • Security note: It is recommended to review the plugin’s source code and license before installing.

Links