DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Session Cleaner — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
S

@beiwen/dsh-session-cleaner

Session Cleaner

DSH 会话管理精简插件:在会话行的“…”菜单里彻底删除会话(含 DSH 没有清理接口的投影缓存)与移动到其他工作区。Thorough session deletion + cross-workspace move, right in the session “…” menu.

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:yuanxinbin520/dsh-session-cleaner#4f8d43052ecc1d686351a411982c6b21b1488b5d
README兼容性版本

兼容性与来源证明

Session Cleaner 以 @beiwen/dsh-session-cleaner 发布,当前版本为 0.1.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/2

版本

0.1.3stable
2026/10/2
0.1.2stable
2026/10/2

相关插件

正在加载相关插件…

最新版
0.1.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/2
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航Remotedsh-remoteDeepSeek Harness 的远程工作助手:连接 SSH(密码/密钥/代理/键盘交互/代理跳转),选择远程工作区,使用 22 个 rw_* 工具操作该工作区(包括 rw_edit/rw_stat/rw_mkdir/rw_remove/rw_move/rw_forward),具备冲突感知的镜像 syAi Novel Writer@ethanyoq/dsh-ai-novel-writer面向 DeepSeek Harness 的本地优先小说项目插件Mneme@modusensus/dsh-mneme适用于 DeepSeek Harness 的跨会话记忆插件,支持 autoDream 整合:SQLite 存储、Markdown 镜像、9 个模型工具、自动注入、会话摘要、用户配置文件/规则、自定义斜杠命令、向量(语义)搜索,以及 Web GUI pa

README

dsh-session-cleaner

中文说明 | English

A deliberately small DeepSeek Harness plugin that adds exactly two actions to a Session's … menu, below the shipped Rename / Archive rows:

Menu rowOrderWhat it does
Move to another workspace…500A real cross-workspace move: rewrites the session's cwd, relocates the artifact, swaps workspace accounting
Thoroughly delete session…600Permanently deletes the session and every derived artifact, behind a confirmation dialog

The shipped rows occupy pin (100) / rename (200) / fork (300) / archive (400); this plugin registers at 500 and 600, and the first row carries separatorBefore, so both appear as their own group at the bottom of the menu.

Install

# from npm — recommended, and it needs no GitHub access
dsh plugin --profile web add @beiwen/dsh-session-cleaner

# straight from GitHub, pinned to a release tag
dsh plugin --profile web add github:yuanxinbin520/dsh-session-cleaner#v0.1.2

# over HTTPS — use this when SSH port 22 is blocked on your network
dsh plugin --profile web add https://github.com/yuanxinbin520/dsh-session-cleaner.git

The npm package is published under the author's npm scope as @beiwen/dsh-session-cleaner. The unscoped name dsh-session-cleaner on npm belongs to an unrelated package, so always use the full scoped spec (or a GitHub spec) — a bare dsh-session-cleaner would install someone else's plugin.

If a github: install fails with ssh: connect to host github.com port 22: Connection refused, use the HTTPS form above, or route SSH over port 443 by adding this to ~/.ssh/config:

Host github.com
  HostName ssh.github.com
  Port 443

On Windows behind a TLS-inspecting proxy, git may instead fail with SSL certificate problem: unable to get local issuer certificate. Point just GitHub at the Windows certificate store with:

git config --global 'http.https://github.com/.sslBackend' schannel

(the broader git config --global http.sslBackend schannel works too), or use the npm spec above, which skips git entirely.

The desktop profile is managed exclusively by the Electron app, so dsh plugin --profile desktop refuses; install it from Settings → Plugins instead (paste @beiwen/dsh-session-cleaner, with the registry set to the npm mirror if GitHub is unreachable), or let the plugin manager run install_bundle @beiwen/dsh-session-cleaner. A profile restart (or a page refresh for the client half) activates it.

Requirements: DSH >= 0.2.0-rc.1 (tested on 0.2.0-rc.2), Node >= 22.15 (uses the built-in node:zlib Zstandard API — no dependencies, no build step).

What "thoroughly delete" removes

The confirmation dialog states the scope up front, and the result view reports what was removed:

DataHandling
Session log directory ($DSH_HOME/sessions/<project>/session-<id>/)Removed entirely, including every generation (v4/v3/v2/v1) plus temp/backup files
Live session / agentcancel + dispose, dropped from the agent registry, session/disposed broadcast so the client drops the row immediately
Workspace membershipRemoved from every workspace's sessionIds
Archive / pin markersRemoved from archivedSessionIds and pinnedSessionIds
Projection cache (per session)$DSH_HOME/storages/session_projcache/sessions/<id>.json (and .lock/.tmp) deleted
Projection cache (legacy aggregate)Row deleted from storages/session_projcache.json's tables.sessions, after writing a .bak

The attachments/ and cache/ trees are content-addressed and shared between sessions, so nothing there belongs to a single session.

Safety boundaries:

  • A directory is only deleted when the artifact's header line proves the id; otherwise the plugin reports existed: false and leaves it untouched (junk or corrupt directories are never guessed at).
  • The directory must be exactly <sessions>/<project>/<session>, and neither child level may be a symlink/junction (re-checked immediately before the destructive call).
  • Session ids are validated against path traversal (../evil → HTTP 400).
  • Deletion locates the session by reading only the header frame, so a truncated log is still deletable; the move path decodes the whole log and refuses to rewrite a truncated one.

Move semantics

DSH derives workspace membership from the immutable cwd in the session header, so a registry-only edit would be reverted by the next reconciliation. A move is therefore a real migration:

  1. Source/target directories are validated; an existing target artifact is never overwritten.
  2. The full multi-frame log is decoded and the header's cwd rewritten, with the format generation (v3/v4) kept in sync with the filename.
  3. The artifact is published atomically (old file hidden first; a failure restores it).
  4. A live session is not torn down: its in-memory header and writer handle are retargeted in place, so later events land in the new file.
  5. Workspace accounting is swapped (detach from the old workspace, attach to the target). Any failure rolls the whole move back.
  6. The old directory is cleaned up and the projection cache refolded.

No page refresh is needed after moving an open session.

Host API

The host half registers a prefix route on ctx.webServer:

MethodPathPurpose
GET/session-cleaner/api/workspaces?sessionId=…Workspace list + the session's current workspace
POST/session-cleaner/api/move{ sessionId, targetWorkspaceId }
POST/session-cleaner/api/delete{ sessionId }

Same-origin fetch, no extra auth header; mutations are serialized per session id.

Development

npm run check                    # syntax check both halves
node test/verify-artifacts.mjs   # decode -> re-encode -> decode round-trip over real logs
node test/verify-ops.mjs         # delete / move / truncated log / path safety on a temp fixture

test/verify-artifacts.mjs is the test that protects the move path: DSH's .jsonl.zstd files are concatenated frames, one per durable batch (one measured log was 9.9 MB / 7189 frames / 35.6 MB decoded). Any decoder that reads only the first frame silently reduces a log to its header line, so this suite asserts a byte-identical round-trip. Both suites are self-contained: without a DSH install the ops suite builds its own synthetic 2001-frame log, so CI needs no Harness.

Known limitations

  • Deleting the session you currently have open removes its row; the view can stay on an empty conversation until you refresh.
  • If the host rewrites the aggregate session_projcache.json while running, a pruned row may reappear; the per-session files are unaffected (cleaning while DSH is stopped is the safest).
  • Requires a sessionPersistence backend exposing locate(); without it the plugin errors out instead of deleting blindly.
  • No batch operations (use a session-manager style plugin for bulk work).

License

MIT — see LICENSE.