按路径精确查询 JSON 字段,避免正则误匹配
31.3/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add omdsh-dev/dsh-tool-json该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 55 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@deepseek-ai/dsh-tool-json(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 01:48:55
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-invariants@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 按路径查询JSON字段
- JMESPath子集查询
- 零依赖递归下降解析
DSH JSON 查询工具插件:JMESPath 子集查询,零依赖递归下降解析器
README
由 DeepSeek 最新模型翻译生成dsh-tool-json
DSH JSON 查询工具插件 —— 受 JMESPath 启发的路径查询(自定义子集),零依赖递归下降解析器。
License
为什么需要
Agent 处理 JSON 是高频操作——API 返回值、配置文件、工具输出到处都是 JSON。当前做法是起 bash 进程跑 node -e 或 jq,每次都有进程开销和字符串序列化成本。
DSH 内置 grep 可以做正则匹配,但无法理解 JSON 结构。对于 {"items":[{"id":1}]}:
- grep 只能做字符串级搜索,容易误匹配值、key、或嵌套子对象中的同名 key
- json 走结构化路径,只匹配指定路径,不混淆 key 和 value
安全模型
手写递归下降解析器,无 eval/new Function;Object.hasOwn 防原型链污染(constructor/__proto__ 读取不触发原型链)。
展开完整文档(README 剩余 1 节)
dsh-tool-json
DSH JSON 查询工具插件 —— 受 JMESPath 启发的路径查询(自定义子集),零依赖递归下降解析器。
License
为什么需要
Agent 处理 JSON 是高频操作——API 返回值、配置文件、工具输出到处都是 JSON。当前做法是起 bash 进程跑 node -e 或 jq,每次都有进程开销和字符串序列化成本。
DSH 内置 grep 可以做正则匹配,但无法理解 JSON 结构。对于 {"items":[{"id":1}]}:
- grep 只能做字符串级搜索,容易误匹配值、key、或嵌套子对象中的同名 key
- json 走结构化路径,只匹配指定路径,不混淆 key 和 value
安全模型
手写递归下降解析器,无 eval/new Function;Object.hasOwn 防原型链污染(constructor/__proto__ 读取不触发原型链)。资源上限(对象与字符串两条输入路径统一执行):
- 查询表达式长度 ≤ 200 字符、解析深度 ≤ 20 层、数组索引必须是安全整数
- 字符串输入 ≤ 1,000,000 bytes(UTF-8);输入嵌套深度 ≤ 100
- 单次 wildcard 投影 ≤ 100,000 元素
- 只接受 JSON-compatible 值(null/boolean/有限 number/string/array/plain object;拒绝 undefined/BigInt/函数/Date/非有限数)
错误分类(JsonQueryError):MISSING_PROPERTY(投影内跳过)、TYPE_MISMATCH/INDEX_OUT_OF_BOUNDS/INVALID_QUERY(如实抛错),统一 json: 前缀。
成本模型(AUDIT-JSON-03):输入在每次查询前执行全量校验(类型/深度/字节/循环/枚举性)——这是有意的安全成本,查询小字段也会完整扫描输入;timeoutMs 无法中断同步校验。
架构
DSH Agent
│ ctx.tools.register()
▼
src/index.ts(Cordis 插件入口 + action 分发) │ ▼ src/query.ts ├── parseQuery() — 递归下降解析器(strict 语法 + 转义 + 上限) ├── executeQuery() — 执行器(错误分类 + 投影上限) └── normalizeInput() — 双形态输入 + assertJsonCompatible 校验
工具声明
ctx.tools.register(defineTool({
name: 'json',
parameters: {
input: { type: 'json', required: true, description: 'JSON value or JSON string to query.' },
query: { type: 'string', required: true, description: 'Path expression, e.g. "data.items[0].name".' },
},
output: { schema: { type: 'json' }, render: (_a, v) => [{ type: 'text', text: JSON.stringify(v) }] },
execute: (args) => Promise.resolve(executeAction(args) as JsonValue),
timeoutMs: 1000,
}))
input 双形态:对象直传(模型直接生成参数,零转义)或字符串(bash/read 原文透传),normalizeInput 统一归一化与校验。
查询语法(受 JMESPath 启发的子集)
| 表达式 | 示例 | 说明 |
| 点号访问 | foo.bar | 嵌套对象属性(标识符字符集 [A-Za-z0-9_$ + BMP 非 ASCII]) |
| 方括号索引 | items[0] | 数组索引(安全整数) |
| 方括号属性 | items['key'] / items["key"] | 含特殊字符的属性名 |
| 通配符投影 | items[].name | 仅数组;提取元素属性 |
| 组合嵌套 | a.b[0].c.d | 以上全部自由组合 |
语义边界(有意不兼容标准 JMESPath,已锁定):
- 多级通配符 items[].tags[] 返回嵌套数组([['a','b'],['c']]),不做标准投影扁平化
- 通配符仅作用于数组,不支持对象字段枚举;非对象元素按投影语义跳过;合法 null 结果保留
- 引号属性支持 \\ \' \" 三种转义(任意引号包围形式下均可用);非法转义报错
- 投影内只跳过 MISSING_PROPERTY;类型/索引/内部错误如实抛出
不支持(低频场景,bash + node 兜底):过滤器 [?downloads > 1000]、管道 |、函数调用。
DSH 0.1.5-rc.1 兼容(已验证)
本插件已迁移到 DSH 0.1.5-rc.1 依赖线,并在 local harness 0.1.5-rc.1 的隔离 consumer 中完成全链路验证:
- 类型/运行时:@deepseek-ai/cordis@^4.0.1 + @deepseek-ai/dsh-tools@>=0.0.1-rc.1 =0.0.1-rc.1 ⚠️ web 与 headless 是不同 profile:web 安装不会自动覆盖 headless;dsh run 默认使用 headless profile。
npm pack tarball 安装
npm pack # 生成 dsh-tool-json-.tgz
dsh plugin --profile web add ./dsh-tool-json-.tgz
dsh plugin --profile headless add ./dsh-tool-json-.tgz
验证安装
dsh --profile web --dump-config | grep tool-json
运行验证
dsh run "使用 json 工具查询 {"a":{"b":1}} 的 a.b"
手动安装与旧版本兼容
仅适用于不支持 Profile Bundle 的旧快照或插件开发调试环境:
1. 放入 monorepo:cp -r json ~/.dsh/source/master/packages/tools/json(开发调试)
2. apps/cli/package.json 加 "@deepseek-ai/dsh-tool-json": "workspace:^";tsconfig.host.json references 加 { "path": "./packages/tools/json" }
3. pnpm install && pnpm run build
4. 在 profile 用户层 patch 插入插件(~/.dsh/profiles//cordis.patch.yml):
- insert:
- id: tool-json
name: '@deepseek-ai/dsh-tool-json'
5. 验证:dsh --profile --dump-config | grep tool-json
注意:patch 是 id-targeted 语义——裸 - id: 条目会报 entry "xxx" not found,必须用 - insert: 列表包裹。
用法
json { input: , query: "items[0].name" } → "hello"
json { input: , query: "items[*].name" } → ["a", "b"](合法 null 保留)
json { input: , query: "items['complex-key']" } → "ok"
已知限制
1. 只读:不能修改 JSON 字段(原地修改用 str_replace_editor/write;v2 可考虑 set 模式)
2. 无过滤器表达式、无标准 JMESPath 投影扁平化(见语义边界)
3. 对象形态 input 依赖 DSH 参数管线保证 lossless JSON
测试
pnpm test
54 个用例(功能、错误、攻击载荷、对象/字符串双形态输入、资源上限与转义边界)。完整清单见本地维护的设计文档。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
omdsh-dev/dsh-tool-json
按路径精确查询 JSON 字段,避免正则误匹配
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,288已汉化MCP
71.7
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9
原生编程智能体paean-ai/deeptide
由 DeepSeek 打造,为 DeepSeek 而生。
★ 1,107已汉化DSH
67.7
多引擎接力台emo-xiaoyu/harness-mix
macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面验收仍需在对应机器执行。安装方式、Linux…
★ 419已汉化DSH
66.8
这是你的仓库?认领条目