# dsh-scaffold 中文文档

规范地址：https://npmcn.com/package/dsh-scaffold/

版本：0\.2\.1
npm 元数据更新时间：2026-11-03T11:43:31.846Z
中文译文更新时间：2026-11-03T14:16:25.426Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/dsh-scaffold
原文对照：https://npmcn.com/package/dsh-scaffold/?lang=original
项目主页：https://github.com/PerryLink/dsh-scaffold#readme
源码仓库：https://github.com/PerryLink/dsh-scaffold

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

- 包体积（解压后）：339 kB，109 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.19\.0 \|\| \>=24\.0\.0
- 运行依赖：0 个
- peer 依赖：@deepseek-ai/cordis ^4\.0\.5-alpha\.1，@deepseek-ai/dsh-tools \>=0\.1\.2-rc\.1 \<0\.2\.0 \|\| \>=0\.1\.5-alpha\.1 \<0\.2\.0 \|\| \>=0\.1\.6-0 \<0\.2\.0 \|\| \>=0\.1\.7-0 \<0\.2\.0 \|\| \>=0\.2\.0-0 \<0\.3\.0 \|\| \>=0\.2\.1-0 \<0\.3\.0 \|\| \>=0\.2\.2-0 \<0\.3\.0，@deepseek-ai/dsh-session \>=0\.1\.2-rc\.1 \<0\.2\.0 \|\| \>=0\.1\.5-alpha\.1 \<0\.2\.0 \|\| \>=0\.1\.6-0 \<0\.2\.0 \|\| \>=0\.1\.7-0 \<0\.2\.0 \|\| \>=0\.2\.0-0 \<0\.3\.0 \|\| \>=0\.2\.1-0 \<0\.3\.0 \|\| \>=0\.2\.2-0 \<0\.3\.0，@deepseek-ai/schemastery ^3\.18\.5-alpha\.1，@deepseek-ai/dsh-user-approval \>=0\.1\.2-rc\.1 \<0\.2\.0 \|\| \>=0\.1\.5-alpha\.1 \<0\.2\.0 \|\| \>=0\.1\.6-0 \<0\.2\.0 \|\| \>=0\.1\.7-0 \<0\.2\.0 \|\| \>=0\.2\.0-0 \<0\.3\.0 \|\| \>=0\.2\.1-0 \<0\.3\.0 \|\| \>=0\.2\.2-0 \<0\.3\.0
- 首次发布：2026-11-01T09:17:21.202Z
- 最新版本发布：2026-11-03T11:43:31.669Z
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

PerryLink DSH插件的共享零运行时依赖工具包：可插入的Provider注册接缝、失败关闭审批和自适应会话事件门、机械验证脚本、共享清理/定价/判断模块和新插件框架。

## 安装

```sh
npm install dsh-scaffold
```

也可以使用：`pnpm add dsh-scaffold`、`yarn add dsh-scaffold`、`bun add dsh-scaffold`

## README

# dsh-scaffold

> **重命名:** 以前 `@perrylink/dsh-plugin-kit`;现在 **`dsh-scaffold`**。旧的repo保留为指针/备份。新屋: [https://github.com/PerryLink/dsh-scaffold](https://github.com/PerryLink/dsh-scaffold)

> **非官方配套工具。** DSH标准家族的一部分；不是认证、认可、安全审核或官方背书。标准: [https://github.com/PerryLink/dsh-standards](https://github.com/PerryLink/dsh-standards)。这个 `dsh.standards` Block是 `not-run` 占位符，不是通行证。

```sh
dsh plugin --profile <name> add dsh-scaffold
```

共享 **zero-runtime-dependency** 用于PerryLink DSH插件库的工具包。每个项目的审计发现，有20多个插件手工滚动了相同的Provider接缝，并复制了相同的清理/定价/判决形状，所以这个包将所有这些——可插入的Provider接缝、失败关闭的审批和自适应会话事件门、机械验证脚本和共享的清理/定价/判断纯模块——提取到一个ESM + TypeScript包中。

> **包名称。** 这个项目发布到npm **`dsh-scaffold`**。裸npm名称 `dsh-scaffold` 属于一个不同的，不相关的项目-安装它不会安装此包。

-   **1024存储通道**： `npm i -g dsh1024` 有一次,然后 `dsh1024 plugin --profile web add dsh-scaffold` （数着） [deepseek1024.com](https://deepseek1024.com/) 安装排名)。

[![npm version](https://img.shields.io/npm/v/dsh-scaffold)](https://www.npmjs.com/package/dsh-scaffold) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://npmcn.com/package/dsh-scaffold/LICENSE) [![DSH plugin](https://img.shields.io/badge/dsh--plugin-%E2%9C%85-green)](https://github.com/topics/dsh-plugin) [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/) [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](https://npmcn.com/package/dsh-scaffold/#) [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-scaffold) [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-scaffold/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-scaffold/actions) [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-scaffold?label=version)](https://github.com/PerryLink/dsh-scaffold/releases) [![npm downloads](https://img.shields.io/npm/dm/dsh-scaffold)](https://www.npmjs.com/package/dsh-scaffold) [![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-scaffold?metric=downloads)](https://dshfind.com/plugins/PerryLink/dsh-scaffold?ref=badge)

**英语** | [简体中文](https://npmcn.com/package/dsh-scaffold/README-zh.md) | [西班牙语](https://npmcn.com/package/dsh-scaffold/README-es.md) | [葡萄牙商业银行](https://npmcn.com/package/dsh-scaffold/README-pt.md) | [हिन्दी](https://npmcn.com/package/dsh-scaffold/README-hi.md)

共享 **zero-runtime-dependency** PerryLink DSH插件的工具包 存储库。每个项目的审计发现有20多个插件是手工制作的 相同的提供商接缝，重复相同的清理/定价/裁决 形状，所以这个包提取了它的全部——可插入的Provider接缝 失败关闭审批和自适应会话事件门，机械验证 脚本和共享的净化/定价/判断纯模块合二为一 ESM + TypeScript包。

## 安装和卸载

作为一个库，安装是 `pnpm add` （参见快速入门）。该包裹还可以发送电子邮件 故意空 `dsh.bundle.patch` 层(`cordis.patch.yml`)，所以它流动 通过线束通道，当一个配置文件希望套件安装为 包:

```sh
# npm channel (published releases)
dsh plugin --profile web add dsh-scaffold

# git channel (latest master)
dsh plugin --profile web add github:PerryLink/dsh-scaffold
```

删除:

```sh
pnpm remove dsh-scaffold
```

没有任何东西注册全局状态：卸载与安装完全相反。

## 什么是洗碗机脚手架？

共享 **zero-runtime-dependency** 用于PerryLink DSH插件库的工具包。每个项目的审计发现，有20多个插件手工滚动了相同的Provider接缝，并复制了相同的清理/定价/判决形状，所以这个包将所有这些——可插入的Provider接缝、失败关闭的审批和自适应会话事件门、机械验证脚本和共享的清理/定价/判断纯模块——提取到一个ESM + TypeScript包中。

![Workflow diagram for dsh-scaffold: call → plugin → result.](https://npmcn.com/package/dsh-scaffold/docs/assets/dsh-scaffold-flow.svg)

_工作流程概述：调用→插件→结果。下面的示例使用真实的命令界面。_

## 兼容性

-   **近年来利用**该工具包不进口任何东西 `@deepseek-ai/*` 在运行时。 `@deepseek-ai/cordis` （`^4.0.5-alpha.1`）， `@deepseek-ai/schemastery` （`^3.18.5-alpha.1`)，以及 `@deepseek-ai/dsh-*` 包 **可选** 中的对等依赖项 `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0` 带PerryLink插件回购分享；它们仅用于类型 交互操作。针对dsh-v0.1.7-alpha验证2026-09-11。1主结帐 （全闸门链+配置文件安装烟雾），并重新验证2026-10-05 这个 `dsh-v0.2.1-alpha.1` 结帐（全闸门链+型材安装烟）。
-   **节点**： `^22.19.0 || >=24.0.0`仅限ESM。
-   **线的兼容性**：名字和形状的镜像 `dsh-mask` (清洁) `dsh-budget` (定价), `dsh-auto-review` （法官和法官） `fallbackPolicy` 词汇)，所以迁移是机械的。

## 你得到了什么

-   **零运行时依赖项** -纯核(`seam`， `gates`， `shared`） 是网络安全。
-   **ESM +严格TypeScript** 每个模块的JSDoc合约 `strict`， `noUncheckedIndexedAccess`， `exactOptionalPropertyTypes`。
-   **故障关闭和自适应门** -批准永远不会默认为授予； 在拒绝未知事件的主机上，会话事件追加会优雅地降级 类型。
-   **新插件框架** - - - - - - `template/` 与 `cordis.yml`三个角色 `src/index.ts` （服务定义/提供者/消费者），测试，以及 shared更新预设。

## 快速启动

```sh
dsh plugin --profile web add github:PerryLink/dsh-scaffold
```

从npm:

```sh
pnpm add dsh-scaffold
```

源自git （the） `prepare` 脚本构建 `lib/` 仅使用生产 依赖项):

```sh
pnpm add github:PerryLink/dsh-scaffold
```

一步替换手工卷制的注册表：

```ts
import { ProviderRegistry } from 'dsh-scaffold/seam'

const registry = new ProviderRegistry<Detector>({
  default: { name: 'regex', impl: new RegexDetector() },
})
ctx.effect(() => registry.register('ner', new NerDetector()))
const active = registry.use('ner') ?? registry.use()
```

### 例子

这些是插件的真正入口点；安装一次，然后调用一次。

#### 详细的例子

**命令**

```sh
import { createStripper } from 'dsh-scaffold/shared'
createStripper().strip('call 13800138000 or email a@b.com')
```

**输出**

```text
call <PHONE_1> or email <EMAIL_1>
```

_观察到的 `README.md:153 (shared sanitize); src/shared/sanitize.ts:268; test/sanitize.test.ts:8-19`_

#### 失败的分支

**输入**

```text
const r = new ProviderRegistry(); r.register('openai', impl); r.register('openai', impl)  // second call
```

**输出**

```text
Error: Provider "openai" is already registered
```

_观察到的 `plugins/dsh-scaffold/lib/seam/provider.js:55-58; plugins/dsh-scaffold/test/seam.test.ts:27-30; plugins/dsh-scaffold/README.md:164`_

#### 简短的例子

-   `applyFailClosed`
-   `parseVerdict`

## 配置

没有运行时配置：门和助手是纯函数。唯一的 构型面为 `cordis.patch.yml`， bundle-patch层发布 用于线束剖面组成；它没有安装插件行(该工具包是一个 库)和文档如何消费插件添加自己的行。

## 工具和表面

| 子路径 | 目的 |
| --- | --- |
| `seam` | `ProviderRegistry<T>` -可逆的，故障响亮的命名提供商注册表。 |
| `gates` | `applyFailClosed`； `makeEventGate` / `maybeAppendSessionEvent` / `probeIgnorableAppend`。 |
| `shared` | `sanitize` （`Stripper`， `redactText`， `redactMapping`， `sanitizeText`， `sanitizeUrl`）， `pricing` （`BUILTIN_PRICES`， `estimateUsageCost`， `tokenCarbon`， `latencyStats`， `formatMoney`， `formatTokens`）， `judge` （`parseVerdict`， `VERDICT_SCHEMA`， `riskExceeds`）. |
| `verify` | 机械CI门(`verify-license`， `verify-readme-languages`， `verify-seam`)用… `VerifyReport` 和非零退出的CLI： `node lib/verify/cli.js all .` |
| `template/` | 新插件骨架(`cordis.yml`、三角色插件、测试、README、 `renovate.json5`）. |
| 根管 | 再出口上述所有产品。 |

## 权限和数据

该工具包不执行I/O，不执行网络访问，也不生成子进程 自己的。 `Stripper` 只在内存中保留占位符→原始映射，和 `stats()`/`redactMapping()` 永远不要发出明文；持久的消费者 Mapping拥有该决策及其存储权限。

## 安全边界

-   `sanitize`/`redact*` 是 **显示卫生**，而不是安全边界：他们 减少泄漏到日志和结果中，它们不进行身份验证或授权。
-   审批门默认关闭(`rejected`）; 唯一的授权路径 是显式的 `allow-once` 可选。
-   跳过主机拒绝的会话事件追加，从不以某种方式重试 这可能会中断会话恢复。
-   通过GitHub安全咨询报告漏洞-参见 `SECURITY.md`。

## 已知的限制

-   主机的 `Session.append` 第三个参数是 `SurfaceIntent` （`0.1.2-rc.1`)把 `validateNext` 在可忽略包络探针上；这个 Gate降级为skip-unknown，因此审计事件被丢弃（失败关闭） 而不是登录那些主机。
-   0.1.2-rc.1（改编于2026-09-02）：会话信封保留其可忽略的字段，仅用于存储日志读取兼容性-会话。Append仍然不能盖章，因此审计行为不变。
-   该工具包没有提供一半的浏览器UI；它是宿主（and）使用的库 （可选客户端）其他插件的一半。

## 发展

```sh
pnpm install
pnpm run typecheck        # tsc --noEmit
pnpm run typecheck:ci     # CI face: tsc -p tsconfig.ci.json --noEmit
pnpm test                 # vitest unit tests
pnpm run build            # emit lib/ + declarations (also run by prepare)
pnpm run verify:self-contained
pnpm run verify:artifacts
```

## 主题

这个存储库也是生态系统的维护中心： `scripts/sync-peer-range.mjs` 在每个repo中重新固定共享的对等带 中的目标目录。 一个命令, `renovate/default.json5` 共享更新预设每个回购 延伸, `.github/workflows/npm-publish.yml` 可重用的标签是触发的吗 发布工作流(只需要一个 `NPM_TOKEN` 秘密), `data/repos.json` 是 门户使用的生态系统注册表。读一下那份名单；每个插件的readme携带折叠列表。看到 [文档/ ecosystem-tooling.md](https://npmcn.com/package/dsh-scaffold/docs/ecosystem-tooling.md)。

关键词：dsh， dsh-plugin, deepseek-harness, deepseek, cordis, perrylink 供应商、接缝、批准、清理、定价、判断。

## 贡献者

维护的 [PerryLink](https://github.com/PerryLink) 与贡献 从DSH插件生态系统。

## PerryLink DSH插件家族

这个项目是DeepSeek线束插件家族的一部分 [PerryLink](https://github.com/PerryLink)。花名册保持在下面，所以每个自述文件都保持一个简短的第一屏幕；展开它以查看每一行及其状态。

展开所有插件

| 插件 | 状态 |
| --- | --- |
| **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** |  |
| **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** |  |
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |  |
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | 🧊FROZEN -参见repo README |
| **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** |  |
| **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** |  |
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | 🧊FROZEN -参见repo README |
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** |  |
| **[dsh-click](https://github.com/PerryLink/dsh-click)** |  |
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** |  |
| **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** |  |
| **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** |  |
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** |  |
| **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** |  |
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** |  |
| **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** |  |
| **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** |  |
| **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** |  |
| **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** |  |
| **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** |  |
| **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** |  |
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** |  |
| **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** |  |
| **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** |  |
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** |  |
| **[dsh-github](https://github.com/PerryLink/dsh-github)** |  |
| **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** |  |
| **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** |  |
| **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** |  |
| **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** |  |
| **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** |  |
| **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** |  |
| **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** |  |
| **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** |  |
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** |  |
| **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** |  |
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** |  |
| **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** |  |
| **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** |  |
| **[dsh-library](https://github.com/PerryLink/dsh-library)** |  |
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** |  |
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** |  |
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** |  |
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** |  |
| **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** |  |
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** |  |
| **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** |  |
| **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** |  |
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** |  |
| **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** |  |
| **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** |  |
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** |  |
| **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** |  |
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** |  |
| **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** |  |
| **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** |  |
| **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** |  |
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** |  |
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** |  |
| **[dsh-scaffold](https://github.com/PerryLink/dsh-scaffold)** |  |
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** |  |
| **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** |  |
| **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** |  |
| **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** |  |
| **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** |  |
| **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** |  |
| **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** |  |
| **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** |  |
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** |  |
| **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** |  |
| **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** |  |
| **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** |  |
| **[dsh-score](https://github.com/PerryLink/dsh-score)** |  |
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** |  |
| **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** |  |
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** |  |
| **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** |  |
| **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** |  |
| **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** |  |
| **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** |  |
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** |  |
| **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** |  |
| **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** |  |
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** |  |
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** |  |
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** |  |
| **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** |  |
| **[dsh-community-bench](https://github.com/PerryLink/dsh-community-bench)** | 🧊FROZEN -参见repo README |
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | 🧊FROZEN -参见repo README |
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 🧊FROZEN -参见repo README |
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 🧊FROZEN -参见repo README |
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | 🧊FROZEN -参见repo README |
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 🧊FROZEN -参见repo README |
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 🚫已退休-请参阅repo README |
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 🚫已退休-请参阅repo README |
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 🚫已退休-请参阅repo README |

## 许可证

Apache-2.0 -参见 [许可证](https://npmcn.com/package/dsh-scaffold/LICENSE)。

## 常见问题

### dsh-scaffold 是什么？

PerryLink DSH插件的共享零运行时依赖工具包：可插入的Provider注册接缝、失败关闭审批和自适应会话事件门、机械验证脚本、共享清理/定价/判断模块和新插件框架。

### 如何安装 dsh-scaffold？

在项目目录运行 npm install dsh-scaffold，或使用 pnpm add / yarn add / bun add。

### dsh-scaffold 支持 TypeScript 吗？

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

### dsh-scaffold 支持 ESM 还是 CommonJS？

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

### dsh-scaffold 需要什么版本的 Node\.js？

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

### dsh-scaffold 可以商用吗？

dsh-scaffold 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### dsh-scaffold 还在维护吗？

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

