标书审核专家-只能审核标书

Polar Sponsor
爱发电 赞助
.NET 9.0

标书审核专家:解析招标文件→建立标书章节索引→格式合规8类检查→评分项响应质量评估(含主观分预估)→OCR资质详细比对→价格分一致性检查(大写金额合规/大小写一致/跨位置一致/分项合计/文字-表格一致)→技术方案抄袭检测(残留他人信息/跨章节自重复/与公开资料相似/AI痕迹/引用未署名)→Markdown审核报告。专治标书"做完不敢交"的痛点,专门检查已完成的标书是否合规、能拿多少分、哪些点要扣分、有没有抄袭风险。支持政府采购/工程类/IT信息化全类型,支持Word+PDF+Excel

bid-checker-pro v1.1.0 — 标书审核专家

功能概述

bid-checker-pro v1.1.0 — 标书审核专家是一项面向实际任务的技能,主要用于路径约定 :本文档中 {WORK_DIR} 表示当前工作目录(即项目根目录), {WORK_DIR}/download/ 为输出目录;模型应根据实际运行环境动态确定路径,不硬编码绝对路径;

核心要点

  • 核心理念 :不是"AI替你重写标书",而是"AI帮你审标书"——读招标文件抽要求+评分表,分段精读标书建索引,逐项核对格式合规性+。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

bid-checker-pro v1.1.0 — 标书审核专家

路径约定:本文档中 {WORK_DIR} 表示当前工作目录(即项目根目录),{WORK_DIR}/download/ 为输出目录。模型应根据实际运行环境动态确定路径,不硬编码绝对路径。

核心理念:不是"AI替你重写标书",而是"AI帮你审标书"——读招标文件抽要求+评分表,分段精读标书建索引,逐项核对格式合规性+评分项响应质量,输出带原文定位的Markdown审核报告。

与 bid-document-maker 的区别:maker 是"填标书"(提取模板→自动填充→缺失标黄),checker 是"查标书"(提取要求→比对实际→违规报告)。两者共享前半段(解析+模板提取+格式护栏),后半段方向相反。

⚠️ 强制执行规则(ALL MODELS MUST FOLLOW)

以下规则对本技能的所有调用者(任何模型)具有强制约束力,不得跳过、合并或并行执行多个阶段。违反以下流程将导致产出物不可用。

【全阶段强制总则 · 任何模型不得豁免】

  1. 六阶段全部必做:Stage 1→2→3→4→5→6 缺一不可。严禁以"环境不可用 / 降级 / 时间紧 / 用户没要求"为由,整段跳过某一阶段或其对应报告章节。
  2. 报告章节不可缺:最终报告必须包含全部 8 章(①总体概览 ②格式合规 ③评分项预估 ④OCR比对 ⑤视觉核对 ⑥价格分一致性 ⑦技术方案抄袭 ⑧改进建议)。其中 ③ 评分项预估(含报价分预估) 与 ⑦ 技术方案抄袭检测(含跨章节自重复维度② + 与公开资料相似维度③) 最易被遗漏,强制列为"高优先级必交付章节"——缺失即视为检查未完成、产出物不可用,禁止交付。
  3. 降级≠跳过:若某子能力(OCR、z-ai web-search、LibreOffice 转换、LLM 评估等)在本环境不可用,必须显式标注降级原因与影响范围,并改用本 agent 的等价能力兜底(如用 WebSearch 替代 z-ai web-search、用 olefile/PyMuPDF 提取替代 LibreOffice 转换),禁止静默整段跳过。
  4. 交付前自检(硬门控):Stage 6 生成报告后、交付前,必须执行"阶段-报告对照自检"(清单见下方"自检清单"与"阶段-报告对照自检"),缺章必须返回补做,绝不允许"看起来做完了"就交付。
  5. OCR 凭证强制交互(不得静默跳过):进入 Stage 5 之前,模型必须主动向用户弹出 OCR 凭证配置交互界面(见下方"E. OCR 凭证强制交互配置"),提供「自填密钥 / 引导注册 / 降级跳过」三选项,待用户显式选择其一后方可继续。严禁假设用户已有密钥、严禁用默认值替代交互、严禁直接进入 OCR 流程。

六阶段顺序执行 + 四个强制门控点

┌─────────────────────────────────────────────────────────┐
│  Stage 1: 解析招标文件(提取格式要求+评分表)              │
│  输入: 招标文件(.docx/.doc/.pdf)                        │
│  产物: {项目名}_招标要求清单.json                         │
│  产物: {项目名}_评分表.json                               │
│  ⏸️ 门控1: 展示要求清单+评分表摘要,等待"继续"            │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Stage 2: 解析待审核标书(建立章节索引)                  │
│  输入: 标书文件(.docx/.doc/.pdf,可上百页)              │
│  产物: {项目名}_标书章节索引.json                         │
│  产物: {项目名}_标书章节摘要.json                         │
│  无门控,自动进入 Stage 3                                 │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Stage 3: 格式合规比对(8类检查)                         │
│  输入: 招标要求清单 + 标书章节索引                        │
│  产物: {项目名}_格式审核Plan.json                         │
│  ⏸️ 门控2: 展示格式违规清单,等待用户确认                 │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Stage 4: 评分项响应质量评估                              │
│  输入: 评分表 + 标书章节索引+章节摘要                     │
│  产物: {项目名}_评分预估Plan.json                         │
│  ⏸️ 门控3: 展示评分预估结果,等待用户确认                 │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Stage 5: OCR 资质详细比对 + 渲染视觉核对                 │
│  输入: 标书图片 + 资质章节                                │
│  产物: {项目名}_OCR比对报告.json                          │
│  产物: {项目名}_审核预览PNG/                              │
│  无门控,自动进入 Stage 6                                 │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Stage 6: 生成最终审核报告                                │
│  输入: 格式审核Plan + 评分预估Plan + OCR比对 + 视觉核对   │
│  产物: {项目名}_审核报告.md(最终交付)                   │
│  ⏸️ 门控4: 报告交付确认                                   │
└─────────────────────────────────────────────────────────┘

门控点的 6 个强制动作

每个门控点必须依次完成以下 6 个动作,缺一不可:

  1. 产物文件存在性检查:ls -la {WORK_DIR}/{产物文件} 验证文件存在且大小 ≥1KB
  2. 展示产物摘要:在对话中展示关键统计(如"共检查 8 类格式合规项,发现 5 处违规")
  3. 输出 ⏸️ 暂停话术:明确告知用户"已暂停,请回复'继续'或'下一步'进入 Stage X"
  4. 真正停止:严禁在用户未回复前自动推进到下一阶段
  5. 记住"继续"才推进:只有用户回复"继续/下一步/确认"才进入下一阶段
  6. 交付前阶段-报告对照自检(仅 Stage 6 交付前执行):报告必须包含全部 10 个章节(① 总体概览 ② 格式合规 ③ 评分项预估 ④ OCR 比对 ⑤ 视觉核对 ⑥ 标⭐️项检查 ⑦ 文字错误检查 ⑧ 价格分一致性 ⑨ 技术方案抄袭 ⑩ 改进建议)。缺任何一章(尤其"③ 评分项预估""⑥ 标⭐️项检查"与"⑨ 技术方案抄袭检测")必须返回补做,禁止交付缺章报告。 对照清单见下方"阶段-报告对照自检"。

自检清单(每个门控点必问自己)

  • 我是否用 ls -la 验证了产物文件存在且 ≥1KB?
  • 我是否展示了产物文件的关键摘要(不是只说"已完成")?
  • 我是否输出了 ⏸️ 暂停话术?
  • 我是否真的停止了(没有自动推进)?
  • 我是否记住了只有用户回复"继续"才推进?
  • 我是否执行了 OCR 凭证强制交互(E 节三选项),待用户显式选择后才进入 Stage 5?

阶段-报告对照自检(Stage 6 交付前硬门控 · 缺章即返回补做)

报告章节 对应阶段 必含内容(不可缺) 缺失后果
① 总体概览 Stage 1 / 4 合规率 + 预估得分 + 置信度 报告不可用
② 格式合规审核 Stage 3 4 级严重度分组 + 致命违规明细 漏检废标项
③ 评分项预估 Stage 4 逐项预估分 + 总分 + baseline_price 价格分计算依据 🔴 禁止交付缺章
④ OCR 比对 Stage 5 按图片分组合规/不合规 资质风险漏检
⑤ 视觉核对 Stage 5 按页面核对发现 版式问题漏检
⑥ 标⭐️项检查 Stage 2.5 标星项(参数/废标条款/评分政策)明细表 + 投标响应判定 + LLM 逐条复核结论(无标星项须显式标注) 🔴 禁止交付缺章
⑦ 文字错误检查 Stage 2.6 错别字/异形词/金额大小写/专名一致性 明细表 + LLM 语境复核结论 🔴 禁止交付缺章
⑧ 价格分一致性 Stage 5.5 5 项结果 + 报价分计算依据 🔴 禁止交付缺章
⑨ 技术方案抄袭 Stage 5.5 5 维度 + 维度②/③ 明细定位表 + 维度③状态字段 🔴 禁止交付缺章
⑩ 改进建议 Stage 3/4/5 按优先级 P0–P3 排序 缺行动指引

凡标注「🔴 禁止交付缺章」的章节缺失,必须返回对应 Stage 补做,绝不允许"看起来做完了"就交付。门控4 展示前必须逐行核对本表 10 行。

启动前必读

在执行 Stage 1 之前,模型必须依次完成以下准备:

A. 读取经验案例库(强制)

读取 {SKILL_DIR}/EXPERIENCES.md,理解 11 条审核规则(E1-E11)及其对应的检查项。这些规则是从真实标书踩坑案例提炼的,每一项都对应审核 Plan 中的一个检查项。

B. 读取审核规则配置(强制)

读取 {SKILL_DIR}/config/audit_rules.yaml,了解:

  • 8 类格式合规检查项的具体规则
  • 4 级严重度分类标准(critical/major/minor/info)
  • 评分项响应质量评估的 4 级标准(完全响应/部分响应/不足/缺失)
  • 必填项清单(投标函/法人信息/项目编号/日期等)

C. 启动自检

运行 python {SKILL_DIR}/scripts/ocr_selftest.py 检查 OCR 引擎当前可用性,仅作为 E. OCR 凭证强制交互配置 的输入信息(向用户呈现"已配置/未配置")。不得据此直接决定跳过 OCR——最终方案必须由 E 节的三选项交互中用户显式选择决定。

D. 确认输入

向用户确认以下信息(缺失时主动询问):

  1. 招标文件路径(必需):可以是 .docx/.doc/.pdf
  2. 标书文件路径(必需):可以是 .docx/.doc/.pdf
  3. 项目名称(必需):用于产物文件命名,若用户未提供,从招标文件解析后回填
  4. 审核重点(可选):默认全量审核,用户可指定"只审格式"或"只评得分"

E. OCR 凭证强制交互配置(任何模型必须执行 · 不得静默跳过)

在进入 Stage 1 之前,模型必须通过交互界面(AskUserQuestion 或等价 UI)向用户确认 OCR 凭证方案。这是强制门控:不得使用默认值、不得假设用户已有密钥、不得跳过此交互直接进入 OCR 流程。即使 ocr_selftest.py 检测到已配置密钥,仍须呈现本交互(可预选"已配置"并请用户确认)。

交互设计(3 个选项,必须让用户显式选择其一):

  • 选项 A|我有密钥,现在填入

    • 用户提供百度 OCR 的 API Key 与 Secret Key(可经交互框的自由文本区填写,或口头给出)。
    • 模型将其写入 {SKILL_DIR}/config.json 的 ocr.baidu_ocr.api_key / secret_key(替换占位符 YOUR_API_KEY / YOUR_SECRET_KEY),使后续所有运行自动读取。
    • 写完后运行 python {SKILL_DIR}/scripts/ocr_selftest.py 验证可用;对话中仅回显密钥前 6 位供核对,不明文展示完整密钥。
  • 选项 B|我没有,引导我去注册

    • 模型必须主动、分步引导用户完成百度 OCR 注册并复制密钥,不得只甩一个链接了事:
      1. 打开浏览器访问 https://cloud.baidu.com/product/ocr
      2. 登录 / 注册百度账号
      3. 进入「控制台 → 文字识别 → 创建应用」,应用名称填 bid-checker-ocr,获得 API Key 与 Secret Key
      4. 请用户复制这两个值返回,模型收录后回到选项 A 写入 config
    • 多轮引导直至用户拿到密钥并填入;若用户中途放弃注册,则回退到 选项 C。
  • 选项 C|跳过 OCR,使用降级策略

    • 不配置百度 OCR,标记 ocr_mode = "degraded"。
    • Stage 5 的资质图片 OCR 详细比对降级为「规则 / 关键词 / 人工标注」兜底;最终报告 ④ OCR 比对 章节须显式标注「OCR 未配置,资质图片文字未自动核验,相关结论以'须人工确认'呈现」。
    • 若本机已安装 PaddleOCR,可自动降级到本地模型(无需密钥);否则纯规则兜底,不得因降级而整段跳过 OCR 比对章节(章节仍须存在并说明降级范围)。

强制要求:

  • 三选项必须让用户显式选择其一;未获选择前,不得进入 Stage 1 之后的任何 OCR 相关环节。
  • 选择 B 时模型须逐步引导并在每步确认用户是否完成,禁止一次性丢出注册链接后等待。
  • 选择 A 后写入的密钥仅存于本地 config.json,不得在报告中明文回显完整密钥。

文档格式转换策略(多引擎高保真 · 严禁静默降级)

标书多为 .doc(老版 Word)格式。转换质量直接决定后续所有检查的准确性——一旦落入 「仅文本」提取,报价表、技术参数表、签字位等结构会丢失,价格核对等结论将不可信。 绝不允许"只有 LibreOffice 才能转、没有就降级"的思路:用户电脑普遍装有 Office / WPS,沙箱也能装 Aspose,可选项远不止 LibreOffice。

引擎优先级(保真度从高到低,模型按序尝试)

优先级 引擎 可用条件 保真度
1 MS Word COM Windows + 已装 Microsoft Office 高(保留表格/图片/样式/页码)
2 WPS COM Windows + 已装 WPS Office(国产办公常见) 高
3 LibreOffice 已装 soffice(跨平台) 高
4 Aspose.Words pip install aspose-words(沙箱可装,程序化) 高
5 olefile 提取 有 olefile(中文安全,保留段落/表格顺序) 低(有损)
6 antiword / docx2txt 最后兜底(中文易乱码) 低(有损)

实现见 bid_checker/utils/doc_to_docx.py:convert_doc_to_docx() 按上表顺序尝试, 返回 (docx_path, was_converted, fidelity),其中 fidelity ∈ {'high','text_only'}。

铁律(对标书严谨性负责)

  • 高保真优先:先试 1~4,任一成功即用,绝不在有高保真引擎可用时跳到仅文本兜底。
  • 自动安装兜底(AI 在沙箱主动安装):若 1~4 全不可用,模型应先执行自动安装 (try_auto_install() 即 pip install aspose-words)并重试;仍失败再提示用户安装 MS Office / WPS / LibreOffice 之一。严禁在"可安装高保真引擎"时直接宣布"无法转换"。
  • 禁止静默降级:仅当 1~4 全部失败才落入 5/6 仅文本兜底,此时函数返回 fidelity='text_only',模型须:
    1. 在进度摘要与最终报告中显式标注「本次转换为仅文本兜底,结构有损」;
    2. 凡涉及表格(报价、技术参数、资质清单)的结论,提示「须逐页人工复核」;
    3. 强烈建议用户用 Word/WPS 另存为 .docx 后重新运行。
  • 自检命令:python {SKILL_DIR}/scripts/convert_to_docx.py --selftest 列出各引擎 可用性及将使用的保真度,Stage 1 前建议先跑一次。

Stage 1: 解析招标文件

1.1 目标

从招标文件中提取两类信息:

  1. 格式要求清单:章节结构要求、必填项清单、签字盖章规则、字体字号要求、页码要求等
  2. 评分表:评分项、分值、评分标准、客观/主观分类

1.2 执行步骤

# Step 1: 统一格式为 .docx
python {SKILL_DIR}/scripts/convert_to_docx.py 
  --input "{招标文件路径}" 
  --output "{WORK_DIR}/{项目名}_招标文件.docx"

# Step 2: 解析招标文件,提取结构化信息
python {SKILL_DIR}/scripts/parse_bid_document.py 
  --input "{WORK_DIR}/{项目名}_招标文件.docx" 
  --output-json "{WORK_DIR}/{项目名}_招标解析数据.json" 
  --output-md "{WORK_DIR}/{项目名}_招标解析报告.md"

# Step 3: 提取格式要求清单(基于解析数据 + LLM 二次抽取)
python {SKILL_DIR}/scripts/extract_format_requirements.py 
  --input "{WORK_DIR}/{项目名}_招标解析数据.json" 
  --output "{WORK_DIR}/{项目名}_招标要求清单.json"

# Step 4: 提取评分表(LLM 抽取,结构化输出)
python {SKILL_DIR}/scripts/extract_scoring_table.py 
  --input "{WORK_DIR}/{项目名}_招标解析数据.json" 
  --output "{WORK_DIR}/{项目名}_评分表.json"

1.3 产物文件

  1. {项目名}_招标要求清单.json — 格式合规要求清单,结构:
{
  "project_info": {
    "项目名称": "...",
    "项目编号": "...",
    "采购人": "...",
    "采购方式": "公开招标/竞争性谈判/..."
  },
  "chapter_requirements": [
    {
      "chapter_id": "ch01",
      "title": "投标函",
      "required": true,
      "must_be_present": true,
      "must_page_break_before": true,
      "evidence_keywords": ["投标函", "致:"]
    }
  ],
  "required_fields": [
    {
      "field_id": "f001",
      "label": "项目名称",
      "appears_in": ["投标函", "投标一览表", "封面"],
      "must_be_consistent": true
    }
  ],
  "signature_rules": [
    {
      "rule_id": "s001",
      "context": "投标函",
      "type": "法人签字+公章",
      "must_be_empty": true,
      "warning_if_filled": false
    }
  ],
  "format_rules": [
    {
      "rule_id": "fmt001",
      "type": "font",
      "description": "正文宋体小四",
      "scope": "正文"
    }
  ]
}
  1. {项目名}_评分表.json — 评分表,结构:
{
  "total_score": 100,
  "scoring_items": [
    {
      "item_id": "sc001",
      "category": "商务分",
      "title": "投标函格式",
      "max_score": 5,
      "criteria": "投标函格式符合招标文件要求",
      "type": "objective",
      "evidence_keywords": ["投标函"],
      "weight": 1.0
    },
    {
      "item_id": "sc002",
      "category": "技术分",
      "title": "技术方案完整性",
      "max_score": 15,
      "criteria": "方案覆盖招标要求的所有技术点,包括应急响应流程",
      "type": "subjective",
      "evidence_keywords": ["技术方案", "应急响应", "实施方案"],
      "sub_criteria": [
        {"desc": "技术路线清晰", "score": 5},
        {"desc": "实施步骤完整", "score": 5},
        {"desc": "应急响应流程", "score": 5}
      ],
      "weight": 1.0
    }
  ]
}

1.4 门控1

展示内容:

  • 项目基本信息(名称、编号、采购人、采购方式)
  • 章节要求清单摘要:共 X 个章节,其中 Y 个为必需章节
  • 评分表摘要:总分 X 分,共 Y 个评分项(客观分 Z 项 + 主观分 W 项)
  • 任何 LLM 抽取过程中的低置信项(需用户确认)

暂停话术模板:

✅ Stage 1 完成

📋 招标文件解析结果:
- 项目名称:{xxx}
- 项目编号:{xxx}
- 采购方式:{xxx}
- 必需章节数:{X} 个
- 评分项数:{Y} 个(客观分 {Z} 项 + 主观分 {W} 项)
- 总分:{total} 分

⚠️ 需确认项:
- {低置信项1}
- {低置信项2}

⏸️ 已暂停,请回复"继续"或"下一步"进入 Stage 2(解析标书+建立章节索引)

Stage 2: 解析待审核标书 + 建立章节索引

2.1 目标

对待审核的标书(可能上百页)做以下处理:

  1. 统一格式为 .docx
  2. 扫描章节树:识别所有标题段落,建立"标题→起止页/字数/正文"映射
  3. 生成章节摘要:每章节用 LLM 生成 200 字内的摘要(用于后续评分项驱动的精读)
  4. 建立关键词倒排索引:所有章节正文建立关键词倒排表(用于精筛)

2.2 大文档分段读取策略(核心)

标书可能上百页,模型上下文有限,必须用"评分项驱动的检索增强"策略:

全文档(N页,可能 300+)
    ↓
[Step 1] 章节切片(用 python-docx 扫描所有 Heading 段落)
    ↓
章节列表(M个章节,每个 5-30 页)
    ↓
[Step 2] 章节摘要(一次 LLM 调用,所有章节标题+前500字 → 200字摘要)
    ↓
章节摘要表(M 条摘要,每条 200 字)
    ↓
[Step 3] 评分项驱动精读(每个评分项独立调用)
    ↓
    对每个评分项:
      3-1. 摘要粗筛 → 选出 top-10 相关章节
      3-2. 关键词精筛 → 选出 top-3 章节
      3-3. 精读评估 → 只把这 3 个章节的全文喂给 LLM

这种策略的优点:

  • 上下文可控:每个评分项只读 3-5 个章节(5-10K tokens)
  • 精准定位:用关键词+摘要双层筛选,避免误读无关章节
  • 可解释:每个评分项的评估都附原文引用和章节定位
  • 可并行:多个评分项可以并发评估,加速处理

2.3 执行步骤

# Step 1: 统一格式为 .docx
python {SKILL_DIR}/scripts/convert_to_docx.py 
  --input "{标书文件路径}" 
  --output "{WORK_DIR}/{项目名}_标书.docx"

# Step 2: 章节切片(扫描所有 Heading 段落,建立章节树)
python {SKILL_DIR}/scripts/slice_chapters.py 
  --input "{WORK_DIR}/{项目名}_标书.docx" 
  --output "{WORK_DIR}/{项目名}_标书章节索引.json"

# Step 3: 生成章节摘要(LLM 调用)
python {SKILL_DIR}/scripts/generate_chapter_summaries.py 
  --input "{WORK_DIR}/{项目名}_标书章节索引.json" 
  --output "{WORK_DIR}/{项目名}_标书章节摘要.json"

# Step 4: 建立关键词倒排索引
python {SKILL_DIR}/scripts/build_keyword_index.py 
  --input "{WORK_DIR}/{项目名}_标书章节索引.json" 
  --output "{WORK_DIR}/{项目名}_标书关键词索引.json"

2.4 产物文件

  1. {项目名}_标书章节索引.json — 章节树,结构:
{
  "doc_path": "...",
  "total_pages": 287,
  "total_words": 156800,
  "chapters": [
    {
      "chapter_id": "ch01",
      "level": 1,
      "title": "投标函",
      "para_index_start": 12,
      "para_index_end": 25,
      "page_start": 3,
      "page_end": 4,
      "word_count": 850,
      "full_text": "..."
    }
  ]
}
  1. {项目名}_标书章节摘要.json — 章节摘要表,结构:
{
  "summaries": [
    {
      "chapter_id": "ch01",
      "title": "投标函",
      "summary": "本章为投标函正文,包含投标人致采购人的函件,落款含法人签字位、公章位、日期位。投标金额为人民币壹佰贰拾万元整。",
      "key_points": ["投标金额120万", "法人签字位", "公章位"]
    }
  ]
}
  1. {项目名}_标书关键词索引.json — 关键词倒排索引(用于精筛),结构:
{
  "index": {
    "投标函": ["ch01"],
    "营业执照": ["ch05", "ch12"],
    "技术方案": ["ch08", "ch09", "ch10"]
  }
}

2.5 无门控,自动进入 Stage 3

Stage 2 完成后,展示进度摘要但不暂停,自动进入 Stage 3:

✅ Stage 2 完成

📚 标书索引建立结果:
- 总页数:{X} 页
- 总字数:{Y} 字
- 识别章节数:{M} 个
- 章节摘要已生成

➡️ 自动进入 Stage 3:格式合规比对

Stage 2.5: 标⭐️项(关键参数 / 废标条款)检查

2.5.1 目标

招标文件中常以 ★ / ⭐ / ☆ 标注「标星项」,或在评分办法中规定「带★指标的加分 / 减分 / 不满足即废标」政策。这类条目一旦不满足,通常是 废标 或 该模块零分,严重程度远高于一般格式 / 文字问题。故单独成章、详细核查,且 绝不静默跳过(无标星项时显式标注「无标星项」,不视为错误)。

2.5.2 机器可抽取的维度(脚本覆盖 · check_star_items.py)

维度 说明 严重度
参数项(关键指标) 带 ★/⭐ 的技术参数、规格、配置、性能指标 critical
废标 / 实质性条款 带星号的废标、否决、实质性响应条款 critical
评分加分-减分政策 评分办法中「带★每满足加X分 / 不满足扣X分 / 废标」 critical

抽取覆盖多种星号符号(★ ☆ ⭐ ✩ ✪ 等)以及「星号 / 标星 / 带星 / 关键参数 / 实质性要求」等文字标记;评分政策自动识别 加分 / 减分 / 废标 动作与分值。 投标响应判定:逐句匹配(取星号后要求文本在投标文中检索,仅在该句内判定 满足/不满足,避免跨条污染),policy/clause 两类直接标"需复核"交 LLM 确认。

2.5.3 执行步骤

# Step1: 机器抽取 + 初判投标响应(支持 .docx / .txt / .doc;.doc 走 olefile 提取)
python {SKILL_DIR}/scripts/check_star_items.py 
  --tender "{WORK_DIR}/{项目名}_招标文件.docx" 
  --bid "{WORK_DIR}/{项目名}_标书.docx" 
  --output "{WORK_DIR}/{项目名}_标星项检查Plan.json"

# Step2: 【LLM 逐条复核】(模型必做,不可跳过)
#   机器仅做抽取与"满足/不满足/需复核"初判;技术规格是否真正满足、
#   废标条款是否被触发、评分政策是否已在得分预估中落实,必须模型通读
#   招标文件与投标响应后逐条确认,将结论写回 Plan 的 bid_response.status
#   与 issues,并置 llm_review_needed=false。此步骤不能用脚本替代。

2.5.4 产物

{项目名}_标星项检查Plan.json:has_star_items + summary(参数/废标/政策计数 + 投标响应分布 + 关键风险等级)+ star_items 明细(id / type / text / location / policy / bid_response{status,evidence} / severity / llm_review_needed)。

  • 若 has_star_items=false:报告第六章显式标注「无标星项」,不视为错误(如梦桃小学项目)。

2.5.5 展示与门控

展示标星项概览(按类型计数)与 critical 级 / 不满足项明细,不暂停,自动进入 Stage 2.6。最终报告须含「六、标⭐️项(关键参数/废标条款)检查」章节(见报告模板)。凡存在不满足或被触发风险的标星项,须在核心结论中升级为高危提示。

Stage 2.6: 文字错误(错别字)检查

2.6.1 目标

对标书全文做文字质量核查,捕获机器可判定的错误,并补充模型语境复核(捕捉语境相关错误)。标书里的错别字(尤其金额、公司名、废标敏感词)可能改变法律含义,属高风险。

2.6.2 可机器判定的维度(脚本覆盖)

维度 说明 严重度
常见错别字 布署→部署、签定→签订、帐目→账目 等词典 major
异形词/易混词 其它→其他、截止→截至、定金→订金(法律效力不同) minor
叠字/重复字 连续相同汉字、整词重复 minor
中英文标点混用 中文文本中的半角 ,.;:!? minor
金额大小写一致性 大写金额(壹…圆…角…分)与小写数字是否相等 critical
专有名词一致性 同一公司名/项目名在不同处写法是否一致 major

2.6.3 执行步骤

# Step 1: 机器检查(支持 .docx / .txt / .doc)
python {SKILL_DIR}/scripts/check_typos.py 
  --input "{WORK_DIR}/{项目名}_标书.docx" 
  --output "{WORK_DIR}/{项目名}_错别字检查Plan.json"

# Step 2: 【LLM 语境复核】(模型必做,不可跳过)
#   模型通读标书全文,重点核对语境相关错误:的/地/得、做/作、截止/截至、
#   语义反转、废标敏感词误写等,将发现以追加条目写入同一 JSON 的 issues,
#   并置 llm_review_needed=false。此步骤不能用脚本替代。

2.6.4 产物

{项目名}_错别字检查Plan.json:按类型统计 + issues 明细(id / type / severity / original / suggestion / context / location / confidence)。

2.6.5 展示与门控

展示错别字概览(按类型计数)与 critical 级明细,不暂停,自动进入 Stage 3。最终报告须含「七、文字错误(错别字)检查」章节(见报告模板)。

Stage 3: 格式合规比对(8 类检查)

3.1 8 类格式合规检查

序号 检查类 严重度 检查内容 复用模块
① 章节完整性 critical 招标要求的所有章节是否都有 requirement_mapper.detect_fixed_chapters
② 章节分页 major 每章是否另起一页 format_guardrails.ensure_chapter_page_breaks (检查模式)
③ 必填项完整性 critical 投标函/法人/项目编号/日期等必填项是否填写 template_scanner.scan_paragraph_fill_positions (反向)
④ 签字盖章位 critical 签字/盖章位是否被误填或漏填 format_guardrails.verify_signatures_empty
⑤ 标签格式 minor 冒号空格、占位符残留、字体字号 format_guardrails.fix_label_whitespace (检查模式) + verify_no_anchor_residue
⑥ 图片合规 major 图片尺寸是否越界、是否插入正确位置 image_format.verify_image_sizing
⑦ 字段一致性 major 项目名/编号/金额多处出现是否一致 matching_engine._match_field (反向)
⑧ 资质章节完整性 major 资质证明章节是否齐全 template_review.detect_qualification_layout

3.2 执行步骤

# 综合执行 8 类检查,输出机器可读 Plan
python {SKILL_DIR}/scripts/audit_format_compliance.py 
  --requirements "{WORK_DIR}/{项目名}_招标要求清单.json" 
  --docx "{WORK_DIR}/{项目名}_标书.docx" 
  --chapter-index "{WORK_DIR}/{项目名}_标书章节索引.json" 
  --output "{WORK_DIR}/{项目名}_格式审核Plan.json"

3.3 产物文件

{项目名}_格式审核Plan.json — 机器可读审核 Plan,结构:

{
  "audit_id": "audit_20260716_xxx",
  "audit_time": "2026-07-16T12:00:00",
  "total_checks": 156,
  "passed": 142,
  "failed": 14,
  "failures_by_severity": {
    "critical": 3,
    "major": 5,
    "minor": 4,
    "info": 2
  },
  "items": [
    {
      "check_id": "chk_001",
      "category": "章节完整性",
      "severity": "critical",
      "rule_id": "rule_ch01",
      "requirement": "投标函章节必须存在",
      "actual": "已存在,位于第3-4页",
      "status": "compliant",
      "evidence": "章节索引 ch01",
      "suggestion": null,
      "page_ref": "3-4"
    },
    {
      "check_id": "chk_002",
      "category": "签字盖章位",
      "severity": "critical",
      "rule_id": "rule_s001",
      "requirement": "投标函法人签字位必须留空(待现场签字)",
      "actual": "签字位被填入文字'张三'",
      "status": "non_compliant",
      "evidence": "原文:'法定代表人(签字):张三'",
      "suggestion": "删除签字位的'张三',签字位应留空",
      "page_ref": "3"
    }
  ]
}

3.4 4 级严重度分类

级别 说明 例子 处理
critical 致命违规,可能导致废标 必填项空着、签字位被填值、无投标函 必须修复
major 重大违规,扣分或废标风险 章节未分页、图片越界、关键信息不一致 强烈建议修复
minor 轻微违规,扣分 标签冒号空格、字体字号不符 建议修复
info 提示项,建议优化 残留 token、年龄与身份证不符 可选修复

3.5 门控2

展示内容:

  • 总检查项数 + 通过/失败统计
  • 按 4 级严重度分组的失败项摘要(每项含检查项+严重度+位置+建议)
  • critical 项必须高亮提示用户优先处理

暂停话术模板:

✅ Stage 3 完成

🔍 格式合规审核结果:
- 总检查项:{X} 项
- ✅ 通过:{Y} 项
- ❌ 不合规:{Z} 项
  - 🔴 critical(致命):{a} 项
  - 🟡 major(重大):{b} 项
  - 🔵 minor(轻微):{c} 项
  - ⚪ info(提示):{d} 项

🔴 critical 违规项(必须修复):
1. {检查项1} — {位置} — {建议}
2. {检查项2} — {位置} — {建议}
...

🟡 major 违规项(强烈建议修复):
1. {检查项1} — {位置} — {建议}
...

⏸️ 已暂停,请回复"继续"或"下一步"进入 Stage 4(评分项响应质量评估)

Stage 4: 评分项响应质量评估

4.1 目标

针对评分表中的每一个评分项,评估标书的响应质量,给出预估得分。区分两类:

  1. 客观分项(type=objective):核对是否响应(如"提供营业执照"→是/否)
  2. 主观分项(type=subjective):评估响应质量(如"技术方案完整性"→预估得分+理由)

4.2 评分项驱动精读流程

对每个评分项独立执行:

评分项 X
  ↓
[Step 4-1] 摘要粗筛
  从章节摘要表中筛选 top-10 相关章节
  (用评分项的 evidence_keywords 匹配章节摘要)
  ↓
[Step 4-2] 关键词精筛
  从 top-10 章节中筛出 top-3 章节
  (用关键词倒排索引 + TF-IDF 排序)
  ↓
[Step 4-3] 精读评估(LLM 调用)
  输入:评分项 + 评分标准 + top-3 章节全文
  输出:是否响应 + 响应质量 + 预估得分 + 扣分理由 + 改进建议
  ↓
[Step 4-4] 客观分项特殊处理
  对资质类客观分项,标记需要 Stage 5 OCR 详细比对的图片

4.2.1 价格分基准价交互确认(强制 · 不可跳过)

规则:Stage 4 计算"报价分/价格分"之前,必须用 AskUserQuestion 工具与用户交互,询问本项目其他投标人(竞争对手)的最低报价大约是多少,以此作为"基准价"计算价格分。禁止在不询问用户的情况下,直接用本投标报价或最高限价自行假设基准价。

交互脚本(每次检查必须执行一次):

  • 问题:「您预估本项目其他投标人(除我方外)的最低报价大约为多少?该数值将作为价格分计算的基准价(满足招标文件要求的最低报价)。」
  • 选项(6 选 1,用户可自选"其他"填写任意金额):
    • A:最高限价的 90%
    • B:最高限价的 80%
    • C:最高限价的 70%
    • D:最高限价的 60%
    • E:最高限价的 50%
    • F:自定义——用户直接填写预估的其他家最低报价金额(元)
  • 用户选择后计算 baseline_price:
    • 选 A–E:baseline_price = 最高限价 × 对应比例
    • 选 F:baseline_price = 用户填写的金额
  • 用户拒绝回答 / 未提供:保守按 baseline_price = 最高限价 × 90% 计算,并在报告中将该价格分的 confidence 标注为 low,confidence_reason 注明「基准价为保守假设(限价 90%),未获用户确认」。

价格分计算公式(与政府采购通用规则一致):

报价分 = (baseline_price / 本投标报价) × 报价满分
  • 当 本投标报价 ≤ baseline_price(我方即最低价)时,报价分 = 满分。
  • baseline_price 必须写入 {项目名}_评分预估Plan.json 的顶层字段 baseline_price 与 price_score_confidence,供 Stage 6 报告引用与复核。

4.3 执行步骤

# 评分项响应质量评估
python {SKILL_DIR}/scripts/evaluate_scoring_items.py 
  --scoring-table "{WORK_DIR}/{项目名}_评分表.json" 
  --chapter-index "{WORK_DIR}/{项目名}_标书章节索引.json" 
  --chapter-summaries "{WORK_DIR}/{项目名}_标书章节摘要.json" 
  --keyword-index "{WORK_DIR}/{项目名}_标书关键词索引.json" 
  --baseline-price {baseline_price} 
  --bid-price {bid_total} 
  --price-confidence {medium_or_low} 
  --baseline-source {user_A..F 或 conservative_default} 
  --output "{WORK_DIR}/{项目名}_评分预估Plan.json"

注意:

  • --baseline-price 的值来自 4.2.1 与用户交互得到的 baseline_price(竞争对手最低报价预估)。
  • --bid-price 的值来自 Stage 1 解析出的本投标报价总额(如 1,918,289.90)。
  • --price-confidence:用户交互确认填 medium,保守默认(限价90%)填 low。
  • 未与用户交互、未传入 --baseline-price 不得运行本命令——价格分必须基于用户对竞争对手报价的预估。

4.4 产物文件

{项目名}_评分预估Plan.json — 评分预估 Plan,结构:

{
  "evaluation_id": "eval_20260716_xxx",
  "evaluation_time": "2026-07-16T12:00:00",
  "total_score": 100,
  "estimated_score": 78,
  "confidence": "medium",
  "confidence_reason": "主观分项预估存在 5-10 分误差",
  "baseline_price": 1731088.25,
  "price_score_confidence": "medium",
  "baseline_price_source": "user_interactive_A(限价90%)",
  "items": [
    {
      "item_id": "sc001",
      "category": "商务分",
      "title": "投标函格式",
      "max_score": 5,
      "estimated_score": 5,
      "type": "objective",
      "response_status": "fully_responded",
      "evidence_chapters": ["ch01"],
      "evidence_text": "投标函章节存在,格式符合要求",
      "page_ref": "3-4",
      "deduction_reasons": [],
      "improvement_suggestions": [],
      "needs_ocr_check": false
    },
    {
      "item_id": "sc002",
      "category": "技术分",
      "title": "技术方案完整性",
      "max_score": 15,
      "estimated_score": 12,
      "type": "subjective",
      "response_status": "partially_responded",
      "evidence_chapters": ["ch08", "ch09", "ch10"],
      "evidence_text": "技术方案章节覆盖了8个技术点中的7个,缺少应急响应流程",
      "page_ref": "45-78",
      "deduction_reasons": [
        {
          "sub_criteria": "应急响应流程",
          "max_score": 5,
          "deducted_score": 3,
          "reason": "未提供应急响应流程章节",
          "suggestion": "在第8章后新增'应急响应流程'章节"
        }
      ],
      "improvement_suggestions": [
        "补充应急响应流程章节,覆盖故障分级、响应时间、升级机制"
      ],
      "needs_ocr_check": false
    },
    {
      "item_id": "sc003",
      "category": "商务分",
      "title": "营业执照(有效期内)",
      "max_score": 5,
      "estimated_score": 5,
      "type": "objective",
      "response_status": "fully_responded",
      "evidence_chapters": ["ch05"],
      "evidence_text": "营业执照图片已插入资质章节",
      "page_ref": "12",
      "deduction_reasons": [],
      "improvement_suggestions": [],
      "needs_ocr_check": true,
      "ocr_check_target": "营业执照有效期、公司名称、统一社会信用代码"
    }
  ]
}

4.5 响应质量 4 级标准

级别 说明 预估得分率
fully_responded 完全响应,所有评分点都覆盖 90-100%
partially_responded 部分响应,覆盖主要评分点但有遗漏 60-89%
insufficient_response 响应不足,关键评分点缺失 30-59%
missing 完全缺失 0-29%

4.6 置信度评估

置信度 标准
high 客观分项全部评估完成 + 主观分项预估误差 <5 分
medium 主观分项预估误差 5-10 分
low 主观分项预估误差 >10 分 或 关键章节无法识别

4.7 门控3

展示内容:

  • 预估总分 + 置信度
  • 按评分项类别分组(商务分/技术分/价格分/其他)展示
  • 每个 critical 扣分点高亮(如"营业执照缺失"扣 5 分)
  • 标记需要 Stage 5 OCR 详细比对的评分项
  • 价格分计算依据:展示 baseline_price(来源:用户交互选项 A–F / 保守假设)、计算公式与得分,提醒用户该数值依赖其对竞争对手报价的预估

暂停话术模板:

✅ Stage 4 完成

📊 评分预估结果:
- 总分:{estimated}/{total} 分
- 置信度:{confidence}({reason})

📋 按类别分组:
【商务分】{a}/{b} 分
  - {item1}: {score}/{max} ✅
  - {item2}: {score}/{max} ⚠️ {reason}
  ...

【技术分】{c}/{d} 分
  - {item1}: {score}/{max} ✅
  - {item2}: {score}/{max} ❌ {reason}
  ...

【价格分】{e}/{f} 分
  ...

🔍 需 Stage 5 OCR 详细比对的项:
1. {item1} — {ocr_check_target}
2. {item2} — {ocr_check_target}

⏸️ 已暂停,请回复"继续"或"下一步"进入 Stage 5(OCR 详细比对 + 视觉核对)

Stage 5: OCR 资质详细比对 + 渲染视觉核对

5.1 目标

完成两件事:

  1. OCR 资质详细比对:对 Stage 4 标记为 needs_ocr_check 的评分项,OCR 出对应图片的文本,详细核对:

    • 营业执照:有效期、公司名称、统一社会信用代码(与投标人信息一致)
    • 身份证:有效期、姓名、身份证号(与法人/被授权人信息一致)
    • 资质证书:有效期、资质等级(与

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习