在侧边栏永久删除会话并清理日志目录
29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/mcf171/dsh-session-delete.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 4 处,展示前 4 条)
- 读取本地文件lib/index.js:108
return (await stat(target)).isDirectory() - 读取本地文件lib/index.js:129
projects = await readdir(root, { withFileTypes: true }) - 删除本地文件递归lib/index.js:253
if (path !== undefined) await rm(path, { recursive: true, force: true }) - 发起网络请求lib/client.js:94
const response = await fetch(ROUTE, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成@mcf171/dsh-session-delete
给 DeepSeek Harness(dsh)Web GUI 补上永久删除会话的动作。
官方 0.2.x 的会话行菜单只有 rename / fork / pin / archive,没有删除;这个插件加一项「删除会话」:确认后归档该会话、移除它的日志目录,并让那一行立刻从侧边栏消失。
零编译:lib/ 里是手写 JavaScript(host 端是 Cordis 插件,client 端是 __ModuleLoader__ 客户端包),改完文件重启 DSH 即生效。
结构
| 文件 | 作用 |
| lib/index.js | host 端插件:注册同源路由 POST /_dsh/dsh-session-delete/delete,依次执行「归档 → 删日志目录 → 广播 api-session/removed」 |
| lib/client.js | client 端包:注册 sidebar.workspaces.session.menu.item 菜单项「删除会话」+ 运行中守卫 + 确认框 |
| cordis.patch.yml | bundle patch:声明 host 插件行(由 profile 的 dsh.profile.bundles 自动应用) |
展开完整文档(README 剩余 1 节)
@mcf171/dsh-session-delete
给 DeepSeek Harness(dsh)Web GUI 补上永久删除会话的动作。
官方 0.2.x 的会话行菜单只有 rename / fork / pin / archive,没有删除;这个插件加一项「删除会话」:确认后归档该会话、移除它的日志目录,并让那一行立刻从侧边栏消失。
零编译:lib/ 里是手写 JavaScript(host 端是 Cordis 插件,client 端是 __ModuleLoader__ 客户端包),改完文件重启 DSH 即生效。
结构
| 文件 | 作用 |
| lib/index.js | host 端插件:注册同源路由 POST /_dsh/dsh-session-delete/delete,依次执行「归档 → 删日志目录 → 广播 api-session/removed」 |
| lib/client.js | client 端包:注册 sidebar.workspaces.session.menu.item 菜单项「删除会话」+ 运行中守卫 + 确认框 |
| cordis.patch.yml | bundle patch:声明 host 插件行(由 profile 的 dsh.profile.bundles 自动应用) |
| test/format-check.mjs | 自测:路径算法是否与本机真实会话目录吻合 |
| test/client-check.mjs | 自测:client 端的加载、注册、渲染、点击(取消/确认/运行中)全流程 |
行为
一次删除按固定顺序做三件事,顺序不能换:
1. 先归档(workspaceRegistry.archiveSession(id))——这是官方持久化的隐藏机制:主列表不再显示该会话,后续任何列表刷新都不会把它带回来。它同时自带活动检查,正在跑回合的会话会被拒绝(提示「该会话正在运行,请先停止后再删除」)。
必须先归档:archiveSession 会检查会话是否仍然"已知",日志删掉之后再归档会抛 WorkspaceUnknownSessionError。
2. 再删日志目录(<DSH_HOME>/sessions/<projectKey(cwd)>/<sessionId>/);目录已不存在时跳过,因此重复删除是幂等的,不会报错。
3. 广播 api-session/removed——复用官方 session/disposed → api-session/removed 那条中继,client 收到后立刻把该行从 UI 移除。
- 内存残留:SessionStore(ctx.sessions)只有 create/prepare/enter/announce/flush/get/list/fork,没有移除;enter() 虽然返回"含 store removal 的 detach disposer",但只接受尚未入册的会话。所以打开过的会话对象会常驻到进程重启。这不影响使用——行已移除(归档 + 广播双重生效),也没有写入会去碰已删的日志。
- 不要调 sessions.refresh():列表 = 持久化扫描 + 内存中的活会话,删除后立刻刷新会把刚移除的行重新加回来。清理靠归档与广播,不靠刷新。
界面与快捷键
- 菜单项:会话行 ⋯ 菜单里增加「删除会话」,左侧是官方 IconTrashOutlineRegular 的垃圾桶图标(路径数据逐条内联,与内置条目像素一致),右侧显示快捷键提示 Delete。危险色标注。
- 快捷键 Delete:作用于当前选中的会话,走的是与鼠标点击完全相同的流程(运行中拒绝 → 确认框 → 删除)。三种情况下不触发:焦点在输入框/可编辑区域、按的是带修饰键的 Delete(Ctrl/Shift/Alt/Cmd)、当前没有选中会话。
- 不可撤销的操作由确认框把关,而不是靠组合键防误触。
设计取向
只使用官方扩展点,不劫持界面:
- UI:注册到官方插槽 sidebar.workspaces.session.menu.item,不监听也不改写侧边栏 DOM(DOM 注入式实现会随官方 UI 改版失效)。
- "运行中"的判断:读官方会话列表计算运行状态点的同一信号 agents.get(id).status === 'running'——只拦真正在跑回合的会话;打开过但已空闲的会话仍可删除。
- 删除动作:走 node:fs,不经 shell;目标目录用持久化后端自己的 projectKey / encodeSegment 规则定位,并遵循 DSH_HOME(自定义 home 目录同样正确)。
- 顺序:先调官方 workspaceRegistry.archiveSession(持久隐藏),再删日志,最后广播官方的 api-session/removed。
- 零新增依赖:整份 client 端只 require("react")——图标是内联 SVG(官方 artwork),快捷键是原生 keydown 监听。这既是体积考虑,也是可靠性考虑:官方 dsh-client-ui-primitives 只是组件库(没有 dsh.client、也没有 ./client 导出),把它写进 dsh.client.inject/external 会让整个 entry 无法激活。
安装(挂到某个 profile)
以 profile web(<DSH_HOME>\profiles\web)为例:
1. 把包放进 profile 的 node_modules(scoped 包位于 @<scope>\ 子目录下)。复制最稳妥:
$dest = '<DSH_HOME>\profiles\web\node_modules\@mcf171\dsh-session-delete'
New-Item -ItemType Directory -Path (Split-Path $dest) -Force | Out-Null
Copy-Item '<本目录>' $dest -Recurse -Force Remove-Item "$dest\.git" -Recurse -Force -ErrorAction SilentlyContinue
也可以用目录链接(改源码即时生效、不用重复复制):
powershell
New-Item -ItemType Junction -Path $dest -Target '<本目录>'
但部分 Windows 环境会拒绝在该位置创建链接(Access denied,mklink /J 同样失败)——遇到就退回复制,代价是改完代码要重新复制一次再重启。
2. 登记依赖 + bundle(<DSH_HOME>\profiles\web\package.json):
jsonc
{
"dependencies": {
"@mcf171/dsh-session-delete": "link:<本目录的绝对路径>" },
"dsh": {
"profile": {
"bundles": [
// …已有项…
"@mcf171/dsh-session-delete"
]
}
}
}
bundle-patch 型插件只登记 bundles,不要再在 profile 的 cordis.patch.yml 里写同名 insert 行(重复挂载会导致插件重复注册、整个插件树加载失败)。
3. 重启 DSH(host 插件代码只在启动时加载)。
卸载
从 profile 的 dsh.profile.bundles 移除 @mcf171/dsh-session-delete,再删除 node_modules\@mcf171\dsh-session-delete 即可。
维护提示
- pnpm install / 插件市场重装可能清掉 profile 里的这份拷贝(它不在 lockfile 的解析结果里)。若重启后菜单项消失,按上面的「安装」重做第 1、2 步即可。
- 升级 DSH 后先确认插件仍在:重启后菜单里有没有「删除会话」;没有就重新挂载。
- 删除目标目录的算法必须与 @deepseek-ai/dsh-session-persistence-jsonl 的 format.ts(projectKey / encodeSegment)保持一致。升级后如怀疑路径规则变了,先跑自测:
powershell
node test/format-check.mjs # 路径算法 vs 本机真实目录
node test/client-check.mjs # 客户端全流程
- 插件只删日志目录;workspace 归属里可能留下已删会话的死 id,这是无害的垃圾数据(会话列表的成员来自持久化扫描 + 内存会话,不读它)。
相关
- 重启脚本:<DSH 工作区>\restart-dsh-020.ps1(等待全部会话空闲后停服重建启动,启动失败自动回滚 profile)。
- DSH web 的授权栅栏:根路径无 token 返回 401,启动日志里会打印 ?token=…;验证插件请用带 token 的请求。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
mcf171/dsh-session-delete
在侧边栏永久删除会话并清理日志目录
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目