捕获文件改动并回滚,自动审查审批请求
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/5 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add KouzakiUmi/dsh-guard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 70 处,展示前 43 条)
- 写入本地文件packages/dsh-audit-rollback/lib/boundary-exec.js:97
renameSync(action.path, trashFile) - 写入本地文件packages/dsh-audit-rollback/lib/boundary-exec.js:99
copyFileSync(action.path, trashFile, constants.COPYFILE_EXCL) - 删除本地文件packages/dsh-audit-rollback/lib/boundary-exec.js:100
unlinkSync(action.path) - 写入本地文件packages/dsh-audit-rollback/lib/boundary-exec.js:112
writeFileSync(action.path, buffer, { flag: 'wx', mode }) - 写入本地文件packages/dsh-audit-rollback/lib/boundary-exec.js:128
renameSync(movedTo, action.path) - 写入本地文件packages/dsh-audit-rollback/lib/boundary-exec.js:132
copyFileSync(movedTo, action.path, constants.COPYFILE_EXCL) - 读取本地文件packages/dsh-audit-rollback/lib/index.js:257
if (!existsSync(dir)) return 0 - 读取本地文件packages/dsh-audit-rollback/lib/index.js:259
return readdirSync(dir).filter((name) => /^\d{4}-\d{2}-\d{2}\.jsonl$/.test(name)).length - 读取本地文件packages/dsh-audit-rollback/lib/index.js:267
if (!existsSync(file)) return { readable: false, version: null, createdAt: null, error: null } - 读取本地文件packages/dsh-audit-rollback/lib/index.js:269
const parsed = JSON.parse(readFileSync(file, 'utf8')) - 读取本地文件packages/dsh-audit-rollback/lib/index.js:288
if (!existsSync(root)) return { count: 0, totalBytes: 0, error: null } - 读取本地文件packages/dsh-audit-rollback/lib/index.js:295
for (const name of readdirSync(dir)) { - 读取本地文件packages/dsh-audit-rollback/lib/ledger.js:104
try { info = lstatSync(dir) } catch (e) { if (e.code !== 'ENOENT') throw e } - 写入本地文件packages/dsh-audit-rollback/lib/ledger.js:110
try { mkdirSync(dir) } catch (e) { if (e.code !== 'EEXIST') throw e } - 读取本地文件packages/dsh-audit-rollback/lib/ledger.js:111
info = lstatSync(dir) - 读取本地文件packages/dsh-audit-rollback/lib/ledger.js:119
try { info = lstatSync(file) } catch (e) { if (e.code === 'ENOENT') return null; throw e } - 删除本地文件packages/dsh-audit-rollback/lib/ledger.js:181
try { unlinkSync(path) } catch (error) { if (error.code !== 'ENOENT') throw error } - 读取本地文件packages/dsh-audit-rollback/lib/ledger.js:192
const raw = JSON.parse(readFileSync(pluginPrefsPath(stateDir), 'utf8')) - 读取本地文件packages/dsh-audit-rollback/lib/ledger.js:229
return existsSync(objectPath(stateDir, hash)) - 读取本地文件packages/dsh-audit-rollback/lib/ledger.js:248
if (!existsSync(dir)) return [] - 写入本地文件packages/dsh-audit-rollback/lib/ledger.js:713
renameSync(action.path, trashFile) - 写入本地文件packages/dsh-audit-rollback/lib/ledger.js:715
copyFileSync(action.path, trashFile, constants.COPYFILE_EXCL) - 删除本地文件packages/dsh-audit-rollback/lib/ledger.js:716
unlinkSync(action.path) - 写入本地文件packages/dsh-audit-rollback/lib/ledger.js:724
writeFileSync(action.path, buffer, { flag: 'wx', mode: 0o600 }) - 写入本地文件packages/dsh-audit-rollback/lib/ledger.js:737
renameSync(movedTo, action.path) - 写入本地文件packages/dsh-audit-rollback/lib/ledger.js:741
copyFileSync(movedTo, action.path, constants.COPYFILE_EXCL) - 删除本地文件packages/dsh-audit-rollback/lib/recovered-prompts.js:87
try { unlinkSync(path) } catch (error) { if (error.code !== 'ENOENT') throw error } - 读取本地文件packages/dsh-audit-rollback/lib/recovered-prompts.js:98
const raw = readFileSync(recoveredPromptPath(stateDir, sessionId, turn), 'utf8') - 写入本地文件packages/dsh-audit-rollback/lib/rollback-preview.js:267
writeFileSync(backup, view.current.buffer, { flag: 'wx' }) - 写入本地文件packages/dsh-audit-rollback/lib/rollback-preview.js:277
renameSync(view.row.path, quarantine) - 删除本地文件packages/dsh-audit-rollback/lib/rollback-preview.js:318
unlinkSync(quarantine) - 读取本地文件packages/dsh-audit-rollback/lib/rollback-preview.js:334
const leaf = lstatSync(view.row.path) - 删除本地文件packages/dsh-audit-rollback/lib/rollback-preview.js:336
if (String(leaf.ino) === createdIdentity.ino && String(leaf.dev) === createdIdentity.dev && same(existingPathGuards(view.row.path), ticket.guards)) un - 读取本地文件packages/dsh-audit-rollback/lib/snapshot.js:118
entries = readdirSync(canonicalRoot(root), { withFileTypes: true }) - 读取本地文件packages/dsh-audit-rollback/lib/snapshot.js:137
try { acc.bytes = lstatSync(full).size } catch { acc.unreadable = true } - 读取本地文件packages/dsh-audit-rollback/lib/snapshot.js:163
try { entries = readdirSync(dir, { withFileTypes: true }) } catch { acc.unreadable = true; return } - 读取本地文件packages/dsh-audit-rollback/lib/snapshot.js:181
try { acc.bytes += lstatSync(full).size } catch { acc.unreadable = true } - 读取本地文件packages/dsh-audit-rollback/lib/snapshot.js:273
try { info = lstatSync(file) } catch (error) { if (error.code !== 'ENOENT') throw error } - 读取本地文件packages/dsh-audit-rollback/lib/snapshot.js:288
try { info = lstatSync(path) } catch (error) { if (error.code === 'ENOENT') continue; throw error } - 执行外部命令来自配置/变量packages/dsh-audit-rollback/lib/snapshot.js:371
child = spawn(gitPath, [...prefix, ...args], { - 读取本地文件packages/dsh-auto-review-router/lib/grant-store.js:109
try { info = lstatSync(dir) } - 读取本地文件packages/dsh-auto-review-router/lib/grant-store.js:330
try { info = lstatSync(targetPath) } - 发起网络请求packages/dsh-auto-review-router/lib/index.js:603
const response = await history.invokeManual(entry, () => ctx.approval.request({
扫描于 2026/11/1(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cosmokit@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-include@deepseek-ai/dsh@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-config-editor@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools@deepseek-ai/dsh-sandbox-policy@deepseek-ai/dsh-permission-presets@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 捕获文件改动
- 文件回滚
- 自动审查审批请求
DSH 沙箱加固工具集:持久审计与文件回滚(dsh-audit-rollback)、可指定模型的自动审批(dsh-auto-review-router)。
README
由 DeepSeek 最新模型翻译生成dsh-guard
DeepSeek Harness 的文件审计、回滚和自动审批工具集。两个插件可独立使用,通过宿主 Settings / ConfigEditor 保存配置,不另建设置文件,也不捆绑另一套核心。
插件
| 插件 | 功能 | 包版本 |
| dsh-audit-rollback | 文件前后像捕获、持久审计、会话内恢复、离线 CLI 回滚 | 0.3.2 |
| dsh-auto-review-router | 可配置审查模型、人工审批回退、目录授权记忆、审批历史 | 0.3.2 |
验证基线为 DSH 0.2.1-alpha.1,Node.js 要求为 ^22.19.0 || >=24.0.0。依赖兼容范围以各包 manifest 为准,声明兼容范围不代表所有版本均经过运行验证。
安装
从 npm 安装对应插件包,再通过目标 profile 的官方插件管理入口添加该包。也可从 GitHub Releases 获取 tarball 离线安装。
npm pack dsh-audit-rollback@0.3.2
npm pack dsh-auto-review-router@0.3.2
npm pack 会把包下载到当前目录,随后把 tarball 路径传给 DSH 插件管理命令。桌面与非桌面 profile 的安装边界见下文。
展开完整文档(README 剩余 1 节)
dsh-guard DeepSeek Harness 的文件审计、回滚和自动审批工具集。两个插件可独立使用,通过宿主 Settings / ConfigEditor 保存配置,不另建设置文件,也不捆绑另一套核心。 插件 | 插件 | 功能 | 包版本 | | dsh-audit-rollback | 文件前后像捕获、持久审计、会话内恢复、离线 CLI 回滚 | 0.3.2 | | dsh-auto-review-router | 可配置审查模型、人工审批回退、目录授权记忆、审批历史 | 0.3.2 | 验证基线为 DSH 0.2.1-alpha.1,Node.js 要求为 ^22.19.0 || >=24.0.0。依赖兼容范围以各包 manifest 为准,声明兼容范围不代表所有版本均经过运行验证。 安装 从 npm 安装对应插件包,再通过目标 profile 的官方插件管理入口添加该包。也可从 GitHub Releases 获取 tarball 离线安装。 npm pack dsh-audit-rollback@0.3.2 npm pack dsh-auto-review-router@0.3.2 npm pack 会把包下载到当前目录,随后把 tarball 路径传给 DSH 插件管理命令。桌面与非桌面 profile 的安装边界见下文。 非桌面 profile 可使用: dsh plugin --profile <profile-name> add <tarball-path> 桌面 profile 使用 GUI 插件管理器,或目标版本明确支持的官方桌面 CLI。不要在真实 profile 中直接运行包管理器,也不要手工修改依赖清单。建议使用单包 tarball;monorepo Git 子目录依赖可能连带解析其他 workspace 包及核心依赖。 源码、发布包、磁盘安装副本和运行中的 Host/Client 是不同状态。安装更新后,按宿主加载机制确认新版本生效。 使用 文件审计与回滚 在「设置 → 内置插件 → 审计与回滚」配置捕获工具、大小上限和排除规则。会话「已修改文件」页签提供差异预览和二次确认恢复。CLI 按会话与轮次回滚,默认生成计划,指定 --apply 才修改目标文件。 捕获仅覆盖文件工具显式目标路径,不覆盖 shell、其他插件和人工编辑,不能作为完整工作区备份。GUI 与 CLI 的恢复条件不同,详见包文档。 自动审批 在「设置 → 内置插件 → Auto 审查路由」启用插件并选择模型,再在所需会话中选择 Auto。启用不会自动切换会话权限或审批策略。 每次模型审查会额外消耗一次请求。明确拒绝可在下游与审批策略允许时转人工;模型错误、超时及非法结果直接拒绝。中风险文件操作经人工放行后可记住目录与操作类别,高危操作每次询问。设置页可查看及撤销目录授权。 本插件不能与官方 dsh-experimental-auto-review 同时注册 Auto,也应避免与 dsh-codex-connect.enableAutoReview 同时启用。 数据与限制 - 文件审计默认存放于 $DSH_HOME/audit-rollback,未设置时使用 ~/.dsh/audit-rollback,可配置独立状态目录。 - 审批历史存放于当前 profile 的 dsh-auto-review-router/approval-history;目录授权仅保存在当前插件实例内存。 - 捕获及框架报告结果不证明工具体执行或实际副作用成功。 - CLI 的 --force 可覆盖轮后修改,不能绕过快照完整性校验。 - 对象库与账本没有自动清理或轮转;删除快照会失去关联历史的恢复能力。 - 离线和 SDK 集成测试不能替代目标安装版本的 GUI 验收。 开发与验证 在仓库根目录执行: npm install --ignore-scripts node tools/verify.mjs --quiet node scripts/check-manifest.mjs verify 检查语法、自动发现并运行测试、核查依赖声明和包清单。测试使用临时数据及合成模型响应。缺少 workspace peer 时,可将 DSH_APP_ROOT 指向官方 DSH 安装目录作为只读依赖回退。 发布流程见 release.md。验证命令不执行发布或安装。 文档 - 审计与回滚说明 - 自动审批说明 - 审计设计 - 自动审批设计 - 审批可观测性设计 设计文档保留设计阶段约定;实际字段、行为和限制以当前源码及包说明为准。 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
KouzakiUmi/dsh-guard
捕获文件改动并回滚,自动审查审批请求
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7