# @amaster\.ai/dsh-policy 中文文档

规范地址：https://npmcn.com/package/%40amaster.ai/dsh-policy/

版本：0\.1\.40
npm 元数据更新时间：2026-11-04T11:23:44.756Z
中文译文更新时间：2026-11-06T06:46:26.493Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40amaster.ai/dsh-policy
原文对照：https://npmcn.com/package/%40amaster.ai/dsh-policy/?lang=original
项目主页：https://github.com/TGYD-helige/dsh-plugins#readme
源码仓库：https://github.com/TGYD-helige/dsh-plugins

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.6 MB，11 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^20\.19 \|\| ^22\.12 \|\| \>=24\.0
- 运行依赖：1 个
- peer 依赖：@deepseek-ai/cordis ^4\.0\.1，@deepseek-ai/dsh-tools \>=0\.1\.5-rc\.1 \|\| \>=0\.1\.6-alpha\.1 \|\| \>=0\.1\.7-alpha\.1 \|\| \>=0\.2\.0-rc\.1 \|\| \>=0\.2\.1-rc\.1 \|\| \>=0\.2\.2-rc\.1
- 首次发布：2026-09-11T08:25:47.205Z
- 最新版本发布：2026-11-04T11:23:44.567Z
- 近 30 天下载量：4367（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：40（近 12 个月 40 个）

## 中文简介

DeepSeek Harness的解说工具调用政策:在工具/预执行门上以平面插件配置表示的配置由配置驱动的允许/拒绝/任务规则(工具名,args模式, shell命令前缀/regex,优先级).

## 安装

```sh
npm install @amaster.ai/dsh-policy
```

也可以使用：`pnpm add @amaster.ai/dsh-policy`、`yarn add @amaster.ai/dsh-policy`、`bun add @amaster.ai/dsh-policy`

## README

# @amaster

![dsh-policy preview](https://npmcn.com/package/%40amaster.ai/dsh-policy/preview.png)

申报工具调用政策 [深层空间( dsh)](https://github.com/deepseek-ai/deepseek-harness): 配置驱动 `allow` 编号 : `deny` 编号 : `ask` 规则dsh's `tools/pre-execute` gate ——双子座 CLI 的 TOML 政策文件的语义,表达为平面插件配置(Schemastery-valided YAML,没有代码,没有规则文件).

## 安装

```sh
dsh plugin --profile my-agent add @amaster.ai/dsh-policy
```

## 配置

该插件是 **默认禁用**规则在简介中直播 `cordis.patch.yml` 像其他的 dsh 插件配置( 编辑热重装配置层):

```yaml
- name: '@amaster.ai/dsh-policy'
  config:
    enabled: true
    rules:
      - tool: '*'                      # every tool
        decision: allow
        priority: 20
      - tool: bash                     # dsh's shell tool (pwsh works the same)
        decision: deny
        commandPrefix: npm
        priority: 200
        message: 'npm is not allowed. Use bun install / bun add / bun test instead.'
      - tool: bash
        decision: deny
        commandPrefix: bun run
        priority: 200
      - tool: bash                     # …but one specific subcommand is fine
        decision: allow
        commandPrefix: bun run lint
        priority: 300                  # higher priority overrides the broader deny
      - tool: bash                     # grep as a pipe filter stays allowed
        decision: allow
        commandPrefix: grep
        priority: 300
      - tool: write
        decision: deny
        argsPattern:
          file_path: '\.md$'           # matched against the file_path value directly
        priority: 200
      - tool: write                    # …except the project contract file
        decision: allow
        argsPattern:
          file_path: 'PRODUCT\.md$'
        priority: 300
      - tool: write
        decision: ask                  # resolved via ctx.approval (human/answerer chain)
        argsPattern:
          file_path: '(^|/)etc/'
        message: 'writes to a system path'
```

### 规则字段

| 外地 | 需求 | 含义 |
| --- | --- | --- |
| `tool` | 对 | 工具名称或名称清单; `*` 匹配每个工具 |
| `decision` | 对 | `allow` 运行电话, `deny` 挡住它( `message` 以工具出错的形式到达模型, `ask` 等待 dsh 的批准连接 |
| `priority` | 无( 0) | 在争夺同一指令段的规则中取得更高的优先权; 断开连接失败关闭( 拒绝 > 要求 > 允许) |
| `message` | 没有 | 拒绝理由 / 询问解释( 生成匹配规则的默认名称) |
| `argsPattern` | 没有 | 与 JSON 字符串参数相匹配的 Regex(或列表,任意) – 或参数名地图 – regex(或列表):每个密钥的图案与该参数的图案相匹配 **价值** (非字符串值是 JSON-stringized first),所有密钥必须持有. 优先使用针对外地的规则的地图表格——不放出报价、不按键或跨外地事故 |
| `commandPrefix` | 没有 | 每个 shell 命令段的安乔德前缀匹配(或列表,任意),在一个单词边界(`npm` 匹配 `npm install`永远 `npmx`(中文(简体) ) |
| `commandRegex` | 没有 | Regex(或列表,任意)固定在每个 shell 命令段的起始点上——双子兼容;使用 `.*` 以匹配中段 |

插件级别字段 : `enabled` (主开关)和 `commandKeys` (参数键有 shell 命令字符串——默认) `['command']`,覆盖dsh's `bash`编号 :`pwsh` 页:1.

### 匹配语义

-   **一个规则的每个条件必须坚持** 用于规则匹配(AND). 一项没有其他条件的规则 `tool` 和那个工具的每个呼叫匹配.
-   **贝壳命令逐段检查 .** 复合命令( E)`a && b | c`,新线条,背景 `&`)被分出,引出-认识,可执行命令词通过引出,逃出和行接续实现常态. 巴许 `$( )`,反键和 `<()` 编号 : `>()` 取出替代物作为自己的部分;这里的正文体是数据,但未经引用的正文取出替代物除外. PowerShell backticks是出逃,而不是巴什式替代.
-   **优先权解决一个部分内的竞争**; 各个部分的汇总是保守的: `deny` 否认整个电话,然后任何 `ask` 升级,和 `allow` 要求每一段决定允许。 广泛的否认仍然被具体的许可压倒,因为两者在同一部分竞争(`bun run lint` 在300比克时 `bun run` (第200段).
-   **没有规则匹配 呼叫通过** 给其他人的 `tools/pre-execute` 链 (`next()`)),因此dsh的自有门和其他插件保持了他们的发言权. 无效的 regex 属于配置错误并失败插件负载; 运行时的评分失败被记录 `[dsh-policy]` 前缀并被拒绝(无法关闭)而不突破代理循环.

### 门盖着什么

所有注册在 `ctx.tools` 通过 `tools/pre-execute` 门是不可知的工具,不需要每个工具的支持:

-   **官方工具** (对照0.1.6-α.2来源核实): `bash`, (中文(简体) ), `pwsh`, (中文(简体) ), `read`, (中文(简体) ), `write`, (中文(简体) ), `edit`, (中文(简体) ), `read_image`, (中文(简体) ), `web_search`, (中文(简体) ), `web_fetch`, (中文(简体) ), `list_subagent_models` 和代表团的工具, `run_code`,加上目标/技能/工作流程/ cordis 工具。 和他们比对 `tool` + 键 `argsPattern` (对象形式符合其参数形状 : `file_path` 页:1 `write`编号 :`edit`, (中文(简体) ), `url` 页:1 `web_fetch`, (中文(简体) ), `query` 页:1 `web_search`(中文(简体) ).
-   **`commandPrefix`编号 :`commandRegex`** 适用于其参数带有 shell 命令字符串的工具 - `bash` 财务报告和审定财务报表 `pwsh` 双用 `command` (默认涵盖) `commandKeys`) (中文(简体) ).
-   **PTC 模式**数字 : `run_code` 子发送器重新进入调度器 `prepare` ,它运行着相同的执行前门——规则适用于每个子调用,而不仅仅是每个调用 `run_code`。 。 。 .
-   **MCP工具** 桥由 `dsh-mcp-client` 登记为同一 `ctx.tools` 管道——同任何其他工具一样,用其注册名称与之相匹配.

### 这个 `ask` 决定

`ask` 由 dsh 自行解决: `@deepseek-ai/dsh-user-approval` (UI 提示器,自动回答器,...),在未组成批准服务时未关闭拒绝,在会话下短路拒绝 `approval/policy: never`模型化的否定理性是规则 `message` (一) 完全没有审批服务;a `rejected`编号 :`cancelled`编号 :`unavailable` dsh-tools 本身的理由措词(经核实与 `dsh-tools@0.1.6-alpha.2`) (中文(简体) ). 双子座 `modes` (单位:千美元)`default`编号 :`autoEdit`编号 :`yolo`编号 :`plan`) 没有dsh对应物——dsh模型轴心作为每会的审批政策(见 `dsh-permission-presets` dsh 简介/`cordis.patch.yml` 已包含每个部署范围配置,所以插件没有它自己的模式轴.

## 双子星CLI政策绘图

| 双子TOML | dsh- 政策配置 |
| --- | --- |
| `toolName = "*" / "name" / ["a", "b"]` | `tool: '*' / name / [a, b]` |
| `decision = "allow" / "deny" / "ask_user"` | `decision: allow / deny / ask` |
| `priority = 300` | `priority: 300` (同样的方向) |
| `denyMessage` | `message` |
| `argsPattern` (序列参数的正则) | `argsPattern` 外加 dsh- 内在对象形式 `{ file_path: '…' }` 匹配每个参数值(字符串形式保留了JSON)。 字符串密钥顺序,而不是双子座排序的密钥形式——跨越多个密钥的图案可能需要调整;对象形式没有这样的问题) |
| `commandPrefix` 编号 : `commandRegex` (单一或列表) | 相同名称,每个命令段匹配; `commandRegex` 像双子座一样在命令开始 |
| `modes = [...]` | 没有对应文件 — 使用单独的 dsh 配置补丁行 |
| `allowRedirection` | 不支持( dsh 没有每个调用重定向门) |

## 警卫

一个政策插件是咨询地标,而不是封存:拒绝规则让行为良好的代理避免危险命令,但代理程序仍然运行着主机权限. 与 dsh 的沙盒堆栈对齐( Name`dsh-sandbox` + 限制执行器)用于OS级执行,并注意dsh 船没有自己的认证或授权.

## 兼容性

| @amaster | 日记 | 绳子 |
| --- | --- | --- |
| 0.1.x (中文(简体) ) | \`>=0.1.5-弧 1 |  |

同伴依赖 : `@deepseek-ai/dsh-tools` (单位:千美元) `tools/pre-execute` 门). 批准接合(`@deepseek-ai/dsh-user-approval`)是可选的,仅涉及 `ask` 决定.

## 许可证

麻省理工学院

## 常见问题

### @amaster\.ai/dsh-policy 是什么？

DeepSeek Harness的解说工具调用政策:在工具/预执行门上以平面插件配置表示的配置由配置驱动的允许/拒绝/任务规则\(工具名,args模式, shell命令前缀/regex,优先级\)\.

### 如何安装 @amaster\.ai/dsh-policy？

在项目目录运行 npm install @amaster\.ai/dsh-policy，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@deepseek-ai/cordis（^4\.0\.1）、@deepseek-ai/dsh-tools（\>=0\.1\.5-rc\.1 \|\| \>=0\.1\.6-alpha\.1 \|\| \>=0\.1\.7-alpha\.1 \|\| \>=0\.2\.0-rc\.1 \|\| \>=0\.2\.1-rc\.1 \|\| \>=0\.2\.2-rc\.1）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @amaster\.ai/dsh-policy 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @amaster\.ai/dsh-policy 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @amaster\.ai/dsh-policy 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^20\.19 \|\| ^22\.12 \|\| \>=24\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @amaster\.ai/dsh-policy 可以商用吗？

@amaster\.ai/dsh-policy 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @amaster\.ai/dsh-policy 的下载量有多少？

根据 npm 官方下载统计，@amaster\.ai/dsh-policy 在 2026/10/06 – 2026/11/04 这 30 天内被下载 4,367 次，日均约 146 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @amaster\.ai/dsh-policy 还在维护吗？

最新版本 0\.1\.40 发布于 2026/11/04（1 天前）；至今共发布 40 个版本，其中过去 12 个月发布了 40 个；首次发布于 2026/09/11。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

