Preface

When debugging prompts in DeepSeek Harness Web, sending a message by mistake often means having to restart the entire conversation or manually copy-pasting, opening a new session, and re-providing context. The community also has recall-type plugins, but many implementations modify the context during the confirmation phase, and exiting midway can leave behind inconsistent cache or session states.

DSH-EasyRewrite (dsh-easyrewrite) is designed for the DSH Web client, using official extension points to implement message recall and in-place bubble rewriting. The maintainer is Renzic-Stone, current version 2.3.0, MIT licensed, with approximately 51 stars on GitHub. Below, we introduce its positioning, capabilities, and installation usage.

What Is This

DSH-EasyRewrite is a client-side plugin for DSH Web that addresses two types of issues:

  1. Recall: Truncate a user message and all subsequent queries starting from that message.
  2. Rewrite: Click on your own message bubble to modify the Markdown source in place and resend it.

The plugin is declared compatible with DeepSeek Harness Web (rc.6+) and works through extension points such as keyed slot overrides and official fork RPC, without modifying the DSH source code. It does not alter official files upon uninstallation.

Core Features

Recall

A recall button appears next to the official copy button for each user message. Clicking it brings up a DSH-style confirmation capsule (e.g., “Recall this message and the next x queries?”). After confirmation, the text is backfilled into the input box. The actual truncation occurs when you press “Send”—until then, closing DSH leaves the conversation and model context unchanged.

After sending, a “traceless replacement” is executed: the original session is archived, a new session with the same name replaces it up to the target message, and the modified text is sent automatically. The input box displays a “Modifying” bar, which can be canceled with × to restore the original draft. Two backfill modes (overwrite/merge) are available; only one pending recall is allowed per session simultaneously, and drafts are persisted per session.

Inline Edit (Rewrite)

Clicking your own message bubble enters in-place editing, preserving the original Markdown. Press Esc to cancel or Ctrl+Enter to confirm. Editing width has three modes (compact/standard/expanded) and can be customized. After confirmation, it follows the same truncation → archive → same-name new session → auto-send flow as recall.

Messages with images support both the recall button and bubble editing. After confirmation, images are sent along with the modified text. During editing, you can delete, paste, or drag in new images, and switch models and reasoning levels. Editing progress can be recovered after a refresh.

Settings

In Settings → Plugins → Plugin Configuration, it is presented as collapsible cards identical to the official style. The interface language switches with DSH (中文/English/日本語). Options take effect immediately, including: bubble edit toggle, show recall button when closing edit, recall confirmation capsule, recall visual mode, statistics scope, backfill conflict mode, edit width, etc.

Draft Auto-Backup

When a pending draft remains unprocessed for over 10 seconds, it is automatically backed up to a local file (refreshed every 5 seconds thereafter). The backup is deleted upon confirmation or sending completion. Backup path:

$DSH_HOME/dsh-easyrewrite/backups/<sessionID>.json

Recovery from backup only occurs when there is no pending local state, ensuring it does not overwrite drafts currently being edited.

Version Paginator

After each recall or edit-resend, a ‹ X/N › control appears in the operation area of the last response to that query. Click or use keyboard ←/→ to switch versions; subsequent context changes with the version. The viewport anchors without jumping during switching. After all sessions are archived, you can still “Restore and Open” individual versions in Settings → Plugin Configuration → “Versions” group.

Recall Shortcut (Beta)

The master switch in settings is disabled by default. Once enabled, you can record a key combination (at least one modifier key). Trigger conditions: the input box is not focused, and the most recent message in the current session is a user message—equivalent to clicking that message’s recall button.

Installation and Activation

Install via npm package (recommended):

dsh plugin --profile web add dsh-easyrewrite

Or install from GitHub:

dsh plugin --profile web add github:Renzic-Stone/DSH-EasyRewrite

After installation, restart dsh web and perform a hard refresh on the page with Ctrl+Shift+R.

Recall Timing Note: DSH’s fork can only truncate at closed turn boundaries. If the message’s turn has not ended, the interface will prompt “The turn containing this message has not yet ended…”, requiring you to wait for the response to complete before recalling.

Typical Usage

Recall a Message and Subsequent Queries

  1. Locate the user message you want to recall and click the recall button next to the copy button.
  2. Click “Confirm” in the confirmation capsule and check the backfilled content in the input box.
  3. Press “Send” to complete truncation; if you change your mind, click the × on the “Modifying” bar in the input box to cancel.

In-place Rewrite

  1. Click your own message bubble and edit the Markdown directly inside it.
  2. Press Ctrl+Enter to confirm, or Esc to cancel.
  3. After confirmation, it will automatically truncate and resend the edited text.

Viewing Debug Logs

Key client steps are logged to a unified log file for troubleshooting:

$DSH_HOME/dsh-easyrewrite.log

Format is JSON lines: { t, level, tag, message, data }. Logs only record local behavior and do not upload data.

Applicable Scenarios and Notes

Who It’s For

  • Developers who frequently iterate on prompts in DSH Web and need to recall or resend specific messages.
  • Scenarios requiring editing user messages with images and switching between versions to review different approaches.
  • Users who prefer to “confirm before modifying context” and want to avoid accidental pollution of the session midway.

Pre-use Notes

  • The plugin runs with the current DSH process permissions; before installation, it’s recommended to review the GitHub repository source code and MIT license.
  • Only supports the DSH Web client (--profile web), not applicable to other profiles.
  • The recall shortcut is disabled by default to avoid conflicts with other plugins’ shortcuts; enable and record it in plugin configuration when needed.
  • The SkillHub directory page (DSH-EasyRewrite) is a community-independent site with no official affiliation with DeepSeek/幻方.

Conclusion

DSH-EasyRewrite integrates recall and bubble rewriting into DSH Web’s existing interactions: recall next to the copy button, edit by clicking the bubble, lazy submission, and traceless replacement, striving for a “should be native” experience. Features can be toggled as needed, with a trilingual interface, implemented purely through extension points, and the maintainer claims proactive adaptation during DSH upgrades.