dsh-bid-health-check
Manifest valid★ 1读 RequirementsPack 与投标文件,报告哪些要求看起来有响应、哪些没有、哪些根本定位不到。
dsh-bid-health-check — Bid health check
English · 简体中文 · Español · Português · हिन्दी
dsh-bid-health-check reads a RequirementsPack (produced by dsh-tender-requirements) and a bid document, and reports — requirement by requirement — where the bid appears to answer, where the match is weak, and where nothing could be located.
The honest form of that question is narrower than "is the bid complete". The tool can locate a paragraph that appears to answer a requirement, or fail to locate one. It cannot know whether the located paragraph actually satisfies it, and it certainly cannot conclude that an unlocated requirement is unanswered.
Install
dsh plugin --profile <name> add dsh-bid-health-check
dsh --profile <name> --dump-config | grep 'dsh-bid-health-check'
What it looks like
Workflow overview: document → rule pack → findings.
Boundary: three sentences this tool does not say. It does not say "the bid is complete"; it says which requirements it could locate text for. It does not say "not located means missing" — the bid may answer in a table, an appendix, or different words. And it does not say "responded means compliant" — that needs a person to read the paragraph. It cannot read tables, scanned pages or attachments, so responses there are not counted at all.
What it answers
- Which requirements have a bid paragraph that plausibly answers them?
- Which matches are only a shared phrase, and therefore need a person to look?
- Which requirements have no located response, so a human can check them by hand?
- Which requirements cannot be checked at all because the tender side is still unresolved?
Standards it follows
No clause is cited as the basis of a finding, because this package locates text rather than checks compliance.
Two rules come from the spec's design instead:
- A rejection clause is a condition, not a sentence. No bid says 「我方同意被拒收」, so a rejection clause can never be scored
responded— onlyweak, with a reason explaining that the located paragraph should be reviewed as evidence. - Queue C passes through. A requirement the tender side could not extract reliably is reported as blocked by the pack, not graded against the bidder.
Compatibility
| Surface | Status |
|---|---|
| Harness | peer range >=0.1.2-rc.1 <0.2.0 || >=0.2.0-0 <0.3.0 |
| Node | `^22.19.0 |
| Platforms | all (pure ESM; no native code, no network, no model call) |
What it does
For each requirement the tool measures the longest substring it shares with each bid paragraph. Four characters was too loose — 「投标截止时间」 matched on the shared 「投标」 — so a title overlap must reach five characters to count. On a tie the longer paragraph wins, because a heading such as 「第三章 投标保证金」 shares the label with the body that actually states the amount.
An overlap found only in the requirement's quote (not its title) is capped at weak: sharing text with the clause that contains a requirement is not evidence the requirement is met.
Configuration
| Key | Default | Meaning |
|---|---|---|
rulesFile | rules/bid-health-check.yaml | 规则库路径 |
Material format
Two inputs:
| Argument | Meaning |
|---|---|
pack | The RequirementsPack JSON (or YAML with an items array) |
file | The bid document, .docx |
Paragraphs come from dsh-table-ingest; tables in the bid are not read by this version.
Rule sources
Quotations live in the pack that this tool consumes, not here.
Known limits, all of them visible in the report: only paragraphs are read, so a response inside a table, a scanned page or an attachment is not counted. Matching is by shared substring, so a paraphrased response is reported as not located. And a located paragraph is a pointer for a human, not a verdict.
Troubleshooting
- The plugin installs but the tool never appears: check that
mainresolves tolib/index.mjsand thatpnpm run buildproduced it. dsh plugin addrejects the package: the peer range covers0.1.xand0.2.x; outside it, grant an explicit exemption.- A rule did not run: read the
skippedarray.
Development
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
node ../scripts/sync-shared.mjs dsh-bid-health-check
PerryLink DSH Plugin Family
This project is part of the DeepSeek Harness plugin family from PerryLink. The roster stays collapsed below so every README keeps a short first screen; expand it to see every row and its status.
Expand all plugins
License
Apache License 2.0 © 2026 dsh-bid-health-check contributors.
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 20.4k
CC0-1.0
Python
Oct 23, 2026
by 0xsline
DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.
★ 1.3k
CC0-1.0
Python
Oct 16, 2026
by pax-beehive
Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub
★ 277
MIT
TypeScript
Oct 20, 2026
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.
★ 230
MIT
TypeScript
Oct 23, 2026
dsh plugin --profile web add dsh-config-managerby yjh051108
推荐组件(非必须):DeepSeek Harness 运行时注入器;已随 dsh-routing-suite 单仓库化保留,本仓库继续维护/发布。
★ 166
TypeScript
Oct 16, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby 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.
★ 125
MIT
TypeScript
Oct 22, 2026