确认后即时隐藏会话,重启时安全归档到恢复垃圾箱
27.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add omdsh-dev/dsh-essential该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 82 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 17 处,展示前 17 条)
- 删除本地文件递归scripts/prepare.mjs:20
rmSync(join(root, 'lib'), { recursive: true, force: true }) - 读取本地文件scripts/prepare.mjs:23
if (!existsSync(entry)) { - 执行外部命令来自配置/变量scripts/prepare.mjs:27
const result = spawnSync(process.execPath, [entry, ...args], { cwd: root, stdio: 'inherit' }) - 读取本地文件scripts/verify-self-contained.mjs:6
const pkg = JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf8')) - 读取本地文件src/queue.ts:71
await lstat(path) - 写入本地文件src/queue.ts:133
await writeFile(temporary, `${JSON.stringify(value)}\n`, { encoding: 'utf8', flag: 'wx', mode: 0o600 }) - 写入本地文件src/queue.ts:134
await rename(temporary, path) - 删除本地文件src/queue.ts:137
await unlink(temporary) - 写入本地文件src/queue.ts:161
await mkdir(pendingDir, { recursive: true, mode: 0o700 }) - 写入本地文件src/queue.ts:202
await mkdir(pendingDir, { recursive: true, mode: 0o700 }) - 写入本地文件src/queue.ts:203
await mkdir(trashDir, { recursive: true, mode: 0o700 }) - 读取本地文件src/queue.ts:204
const filenames = (await readdir(pendingDir)).filter(name => name.endsWith('.json')).sort() - 读取本地文件src/queue.ts:214
const request = requestFromUnknown(JSON.parse(await readFile(requestFile, 'utf8'))) - 删除本地文件src/queue.ts:229
await unlink(requestFile) - 删除本地文件src/queue.ts:237
await unlink(requestFile) - 写入本地文件src/queue.ts:251
await rename(sourceDir, targetDir) - 删除本地文件src/queue.ts:253
await unlink(requestFile)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-commands@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-typert-protocol给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 确认后即时隐藏会话
- 重启时安全归档
- 恢复垃圾箱
为 DeepSeek Harness 提供可恢复的对话删除能力,支持菜单集成、即时隐藏与重启安全归档
README
由 DeepSeek 最新模型翻译生成dsh-essential
面向 DeepSeek Harness 的可恢复对话删除插件。它在会话行菜单中添加“删除对话”,也注册人工命令 /delete-conversation;用户确认后,目标 Session 会进入删除队列,并通过 Workspace 的持久归档投影立即从列表中隐藏。DSH 下次启动时,插件会在 Web Workspace 建立会话索引之前校验该 Session 的完整生命周期,并把其 JSONL 目录原子移动到恢复垃圾箱。
为什么需要重启
当前 DSH 的 Session 持久化约定是只追加的,公开服务没有删除方法;活动 Agent 的销毁句柄也只属于创建者。插件不能安全地从活动写入者脚下移走日志。因此,删除分为两个阶段:当前进程只写入一条持久请求,下一次启动在任何会话恢复之前完成移动。这个边界避免日志重建、部分写入和生命周期竞争。
安装
本包是一个自包含的 DSH bundle,自带 cordis.patch.yml,不需要修改或重新构建 DeepSeek Harness 源码。直接从已构建的 Harness CLI 安装到 Web profile:
node /path/to/DSH/apps/cli/lib/bin.js plugin --profile web add /path/to/dsh-essential
安装后重启 DSH。
展开完整文档(README 剩余 1 节)
dsh-essential 面向 DeepSeek Harness 的可恢复对话删除插件。它在会话行菜单中添加“删除对话”,也注册人工命令 /delete-conversation;用户确认后,目标 Session 会进入删除队列,并通过 Workspace 的持久归档投影立即从列表中隐藏。DSH 下次启动时,插件会在 Web Workspace 建立会话索引之前校验该 Session 的完整生命周期,并把其 JSONL 目录原子移动到恢复垃圾箱。 为什么需要重启 当前 DSH 的 Session 持久化约定是只追加的,公开服务没有删除方法;活动 Agent 的销毁句柄也只属于创建者。插件不能安全地从活动写入者脚下移走日志。因此,删除分为两个阶段:当前进程只写入一条持久请求,下一次启动在任何会话恢复之前完成移动。这个边界避免日志重建、部分写入和生命周期竞争。 安装 本包是一个自包含的 DSH bundle,自带 cordis.patch.yml,不需要修改或重新构建 DeepSeek Harness 源码。直接从已构建的 Harness CLI 安装到 Web profile: node /path/to/DSH/apps/cli/lib/bin.js plugin --profile web add /path/to/dsh-essential 安装后重启 DSH。Bundle 会: - 挂载 @deepseek-ai/dsh-essential; - 把 stateDir 设为 DSH home 下的 conversation-trash; - 让 Web Workspace 等待 conversationDeletion 服务完成启动恢复后再建立 Session 索引。 直接写 cordis.yml 时,stateDir 必须是绝对路径: - id: essential-conversation-delete name: '@deepseek-ai/dsh-essential' config: stateDir: /absolute/path/to/conversation-trash 使用 在会话列表中打开目标会话右侧的 … 菜单,选择“删除对话”。Web 会显示标题为“确认删除该对话吗?”的站内卡片,并提供“取消 / 删除对话”操作;不再使用浏览器原生弹窗。确认后通过不依赖活跃 Agent 的根级 Remote 提交目标会话的删除请求,并在请求成功后立即归档该 Session,使历史会话和当前会话都能从所有会话分组中隐藏。取消确认不会发出请求。 在 Harness 提供公开的会话菜单槽之前,插件会观察语义化的 Session 树行,并从 document 级稳定控制器把 React 操作 Portal 到宿主菜单 DOM。控制器不会随宿主菜单自动收起而销毁,因此确认卡片不会跟着菜单子树一起消失。pointer 边界桥会把跨 React 根进入“删除对话”的移动保留在宿主菜单内;若浏览器没有提供 relatedTarget,进入删除项时还会显式取消宿主的 pointer grace,同时继续支持真正移出菜单后的正常自动收起。目标身份优先从该行的 React owner 读取;唯一可见标题匹配只作为安全后备。若标题存在歧义,插件不会显示破坏性操作,避免误删错误会话。 删除进行中,确认卡片会锁定关闭与操作按钮,将主按钮改为“正在删除…”,并显示进度;请求失败或“已排队但暂时无法隐藏”的部分成功状态会直接显示在卡片中。完全成功时,会话行消失即为结果反馈,不再额外弹出成功提示。 立即隐藏只改变 Workspace 的列表投影,不会在活动进程中移动或删除日志;下次冷启动仍会按完整生命周期校验并把日志移入恢复垃圾箱。如果删除请求已写入但归档接口失败,插件会明确提示“已加入队列但暂时无法隐藏”,避免把延迟隐藏误报成删除失败。 也可以继续使用人工命令。删除当前对话: /delete-conversation CONFIRM 按 Session id 删除另一个对话: /delete-conversation CONFIRM 确认成功后重启 DSH。插件在下次启动时把日志移至: /trash// 目录中的 deletion.json 记录原目录。要恢复时,先停止 DSH,删除恢复目录中的 deletion.json,再把该目录移回 originalDirectory。不要在 DSH 运行时恢复。 配置 | 字段 | 类型 | 默认值 | 说明 | | stateDir | string | 必填 | pending 请求与恢复垃圾箱所在的绝对目录;必须位于 Session artifact 目录之外。 | | commandName | string | delete-conversation | 可选的人工作命令别名,不带 /;菜单始终使用稳定的 /delete-conversation。 | 安全与恢复语义 - 命令要求字面量 CONFIRM,缺少确认不会写入请求。 - 请求绑定 sessionId、createdAt 与 cwd;id 被复用时不会删除新的 Session 生命周期。 - 移动前再次比较持久化列表、backend location 与完整 inspect 结果。 - HMR 重载时若目标 Session 仍然活动,请求会保留到真正的冷启动。 - 产品删除使用同一文件系统内的目录 rename,不会 unlink Session 日志。 - 移动后崩溃也可恢复:垃圾箱目标是确定性的,下次启动会补齐 manifest 并清理 pending 请求。 - 验证或移动失败时保留 pending 请求并记录错误,原日志不动。 详细事务说明见 docs/design.md。 开发验证 pnpm install pnpm run verify:self-contained pnpm run typecheck pnpm test pnpm run build pnpm run prepare Model Experience 人工命令生命周期 模型看到什么 无直接模型输入。/delete-conversation 由人工命令层处理,不发送给模型;命令框架把 command/run 与 command/done 写入 Session 日志,但它们是 log-only 事件,不进入对话消息 surface。 Token 影响 零直接请求 token。命令不会触发模型调用。 KV Cache 影响 命令不修改已有模型请求前缀,也不发起独立模型请求。之后删除整个 Session 时,该 Session 不再产生未来请求。 已知限制与后续工作 - 仅支持逐 Session JSONL backend——SQLite 没有独立 artifact location,插件会明确拒绝,而不是猜测数据库内部结构。 - 日志移动在重启后生效——会话行会立即通过持久归档投影隐藏,但当前进程不会移动目标日志;这避免绕过 Agent 所有权与持久化协调器。 - 不是永久擦除——日志被移动到恢复垃圾箱;保留期和最终清理属于部署管理员策略。 - 不级联清理 sidecar——消息反馈等独立存储可能保留孤立行;当前 Session 持久化没有跨域删除事务。 - DOM 兼容边界——在 Harness 提供公开会话菜单槽之前,菜单操作依赖语义化 Session 行/菜单 DOM 与隔离的 React owner 查询。未来宿主若同时改变这些结构,插件会安全地停止注入菜单项,人工命令仍可使用。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
omdsh-dev/dsh-essential
确认后即时隐藏会话,重启时安全归档到恢复垃圾箱
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化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,269已汉化DSH
70.8
这是你的仓库?认领条目