dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH plugin: command guard that blocks disaster-tier deletions, escalates high-risk ones, and adds the careful-full-access preview/model-check deletion pipeline
[!WARNING] 本仓库已废弃 —— 相关能力已随 dsh 正式版本内置发布,无需再安装本插件;仓库仅作历史存档,不再维护。
DeepSeek Harness(DSH)插件:命令守卫——只在
careful-full-access模式下生效, 在派发前判定每一条pwsh/bash调用:静态分级 + WhatIf 范围解析 + model-check 三问复核 + 灾难级红色人工确认 + 轮转文件审计。目标:把"解析错误的删除命令误删整个盘/工作区" 这一类事故挡在执行之前。
careful-full-access是 DSH 核心的沙箱枚举,第三方插件无法自行添加,因此本仓库附带patches/careful-full-access.patch(对 DSH 源码树的核心补丁,与插件代码版本配套)—— 应用补丁后守卫才有可触发的模式,两者共同构成完整功能。
English | 中文
| 部分 | 内容 | 关系 |
|---|---|---|
| 守卫插件(本仓库 src/) | careful 模式下的分级、复核、确认与审计 | 需要 careful 模式存在才有行为 |
| harness 核心补丁(patches/) | SandboxMode 第四档、权限预设、UI 档位与图标、审批红色标注链路、ACL 根防删 | git apply 后注册 careful 模式 |
AI 编码代理最大的无防护风险之一是误删:一条解析错误的
Remove-Item -Recurse -Force C:\ 在 danger-full-access(沙箱关、审批关)下会原样执行;
即使在默认的 workspace-write 模式下,整个工作区(含根目录)也可被一条递归删除命令清空。
本插件给 DSH 增加第四档沙箱模式 careful-full-access:文件权限等同全权限(用户要的
"全权限体验"),但每一条删除命令先"预演给你看、模型复核、确认了才真删"。守卫只在
该模式下介入——workspace-write 由沙箱自身约束,danger-full-access 是用户明确的放手选择,
两者都不被二次猜疑。
pwsh/bash 调用,派发前执行):
git rm --cached/-n(只操作索引,不删工作区文件)。git clean、
git reset --hard、清空回收站、动态目标的递归删除、批量删除。X:\*)、UNC/\\?\ 根、
用户主目录、系统目录、工作区根、Format-*/Clear-Disk/Initialize-Disk/Remove-Partition、
diskpart clean、向受保护根 robocopy /MIR、受保护根的递归 .NET 删除。iex 绝不漏过闸门。$WhatIfPreference = $true 干跑——通配、变量、
$env: 由 PowerShell 自己展开,守卫的解析不可能成为误读的那一环;递归目录目标再补一次
只读子树枚举。干跑解析到受保护根时升级为 disaster 档。severity: 'danger' 在灾难级审批面板以红色条带/边框突出;审批策略 never 时自动拒绝。$DSH_HOME/logs/command-guard.log(默认 5 MB × 3 份),会话日志只留有界窗口
command-guard/decision(默认每会话 20 条),相同命令在 TTL(默认 10 分钟)内合并计数。git 子命令分派)。大多数命令无破坏信号直接放行,正常使用不付任何开销。pwsh 进程(Parser::ParseInput,经
-EncodedCommand 传递脚本、命令走环境变量,无引号注入面),由解析器而不是模型告诉我们
命令是什么。推荐方式:源码树安装(本仓库自带可验证的独立构建配置;npm 包尚未发布,见下方说明)。
47f943859(Merge pull request #2519 from deepseek-harness/feat/npm-public)生成——上游已前进时可能无法干净 git apply,此时对照补丁手工合并(改动点均为组合注册、依赖声明与 tsconfig 引用,结构清晰)。careful-full-access 模式、权限预设、UI 档位与图标、审批红色标注链路、ACL 根防删):
git apply patches/careful-full-access.patchpackages/guard/careful-full-access/:复制 src/、tests/,并用 harness/ 里的骨架替换该包的 tsconfig.json 与 package.json(树式 tsconfig 引用与 workspace:^ 依赖——运行时代码与宿主完全同源)。pnpm install && pnpm run build(或 pnpm dsh web 前执行仓库根构建)。careful-full-access,守卫即生效。挂载行补丁已包含(id: command-guard + name: 'dsh-careful-full-access',位于 packages/bundle/base/cordis.patch.yml)。npm 方式(尚未可用):dsh-careful-full-access 还没有发布到 npm——pnpm add dsh-careful-full-access 目前会失败;且发布前需要先构建 lib/(package.json 的 main/types 指向 lib)。当前请使用源码树方式。
独立仓库自带构建配置,clone 后即可验证:
pnpm install # registry 依赖(公开发布版 DSH 包)
pnpm run typecheck # tsc 对公开发布类型零错误(mode 已做双兼容处理)
pnpm test # vitest:237 例通过 + 1 例按需跳过
careful-full-access 枚举的版本。passes the danger severity through the approval seam)验证红色确认链路——那是核心补丁的改动,只在应用了补丁的 harness 树里生效;树内运行时该用例正常执行。DSH_GUARD_CORE_PATCH=1 pnpm test 可在打补丁环境中强制运行该用例。extraProtectedPaths(追加受保护根)、dedupeTtlMs(审计去重窗口)、analyzeTimeoutMs、
previewTimeoutMs、previewSampleLimit、modelCheckTimeoutMs、modelCheckMaxTokens、
auditLogPath(默认 $DSH_HOME/logs/command-guard.log)、auditLogMaxBytes(默认 5 MB)、
auditLogRotations(默认 3)、sessionDecisionCap(默认 20)、pwshPath、enablePrompt。
pnpm run typecheck 零错误、pnpm test 237 例通过 + 1 例按需跳过(见上节)。Remove-Item -Recurse -Force Z:\(不存在的盘符)→ 灾难级复核、未执行;runner e2e 验证受限令牌下子项删除/改名可用、工作区根不可删除/改名、旧授权形态原地迁移。iex/脚本块动态构造无法静态分析 → fail-closed(按 disaster:人工确认,never 下拒绝)。git 调用获得子命令分派;管道或嵌套的 git 退回通用扫描,可能误读其子命令语义。install.patch,一次应用全部接线完成,适合同时需要多个定制插件的场合;