跳到主内容

dsh-tool-schema 使用指南

JSON Schema 验证内核:validate/paths/explain/normalize 四动作,零网络零动态代码,含资源硬上限与 ReDoS 防护。

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

dsh-tool-schema

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add github:omdsh-dev/dsh-toolkit#path:packages/dsh-tool-schema

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

常见问题

这个插件需要任何配置吗?

不需要。安装后插件会自动注册到 profile 的 layer stack,无需任何额外配置、配置文件或环境变量即可调用 schema 工具的全部 4 个动作。

跟 dsh-tool-json 的查询功能有什么区别?

dsh-tool-json 用于按 JMESPath 子集从 JSON 中取数据/筛选,本插件用于验证结构是否符合 schema 并定位失败路径(RFC 6901 JSON Pointer),两者职责互补,不能互相替代。

会执行任意代码或访问网络吗?

不会。验证内核是纯数据遍历,不构造 RegExp(pattern 在独立 worker 内执行)、不 eval、不访问网络、不读文件;对象访问全部用 Object.hasOwn,proto/constructor/prototype 只作为普通 JSON 键处理。

schema 用了不支持的关键字会怎样?

会显式报告 schemaIssue(code 为 unsupported-keyword)。strictSchema=true(默认)下直接判失败;strictSchema=false 下只验证已支持子集,返回 valid=null + complete=false + supportedSubsetValid,绝不会静默忽略。

病理正则(灾难性回溯)会卡死助手吗?

不会。所有 pattern 校验共享 1000ms 总预算,在可终止的 worker 线程中执行;超时即调用 worker.terminate() 并返回 pattern-timeout 错误,灾难性回溯无法阻塞宿主进程。

输入大小有限制吗?

有硬上限:data 和 schema 各 ≤ 256 KiB,嵌套深度 ≤ 64,schema 节点 ≤ 10000,遍历节点 ≤ 100000,错误数默认 100/最大 1000,$ref 链 ≤ 64,单 schema 内 pattern ≤ 100 个且单 pattern ≤ 16 KiB,canonical 输出 ≤ 1 MiB;超限按错误或截断(置 truncated)处理。

normalize 会修改我的输入数据吗?

不会。normalize 始终先对输入做深拷贝(新对象均为 null-prototype 防止原型污染),再应用 properties 中缺失字段的显式 default,最后再对结果做完整验证;只接受通过对应子 schema 的 JSON 兼容默认值,否则给 default-invalid 警告并跳过。

怎么卸载?

通过 profile 的 bundle 层管理移除:使用 dsh plugin --profile web remove tool-schema,或直接编辑 profile 的 layer stack 删除 row id 为 tool-schema 的行。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.8+
  • Node: >=22.19.0

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则

dsh-tool-schema 使用指南