Introduction

Archiving conversations in the DSH sidebar only hides the conversation from the list; the conversation log files remain on the file system. akira399/dsh-session-delete is a DSH plugin that adds an “Delete Conversation” entry to the ··· menu of a conversation row, used to permanently delete conversation logs from the file system, rather than just archiving and hiding them.

Overview

  • Plugin Name: akira399/dsh-session-delete
  • Maintainer: akira399
  • License: MIT
  • Positioning: Permanently delete conversations in the DSH sidebar conversation menu, true physical deletion, not archiving/hiding
  • Dependencies: Uses only Node built-in modules and injected official services, no third-party runtime dependencies

Core Capabilities

  1. Locate and delete log files: Locates the conversation directory via the official sessionPersistence.locate() and recursively deletes log files.
  2. Handle running conversations: When deleting a running conversation, it first cancels the current response, removes it from memory, and then executes the deletion.
  3. Clean up accounting information: Synchronously cleans up conversation sessions and global archive sets in workspace.json.
  4. Immediate refresh: The conversation row disappears immediately after deletion without needing to refresh the page.
  5. Confirmation dialog: A confirmation dialog pops up before deletion, warning that the operation is irreversible.
  6. Location validation: Validates based on snapshot store, sidebar row order, and title to locate the target conversation.
  7. Low dependencies: Uses only Node built-in modules and injected official services, with no third-party runtime dependencies.

Installation and Activation

The installation command verified in the documentation is as follows, where <owner> is a placeholder provided in the documentation and no specific replacement value is given directly:

npx -p @deepseek-ai/dsh dsh plugin --profile web add <owner>/dsh-session-delete

Restart dsh web after installation to apply the changes.

Since the deletion operation directly handles DSH local conversation files, the plugin runs with the current dsh process permissions; you should check the source code and license before installation. The plugin license is MIT.

Typical Usage

  1. Find the target conversation in the left conversation list and click the ··· button at the end of that conversation row.
  2. Click “Delete Conversation” below “Archive Conversation”.
  3. Click “Confirm” in the confirmation dialog.
  4. If deleting a running conversation, it will first abort the conversation’s response and then execute the deletion.
  5. After installation, you need to restart dsh web to use the new entry point.

Applicable Scenarios and Considerations

Suitable for DSH scenarios where you need to remove conversation logs from the file system, rather than just hiding conversations from the sidebar.

Please note the following boundaries:
- The deletion operation is irreversible.
- Deletion requests only accept access from localhost.
- sessionId is strictly validated to the session-<uuid> format.
- Attachments are cross-conversation shared resources and will not be deleted with the conversation.
- Sub-agent sessions are stored independently and require individual operations.
- Menu injection depends on the official client DOM structure and menu text.
- Query/projection caches are not forcibly cleaned up; the official cache mechanism will self-heal on the next read.

Links

GitHub Repository: akira399/dsh-session-delete

The directory page URL does not explicitly appear in the verified documentation.