Delete a complete closed turn (question + answer + tool calls) from a DeepSeek Harness session, without deleting the session.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-turn-hard-delete
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:shuanzhe/dsh-turn-hard-delete
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
This plugin publishes its README in Chinese only.
Delete one complete closed turn (question + answer + tool calls) from a DeepSeek Harness session, without deleting the session. The deletion is recorded in the session log, so the turn stays gone after reloading.
删除 DeepSeek Harness 会话中的一整轮对话(提问 + 回答 + 工具调用),不影响会话本身。删除结果写入会话日志,刷新后不会复活。
Install / 安装
dsh plugin --profile web add dsh-turn-hard-delete
Requires the plugin to be registered in the profile's dsh.profile.bundles (the add command does this automatically). Restart the web service afterwards.
需要重启 dsh web 服务后生效(dsh plugin add 会自动写入 bundles 登记)。
Usage / 用法
- Hover over a message in the chat. / 鼠标悬停到对话消息上。
- Click the Delete this turn / 删除这一轮 button in the turn tail. / 点击轮次尾部的"删除这一轮"按钮。
- Confirm in the dialog. / 在弹出的确认框里确认。
The whole turn disappears from the UI immediately; the tombstone written to the session log keeps it hidden on reload. Only fully closed turns can be deleted; a running turn must finish first.
删除后整轮立即从界面消失;写入会话日志的墓碑标记保证刷新后依然隐藏。仅支持已关闭的轮次,运行中的轮次需先结束。
How it works / 原理
- Backend: writes a
user/messagetombstone event (empty content,source.kind: "plugin") and replaces the turn's event range in the session log via asurfaceOpreplace. / 后端在会话日志中写入空的user/message墓碑事件,并用surfaceOpreplace 替换掉该轮的事件区间。 - Frontend: a small slot component exposes the delete button and hides the turn's DOM rows by their
data-chat-turnmarker. / 前端通过 slot 注入删除按钮,按data-chat-turn标记隐藏该轮的所有消息行。 - Self-contained and decoupled: the plugin adds no persistent state of its own and can be removed by uninstalling the package and dropping the bundle entry. / 自包含、解耦,拔除插件不残留状态。
Notes / 注意
- Deletion is permanent for the turn's content; there is no undo. / 删除是彻底的,无撤销。
- This plugin deletes a single turn; it does not delete whole sessions. For session-level management, use a session manager plugin. / 本插件删除的是单轮对话,不删除整个会话;会话级管理请使用会话管理插件。
- Built against the turn/step surface model of
@deepseek-ai/dsh-session>=0.1.0-rc.6. / 基于@deepseek-ai/dsh-session>=0.1.0-rc.6的 turn/step 界面模型构建。
License / 许可
MIT
Links
More in this category
Minglink/dsh-infinite-gen-4★ 3818
System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status badge driven by a session projection.
ranxianglei/billion-context★ 3736
The official billion-context plugin: a context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).
liangmianya/dsh-synapse★ 647
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
MichengAI/dsh-archive-manager★ 278
Adds an archived-sessions page in Settings to search, restore, and delete archived DeepSeek Harness sessions by workspace.
Nwflower/dsh-chat-import★ 277
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
SiriLee/dsh-rewind★ 233
In-place conversation rewind in the same session window without forking (Claude Code /rewind semantics): a per-message ↶ button cuts the model context back to any user message, with an optional Claude-Code-style file restore from disk-persisted before-backups.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.