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
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则