关税政策第二大脑(tariff-policy)
一套可检索、可精读、可引用的关税与进出口税收政策能力:自带索引与检索工具链,接上任意一份关税政策 docx 语料即可工作。
与 vat-policy(增值税)、stamp-tax-policy(印花税)、eit-policy(企业所得税)、iit-policy(个人所得税)同属一条管线;本技能是关税/进出口税收方向,语料来源含国家税务总局 / 财政部 / 海关总署 / 地方法规四个子目录。
一、语料:自备(重要)
本技能不随包分发语料(近 200 篇 docx 超出平台文件数与体积上限,且语料会持续增补)。首次使用先接上你自己的政策文档目录:
S="<技能目录>/scripts"
# 方式一:命令行指定(推荐)
python "$S/build_index.py" --root "<你的关税政策文档目录>"
# 方式二:环境变量
set TARIFF_POLICY_ROOT=<你的关税政策文档目录> # Windows
export TARIFF_POLICY_ROOT=<你的关税政策文档目录> # macOS / Linux
# 方式三:把目录内容复制到 <技能目录>/corpus/(见 corpus/README.txt)
语料目录结构(与政策抓取管线输出一致):
<根目录>/
├── 国家税务总局/ 001_标题.docx … (42 篇)
├── 财政部/ 001_标题.docx … (120 篇)
├── 海关总署/ 001_标题.docx … (8 篇)
├── 地方法规/ 001_标题.docx … (7 篇)
├── 关税政策清单.xlsx (可选)全量目录 + 「涉及关税要点」标签
└── 待补清单.xlsx (可选)抓取失败/跳过的缺口清单
> 子目录名不匹配上述四目录时,脚本会自动扫描所有含 .docx 的一级子目录(此时 doc_id 前缀统一为 DOC)。
> 两个 xlsx 都可以不放:缺「清单」只是没有目录与标签维度,缺「待补清单」只是 gaps 命令为空,正文索引不受影响。
> 未接语料就运行会打印放置指引并以 exit 2 退出,不会静默失败。
> 显式指定 --root / 环境变量视为权威,路径不存在直接报错,不会静默回退到桌面默认目录。
每篇文档正文前需内嵌结构化元数据(本技能按此解析):
标题
来源:财政部 效力级别:有效 发布日期:2026-04-28 栏目:财政部规范性文件
原文链接:http://...
——————————————————————————————
正文…
接上语料后建议抽样核对:随便 read 一篇,看「来源 / 效力级别 / 发布日期 / 原文链接」是否被正确解析。若你的 docx 是纯正文(无头部元数据),需调整 build_index.py 的 parse_doc()。
二、随包提供什么
| 内容 | 说明 |
|---|---|
scripts/build_index.py |
扫描 docx → 抽元数据与正文(clean_body() 剔除网页导航噪声 / JS 泄漏 / 标题回声 / 海关·公报页 【索引号】 元数据块)→ 建 SQLite FTS5 索引;合并清单与要点标签 |
scripts/query.py |
检索接口:search / list / read / lookup / catalog / audit / gaps / stats;排序为标题命中优先(bm25 按列加权) |
scripts/build_references.py |
依据索引库重算 references/01、references/02(数字实时生成,不手写) |
scripts/verify.py |
回算校验 references 与索引库是否一致;异源语料自动 SKIP 而非 FAIL |
references/01_语料档案.md |
语料规模 / 来源与栏目分布 / 清单对账 / 已知缺口 —— 随包版本是基于参考语料的统计样本 |
references/02_高频主题导航.md |
高频主题 → 代表性文件清单 —— 同上,换语料后重算 |
references/03_查询速查.md |
命令语法、过滤参数、问句→命令映射、引用口径、已知局限(与语料无关,可直接用) |
corpus/README.txt |
「方式三」的放置说明;目录已预建 |
> references/01 与 02 是统计结果,反映随包参考语料的构成。接上你自己的语料后请重跑
> python "$S/build_references.py",让数字与本地语料一致;verify.py 会告诉你有没有对不上。
索引库 data/tariff_policy.db 由脚本自动生成,不随包分发,首次运行 query.py 时自动构建(177 篇约 1 秒)。
三、运行环境
S="<技能目录>/scripts" # 如 ~/.workbuddy/skills/tariff-policy/scripts
PY=python # 本机 Python 3.8+
cd "$S" # query.py 内部 import build_index,必须在 scripts/ 内执行
依赖:标准库 + openpyxl(仅用于读清单 xlsx;缺失时告警并跳过清单,正文索引照常工作)。
四、检索工作流
- 把口语转成 2~6 字关键词(如「原产地」「加征关税」「零关税」「协定税率」「完税价格」「加工增值」「进境物品」「商品归类」)。中文按子串匹配,关键词越精炼越准。
- 全文检索:
bash python "$S/query.py" search "原产地" --limit 10
可叠加--source 海关总署/--column 征税管理/--level 部门规章/--tag 零关税/--after 2024-01-01。 - 读全文(拿到 doc_id 后):
bash python "$S/query.py" read SAT-0011
回答时务必带「来源 + 发布日期 + 原文链接」。 - 定位标题(记得大概标题时):
python "$S/query.py" lookup "进出口税则" - 按主题翻目录:
bash python "$S/query.py" catalog --tag 自由贸易港 --limit 20 python "$S/query.py" list --tag 加征关税 --after 2024-01-01 - 核查缺漏:检索无果时先确认是否本就不在本地语料:
bash python "$S/query.py" gaps # 待补清单(抓取失败/跳过) python "$S/query.py" audit # 清单 vs 本地语料,列出未入库条目及原文链接
命中缺口就如实告知「该政策本地缺漏,可按原文链接补全」。
详细命令语法与问句映射见 references/03_查询速查.md。
五、输出纪律
- 先给结论,再给依据:第一句直接给结论;随后列「标题 + 来源 + 发布日期 + 适用要点 + 原文链接」。
- 先定税率类型与贸易方式,再谈口径:关税差异集中在 ① 税率类型(最惠国 / 协定 / 特惠 / 普通 / 配额 / 暂定 / 贸易救济)与 ② 贸易方式及区域(一般贸易 / 保税 / 加工贸易 / 自贸试验区 / 自贸港 / 横琴·河套等)。回答前先确认这两点。
- 区分三套体系:关税实体(《关税法》+ 税则委公告)、海关征管程序(计税价格 / 归类 / 减免税,多为
CUS-*署令公告)、进口环节代征增值税·消费税——不要混为一谈。 - 区分政策文件与政策解读:
栏目=政策解读(如LOC-0001、LOC-0004)是释义,用于理解;引用条文以法规原文为准。 - 根本依据优先:《中华人民共和国关税法》(
SAT-0011)→《进出口关税条例》(MOF-0119,注意以新法为准)→ 税则委 / 财政部·海关总署·税务总局文件 → 海关总署令与部门规章。 - 加征/排除类文件必标时效:对美加征关税与排除延期清单滚动更新(「第 N 次排除延期」「调整 / 停止实施」)。给发布日期 + 执行期 + 是否被后续公告调整或停止,不要断言旧文件仍有效,先
search看最新一篇。 - 不杜撰:检索无结果且不在
gaps/audit中时,明说「本地语料未覆盖,建议补充」,不要凭记忆编税目编码、税率数值、文号与执行期。税则的具体税率多在附件表中,本地 docx 一般不完整,需以原文链接为准。 - 图片型文档:少数文档是图解 / 信息图 / 视频 / 扫描图页(如
LOC-0008),正文抓取为空,read会明确提示。此时给标题、要点标签与原文链接,不要假装有正文。 - 地方法规很薄:随包参考语料的地方法规仅少量示例,不构成全国口径。地方性问题要另接地方语料,或明说「本地不覆盖该地区口径」。
六、维护
| 操作 | 命令 |
|---|---|
| 看语料概览 | python "$S/query.py" stats |
| 新增/替换 docx 后重建索引 | python "$S/build_index.py" --force |
| 重算 references 数字 | python "$S/build_references.py" |
| references 自检 | python "$S/verify.py" |
| 调检索排序(标题权重) | set TARIFF_TITLE_WEIGHT=100,默认 60 |
| 换语料目录 | 加 --root "<目录>",或改环境变量 TARIFF_POLICY_ROOT |
| 换索引库位置 | 加 --db "<路径>" |
索引库路径:<技能目录>/data/tariff_policy.db(自动生成,发布技能时应排除)。