Introduction¶
In DeepSeek Harness (DSH), when performing tasks involving agents or long conversations, user messages that have been sent often cannot be “ignored” and revised: the conversation log is append-only, and the input box at the bottom can only continue the chat. Once a prompt is written incorrectly or the intent is unclear, the common practice is to open a new conversation or manually copy and paste, and the file status in the working directory will not revert along with the “conversation.”
Below is an introduction to the client plugin dsh-chat-rewind (maintainer cyh8037): double-click on a message you sent to edit it locally; after confirmation, it branches the conversation before that message and resends it, regenerating subsequent answers; the files in the working directory will not be reverted, and the original session can be kept or automatically archived by an option.
What is this¶
dsh-chat-rewind is a Web Client Plugin for DSH (Category: Client), npm package name dsh-chat-rewind, current repository version 1.0.0, license MIT.
DSH does not have a public “truncate session in-place” interface. The implementation of this plugin is: calling the session branch capability before the target user message, sending the modified content in the new branch, thereby achieving the effect of “starting over from this message” in terms of experience, without touching the project files on the disk.
Core Features¶
The capabilities verified from the project README are as follows:
- Enter Edit: Double-click the user message, or hover and click the pencil icon; the inline edit pre-fills the original text.
- Shortcuts:
Enterto send,Shift+Enterfor newline,Escto cancel, consistent with the bottom composer; clicking outside the edit area dismisses the edit state; only one edit state is allowed at a time. - Images: If the original message has images, the images will be sent with the new message. You can delete them one by one, or paste or drag and drop new ones.
- Archive Switch: The bottom “Archive Original Session” switch is on by default; the source session is archived after successful sending.
- Non-editable Scenarios: Messages with file attachments are not allowed to be edited; messages in sub-agent sessions are not allowed to be edited; non-editable items do not display the edit button, and double-clicking provides no feedback, maintaining the official render state.
- Failure Handling: When sending fails, the newly created empty branch is automatically archived to reduce duplicate branches in the sidebar.
Installation and Activation¶
This repository is a local bundle and requires no build. The installation command must follow the original text in the README; do not splice dsh plugin add github:... yourself.
Method 1: Install bundle in DSH
Execute in DSH (replace target with the absolute path of the local clone or extracted directory; the README requires placing the directory in any location and then installing, so git clone is not executed here):
# Execute in DSH:
# plugin_manager install_bundle target=<absolute path of this directory>
Method 2: Write patch file to profile
Add the following to cordis.patch.yml in the current profile:
- insert:
- id: chat-rewind
name: 'dsh-chat-rewind'
After installation, refresh the page in the Web UI to take effect (client plugins are loaded when the page starts; package.json has dsh.client.immediately set to true and injects @deepseek-ai/dsh-client-ui-chat).
The plugin runs in the current DSH process and the Web frontend environment; you should review the source code and the MIT license before installing.
Typical Usage¶
- Open an existing conversation in the Web UI and find a message sent by yourself that is editable (no file attachments, not in a sub-agent session).
- Double-click the message (or hover and click the pencil), modify the body; if it contains images, delete or paste/drag new images as needed.
- Confirm that the bottom “Archive Original Session” switch is as expected (default on: archives original session on success).
- Press
Enterto send; the plugin will create a branch before this message and send the new content, with subsequent model responses generated in the new branch. - If you need to abandon the edit, press
Escor click outside the edit area.
Behavior and Compatibility¶
Session and Files: The original session can be kept or handled by the archive switch; working directory files do not revert. Archiving defaults to stopActivity: true—if the source session is running, archiving may stop its activity.
Rendering Contract: The plugin overrides the user renderer of conversation.chat.node and reuses the official conversation.chat.user.content Factory and conversation.chat.user.before chain. It validates sessions.fork before registration and slot props before rendering; if the contract is not met, it unregisters and restores the official renderer, outputting a warning to the console.
Known Limitations and Notes¶
- Only processes user messages.
- Not editable with file attachments; images can be carried over, but images that have been offloaded (compressed) by the context will not be carried over to the new message.
- Messages in sub-agent sessions cannot be edited.
- Branches no longer automatically append the “(1)” suffix (README explanation: to avoid orphan branches).
- When the send is rejected by the host, the bottom send might close the edit state early due to the local pending count.
Suitable for DSH users who need to quickly modify a historical user message and fork retry within the Harness dialogue flow, and accept that “file state does not revert with the dialogue.”
Conclusion¶
dsh-chat-rewind uses client inline editing + session branching to turn “modify message and continue from that point” into a double-click operation, while explicitly stating that it does not revert workspace files.
- Community directory: cyh8037/dsh-chat-rewind
- Source code and documentation: github.com/cyh8037/dsh-chat-rewind
The community plugin directory is an independent site and has no official affiliation with DeepSeek or Huafan; the DSH ecosystem follows an extension model of “everything is a plugin,” allowing you to choose and maintain trust boundaries as needed.