dsh-scaffold
重命名: 以前
@perrylink/dsh-plugin-kit;现在dsh-scaffold。旧的repo保留为指针/备份。新屋: https://github.com/PerryLink/dsh-scaffold
非官方配套工具。 DSH标准家族的一部分;不是认证、认可、安全审核或官方背书。标准: https://github.com/PerryLink/dsh-standards。这个
dsh.standardsBlock是not-run占位符,不是通行证。
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 安装排名)。
英语 | 简体中文 | 西班牙语 | 葡萄牙商业银行 | हिन्दी
共享 zero-runtime-dependency PerryLink DSH插件的工具包 存储库。每个项目的审计发现有20多个插件是手工制作的 相同的提供商接缝,重复相同的清理/定价/裁决 形状,所以这个包提取了它的全部——可插入的Provider接缝 失败关闭审批和自适应会话事件门,机械验证 脚本和共享的净化/定价/判断纯模块合二为一 ESM + TypeScript包。
安装和卸载
作为一个库,安装是 pnpm add (参见快速入门)。该包裹还可以发送电子邮件
故意空 dsh.bundle.patch 层(cordis.patch.yml),所以它流动
通过线束通道,当一个配置文件希望套件安装为
包:
# npm channel (published releases)
dsh plugin --profile web add dsh-scaffold
# git channel (latest master)
dsh plugin --profile web add github:PerryLink/dsh-scaffold
删除:
pnpm remove dsh-scaffold
没有任何东西注册全局状态:卸载与安装完全相反。
什么是洗碗机脚手架?
共享 zero-runtime-dependency 用于PerryLink DSH插件库的工具包。每个项目的审计发现,有20多个插件手工滚动了相同的Provider接缝,并复制了相同的清理/定价/判决形状,所以这个包将所有这些——可插入的Provider接缝、失败关闭的审批和自适应会话事件门、机械验证脚本和共享的清理/定价/判断纯模块——提取到一个ESM + TypeScript包中。
工作流程概述:调用→插件→结果。下面的示例使用真实的命令界面。
兼容性
- 近年来利用该工具包不进口任何东西
@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更新预设。
快速启动
dsh plugin --profile web add github:PerryLink/dsh-scaffold
从npm:
pnpm add dsh-scaffold
源自git (the) prepare 脚本构建 lib/ 仅使用生产
依赖项):
pnpm add github:PerryLink/dsh-scaffold
一步替换手工卷制的注册表:
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()
例子
这些是插件的真正入口点;安装一次,然后调用一次。
详细的例子
命令
import { createStripper } from 'dsh-scaffold/shared'
createStripper().strip('call 13800138000 or email [email protected]')
输出
call <PHONE_1> or email <EMAIL_1>
观察到的 README.md:153 (shared sanitize); src/shared/sanitize.ts:268; test/sanitize.test.ts:8-19
失败的分支
输入
const r = new ProviderRegistry(); r.register('openai', impl); r.register('openai', impl) // second call
输出
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
简短的例子
applyFailClosedparseVerdict
配置
没有运行时配置:门和助手是纯函数。唯一的
构型面为 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)使用的库 (可选客户端)其他插件的一半。
发展
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。
关键词:dsh, dsh-plugin, deepseek-harness, deepseek, cordis, perrylink 供应商、接缝、批准、清理、定价、判断。
贡献者
维护的 PerryLink 与贡献 从DSH插件生态系统。
PerryLink DSH插件家族
这个项目是DeepSeek线束插件家族的一部分 PerryLink。花名册保持在下面,所以每个自述文件都保持一个简短的第一屏幕;展开它以查看每一行及其状态。
展开所有插件
许可证
Apache-2.0 -参见 许可证。