跳到主内容

dsh-tool-stat/packages/dsh-tool-stat

24Star1Fork1Issue0Watching

DSH 数值统计工具,对一组有限数算描述统计、百分位、频数分布与相关性,零依赖纯函数确定性输出

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科

ⓘ 此插件是大仓库 omdsh-dev/dsh-toolkit 的子包,星数与活跃度统计的是整个仓库。

语言
TypeScript
License
MIT
分支
main
collectiondshdsh-plugintoolkitzero-dependency

安装

命令web profile
$ dsh plugin --profile web add github:omdsh-dev/dsh-toolkit#path:packages/dsh-tool-stat

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 omdsh-dev/dsh-toolkit/packages/dsh-tool-stat:先查看仓库 https://github.com/omdsh-dev/dsh-toolkit 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

DSH 的数值统计工具,让 AI 对一组显式传入的有限数算出描述统计、百分位、频数分布和相关系数,全程零依赖纯函数,相同输入永远得到相同输出。

核心能力

  • 一站式描述统计:count / sum / min / max / mean / median / variance / standardDeviation / q1 / q3 / iqr 一次给出
  • 百分位计算:单次最多 100 个百分位,线性插值 h=(n-1)*p,按请求顺序原样返回(重复项不去重)
  • 频数分布:按数值严格相等分组,输出 value / count / ratio,超过 10000 项自动截断并标注
  • 相关性分析:Pearson 或 Spearman(midrank 平均秩)相关系数;零方差配对返回 defined:false + reason:"zero-variance"
  • 数值稳定性:Neumaier 补偿求和、Welford 在线方差,原始输入数组永不被修改
  • 严格输入校验:拒绝 NaN/Infinity(错误信息带下标定位),-0 归一化为 0,溢出抛 numeric-overflow 错误

技术实现

  • 语言: TypeScript(ESM 模式,tsc 编译到 lib/)
  • 关键依赖: @deepseek-ai/cordis、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-invariants
  • 架构模式: Cordis 插件模型(name + inject: ['tools'] + apply(ctx)),在 apply 中通过 ctx.tools.register(defineTool(...)) 注册名为 stat 的工具,4 个 action 通过 runStatAction 统一分发;安装由 cordis.patch.yml 用 - insert: 列表把 tool-stat 条目插入目标 profile 的 layer 栈
  • 入口文件: src/index.ts(Cordis 插件入口与工具声明)/ src/validate.ts(参数校验与 -0 归一化)/ src/describe.ts(Neumaier 求和 + Welford 方差 + 线性插值百分位)/ src/correlation.ts(Pearson + Spearman midrank)/ src/frequency.ts(频数分布与截断规则)

适用场景

AI 从 CSV/JSON 抽出一列数值后想快速看出"平均水平、波动范围、分布形状、两组数是否同向变化"时,本工具以毫秒级纯函数调用直接给出结构化 JSON 报告,避免 AI 心算统计量时浮点错算且无法复核。零依赖、纯函数、不读写文件网络的特性,也让它适合作为可复现的中间计算步骤放进自动化流水线。

前置依赖与兼容性

依赖最低版本说明
Node>=22.19.0(含 24.x)由 package.json#engines 声明
@deepseek-ai/cordis^4.0.1peer 依赖,由宿主 profile 提供
@deepseek-ai/dsh-tools>=0.0.1-rc.1 <0.2.0peer 依赖;工具注册 API 来源
@deepseek-ai/dsh-invariants>=0.0.1-rc.1 <0.2.0peer 依赖;包级 invariant companion
DSH>=0.0.1-rc.1(已在 0.1.0-rc.8 验证)profile 宿主需匹配 peer 范围
平台—跨平台,纯 JS 计算,无原生模块依赖

安装方式

dsh plugin --profile web add github:omdsh-dev/dsh-toolkit/packages/dsh-tool-stat

配置项

本插件无需额外配置。stat 工具自身的 6 个调用参数(action / values / other / percentiles / method / sample)随每次调用传入,不存在宿主级配置文件或环境变量。

常见问题

Q: 这个工具能直接读 CSV 或 JSON 文件吗?

A: 不能。本工具不读取文件、不访问网络、不创建进程——你需要先用 dsh-tool-csv 把数据读出来,再用本插件对那组数算聚合;它只接收显式传入的有限数值数组。

Q: 输入数组里有 NaN 或 Infinity 会怎么样?

A: 直接报错。校验层逐元素检查 Number.isFinite,违规抛 stat: values[i] must be a finite number (got ...),错误信息带下标定位,方便定位脏数据。-0 会被静默归一化为 0。

Q: 计算结果会不会出现 NaN 或 Infinity?

A: 不会。所有数值结果在返回前再做一次有限数检查,溢出时抛 stat: numeric-overflow 错误;canonical JSON 输出绝不含非有限值。

Q: correlation 遇到零方差序列返回什么?

A: 不是 NaN 也不是 ±Infinity,而是结构化对象:defined: false, value: null, reason: "zero-variance"。这让你在提示词里能直接处理"无定义"语义,而不是被非有限数坑到。

Q: 一次能算多少数据?百分位请求有上限吗?

A: values 长度 1..100000;单次 percentile 最多 100 个百分位;frequency distinct 项最多输出 10000,超出按 count 降序→value 升序截断;工具 timeoutMs 2000。同步 CPU 计算无法被协作式 timeout 真正中断。

Q: 跟 calculator 工具怎么分工?dsh-tool-csv 的 stats 不是已经有了吗?

A: calculator 只能对单条表达式求值(算不出分布或相关系数);dsh-tool-csv 的 stats 只报告行列结构而非对一组观测值做统计聚合。本插件填补了"对一组数值数组做描述/分位/频数/相关"这一档。

Q: 安装到 web profile 后 dsh run 能直接用吗?

A: 不能。web 与 headless 是两个独立 profile,本插件需要在 headless(dsh run 默认)里也单独装一次。

Q: 输出里的 sample 字段是什么意思?

A: 控制方差分母:false(默认)= 总体方差(n 分母),true = 样本方差(n-1 分母);describe 与 correlation 的 variance/standardDeviation 都按此口径计算。

上手难度

入门 — AI 只需按 4 个 action(describe / percentile / frequency / correlation)传一组有限数即可拿到结构化报告,无需理解底层数值算法或编写任何配置。

已知问题与限制

  • 资源硬上限:values 长度上限 100000,超出直接抛错(stat: values exceeds the 100000 observation limit);单次最多 100 个百分位请求;frequency distinct 项最多 10000,超出按 count 降序→value 升序截断并返回 truncated: true
  • 计算同步阻塞:timeoutMs: 2000 是协议层声明,但纯函数同步执行无法被协作式中断,单次超大数组可能卡满超时
  • 缺失值不处理:输入必须全部为有限数,含 NaN/Infinity 直接报错,不提供"忽略缺失"或"分桶近似"等宽松模式
  • 零方差相关性无定义:当任一序列方差为 0 时 correlation 返回 defined:false + reason:"zero-variance"(而非 ±1),调用方需自行处理
  • 工具参数写入会话日志:源码与 README 均明确提示"工具参数会记入会话日志,不要传入敏感数据"
  • 平台隔离:web 与 headless profile 互不覆盖,需分别安装才能在交互式 web 与 dsh run 默认 headless 下同时使用

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/omdsh-dev/dsh-toolkit/packages/dsh-tool-stat)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录