识微 (shiwei-bid-compliance) · 标书废标红线体检
免责声明(务必先读)
本 skill 是投标风险自查辅助工具:结论基于招标文件原文与内置规则库 / 真实废标判例库生成,不构成法律意见,也不替代代理机构或法务的专业判断;标书是否废标由招标人(评标委员会)依法认定。请以招标文件原文及现行有效法规为准。详见文末「八、隐私与安全」与包内 PRIVACY.md。
一、定位(v0.1 单向扫描 → v1.0 双向差分)
废标 = 招标文件的要求项 ∩ 投标文件未覆盖的部分。v0.1 只扫描招标文件、输出"注意事项清单"(用户 Ctrl+F 搜"保证金"得到的是同一份东西);v1.0 引入投标文件作为第二输入,回答"你的标书哪里会死"。
| 维度 | v0.1.0 | v1.0.0 |
|---|---|---|
| 输入 | 招标文件 | 招标文件 + 投标文件(可选判例地域/行业) |
| 输出 | 红线规则命中清单 | 三态差分报告(未响应/存疑/已响应)+ 判例量化风险 + 可提交交付物 |
| 知识源 | 法条规则 R1–R14(公开可推导) | + 真实废标判例库(随采集增长,护城河) |
| 收费 | 免费 | 前 5 次付费能力免费,之后 ¥0.01/次;未付费自动降级免费层 |
| 自进化 | 无 | PDCA 闭环(feedback→metrics→规则/判例迭代) |
二、计费模式与功能分级(Pay Skill,务必先读)
- 免费层(不消耗额度,但同样经服务端登记):
check单向红线扫描(概览:计数 + 红线命中)·timeline时序节点。纯本地运维工具(doctor自检 ·feedback/metrics遥测与看板)不经网关。 - 付费层(前 5 次由服务端免费放行,之后按次计费):
parse要求项明细提取 ·diff双向差分 ·precedent判例对照 ·deliver交付物生成。 - 说明:免费层只给概览(
check不输出可直接二次加工的要求项明细);明细(parse)与下游能力同属付费层,避免免费额度被用于自制差分。 - 计费单元与单价(D12.5):
model: per_call,单价 ¥0.01 / 次(amount_fen: 1);计费单元 = 每次付费功能调用(parse / diff / precedent / deliver 各计 1 次);免费额度 = 每个调用方前 5 次付费功能调用。 - 免费次数的判定与累计完全在服务端:每一次业务调用都会提交
POST /api/alipay/invoke,由服务端按「调用方 × skill」独立计数并裁决「免费放行」或「402 收银」。skill 端不做任何本地次数计算(旧版本地计数已废弃),删除本地文件不会带来额外免费次数。 - 调用方标识来源:环境变量
SHIWEI_CLIENT_ID/SHIWEI_SKILLHUB_USER_ID(平台注入时以平台值为准),否则回退到本地设备标识state/identity.json。 - 服务端额度按 (identity × skill) 存于 SQLite,流水逐次落表,可对账审计。
- 以 Skill 页面及支付确认页面展示为准。
- 优雅降级:额度用尽未付费时不停摆——脚本输出 402 支付载荷与三通道付款指引(二维码 / 付款卡片 / 买家侧 CLI),用户可继续使用免费层出基础结论,永远拿得到结果。
- 服务端故障处置(降级链):网络不可达或服务端 5xx 时,不再使用本 skill 的本地数据与逻辑,按
payment.gateway.fail_policy逐级降级:
1. 一级降级(默认llm):把本次上下文转交当前使用的大模型,要求其直接作答且不超过 500 字,并明确禁止再调用本 skill 的任何命令/脚本/本地判例库;退出码 5。
2. 二级降级:若大模型也无法响应,执行python core/pay_gate.py fallback-net→ 网络不通则弹出「请检查网络」的排查说明(退出码 6);网络通畅则给出「🛰️ 太空信号有点弱」等友好提示并建议重试(退出码 5)。
3.fail_policy=local(仅本地自用)时改为本地引擎兜底并在 stderr 标注「未计费」;fail_policy=closed时直接阻断。
服务端 4xx(入参/skill 不匹配等明确拒绝)一律不放行,不会把「明确拒绝」当作「故障」而绕过计费;降级与阻断均不扣费。 - 退款规则(D12.4):本 skill 属数字化工具即时交付——免费额度内可完整试用核心付费能力后再决定付费;付费调用一旦执行完成(结果已交付)即难以撤回,原则上不支持已交付调用的退款;未实际交付(支付成功但调用失败/未执行)的订单可申请原路退回。争议处理:联系创作者(SkillHub 站内信),依据调用记录与订单凭证核验处理,详见
references/refund_policy.md。 - 记录留存(D12.8):调用记录、订单与支付凭证留存于
state/(订单号、时间、金额、功能)——自签公网模式存于服务端,离线使用存于本地;保留 ≥180 天,可随时导出备查。 - 本地自用:
config.json中payment.gateway.enforce=false即不调用计费网关、全部功能免费(仅供企业/个人本地自用;对客发布版须保持true)。 - 收款说明(自签公网模式):后端服务与支付宝直连,按 A2M 协议(402 / 验付 / 履约确认)收款,商户为你本人的支付宝开放平台应用(个人账号签约「AI 按量付费」,无需企业认证);订单幂等核验、不重复扣费;未付款仅返回 402 账单、不产生任何扣费。- 部署与密钥管理见
docs/DEPLOY.md,服务端结构见docs/STRUCTURE.md;敏感私钥仅存服务器环境变量。
付费链路(A2M 完整封装)
本 skill 在自签公网模式下严格遵循阿里 AI 按量付费(A2M)协议,链路完整、幂等、可重试:
- probe(探测调用):Agent / SkillHub 调度层向服务端
POST /api/alipay/invoke(识微别名/api/alipay/shiwei/invoke可不带 skill)发送请求,携带skill名称、功能参数、调用方身份标识(X-Client-Id/X-User-Id/client_id等)。服务端先判断是否在免费额度内;若额度充足,直接履约返回 200。 - pay(下发账单):当调用方免费额度耗尽且本次请求命中付费功能(
diff/precedent/deliver)时,服务端返回 HTTP 402,响应头Payment-Needed携带 base64url JSON 账单,字段包括out_trade_no(商户订单号)、amount(金额,分)、currency、resource_id(技能资源标识)、goods_name(商品名称)与pay_before(订单有效截止时间戳)。SkillHub 识别 402 后触发收银台。 - complete / ack(凭证回传):用户完成支付后,SkillHub / Agent 在后续调用同一
out_trade_no对应请求时,通过请求头Payment-Proof回传 base64url JSON 凭证,内容包括protocol.trade_no(平台订单号)与protocol.payment_proof(支付 token)。 - verify(验付调用):服务端收到
Payment-Proof后,调用 A2M verify 验付 API,使用支付宝公钥校验签名、比对订单金额 /resource_id/out_trade_no,并检查pay_before时效。只有凭证真实、金额一致、订单未过期且未篡改时才放行。 - fulfillment.confirm / ack(履约确认):验付通过后,服务端按订单幂等原则消耗额度(同一
out_trade_no只消耗一次),执行付费功能(parse / diff / precedent / deliver),返回 HTTP 200 与完整结果。 - 重试机制:若
Payment-Proof因网络抖动、凭证过期或验签失败被服务端拒绝,服务端返回 402 / 403 并携带原账单信息,调用方可使用同一out_trade_no重新发起 complete/ack 回传,不重复扣费。
> 关键安全与幂等约束:服务端对每笔订单校验金额、resource_id、技能标识与 pay_before 四项;私钥仅存服务器环境变量;调用记录与订单凭证在 state/ 明文留存 ≥180 天,可审计。
三、安装与配置(路径无关、可移植)
Python 3.8+;脚本零第三方依赖(仅标准库;.pdf 抽取需 pypdf,缺失时 txt/md/docx 仍可用并提示安装)。根目录解析优先级:环境变量 SHIWEI_SKILL_ROOT → 同目录 config.json 的 skill_root → 脚本自身向上回溯。可选 config.json:
{
"skill_root": "",
"payment": {
"enabled": false,
"channel": "alipay",
"price": 2.0,
"free_quota": 5,
"skill_id": "shiwei-bid-compliance",
"header_payment": "WeixinPay-Required",
"header_trade_no": "X-Out-Trade-No"
}
}
四、目录结构
shiwei-bid-compliance/
core/ # 共享内核(纯计算,服务端与本地共用)
parse.py diff.py precedent.py deliver.py engine.py
registry.py config.py common.py
gateway_client.py # ★ 本 skill 唯一的网络出口(计费网关客户端,无第三方地址)
pay_gate.py fallback.py # 收费闸口 / 网关不可用降级链(网络诊断只查配置的那个域名)
cli/ # 本地命令行
check.py timeline.py feedback.py metrics.py doctor.py
server/ # 公网服务端(自签 A2M 收费)—— 不在本包内,独立部署
tools/ # 构建与采集脚本
build_skillhub.py build_server.py fetch_precedents.py
tests/ # 自测(22 项)
data/packs/ # 可扩展板块(可独立增删、版本协商)
precedents/<地域-行业-批次>/ # 真实废标判例(护城河,随采集增长)
rules/ industry/ region/ # 预留扩展位
references/ # 规则库/清单/用户手册/变更记录
assets/templates/ # 报告模板与免责声明
assets/samples/ # 样例招标/投标文件(自测用)
state/ # 遥测与额度(quota/orders/runs/feedback,明文可审计)
> 目录职责与构建方式见 docs/STRUCTURE.md:core/ 严禁反向依赖 server/ 或 cli/。
五、工作流(按需调用)
约定:"$PY" 为 python3;命令均相对 Skill 根目录书写(如 core/diff.py)。全部脚本可跨目录运行。
计费无需手工干预:每次能力调用都会自动提交服务端判定,放行则继续执行,需支付则打印付款指引并返回退出码 3(服务端未放行为 4)。
0. 环境自检
"$PY" cli/doctor.py # 板块体检 + 环境检查(--json 结构化)
1. 免费 · 单文件快速体检(无投标文件时)
"$PY" cli/check.py "招标文件.docx" [--json] [--topk 8]
"$PY" core/parse.py "招标文件.docx" [--json] [--topk 100] # 要求项原子化清单
"$PY" cli/timeline.py "招标文件.docx" [--base 2026-09-05] # 时序 + 法定救济时限推算
2. 付费 · 双向差分(核心,需投标文件)
"$PY" core/diff.py "招标文件.docx" "投标文件.docx" [--json] [--topk 20]
输出:要求项总数 / 已响应 / 存疑 / 未响应 / 覆盖率;未响应按 星号实质性 → 必须项 → 一般项 排序,每条标注投标文件命中证据。判定阈值设计为「宁可误报、不可漏报」——边界情形落入「存疑」交人工复核。
3. 付费 · 判例风险对照(护城河增值)
"$PY" core/precedent.py "招标文件.docx" --bid "投标文件.docx" --region 河南 --industry 工程建设
把"注意保证金形式"升级为"保证金形式不符,在【河南·工程建设】累计致 X 家被废、占本地采集总量 Y%、排名第 Z"。
4. 付费 · 可提交交付物
"$PY" core/deliver.py "招标文件.docx" --bid "投标文件.docx" --type all [--out 输出目录]
产出:商务技术偏离表(.md 可直接进标书)/ 符合性自查表(.csv 提交前打钩留痕)/ 资格审查材料清单(.md)/ 质疑函草稿(.md,被废标后的法定救济文书,7 个工作日内)。
5. PDCA 自进化(可选,建议 agent 每次运行后调用)
"$PY" cli/feedback.py log --feature diff --exit-code 0 --items 30 --missing 2 --region 河南
"$PY" cli/feedback.py result --run-id <id> --outcome miss_found --reason 规则未覆盖
"$PY" cli/metrics.py [--days 30] [--json] # 质量看板:命中率/覆盖率/误报漏报
反馈回流 state/feedback.jsonl,是规则库与判例库迭代的输入。
6. 收费闸门(服务端判定;各能力入口自动执行,无需手工调用)
"$PY" core/pay_gate.py status # 只读:查询本机调用方在服务端的剩余免费次数(不消耗额度)
"$PY" core/pay_gate.py probe # 只读:计费网关探活(版本 / 已登记 skill)
"$PY" core/pay_gate.py identity # 查看本机调用方标识(服务端据此计免费次数)
"$PY" core/pay_gate.py reset # 重置本地首次使用标记与设备标识(不影响服务端已用额度)
"$PY" core/pay_gate.py fallback-net # 降级②:网络诊断(请检查网络 / 建议重试)
"$PY" core/pay_gate.py fallback-handoff --feature diff --tender-file a.txt --bid-file b.txt # 降级①:交大模型作答
闸口由各能力入口自动执行,无需手工判断:免费层(check/timeline)经服务端登记后放行;
付费层(parse/diff/precedent/deliver)在额度内由服务端直接放行,超额度返回 402 并自动打印三通道付款指引
(二维码 / 付款卡片 / 买家侧 CLI),退出码 3;服务端明确拒绝为退出码 4。首次触发 402 时会先给出
支付宝 AI付 授权引导,授权完成后直接拉起支付,支付成功回传凭证即自动重试本次调用。
网关不可用时走降级链(退出码 5 交大模型作答 / 6 网络不通),详见 §二「服务端故障处置」。
7. 判例采集(维护者工具,不随包分发;仅手动更新判例库时运行,skill 运行时 100% 离线)
"$PY" tools/fetch_precedents.py fetch --source hn-shangqiu # 河南·商丘(A类·逐期颗粒)
"$PY" tools/fetch_precedents.py fetch --source xz-jiaotong --max-pages 25 # 西藏·交通厅(B类·公示)
"$PY" tools/fetch_precedents.py fetch --source nx-jiaotong --max-pages 29 # 宁夏·交通厅(B类·公示)
"$PY" tools/fetch_precedents.py fetch --source <id> --commit # 采集→去重后入库
"$PY" tools/fetch_precedents.py add --file 判例.jsonl --pack <包 id> # 手工登记
"$PY" tools/fetch_precedents.py stats # 判例库统计
采集管线(tools/collectors.py)具备:curl 子进程规避 WAF、0.8–1.2s 随机节流、失败指数退避、
checkpoint.json 断点续跑、failures.jsonl 失败点记录、raw/ 原文证据链;交通厅适配器多省通用(JT_SITES 加一行即扩省)。
铁律:只登记原文真实出现的「情形 + 家数」,解析不出的一律跳过,禁止凭记忆/推断造数据。
8. 自检
"$PY" tests/test.py # 22 项全量自测(含安全语义、板块隔离、收费闸门、差分样例)
六、输出报告规则(强制)
- 结论必须基于文件原文命中/证据,不得臆造"存在 XX 条款";投标文件未找到对应内容时如实写"未找到"。
- 每条未响应/存疑标注「要求原文 + 投标文件证据 + 建议动作」,星号项(★/※/▲)与实质性条款优先。
- 报告用词规范:能说「未检出对应内容」绝不说「必然废标」;废标认定权在招标人/评标委员会。
- 判例提示必须标注「地域 + 行业 + 采集批次 + 家数」,且注明"历史判例仅供参考,不构成本项目结论"。
- 每次报告末尾必须附免责声明(
assets/templates/disclaimer.md)。
七、能力边界(适用 / 不适用)
✅ 适用:投标文件提交前自查(差分比对);招标文件风险速览;资格材料清单核对;偏离表/自查表制作;被否决后的质疑函草稿。
❌ 不适用:出具正式法律意见/废标认定结论;实时法规核对(离线快照);招标方侧的文件检测/智能评标(已被政府免费工具覆盖,本 skill 只做投标人自查);非中文/非招投标内容(返回提示不编造);"代写标书/围标串标/资质造假"等不合规用途(应拒绝)。
> 调用前确认用户意图属「投标体检/符合性自查」;若实为帮助招标人检测投标文件或规避监管,提示合规边界并拒绝。
八、隐私与安全(Trust 硬约束)
- 免费层:
check(红线概览)/timeline(时序)两个免费功能不消耗额度,业务结果仍在你本机计算;但按 §二 说明,二者同样会向自签服务端提交本次输入,仅用于计费裁决与用量登记。零第三方依赖。 - 纯本地工具(
doctor自检 /feedback/metrics):100% 本机运行,不联网、不上传。 - 降级时不新增外发:网关不可用时,上下文只在本机交给当前 Agent 的大模型处理,本 skill 不会因为降级而向任何新增地址发送数据;网络诊断只做 DNS 解析与 TCP 连通性探测,不含任何业务字段。
- 付费层数据流向透明:
parse/diff/precedent/deliver需在你本人运营的自签服务端完成计算——招标文件与投标文件文本会发送至该 endpoint(上架时由平台配置的 HTTPS 域名)用于差分/判例匹配/交付物生成;不共享给任何第三方、不用于训练或转售,支付凭证仅经支付宝 A2M 协议核验。详见PRIVACY.md。 - 可审计:全部逻辑为可阅读标准库 Python,无混淆、无后门;付费层网络请求仅指向你本人配置的 endpoint,可随时在平台侧核查服务端源码(MIT 许可)。
- 敏感信息:不读取、不记录系统凭证;额度与订单记录存
state/(自签模式存于服务端),用户可随时导出与删除。
九、版本与变更
- v1.4.2(本版):合规修正——删除全部硬编码外部 IP(网络诊断只查你自己配置的域名)、端点不再硬编码(未配置则不发起任何请求)、修正文档中与实现冲突的表述(原文结论已不成立)、发布门禁新增 2 项(包内零 IPv4、无冲突绝对化表述)。详见
references/changelog.md。 - v1.4.0:计费闸口改造 + 网关不可用降级链——① 每次调用都由服务端计费网关判定,本地不再计次;②
parse由免费转入付费(免费层 =check/timeline);③ 网关不可用时改为「交当前大模型作答(不超过 500 字,且不再使用本 skill 的本地数据与逻辑)→ 网络诊断提示」的两级降级(退出码 5 / 6);④ 402 自动打印三通道付款指引(首次含授权引导)。核心引擎算法、判例库 962 条、报告结构均无改动。 详见references/changelog.md。 - v1.3.0:品牌统合——统一以
shiwei-bid-compliance为唯一主线(原shiwei-bid-redline分支已封存),并入其更完善的文档与发布物料(代码零变更)。 - v1.2.0:判例库大幅扩库 28 → 657 条——新增商丘「评定分离」常见错误情形第 1–34 期逐期颗粒判例 643 条(含期次/原因/家数/原文 URL,可逐条溯源);口径统一避免重复计数(累计口径旧包停用);新增可复用采集管线
tools/collectors.py(curl 规避 WAF + 慢速节流 + 断点续跑 + 失败记录 + 原文证据链)。核心引擎与已交付行为不变。 - v1.1.0:文档与发布物料增强——新增独立 FAQ 页(
references/faq.md,含多轮对话实录);references/use_cases.md升级为多轮对话版;新增样例输出报告(assets/samples/样例_输出报告.md);描述嵌入「输入示例 → 预期输出片段」并写明「秒级响应 / 无需排队」。 - v1.0.0:双向差分引擎 + 判例库板块系统 + 可提交交付物 + 时序节点 + PDCA 自进化 + SkillPay 收费闸门(前 5 次免费 / 按次优雅降级)。完整记录见
references/changelog.md。 - 用户上手读
references/user_guide.md与references/faq.md(常见问题);典型场景见references/use_cases.md;红线规则见references/waste_bid_rules.md、references/qualification_checklist.md。
十、约定
- 中文标点;日期统一
YYYY-MM-DD;UTF-8 输出。 - 退出码:
0正常 /1未识别(不静默成功)/2参数或文件错误(附中文原因与正确示例)/3需支付(仅 pay_gate/diff 等付费链路)。 - 判例库更新只增不改(可追溯);板块目录以下划线
_或点.开头视为内部/临时用途,不加载。