← 返回列表
未验证
一个 DeepSeek Harness 插件,让模型无法进入你不希望它触碰的文件夹。
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/25 · 已提供中文文档
DeepSeek Harness 插件:一个部署拒绝列表,列出模型永远不可触碰的文件系统根目录
综合分
27.4
GitHub 分
27.4
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add vladlearns/dsh-fs-deny-policy该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-fs-deny-policy npm CI 一个 DeepSeek Harness 插件,让模型无法进入你不希望它触碰的文件夹。 harness 沙箱可以阻止模型写入某些位置,但每种沙箱模式都仍然允许读取。此插件填补了这一空白:你列出几个目录(你的 ~/.ssh、某个许可证文件夹,随便什么),任何解析到这些目录内部的工具调用都会被拒绝——读取、写入、搜索以及 shell 命令都一样。模型还会在一开始就被告知这份列表,这样它就不会白白浪费轮次去撞墙。 安装 你需要 Node.js 22.19 或更新版本,以及 dsh CLI。 npx @deepseek-ai/dsh plugin --profile main add dsh-fs-deny-policy 这就是整个安装过程——npm 包附带预构建产物,无需编译。 更喜欢基于源码,或者想固定到某个确切的提交?那就改为从 GitHub 安装: npx @deepseek-ai/dsh plugin --profile main add github:vladlearns/dsh-fs-deny-policy 第一次运行会失败——这是 pnpm(≥10)在拒绝运行 git 依赖的构建脚本,直到你表示同意。把下面这段加到 ~/.dsh/profiles/YOUR_PROFILE/pnpm-workspace.yaml,然后再次运行 add: allowBuilds: dsh-fs-deny-policy: true 这项许可意味着“我信任这个包,足以在安装时运行它的代码”,所以值得先浏览一下源码。固定到某个提交(github:vladlearns/dsh-fs-deny-policy#)可以防止之后的推送改变实际运行的内容。 告诉它要拒绝什么 插件一开始什么都不做(空的拒绝列表,不修改提示词)。拒绝根目录写在你自己 profile 的补丁文件 ~/.dsh/profiles/YOUR_PROFILE/cordis.patch.yml 中: - id: fs-deny-policy config: deniedRoots: - C:/Users/you/.ssh - C:/Users/you/Desktop/license-dongle 路径必须是绝对路径。相对路径或重复的条目会导致加载失败,并报出违规条目的名字——这总比悄无声息地什么都没保护要好。 有两点需要注意: 1. 先安装,再配置。 上面的配置按 id 覆盖插件的行;如果该插件还没有安装到那个 profile 中,就没有行可覆盖,什么也不会发生。先执行 dsh plugin add,然后再编辑补丁文件。 2. 更改 bundle 列表后要重启。 在补丁文件中编辑 deniedRoots 会被正在运行的应用实时读取,但添加或移除插件本身则需要重启。 在首次从 registry 安装时,pnpm 可能会因为包太新而将其拦下(其供应链的“最短发布年龄”门槛),并向该 profile 的 pnpm-workspace.yaml 添加一条例外。对于刚发布的包来说这是预期行为;add 的输出会告诉你何时发生了这种情况。 npx @deepseek-ai/dsh --profile main --dump-config 会显示组合后的配置——如果你能在其中看到拒绝列表,就说明它已正确接入。 如果你只关心写入,fenceReads: false 会关闭读取/搜索那一侧(写入工具始终会被围栏限制)。还有 fenceShell 和 fenceContentSearch,两者默认都开启。 它实际检查什么 每次工具调用在运行前都会经过 tools/pre-execute 钩子。插件会解析出该调用即将触及的路径——文件工具取 file_path,glob/grep 取搜索根目录,bash/pwsh 取工作目录加上命令文本中任何形似路径的内容——将它们相对于会话的工作目录进行解析,跟随符号链接,并拒绝任何落在拒绝根目录内的路径。指向拒绝根目录的符号链接下的路径会被捕获;Windows 路径的怪癖(比如大小写不同)也会被捕获。 它不会做什么 shell 检查会读取命令文本,并挑出看起来像路径的内容。它不会运行 shell,所以任何间接的东西——$VAR、$(...)、重定向——都可能绕过它。它是一张网,不是一堵墙;如果你需要硬性保证,请把它和沙箱一起使用,而不是用它替代沙箱。 它也只能看到经过工具管道的调用,而且检查与实际触及文件之间存在着不可避免的间隙(在这个窗口期内被换入的祖先符号链接不会被捕获)。而且它是按词法拒绝路径的,所以拒绝根目录内一个不存在的文件仍然会被拒绝——这是有意为之。 开发 npm install npm test npm run build prepare 会在 git 安装时自动运行构建,所以新克隆的仓库会自行构建。 许可证 MIT
扫码进群