# dsh-automode ⚡
**面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的 Claude Code 风格自动模式:让 agent 放手自主执行,同时由确定性护栏 + 低成本复审模型把危险操作挡在执行之前。**
> 🌐 **简体中文**: [README.zh.md](./README.zh.md) · **English**: [README.md](./README.md)
[](https://www.npmjs.com/package/@log.li/dsh-automode) [](https://www.npmjs.com/package/@log.li/dsh-automode) [](./LICENSE) [](https://github.com/log-li/dsh-automode) [](https://github.com/log-li/dsh-automode) [](https://github.com/log-li/dsh-automode) [](https://github.com/topics/dsh-plugin)
---
dsh-automode 是护栏插件,介于 agent 与 harness 之间,在**每次工具调用执行前**拦截——硬 `deny` 规则与 curated `allowPaths` 确定性裁决(零 LLM 开销),其余交给两阶段分类器。安全操作全自动放行;危险操作被拦截、改写或转交给你。
## ✨ 核心特性
- 🛡️ **确定性第一道防线** —— 正则 `deny` 频带在任何 LLM 调用之前硬拒外泄、密钥与系统路径;前缀 glob `allow` 规则零成本放行常规命令。
- ⚡ **零确认白名单** —— `config.allowPaths` 即全信任:其中文件操作与 bash 写命令完全跳过分类器,提权调用经 approval 桥接自动放行(v0.10.0)——不弹窗、不来回。
- 🧠 **省成本的两阶段分类器** —— 约 1 token 的粗筛预判,仅命中项进入结构化复审;相同动作 5 分钟内复用判决缓存。
- 🔁 **熔断器 + 人工兜底** —— 连续 3 次(或累计 20 次)DENY 暂停自动模式并转人工;一次人工决定即恢复并清零。
- 📜 **完整审计轨迹** —— 每次 allow / deny / bridge 决定都追加到 `~/.dsh/auto-mode/decisions.jsonl`。
- 🔌 **原生预设** —— 权限选择器一键开启或 `/auto`;与只读 / workspace-write / danger-full-access 并存。
> ⚠️ **它不是沙箱**。插件运行在 [DSH](https://github.com/deepseek-ai/deepseek-harness) 进程内,蓄意恶意的插件可以做你用户账户能做的任何事。它用于降低不安全的自主工具使用,而不是 OS 安全边界。
## 📚 目录
- [安装](#安装)
- [命令](#命令)
- [工作原理](#工作原理)
- [规则](#规则)
- [配置](#配置)
- [日志](#日志)
- [架构](#架构)
- [兼容性与贡献](#兼容性与贡献)
- [许可证](#许可证)
## 安装
```bash
dsh plugin add @log.li/dsh-automode
```
从本地 checkout:
```bash
dsh plugin add ./path/to/dsh-automode
```
安装后重启 `dsh web`。权限选择器(聊天框左下角)会显示 **Auto mode**,与只读 / workspace-write / danger-full-access 并列。
### 可选:权限选择器里的 ⚡ 图标
`auto-mode` 预设声明了一个 `icon`,但**原生 DSH 两边都不认预设的 `icon`**:宿主预设 schema 没有 `icon` 字段、`optionOf()` 也不透传,客户端产物还把三个内置 glyph 写死。所以只有额外打上随包提供的补丁,闪电才会显示——补丁给 schema 加上该字段、把它转发给客户端目录、并让客户端学会画这个路径:
```bash
#