DeepSeek Harness (DSH) 的权限控制通常依赖原生的 Permission Presets。默认配置在安全性与灵活性之间往往难以找到平衡点,而通过修改 Harness 核心代码来适配特定场景成本较高。dsh-access-mode 插件通过提供 Default / No Edit / Auto 三种访问模式,在 Web composer 左侧替换原生选择器,让用户在会话级别精细控制 AI 的工具调用权限、Sandbox 策略以及 Approval 策略,且不修改 Harness 核心代码。
插件简介¶
dsh-access-mode 由开发者 ddll8023 维护,属于 admin-security 类别。它通过插件形式扩展 DSH 的权限管理能力,支持以下核心特性:
- 三种访问模式:在 Web 界面提供 Default / No Edit / Auto 下拉选择器。
- 无侵入集成:不修改 Harness 核心代码、Agent loop、工具实现或模型调用流程。
- 会话持久化:模式按 Agent session 持久化,切换后 Sandbox 与 Approval 策略同步生效。
- 服务复用:复用 Harness 原生的 Approval、Sandbox、Tool Execution、Session 和 Remote Command 服务。
安装与启用¶
确保已安装 DeepSeek Harness 且版本大于等于 0.1.0-rc.6。dsh plugin 命令依赖 pnpm,如果未安装可通过 corepack enable pnpm 启用。
使用官方推荐命令直接从 GitHub 安装:
dsh plugin --profile web add github:ddll8023/dsh-access-mode
安装完成后,重启 dsh web 以加载插件。在 Web composer 左侧应能出现 Default、No Edit、Auto 三个访问模式选项,新会话默认选中 No Edit。
若需验证是否启用成功,可执行:
dsh --profile web --dump-config | grep -A2 access-mode
预期输出包含 id: access-mode 和 name: dsh-access-mode。
使用说明¶
该插件通过 /access-mode 命令切换模式。模式写入当前 Agent session,并在原生 session event 中持久化 permission/preset、sandbox/mode 和 approval/policy,从而控制后续执行。
模式详解¶
| 模式 | Sandbox 策略 | Approval 策略 | 行为说明 |
|---|---|---|---|
| Default | workspace-write |
ask |
自动放行只读工具(如 read、grep、web_search 等)和保守的只读 Bash。编辑、写入及未知操作需审批。 |
| No Edit | danger-full-access |
ask |
只有 edit 和 write 需要审批;其它工具直接放行,Bash 参数不做检查。适合需要访问 workspace 外文件但希望避免意外写入的场景。 |
| Auto | danger-full-access |
never |
放行所有工具调用。适合完全信任当前会话的场景,不应对不可信的提示词或项目启用。 |
切换模式¶
在 Web composer 的下拉选择器中操作,或直接在会话中输入以下命令:
/access-mode default # 切换到 Default
/access-mode no-edit # 切换到 No Edit
/access-mode auto # 切换到 Auto
对于没有插件模式事件的旧会话,插件会根据已有的 Approval 状态初始化:never 状态视为 Auto,其它情况视为 No Edit。
安全注意事项¶
- 版本兼容:仅支持 DSH
>= 0.1.0-rc.6。 - danger-full-access 风险:No Edit 和 Auto 模式使用
danger-full-access,这取消了 DSH 文件 Sandbox 的路径限制。请仅对可信 session 使用这两种模式,避免 AI 误操作破坏系统或敏感数据。 - 操作系统权限:
danger-full-access只取消 DSH 的文件系统 Sandbox 限制,不等于绕过操作系统权限、容器权限或远程执行环境的限制。 - Default 边界:Default 模式仍保留
workspace-write边界,若需访问 workspace 外文件,应切换到 No Edit 并批准相应操作。
总结¶
dsh-access-mode 通过插件机制为 DSH 提供了灵活的会话级权限控制。它不依赖修改核心代码,通过简单的命令和界面操作即可在 Default、No Edit 和 Auto 之间切换,适应从保守开发到完全自动化的不同工作流需求。