dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
PROJECT TOPICS
PROJECT README
DSH 统计工具插件 —— 描述统计、百分位数、频数分布、相关性计算。零依赖、纯函数、确定性。
Agent 处理数值数据时,从 CSV / JSON 提取出数值数组后往往需要聚合分析(均值、分位数、分布、相关性)。现有工具链没有这类能力:
calculator 只做单表达式求值——一个表达式算不出分位数分布,更算不了相关系数dsh-tool-csv 的 stats 只报告行/列结构——不提供对一组观测值的统计聚合本插件接收显式传入的有限数值数组或成对观测值,提供确定性的统计计算:一次函数调用,毫秒级返回结构化 JSON 报告。不读取文件、不访问网络、不创建进程、不保存状态——相同输入永远得到相同输出。
NaN / Infinity(错误信息带下标定位,如 values[3] must be a finite number (got Infinity));-0 在输入与输出中均规范化为 0numeric-overflow 错误——canonical 输出绝不含非有限值correlation 遇零方差配对返回 defined: false + reason: "zero-variance",而不是 NaN 或 ±InfinitytimeoutMs: 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}
sum 用补偿项修正大数 + 小数相加的舍入丢失;variance 用 Welford 在线算法(单遍、数值稳定),describe 与 correlation 共用同一统计核心h=(n-1)*p,value = v[floor(h)] + (h - floor(h)) * (v[ceil(h)] - v[floor(h)]);输出保持请求顺序,重复百分位保留defined:false + reason:"zero-variance",绝不出 NaN/±Infinity# 构建(零依赖,仅需 monorepo 的 tsc)
node <monorepo>/node_modules/typescript/bin/tsc -p tsconfig.json
# 测试(vitest,82 个用例:describe 20 / percentile 7 / frequency 7 / correlation 15 / limits 24 / register 9)
node <monorepo>/node_modules/vitest/vitest.mjs run tests
本插件已迁移到 npm 0.1.0-rc.6 依赖线,并在 @deepseek-ai/dsh@0.1.0-rc.6(npm 私有包)的隔离 consumer 中完成全链路验证:
@deepseek-ai/cordis: ^4.0.1 + @deepseek-ai/dsh-tools: >=0.0.1-rc.1 <0.2.0 + @deepseek-ai/dsh-invariants: >=0.0.1-rc.1 <0.2.0;不再依赖 unscoped cordisnpm install(devDependencies 自包含 typescript/vitest/@types/node)→ npm run typecheck → npm test → npm run build → npm packdsh --profile compat --dump-config 出现本插件 row → 工具真实注册与执行通过npx -p @deepseek-ai/dsh@0.1.0-rc.6 dsh web(lib 生产模式;勿 install -g 全局安装)将本插件作为独立 bundle 安装到 profile(DSH 0.1.0-rc.6(npm))。本仓库位于 omdsh-dev 组织,公开可访问:
# 交互式(web)profile —— 从 GitHub 仓库安装
dsh plugin --profile web add github:omdsh-dev/dsh-tool-stat
# 一次性任务(headless)profile —— dsh run 默认使用 headless
dsh plugin --profile headless add github:omdsh-dev/dsh-tool-stat
或使用 npm pack 生成的 tarball 安装:
npm pack # 生成 dsh-tool-stat-<version>.tgz
# 交互式(web)profile
dsh plugin --profile web add ./dsh-tool-stat-<version>.tgz
# 一次性任务(headless)profile
dsh plugin --profile headless add ./dsh-tool-stat-<version>.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:/...)。
dsh --profile web --dump-config | grep tool-stat
dsh run "使用 stat 工具计算 [1,2,3,4,5] 的描述统计"
monorepo 方式仅适用于旧场景:不支持 Profile Bundle 的旧快照或插件开发调试环境(本地 junction/symlink、手动编辑 profile 层)。
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。