🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

评标矩阵核对 PerryLink/dsh-tender-matrix

DeepSeek Harness
PerryLink27 天前有提交已提供中文文档扫描:含敏感能力

检查评标因素评分矩阵的算术与完整性,只提示差异

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/8 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PerryLink/dsh-tender-matrix
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/4) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 读取本地文件
    samples/quickstart/run.mjs:7
    const material = await readFile(join(here, 'input', "TM-001-unsafe.json"), 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-package-manifest@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 核对评分矩阵算术
  • 检查矩阵完整性
  • 仅提示差异

评标因素评分矩阵核对:依据《中华人民共和国招标投标法》(1999年8月30日通过,2017年12月27日修正)。仅提示差异,不作出定性结论。

README

由 DeepSeek 最新模型翻译生成
dsh-tender-matrix — 评标因素评分矩阵算术自洽性检查 dsh-tender-matrix 读取一份评标因素评分矩阵——招标文件的评标因素评分矩阵:包头部,加上每个评标因素一行——然后检查这份矩阵自身的算术与完整性:是否写明了项目名称和评标方法,是否有单项得分超过该项满分,各项满分之和是否等于你配置的数值,某投标人的得分之和是否等于你配置的数值,每条得分是否记录了依据,评标因素编号是否唯一,以及依据列里是否还残留未替换的占位符。 它能回答什么 | 你问 | 它答 | | 矩阵每个单元格都填了,为什么两项合计检查都报 skipped? | 因为两项合计出厂时都没配置:TM-003 拿 maxScore 列之和与它的 target 比较,TM-004 把某投标人的 bidderA 得分加总与它的 target 比较;两者都带着 target: 0,意思是「未配置」,所以各自把自己报进 skipped,而不是悄悄通过,直到你填入招标文件写明的数值。配置之后,命中只说明合计与你设定的数值不同——并不说明评分尺度不合规;TM-004 是纯加法,刻意没有接任何按投标人分列的合计列。 | | 某项满分是 100,可有个单元格写着 105,另一行的得分单元格写着 优良。 | TM-002 两条都报。
展开完整文档(README 剩余 1 节)
dsh-tender-matrix — 评标因素评分矩阵算术自洽性检查

dsh-tender-matrix 读取一份评标因素评分矩阵——招标文件的评标因素评分矩阵:包头部,加上每个评标因素一行——然后检查这份矩阵自身的算术与完整性:是否写明了项目名称和评标方法,是否有单项得分超过该项满分,各项满分之和是否等于你配置的数值,某投标人的得分之和是否等于你配置的数值,每条得分是否记录了依据,评标因素编号是否唯一,以及依据列里是否还残留未替换的占位符。

它能回答什么

| 你问 | 它答 |
| 矩阵每个单元格都填了,为什么两项合计检查都报 skipped? | 因为两项合计出厂时都没配置:TM-003 拿 maxScore 列之和与它的 target 比较,TM-004 把某投标人的 bidderA 得分加总与它的 target 比较;两者都带着 target: 0,意思是「未配置」,所以各自把自己报进 skipped,而不是悄悄通过,直到你填入招标文件写明的数值。配置之后,命中只说明合计与你设定的数值不同——并不说明评分尺度不合规;TM-004 是纯加法,刻意没有接任何按投标人分列的合计列。 |
| 某项满分是 100,可有个单元格写着 105,另一行的得分单元格写着 优良。 | TM-002 两条都报。它逐项拿 bidderA 与 maxScore 比较,报出得分高于该项满分的行;两个单元格都填了、但都读不成数字或日期时,该行报为不可比较,而不是跳过不管,而两格缺一的行根本不比较。它只做数值比较,从不判断得分是否合适,默认读 A 列——要覆盖 B 列和 C 列,加一条规则或用 leftField 覆盖。 |
| 有些行的评分依据列空着。这会被报出来吗? | 会。TM-005 要求材料给出该列的每一行,basis 单元格都得填,并逐条报出空着的。它只检查那里写了东西——不检查记录的依据是否成立、是否合适、是否与得分相符。如果矩阵压根没有 basis 列,该规则会报「不适用」,而不是悄悄通过。 |
| 同一个评标因素编号出现在矩阵的两行上。会报什么? | TM-006 报出重复的编号,比较时忽略空白。它只确定唯一性,而这一点要紧,是因为重复会让满分合计算错:要么同一个评标因素登记了两次,要么两个评标因素被误编成了同一个号。它不判定两行里哪一行才是对的。 |
| 依据单元格里还写着 【】 或 TBD,因为矩阵是从模板复制来的。这种情况能查出来吗? | TM-007 会报告 basis 单元格里仍然含有占位词的情况——【、】、{{、}}、XXX、xxx、待填、待补充、TBD、todo、示例,这份清单你可以按自己的模板调整。它针对的失败情形,是把占位符当成了已经写好的理由。它的标题里也提到了备注,但检查只读 basis 列,而且从不评判依据本身的质量。 |
| 表头没有说明这份矩阵属于哪个项目,也没有说明遵循哪种评标方法。 | TM-001 要求材料的表头带有 project 和 method,缺哪个就报告哪个;它只检查表头是否声明了这两项,不检查它们是否与招标文件一致。如果你所在单位的表格没有评标方法这一列,把该规则的 fields 设为 [project],它就不会再要求一个你表格里从来没有的列。 |

遵循的标准

| 文件 | 编号 | 被哪些规则引用 |
| 《中华人民共和国招标投标法》 | 1999年8月30日通过,2017年12月27日修正(全国人大常委会《关于修改〈中华人民共和国招标投标法〉、〈中华人民共和国计量法〉的决定》),本法自2000年1月1日起施行 | TM-001, TM-002, TM-003, TM-004, TM-005, TM-006, TM-007 |

边界: 这个插件检查的是评标因素评分矩阵的算术——矩阵是否写明了项目和评标方法,单项得分是否超过该项目的最高分,各最高分合计是否等于你配置的数值,某投标人的得分合计是否等于你配置的数值,每项得分是否记录了依据,因素编号是否唯一,以及是否还有占位符残留。它不判断某个得分是否合理、评标是否公平,也不判断谁该中标。打分是评标委员会的独立判断,权重和标准来自招标文件。

⚠️ 在相信报告里的引文之前,请先读这一段

这个插件规则包里的每一条 excerpt 都明确写着:没有拿到条款原文。 相关制度见于《中华人民共和国招标投标法》及其实施条例,再加上每个项目招标文件里的评标方法。校验环节无法取回逐字条款原文,所以规则包没有去转述一段引文,而是在 excerpt 字段里直接说明这一缺口,并把诚实的推理写进 note。因此每条规则都是 warn 或 info,并且有一项测试断言:没有任何规则声称自己拥有并不存在的引文。拿到文本之后,必须做两件事:把每条 excerpt 换成真正的条款,并把 kind 提升为 direct。

插件不自带评分量表。 两项合计检查出厂时目标值为 0,意思是「未配置」:

- TM-003 把各项目最高分的合计与 target 比较。100 分很常见,但也存在 120 分制和各种加权方案,所以合计值应取你招标文件里的数字,规则会报告说在你设置之前它无法运行。
- TM-004 把某投标人各项得分之和与 target 比较。检查拿这一列和你自己填的数字比,刻意没有接上按投标人汇总的列,所以它始终是一道纯粹的加法检查。

TM-002 默认检查 A 列(bidderA 对 maxScore)。给 B 和 C 各加一条规则,或者在每次调用时覆盖 leftField。

兼容性

| 层面 | 状态 |
| Harness | 对等版本范围 >=0.1.2-rc.1 <0.2.0 \|\| >=0.2.0-0 <0.3.0 —— 已验证同时接受 0.2.0-rc.2 和 0.2.1-alpha.1。刻意不声明 engines.dsh:它没有读取方,也无法拒绝宿主 |
| Node | ^22.19.0 || >=24.0.0 |
| 平台 | 全部(纯 ESM;无原生代码,无网络,不调用模型) |
| 工具模式 | 在 native、ptc 和 both 下都能用;要跑多个包请用 ptc |

它做什么

注册 tender_matrix 工具。它读取一份评分矩阵 —— 包头部加上每个评审因素一行 —— 套用带版本的规则包,返回一份报告。

| 规则 | 检查内容 | 严重级别 | 依据类型 |
| TM-001 | 矩阵写明项目和方法 | warn | principle |
| TM-002 | 没有得分超过其项的最高分 | warn | direct |
| TM-003 | 最高分合计等于你配置的数字(默认关闭) | info | local |
| TM-004 | 某投标人的得分合计等于你配置的数字(默认关闭) | warn | principle |
| TM-005 | 每个得分都记录了依据 | warn | principle |
| TM-006 | 因素编号唯一 | warn | principle |
| TM-007 | 依据列里没有未替换的占位符 | warn | principle |

安装

dsh plugin --profile <name> add dsh-tender-matrix
dsh --profile <name> --dump-config | grep 'dsh-tender-matrix'

配置

| 键 | 类型 | 默认值 | 说明 |
| rulesFile | string | rules/tender-matrix.yaml | 规则包路径,相对于包根目录 |
| disabledRules | string[] | [] | 停止运行的规则 id;每条都会出现在 skipped 里 |
| onlyRules | string[] | [] | 只运行这些规则 id;留空则运行全部规则 |
| skipNotes | string | "" | 附加到每条 skipped 原因后面的备注 |
| timeoutMs | number | 120000 | 协作式工具超时预算 |

几个值得了解的规则级参数:

- TM-002 leftField / rightField / relation —— 比较关系,默认 bidderA <= maxScore。
- TM-003 target —— 各项最高分必须达到的合计。0 表示该规则不运行。
- TM-004 field / target —— 投标人列,以及它必须达到的合计。0 表示该规则不运行。
- TM-007 terms —— 要查找的占位符。

材料格式

工具接受 JSON 或 YAML:

project: 某某工程施工招标 tenderNo: ZB-2026-018 method: 综合评估法 rows:
- { 序号: '1', 评审因素: 施工组织设计, 分值: '30', 投标人A: '26',
投标人B: '24', 投标人C: '28', 评分依据: '按招标文件评标办法第 3.2 条' }

列名匹配不区分大小写,并忽略空格、下划线和连字符,所以 投标人A 和 bidderA 解析到同一个字段;矩阵自己的列名会保留,所以一条发现会写明它读取的是哪一列。

规则来源

规则数据放在 rules/tender-matrix.yaml。规则包的头部完整说明了引用缺口,每条规则的 note 会重复该规则相关的那部分。加载时的守卫通常要求「摘录必须是至少八个字符的真实引用」,但它分不清引用和描述——所以这个规则包靠头部、每条规则的 note,以及一个测试来兜底,该测试断言每个 excerpt 都承认这个缺口。

故障排查

- TM-003 或 TM-004 报告自己被跳过。 它的目标是 0。设置你所在包的总计,或投标方的总计,检查就会运行。
- TM-002 在分数超过上限时触发。 这正是检查本身:算术不成立,所以要么单元格键错了,要么该项的上限错了。
- TM-002 不检查投标方 B 和 C。 它默认检查 A 列。为每一列各加一条规则,或在调用时覆盖 leftField。
- 矩阵有总计行,TM-004 却触发了。 该规则把整列相加,再与配置的目标比较;写在头部字段里的总计不会被读取。把 target 设成你期望的数值。
- 插件装上了,工具却始终不出现。 检查 main 是否解析到 lib/index.mjs,以及 pnpm run build 是否生成了它;main 写错会让加载器静默跳过该入口。
- dsh plugin add 以不兼容为由拒绝该包。 peer 范围覆盖 0.1.x 和 0.2.x;如果你的运行时不在其中,显式授予豁免: dsh plugin --profile <name> allow-version dsh-tender-matrix@0.1.0 --dsh-version <runtime> --accept-risk
- check 报告 manifest-peers 失败。 静态检查器比对的是一个硬编码的 peer 范围,它早于 0.2 系列。运行时会在安装时强制校验 peer 兼容性,所以声明的范围才是正确的;这是 dsh-plugin-dev 里已知的上游问题。

开发

pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-tender-matrix # refresh src/shared from ../_shared

这个插件是纯数据的:src/model.ts 声明表结构,共享套件提供读取器和检查引擎,规则包声明每一项检查。

许可证

Apache License 2.0 © 2026 dsh-tender-matrix contributors.
预览分享卡片长什么样 ↓PerryLink/dsh-tender-matrix
分享 · DeepSeek Harness Hub
PerryLink/dsh-tender-matrix

检查评标因素评分矩阵的算术与完整性,只提示差异

这是你的仓库?认领条目

回到顶部