← 返回列表
需源码安装
DSH 统计工具插件:描述统计/百分位数/频数分布/相关性,零依赖纯函数确定性
暂不能直接安装(需源码编译或环境不满足):仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/10 · 已提供中文文档
综合分
33.3
GitHub 分
33.3
用户评分
—
★ Stars
6
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add omdsh-dev/dsh-tool-stat仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 4 天前真实安装成功(L4 · 真实安装)
- 是什么
- dsh 原生插件 · tool
- 装得上吗
- 本站已真实安装成功(L4 · 真实安装,非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 15 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/22
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@deepseek-ai/dsh-tool-stat(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
仓库 package.json 标记 private,未发布到 npm,需从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 11:28:07
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-invariants@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-tool-stat
English
DSH 统计工具插件 —— 描述统计、百分位数、频数分布、相关性计算。零依赖、纯函数、确定性。
License
动机
Agent 处理数值数据时,从 CSV / JSON 提取出数值数组后往往需要聚合分析(均值、分位数、分布、相关性)。现有工具链没有这类能力:
1. calculator 只做单表达式求值——一个表达式算不出分位数分布,更算不了相关系数
2. dsh-tool-csv 的 stats 只报告行/列结构——不提供对一组观测值的统计聚合
3. 模型“心算”统计不可验证——均值、方差、百分位、相关性涉及大量浮点运算,手算错误率极高,且无法给用户展示可复现的过程
本插件接收显式传入的有限数值数组或成对观测值,提供确定性的统计计算:一次函数调用,毫秒级返回结构化 JSON 报告。不读取文件、不访问网络、不创建进程、不保存状态——相同输入永远得到相同输出。
安全模型
- 零依赖:Neumaier 补偿求和、Welford 在线方差、线性插值百分位、Spearman midrank 全部手写,无第三方数值库
- 有限数强约束:拒绝 NaN / Infinity(错误信息带下标定位,如 values[3] must be a finite number (got Infinity));-0 在输入与输出中均规范化为 0
- 溢出回检:所有结果在返回前再次做有限数检查,中间或最终结果溢出返回 numeric-overflow 错误——canonical 输出绝不含非有限值
- 纯函数:输入数组永不被修改(只读遍历;需要排序时先拷贝)
- 零方差语义:correlation 遇零方差配对返回 defined: false + reason: "zero-variance",而不是 NaN 或 ±Infinity
- 预算:
- 观测值 1..100,000(超限直接报错)
- 百分位请求 ≤ 100 个
- distinct 输出 ≤ 10,000(超出按确定规则截断并标注)
- timeoutMs: 2000
- 工具参数会记入会话日志,不要传入敏感数据
工具声明
注册 stat 工具(@deepseek-ai/dsh-tool-stat,row id tool-stat),统一输出 JSON 文本字符串。
| action | 作用 | 输出 |
|---|---|---|
| describe | 描述统计 | count / sum / min / max / mean / median / variance / standardDeviation / q1 / q3 / iqr(Neumaier 补偿求和 + Welford 方差,population 或 sample) |
| percentile | 百分位数 | 一个或多个百分位(线性插值 h=(n-1)p,0..100),输出按请求顺序、重复保留 |
| frequency | 频数分布 | value / count / ratio 分组(严格相等分组、升序输出、ratio 分母为原始计数) |
| correlation | 相关系数 | Pearson 或 Spearman(midrank 平均秩)相关系数;零方差返回 defined:false + reason |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| action | string | ✅ | describe / percentile / frequency / correlation |
| values | array | ✅ | 有限数值观测(1..100,000);-0 归一化为 0 |
| other | array | | correlation 的配对观测;长度须与 values 相同(≥2) |
| percentiles | array | | percentile 的百分位(0..100,1..100 项) |
| method | string | | 相关系数方法:pearson(默认)/ spearman |
| sample | boolean | | 方差分母:true 用样本(n-1),默认 false(总体 n) |
输出示例
{"action":"describe","count":5,"sum":15,"min":1,"max":5,"mean":3,"median":3,"variance":2,
"standardDeviation":1.4142135623730951,"q1":2,"q3":4,"iqr":2,"sample":false}
{"action":"correlation","method":"pearson","count":4,"defined":true,"value":1,"reason":null}
设计要点
- Neumaier 补偿求和:sum 用补偿项修正大数 + 小数相加的舍入丢失;variance 用 Welford 在线算法(单遍、数值稳定),describe 与 correlation 共用同一统计核心
- 线性插值百分位:h=(n-1)p,value = v[floor(h)] + (h - floor(h)) * (v[ceil(h)] - v[floor(h)]);输出保持请求顺序,重复百分位保留
- Spearman midrank:秩相等时取平均秩(midrank),再对秩做 Pearson;两两完全相同的观测不影响有界性
- 零方差语义:任一序列方差为 0 时相关系数无定义,返回 defined:false + reason:"zero-variance",绝不出 NaN/±Infinity
- 频数截断规则:distinct 输出超过 10,000 时,按 count 降序 → value 升序选择前 10,000 项,再按 value 升序呈现(结果确定可复现)
- 确定性:无随机、无状态、无时间依赖;浮点运算顺序固定,相同输入永远相同输出
构建与测试
构建(零依赖,仅需 monorepo 的 tsc)
node /node_modules/typescript/bin/tsc -p tsconfig.json
测试(vitest,82 个用例:describe 20 / percentile 7 / frequency 7 / correlation 15 / limits 24 / register 9)
node /node_modules/vitest/vitest.mjs run tests
DSH 0.1.5-rc.1 兼容(已验证)
本插件已迁移到 DSH 0.1.5-rc.1 依赖线,并在 local harness 0.1.5-rc.1(npm 私有包)的隔离 consumer 中完成全链路验证:
- 类型/运行时:peer 为 @deepseek-ai/cordis: ^4.0.1 + @deepseek-ai/dsh-tools: >=0.0.1-rc.1 =0.0.1-rc.1 .tgz
交互式(web)profile
dsh plugin --profile web add ./dsh-tool-stat-.tgz
一次性任务(headless)profile
dsh plugin --profile headless add ./dsh-tool-stat-.tgz
包内 dsh.bundle.patch 会在安装后自动把插件加入 profile 的 layer stack(row id:tool-stat)。插件缺失的 peer 依赖(@deepseek-ai/cordis、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-invariants)由 profile 的 healed profiles/node_modules 回退安装提供。
⚠️ web 与 headless 是不同 profile:web 安装不会自动覆盖 headless;dsh run 默认使用 headless profile。Windows 路径使用正斜杠(C:/...)。
验证安装
sh
dsh --profile web --dump-config | grep tool-stat
运行验证
sh
dsh run "使用 stat 工具计算 [1,2,3,4,5] 的描述统计"
手动安装与旧版本兼容(monorepo 旧场景)
monorepo 方式仅适用于旧场景:不支持 Profile Bundle 的旧快照或插件开发调试环境(本地 junction/symlink、手动编辑 profile 层)。
许可
MIT