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

招标条款抽取核对 PerryLink/dsh-tender-extract

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

逐行核对抽取表来源与原文,提示差异待人工复核

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PerryLink/dsh-tender-extract
该包不可直接 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日修正)。仅提示差异,不作出定性结论。

README

由 DeepSeek 最新模型翻译生成
dsh-tender-extract — 招标文件条款抽取表检查(来源与原文) dsh-tender-extract 读取一张条款抽取表——包头部加上每行一条抽取记录——套用带版本的规则包,只针对这张表返回报告:每行都给出自己的来源(sourceRef)、原文条款列(rawText)已填写、提炼出的需求(requirement)与该原文至少共享部分词项、记录的类别在你机构的清单上、没有重复的抽取编号(seq)、头部写明项目与来源文件、原文里没有残留模板占位符。条款类别词表出厂为空,什么都不配置时,TE-004 会在 skipped 里报告自己,而不是悄悄通过。 它能回答什么 | 你问 | 它答什么 | | 我表里有一条抽取的来源列是空的。这会被报告吗? | 会。TE-001 要求每条抽取都有 sourceRef,逐行报告为空的行。它只检查来源有没有记录,从不检查指向的位置对不对,也不能证明某条抽取缺失——完整性只能对照整份招标文件判断,而这份文件本插件永远看不到。 | | 原文列填了——插件会确认它和招标文件逐字一致吗? | TE-002 只检查 rawText 列填没填。它不拿这段文字和招标文件比对;要比对得把文件本身拿到手。 | | 提炼出的需求看起来像是从别处来的。这会被标出来吗?
展开完整文档(README 剩余 1 节)
dsh-tender-extract — 招标文件条款抽取表检查(来源与原文)

dsh-tender-extract 读取一张条款抽取表——包头部加上每行一条抽取记录——套用带版本的规则包,只针对这张表返回报告:每行都给出自己的来源(sourceRef)、原文条款列(rawText)已填写、提炼出的需求(requirement)与该原文至少共享部分词项、记录的类别在你机构的清单上、没有重复的抽取编号(seq)、头部写明项目与来源文件、原文里没有残留模板占位符。条款类别词表出厂为空,什么都不配置时,TE-004 会在 skipped 里报告自己,而不是悄悄通过。

它能回答什么

| 你问 | 它答什么 |
| 我表里有一条抽取的来源列是空的。这会被报告吗? | 会。TE-001 要求每条抽取都有 sourceRef,逐行报告为空的行。它只检查来源有没有记录,从不检查指向的位置对不对,也不能证明某条抽取缺失——完整性只能对照整份招标文件判断,而这份文件本插件永远看不到。 |
| 原文列填了——插件会确认它和招标文件逐字一致吗? | TE-002 只检查 rawText 列填没填。它不拿这段文字和招标文件比对;要比对得把文件本身拿到手。 |
| 提炼出的需求看起来像是从别处来的。这会被标出来吗? | TE-003 在 requirement 和 rawText 之间找共享词项——重叠的汉字二元组和完整拉丁词——两者毫无共享时报告该行。改写本来就会换措辞,所以一条发现只说明两列看起来不相关、值得人工看一眼,从不说明提炼错了。它也抓不到「用词有重叠但提炼错了」的情况,而 minShared 下限 2 是本地约定,不是标准数字。 |
| 我们还没决定怎么给条款分类。类别列会怎样? | 它的值出厂为空,所以 TE-004 会在 skipped 里报告自己,而不是悄悄通过,直到你填上为止。配置好之后,它只检查记录的值在不在你的清单上;它不判断某条条款属于哪个类别。 |
| 表里两条抽取带同一个编号。 | TE-005 比较 seq 值时忽略空白差异,报告重复,因为出现两次的编号没法被无歧义地引用。它不判断编号本身是否合理。 |
| 某条摘录的原始文本仍是模板措辞。 | TE-007 会报告这样一行:它的 rawText 里仍带着出厂清单中的占位符 —— 【、】、{{、}}、XXX、xxx、待填、待补充、TBD、todo、示例 —— 因为这条摘录是从模板复制来的,没有真正填写。清单刻意排除了 (略),那是缩写长条款的正当写法;而且它只能找出清单上列出的那些词。 |

遵循的标准

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

边界: 这个插件检查的是招标文件条款摘录表,看它能被清单约束到什么程度 —— 每条摘录都要给出出处,原始条款文本要记录下来,提炼出的要求要跟那段文本有某种字面关联,类别要出自你自己的词表,编号要唯一,不能留下任何占位符。

⚠️ 这个插件能做什么、不能做什么

它无法证明漏掉了某条条款。 判断一条摘录是否完整,需要拿整份招标文件来比对,而这个插件只看得到摘录表。它没有别的说法,规则说明里也写明了:TE-001 检查的是出处被记录,从不检查摘录是否穷尽。

TE-003 是这里唯一的内容判断,而且刻意做得很弱。它在原始文本和提炼出的要求之间找共有的词,用重叠的汉字二元组和完整的拉丁词,只有两边毫无重合时才报告。改写本来就会换措辞,所以一条发现的意思是「这两列看起来不相关,值得人工看一眼」,绝不是「提炼错了」。它也抓不到那种用词重合但提炼错误的情况 —— 这个局限写在规则自己的说明里,也写在它的 README 条目里。

规则包里的每一条 excerpt 都明说了条款文本没有拿到。 这套制度出自《中华人民共和国招标投标法》及其配套法规。核验环节取不到逐字条款文本,所以规则包在 excerpt 字段里直接写明这个缺口,并把每条规则都保持在 warn 或 info。拿到文本后,把每条 excerpt 换成真实条款,并把 kind 提升为 direct。 条款类别词表出厂时是空的;什么都不配置时,TE-004 会把自己报进 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 |

做什么

注册 tender_extract 工具。它读取一张条款抽取表——包头部加上每条抽取一行——套用带版本号的规则包,返回一份报告。

| 规则 | 检查 | 严重级别 | 依据类型 |
| TE-001 | 每条抽取都给出出处 | warn | principle |
| TE-002 | 每条抽取都记录原文 | warn | principle |
| TE-003 | 要求与原文有共同词 | warn | direct |
| TE-004 | 类别来自你的词表(默认关闭) | info | local |
| TE-005 | 抽取编号唯一 | warn | principle |
| TE-006 | 表中写明项目与来源文档 | warn | principle |
| TE-007 | 原文里没有未替换的占位符 | warn | principle |

安装

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

配置

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

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

- TE-003 leftField / rightField / minShared——两列以及共同词下限,默认 2。设为 1 更宽松;这个下限是本地约定,不是标准数字。
- TE-004 values——你的条款类别,例如 [资格条件, 技术规格, 商务条款, 评标办法, 合同条款]。留空则不检查。
- TE-007 terms——要查找的占位符。「略」故意不在其中:……(略) 是缩写长条款的正常合法写法,所以不当作占位符。

材料格式

工具接受 JSON 或 YAML:

project: 某某工程施工招标 tenderNo: ZB-2026-018 source: 招标文件 2026-02-10 版 rows:
- { 序号: '1', 出处: 第三章 第 3.2 条,
原文: 投标人应具有建筑工程施工总承包二级及以上资质,并附资质证书复印件。, 类别: 资格条件, 要求: 需具备建筑工程施工总承包二级及以上资质并提供证书复印件, 是否实质性: 是, 响应: 需响应, 责任部门: 经营部 }

列名匹配不区分大小写,并忽略空格、下划线和连字符;表自己的列名会保留,所以一条发现会写明它读的是哪一列。

规则来源

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

故障排查

- TE-003 在我满意的蒸馏结果上误报。 两列没有任何共同词项——通常是因为需求被改写成了另一套词汇。把 minShared 调到 1,或者禁用这条规则。
- TE-003 漏掉了我明知有错的蒸馏结果。 它做不到:两列有共同词汇。这是词法检查的已知局限。
- TE-007 不会对 (略) 触发。 这是有意为之;如果你的模板确实用「略」代替整个子句,就把「略」加进 terms。
- TE-004 从不运行。 它的词汇表是空的;用你所在语域的类别把它填满。
- 插件装上了,工具却始终不出现。 检查 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-extract@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-extract # refresh src/shared from ../_shared

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

许可证

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

逐行核对抽取表来源与原文,提示差异待人工复核

这是你的仓库?认领条目

回到顶部