DSH Plugins Marketplace

DSH Plugins

Plugins

/

Development & Infrastructure

/

dsh-tender-matrix

P

dsh-tender-matrix

Manifest valid

??????????(??????????????,?????,???????)

hasBundlePatch

dsh-tender-matrix

Boundary: this plugin checks an 评标因素评分矩阵 for arithmetic — that the matrix names its project and evaluation method, that no single score exceeds its item's maximum, that the maximum scores total what you configure, that a bidder's scores total what you configure, that each score records its basis, that factor numbers are unique, and that no placeholder survives. It does not decide whether a score is appropriate, whether the evaluation was fair, or who should win. Scoring is the evaluation committee's independent judgement, and the weights and criteria are the tender document's.

⚠️ Read this before trusting a citation in the report

Every excerpt in this plugin's rule pack says, in so many words, that the clause text was not obtained. The regime lives in 《中华人民共和国招标投标法》and its implementing regulations, plus each project's evaluation method inside the tender document. The verification pass could not retrieve verbatim clause text, so rather than paraphrase a quotation the pack states the gap in the excerpt field itself and puts the honest reasoning in note. Every rule is therefore warn or info, and a test asserts that no rule claims a quotation it does not have. When the texts are in hand, two things must be done: replace each excerpt with the real clause, and raise kind to direct.

The plugin ships no scoring scale. The two total checks ship with a target of 0, meaning "not configured":

  • TM-003 compares the sum of the items' maximum scores against target. 100 is common, but 120-point scales and weighted schemes exist, so the total is your tender document's figure and the rule reports that it could not run until you set it.
  • TM-004 compares the sum of one bidder's scores against target. The check compares the column against the figure you state; it is deliberately not wired to a per-bidder total column, so it stays a pure addition check.

TM-002 checks column A by default (bidderA vs maxScore). Add a rule each for B and C, or override leftField per call.

Compatibility

SurfaceStatus
HarnessPeer range >=0.1.2-rc.1 <0.2.0 || >=0.2.0-0 <0.3.0 — verified to accept both 0.2.0-rc.2 and 0.2.1-alpha.1. engines.dsh is deliberately not declared: it has no reader and cannot reject a host
Node`^22.19.0
PlatformsAll (plain ESM; no native code, no network, no model call)
Tool modeWorks in native, ptc and both; for several packages use ptc

What it does

Registers the tender_matrix tool. It reads one scoring matrix — the package header plus one row per evaluation factor — applies a versioned rule pack, and returns a report.

RuleCheckSeverityBasis kind
TM-001the matrix names its project and methodwarnprinciple
TM-002no score exceeds its item's maximumwarnprinciple
TM-003the maximum scores total your configured figure (off by default)infolocal
TM-004a bidder's scores total your configured figure (off by default)warnprinciple
TM-005every score records its basiswarnprinciple
TM-006factor numbers are uniquewarnprinciple
TM-007the basis column holds no unreplaced placeholderwarnprinciple

Install

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

Configuration

KeyTypeDefaultDescription
rulesFilestringrules/tender-matrix.yamlRule-pack path, relative to the package root
disabledRulesstring[][]Rule ids to stop running; each appears in skipped
onlyRulesstring[][]Run only these rule ids; empty runs every rule
skipNotesstring""Note appended to every skipped reason
timeoutMsnumber120000Cooperative tool timeout budget

Rule-level parameters worth knowing:

  • TM-002 leftField / rightField / relation — the comparison, bidderA <= maxScore by default.
  • TM-003 target — the total the items' maximum scores must reach. 0 means the rule does not run.
  • TM-004 field / target — the bidder column and the total it must reach. 0 means the rule does not run.
  • TM-007 terms — the placeholders to look for.

Material format

The tool accepts JSON or YAML:

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

Column names are matched case-insensitively and ignoring spaces, underscores and hyphens, so 投标人A and bidderA resolve to the same field; the matrix's own column names are kept, so a finding names the column it read.

Rule sources

Rule data lives in rules/tender-matrix.yaml. The pack's header states the citation gap in full, and each rule's note repeats the part that matters for that rule. The load-time guard that normally enforces "an excerpt must be a real quotation of at least eight characters" cannot tell a quotation from a description — so this pack leans on the header, the per-rule notes and a test that asserts every excerpt admits the gap.

Troubleshooting

  • TM-003 or TM-004 reports itself as skipped. Its target is 0. Set your package's total, or the bidder's total, and the check runs.
  • TM-002 fires on a score above the maximum. That is the check: the arithmetic does not hold, so the cell is either mis-keyed or the item's maximum is wrong.
  • TM-002 does not check bidders B and C. It checks column A by default. Add a rule per column, or override leftField for the call.
  • TM-004 fires although the matrix has a total row. The rule adds the column and compares against the configured target; a total that lives in a header field is not read. Set target to the figure you expect.
  • The plugin installs but the tool never appears. Check that main resolves to lib/index.mjs and that pnpm run build produced it; a wrong main makes the loader skip the entry silently.
  • dsh plugin add refuses the package as incompatible. The peer range covers 0.1.x and 0.2.x; if your runtime sits outside it, grant an explicit exemption: dsh plugin --profile <name> allow-version dsh-tender-matrix@0.1.0 --dsh-version <runtime> --accept-risk
  • check reports manifest-peers as failed. The static checker compares against a hard-coded peer range that predates the 0.2 line. The runtime enforces peer compatibility at install time, so the declared range is the correct one; this is a known upstream issue in dsh-plugin-dev.

Development

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

The plugin is data-only: src/model.ts declares the table shape, the shared kit supplies the reader and the check engine, and the rule pack declares every check.

License

Apache License 2.0 © 2026 dsh-tender-matrix contributors.

Comments

Loading…

From the same category

awesome-dsh-plugin

by awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表

Development & Infrastructure

★ 18.3k

CC0-1.0

Python

Oct 10, 2026

Index only — not installable

by 0xsline

DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.

Development & Infrastructure

★ 1.2k

CC0-1.0

Python

Oct 10, 2026

Index only — not installable

by pax-beehive

Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub

Development & Infrastructure

★ 450

MIT

TypeScript

Oct 6, 2026

Index only — not installable

by xiajiajun516

DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.

Development & InfrastructureManifest valid

★ 176

MIT

TypeScript

Oct 8, 2026

dsh plugin --profile web add dsh-config-manager

by yjh051108

推荐组件(非必须):DeepSeek Harness 运行时注入器;已随 dsh-routing-suite 单仓库化保留,本仓库继续维护/发布。

Development & InfrastructureManifest valid

★ 164

TypeScript

Sep 18, 2026

dsh plugin --profile web add @dsh-external/dsh-super-injector

by jigjoy-ai

A CLI that turns a goal into a pull request - and a sandbox for testing concurrent AI coding agents on the Mozaik runtime.

Development & Infrastructure

★ 124

MIT

TypeScript

Oct 2, 2026

Index only — not installable