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

投标合规预检 PerryLink/dsh-bid-ca-precheck

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

对照招标要求逐条预检投标台账的完整性与一致性

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

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

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

状态速览

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

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

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 逐条预检投标台账
  • 核对完整性与一致性
  • 仅提示差异

投标符合性响应台账核对:依据《中华人民共和国招标投标法》《中华人民共和国招标投标法实施条例》(1999年8月30日通过,2017年12月27日修正、国务院令第613号)。仅提示差异,不作出定性结论。

README

由 DeepSeek 最新模型翻译生成
dsh-bid-ca-precheck — 对照每条招标要求,预检投标文件合规性 dsh-bid-ca-precheck 读取一份投标符合性响应台账 —— 招标方的要求和投标方的响应,按台账自己的列名索引,列名支持中文或英文 —— 套用带版本号的规则包,检查台账自身的完整性和内部一致性:每条招标要求都有记录在案的响应,判定结论来自你配置的词表,条款编号在台账内唯一,台账声明了所属项目和投标方,你标记为高风险的条款带有证据,要求列里装的仍是真实要求,而不是模板占位符。 它能回答什么 | 你的疑问 | 它给出的答案 | | 某条招标要求的 response 列为空,会被报出来吗? | 会。BC-001 会报出这一行,因为每条招标要求都必须有记录在案的响应。它只检查 response 列是否填了 —— 不判断响应是否满足要求,那是评标委员会的判断。 | | 我填了 verdict 列,报告却说规则跑不起来,为什么? | BC-002 会把每个值和你在配置里给的判定词表比对,而这个词表默认是空的,所以在你填好 values 之前,规则会把自己报进 skipped,而不是瞎猜。配置好之后,它只报出不在你词表里的值;判定结论本身对不对,它从不评判。 | | 同一个条款编号在台账里出现了两行。
展开完整文档(README 剩余 1 节)
dsh-bid-ca-precheck — 对照每条招标要求,预检投标文件合规性

dsh-bid-ca-precheck 读取一份投标符合性响应台账 —— 招标方的要求和投标方的响应,按台账自己的列名索引,列名支持中文或英文 —— 套用带版本号的规则包,检查台账自身的完整性和内部一致性:每条招标要求都有记录在案的响应,判定结论来自你配置的词表,条款编号在台账内唯一,台账声明了所属项目和投标方,你标记为高风险的条款带有证据,要求列里装的仍是真实要求,而不是模板占位符。

它能回答什么

| 你的疑问 | 它给出的答案 |
| 某条招标要求的 response 列为空,会被报出来吗? | 会。BC-001 会报出这一行,因为每条招标要求都必须有记录在案的响应。它只检查 response 列是否填了 —— 不判断响应是否满足要求,那是评标委员会的判断。 |
| 我填了 verdict 列,报告却说规则跑不起来,为什么? | BC-002 会把每个值和你在配置里给的判定词表比对,而这个词表默认是空的,所以在你填好 values 之前,规则会把自己报进 skipped,而不是瞎猜。配置好之后,它只报出不在你词表里的值;判定结论本身对不对,它从不评判。 |
| 同一个条款编号在台账里出现了两行。 | BC-003 会报出重复的 clause 值:一个编号出现两次,就没人说得清哪一行对应哪条要求。空白字符会被忽略,所以 3.2 和 3.2 算同一个编号。它只查唯一性 —— 不判断两行里哪行对;命中通常意味着重复登记,或者编号抄错了。 |
| 台账没写覆盖哪个项目,也没写投标方是谁。 | BC-004 会报出缺失的表头字段,要求 project 和 bidder 都存在。这个需求来自可追溯性 —— 判定结论如果对不上项目和投标方,日后就没法复核 —— 而不是来自某条要求台账写表头的条款。 |
| 哪些行必须带证据? | BC-005:凡是 requirement 文本包含你某个高风险关键词的行,按包含关系匹配。highRiskKeywords 默认是空的,所以在你填好之前,规则会把自己报进 skipped,而不是悄悄放过。它只检查 evidence 列是否填了,不判断证据是否有效、是否充分。 |
| 需求列里仍有几行写着【……】或待填。 | BC-006 会把这些报出来:requirement 列里残留 【、】、{{、}}、XXX、待填、TBD 这类词,通常说明台账是从模板复制来的,从没填过。这份词表由你调整。规则只标记占位符,不判断需求本身是否真实。 |

遵循的标准

| 文件 | 编号 | 被哪些规则引用 |
| 《中华人民共和国招标投标法》 | 1999年8月30日通过,2017年12月27日修正(全国人大常委会《关于修改〈中华人民共和国招标投标法〉、〈中华人民共和国计量法〉的决定》),本法自2000年1月1日起施行 | BC-001, BC-003, BC-004, BC-006 |
| 《中华人民共和国招标投标法实施条例》 | 国务院令第613号(2011 年 12 月 20 日公布,2017 年 3 月 1 日修订,自 2012 年 2 月 1 日起施行) | BC-002 |
| 《中华人民共和国招标投标法》 | 1999年8月30日通过,2017年12月27日修正,自2000年1月1日起施行 | BC-005 |

边界: 这个插件检查的是投标符合性响应台账,看台账能被追究到什么程度——每条招标需求都有记录在案的响应,判定取自你的词表,条款编号唯一,高风险条款带证据,需求列里装的仍是真实需求而不是模板占位符。它不判断投标是否有效、是否该被否决、响应是否构成重大偏差。这些判断属于评标委员会,本插件从不做——有测试断言这里没有任何规则可以是 error。

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

本插件规则包里的每一条 excerpt 都明说了:条款原文没有拿到。 制度依据在《招标投标法》、《招标投标法实施条例》和每个项目的评标办法里。本插件的核验环节没能从这些文件里取到逐字条款原文,所以规则包没有去转述引文,而是在 excerpt 字段里直接写明这一缺口,把诚实的推理放进 note。因此每条规则都是 warn 或 info,并有测试断言没有任何规则声称自己拥有并不存在的引文。拿到原文后要做两件事:把每条 excerpt 换成真实条款,并把 kind 提到 direct。

台账工具最糟的失效模式,是台账从模板复制而来却被当成已核验的,BC-006 盯的正是这个:需求列里残留的 【】、{{}}、XXX、待填、TBD。

有两份清单由你定,不是标准定的:判定词表(BC-002)和高风险关键词(BC-005)。两者出厂都是空的,词表没设的规则会在 skipped 里自报,而不是悄悄通过。

兼容性

| 层面 | 状态 |
| 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 |

功能说明

注册 bid_ca_precheck 工具。它读取一份合规登记表——招标文件的要求和投标人的响应,按登记表自己的列名索引,中英文都行——套用带版本号的规则包,返回报告。

| 规则 | 检查内容 | 严重级别 | 依据类型 |
| BC-001 | 每条要求都有记录的响应 | warn | direct |
| BC-002 | 结论使用你的词表(默认关闭) | info | local |
| BC-003 | 登记表中条款号唯一 | warn | principle |
| BC-004 | 登记表写明项目和投标人 | warn | principle |
| BC-005 | 高风险条款附带证明材料(默认关闭) | warn | direct |
| BC-006 | 要求列中没有未替换的占位符 | warn | principle |

安装

dsh plugin --profile <name> add dsh-bid-ca-precheck
dsh --profile <name> --dump-config | grep 'dsh-bid-ca-precheck'

配置

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

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

- BC-002 values——你的结论词表,例如 [满足, 部分满足, 不满足, 待确认]。留空表示该规则不运行。也可以在每次调用时传入。
- BC-005 highRiskKeywords——把条款标记为需要证明材料的词,例如 [资格, 业绩, 实质性, 星号条款]。留空表示该规则不运行。
evidenceField 和 requirementField 用来重命名它读取的两列。
- BC-006 terms——要查找的占位符;默认列表覆盖 【】、{{}}、XXX、待填、 待补充、TBD、todo。

材料格式

工具接受 JSON 或 YAML:

project: 某某厂房工程 bidder: 某某建设有限公司 rows:
- { 条款号: "2.1", 招标要求: 投标人应具有建筑工程施工总承包二级及以上资质,
投标响应: 已提供资质证书复印件,等级为二级, 响应结论: 满足, 证明材料: 资格文件第 12 页 }
- { Clause: "2.2", Requirement: 近三年至少完成两项同类业绩,
Response: 已提供合同及验收证明, Verdict: 满足, Evidence: 业绩文件第 3 页 }

列名匹配不区分大小写,并忽略空格、下划线和连字符,所以 招标要求 和 requirement 会解析到同一个字段;登记表自己的列名会保留,因此发现项会写明它实际读取的列。行可以通过 row、序号 或 行号 声明自己的编号。

规则来源

规则数据放在 rules/bid-ca-precheck.yaml。规则包的头部完整说明了引用缺口,每条规则的 note 重复了该规则相关的部分。加载时守卫通常会强制「摘录必须是至少八个字符的真实引用」这句话分不清引用和描述——所以这个包靠表头、每条规则的说明,以及一个测试来兜底,该测试断言每处 excerpt 都留得下这个缺口。

故障排查

- BC-002 或 BC-005 报告自己被跳过。 它们的列表是空的。这两条都取决于你的项目,而不是某条法规,插件不会替你猜。
- BC-006 在我确实想按字面理解的要求上报错。 里面出现了 XXX 或 待填。收窄 terms 列表,或者修正登记表。
- 读取器拒绝了一份它以前接受的登记表。 它没找到任何已知的列名;错误信息会列出它看到的列。把某一列改名为已知别名,或者把该别名加进插件的列规范。
- BC-001 在我认为只是说明性的行上报错。 响应留空意味着「未检查」,而这是预检登记表绝不能出现的情况。如果某条款确实不需要响应,就在登记表里写明,不要留空。
- 插件装上了,但工具一直不出现。 检查 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-bid-ca-precheck@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, paired fixtures per rule
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-bid-ca-precheck # refresh src/shared from ../_shared

这个插件是纯数据的:src/model.ts 声明表结构,共享套件提供读取器和检查引擎,规则包声明每一项检查。新增一项检查,只要它契合已有的种类,就只需改规则包,别的都不用动。

许可证

Apache License 2.0 © 2026 dsh-bid-ca-precheck contributors。
预览分享卡片长什么样 ↓PerryLink/dsh-bid-ca-precheck
分享 · DeepSeek Harness Hub
PerryLink/dsh-bid-ca-precheck

对照招标要求逐条预检投标台账的完整性与一致性

这是你的仓库?认领条目

回到顶部