auto(自主模式)权限分类器:工具作用域的放行/拒绝规则、LLM 语义裁判与 git 快照,面向无人值守会话。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-auto-classifier
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:PAKIKNOWLEDGE/dsh-auto-classifier
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
DeepSeek Harness(DSH)的类 Claude Code Auto Mode 权限分类器。在 read-only / workspace-write / danger-full-access 之外新增第四个权限预设 auto(Autonomous / 自主模式):工具调用自动分类——危险操作在真正执行前被拦截,安全操作正常放行,沙箱升级由分类器自动裁决,无需人工盯着审批弹窗。
工作机制
host 平面插件。两个 { prepend: true } 监听器抢在浏览器应答者之前裁决,只在会话权限预设为 auto 时生效;其它会话保持原生交互行为(处理函数调用 next() 放行):
| 扩展点 | 作用 |
|---|---|
tools/pre-execute(工具预执行瀑布) |
每次工具调用都能看到工具名与完整参数:危险命令(删系统目录、格式化、改注册表、git reset --hard / force push、访问凭据等)在执行前被拒绝 |
approval/request(审批瀑布) |
沙箱升级(sandbox_permissions)由分类器自动放行/拒绝——auto 会话内无浏览器弹窗 |
| git 快照 | 放行高风险升级前对工作区自动 checkpoint(git add -A && git commit,可节流);auto_snapshot 工具可随时手动打点 |
| systemPrompt section | 注入自主模式纪律:风险分级、git 救援、禁止无限重试、需要人决策时发邮件并停止 |
规则引擎(Claude Code 风格,工具作用域)
- 规则语法:
Tool(pattern)——如pwsh(^git\s+commit\b)、write,edit(C:\Windows);工具名可逗号并列;无括号的裸正则作用于所有工具。pattern 是大小写不敏感正则。 - 字段投影(防误伤):命令类工具(pwsh/bash/run_code)只扫
command/code字段(匹配前先清洗:剥FOO=bar环境变量前缀、> / >>重定向);路径类工具(write/edit/read)只扫file_path;其它工具不扫描——文件内容/代码文本里提到危险词不算数。审批请求扫reason理由句。 - 判定顺序:deny 规则(最高优先)→ allow 规则 → LLM 裁判(可选)→ pwsh 严格默认 →
defaultDecision。 - 默认 deny 表(参考 Claude Code soft_deny):破坏性文件操作、磁盘/引导/系统服务、关机重启、账号/服务篡改、注册表写入、git push / force-push / reset --hard、外部代码执行(
curl|bash、iwr|iex)、提权(sudo/runas/gsudo)、网络监听、系统级包安装、凭据文件、受保护路径直写、DSH/shell 配置文件篡改。 - 默认 allow 表:常规 git(不含 push)/ 包管理器 / 语言运行 / gh / dsh / winget/scoop/choco / PowerShell cmdlet。
- LLM 裁判(
llmJudge: true):规则未命中时由模型做语义判定(BLOCK-ALWAYS 类别 + "不确定倾向拦截");失败降级到defaultDecision。仅用于 pre-execute 路径——升级请求用规则 + 默认决策(底层命令已在 pre-execute 筛过)。 - denial 上限:连续 3 次 / 累计 20 次(同 Claude Code
denialTracking)——触发后硬停并提示通知用户。DSH 本身没有邮件能力:提示会指向 dsh-notify-skill 邮件插件(同样收录于 awesome-dsh-plugin 列表)或用户自行配置的通知渠道。 - 所有决策经
ctx.logger记录;auto_status工具可查最近 20 条与上限计数。
安装(web profile)
# 1. 打包并加入 profile 依赖与 bundles(物理 tarball,勿用 link:)
# cd dsh-auto-classifier && npm pack --cache <工作区内路径> # workspace-write 沙箱下 npm 默认缓存目录写不进
# package.json dependencies: "dsh-auto-classifier": "file:C:/.../dsh-auto-classifier-0.1.1.tgz"
# package.json dsh.profile.bundles: 追加 "dsh-auto-classifier"
cd ~/.dsh/profiles/web
pnpm add "dsh-auto-classifier@file:C:/.../dsh-auto-classifier-0.1.1.tgz" --force
# 2. 校验组合配置(不启动服务)
dsh --profile web --dump-config # 应出现 auto-classifier 行与 4 个 presets
# 3. 重启 dsh web,然后在会话的权限选择器里切到 auto(或 /permission auto)
插件的
cordis.patch.yml作为 bundle patch 自动注入行——不要在 profile/home 层手动 insert 同 id(duplicate loader entry 会让 web 启动失败)。改源码后重装:npm pack→pnpm add ... --force(刷新 lockfile integrity)。
也可以直接从 npm 安装:dsh plugin --profile web add dsh-auto-classifier。
配置(cordis.patch.yml 的 auto-classifier 行)
| 键 | 默认 | 说明 |
|---|---|---|
presetName |
auto |
分类器在哪个权限预设下生效 |
defaultDecision |
allow |
规则未命中且无裁判时的默认决策(deny = 失败关闭) |
llmJudge |
false |
是否启用模型语义裁判(每次未命中调用一次,耗 token) |
llmProvider / llmModel |
deepseek-official / deepseek-v4-flash |
裁判模型 |
pwshStrict |
true |
命令类工具未命中规则时走裁判/严格默认(比路径工具保守,对齐 Claude Code 对 PowerShell 的默认人工) |
denyPatterns / allowPatterns |
内置表 | Tool(pattern) 正则数组,覆盖/追加规则 |
denialLimitConsecutive / denialLimitTotal |
3 / 20 |
拒绝上限,触发后硬停提示 |
gitSnapshotOnAllow |
true |
放行高风险升级前是否自动 git 快照 |
gitSnapshotIntervalMs |
30000 |
每会话快照最小间隔 |
License
MIT
链接
同类插件
strukto-ai/mirage#dsh★ 3435
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 179
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Jayden-X-L/forkprobe★ 65
同一任务并行试跑多个技能,对比结果选出最优。
vlln/plugin-registry★ 40
插件生态基建:浏览器面板管理官方 repository 插件(0 patch)+ make-dsh-plugin 插件开发引导技能。
forrestchang/dsh-multica-runtime★ 33
让 dsh 运行时跑在 Multica 上。
DietCokewithSugar/dsh-user-experience★ 18
帮你发现项目中可能存在的用户体验问题:自动走查 React/TypeScript 源码,定位问题并给出具体优化建议。