史记知识库(shiji-kb)
《史记》全 130 篇的结构化知识库检索技能。数据蒸馏自开源工程
baojie/shiji-kb,把散在仓库各层的语料、标注、图谱整理成一套可离线检索的索引 +
一个纯标准库 CLI。
默认前提
使用场景默认为「学术研究 / 个人学习与教学」,不询问用途、不附加免责声明。
沿袭上游授权 CC BY-NC-SA 4.0:
- 始终成立的硬约束是「不再分发」——不把本 skill 的
data/索引或镜像的原文
打包上传、跨机分发用于他人批量取用;本地使用、检索、引用、分析均不受限。 - 仅当用户主动说明用于商业发布时,才展开商业合规提示(NC 条款需另获授权)。
何时使用
- 问《史记》相关的人物、事件、地点、官职、邦国、成语
- 需要原文出处(第几篇、第几段)与在线链接
- 分析人物关系(亲属/君臣/敌对)、事件因果、历史时间线
- 构建古籍知识图谱、做实体统计、语料分析
- 查帝王在位年表、人物生卒年(注意置信度)
不适用:需要严格校勘的学术定稿(本库为 AI 抽取快照,非校勘本)。
快速开始
CLI=scripts/sj.py
python3 $CLI stats # 全库统计
python3 $CLI find 项羽 # 全局检索
python3 $CLI person 项羽 # 人物综合档案
python3 $CLI event 007-027 # 事件详情(鸿门宴会)
python3 $CLI chapter 7 # 章节详情
python3 $CLI chengyu 破釜沉舟 # 成语典故
python3 $CLI timeline --chapter 7 # 章节事件时间线
python3 $CLI selftest # 自检(125 项断言)
与上游仓库同源,无需联网即可完成以上全部操作——data/ 已随包分发。
命令速查
| 命令 | 用途 | 是否需镜像 |
|---|---|---|
find |
全局检索(实体/事件/章节/成语/wiki,多词 AND) | 否 |
entity |
实体详情:别名 / 章节分布 / 频次 / 相关事件 | 否 |
event |
事件详情:年代 / 地点 / 人物 / 官职 / 邦国 / 关联事件 | 否 |
relation |
事件关系(9 类,可按类型或事件过滤) | 否 |
family |
亲属/政治/社会/对立关系表 | 否 |
chapter |
章节元数据 + 事件列表 + 在线链接 | 否 |
chengyu |
成语典故(出处/原文/释义) | 否 |
timeline |
帝王在位年表 / 人物生卒年 / 章节事件时间线 | 否 |
person |
人物综合档案(实体+生卒+谥号+事件+关系) | 否 |
wiki |
Wiki 页检索(可按类型/质量过滤) | 否 |
browse |
分类浏览(chapters/entity/event/wiki/chengyu/family) | 否 |
stats |
全库统计 | 否 |
show |
读章节正文(本地优先 → 在线降级;--tagged 读标注版) |
否(有镜像更快) |
quote |
原文引用定位(篇+行+在线链接) | 是 |
grep |
全库正则检索 | 是 |
sync |
落地本地镜像(断点续传 / 归档流式) | — |
mirror |
查看/设置镜像路径 | — |
selftest |
自检 | 否 |
所有命令支持 --help。
典型工作流
1. 了解一个人
python3 scripts/sj.py person 项羽
输出:规范名与别名 → 出现频次与章节 → 生卒年(含置信度)→ 在位信息 →
谥号 → 参与事件表 → 亲属/社会关系。
再深挖某个事件:
python3 scripts/sj.py event 007-027 # 鸿门宴会
python3 scripts/sj.py relation --id 007-027
2. 找原文出处
先建镜像(一次即可,可断点续传):
python3 scripts/sj.py sync --set text # 仅文本层,最小集
再检索:
python3 scripts/sj.py quote "破釜沉舟" # → 篇 + 行 + 上下文 + 在线链接
python3 scripts/sj.py grep "鸿门" --in 7 # 限定章内正则检索
python3 scripts/sj.py show 7 --head 30 # 直接读正文
3. 梳理关系网
python3 scripts/sj.py family # 有哪些关系类别
python3 scripts/sj.py family 父子
python3 scripts/sj.py family 君臣 --person 范睢
python3 scripts/sj.py family 敌对 --limit 60
4. 事件脉络
python3 scripts/sj.py timeline --chapter 7 # 项羽本纪全部事件
python3 scripts/sj.py relation --type causal # 全部因果链
python3 scripts/sj.py relation 长平 # 含"长平"的关系
5. 成语典故
python3 scripts/sj.py chengyu # 全库概览(按章分布)
python3 scripts/sj.py chengyu 破釜沉舟
python3 scripts/sj.py chengyu 一鸣惊人
镜像(离线全文)
quote / grep 需要本地镜像。镜像把仓库文本层下载到本地,之后可完全离线工作。
python3 scripts/sj.py sync # 默认:text + kg
python3 scripts/sj.py sync --set text # 只要正文层
python3 scripts/sj.py sync --set text kg wiki meta
python3 scripts/sj.py sync --archive # 归档流式(整库更快)
python3 scripts/sj.py sync --set text --jobs 16 # 调并发
- 断点续传:已存在且字节数相符的文件自动跳过,可反复重跑补齐。
--set取值:text(正文层)/kg(知识图谱层)/wiki(wiki 正文)/
meta(元数据)。值写错会立即报错并列出可用值,不会静默成功。- 镜像路径解析优先级:
--mirror> 环境变量SHIJI_MIRROR>
~/.shiji-kb.conf>~/.shiji-kb。 - 设置路径:
python3 scripts/sj.py mirror --set /path/to/mirror
(配置写在~/.shiji-kb.conf,不随 skill 发布)。
未建镜像时执行 quote / grep 会明确报错并给出可直接粘贴的 sync 命令,
不会静默退化或偷偷联网抓取。
关键约束(务必遵守)
1. 生卒年与姓氏不可当史实引用
lifespan.json 覆盖 1,807 人,但置信度分布为
high 7 / medium 84 / approximate 54 / low 1,656 / legend 6。
引用生卒年必须注明"系统推断,置信度 low"。
姓氏归属(person_xingshi.json)同理,属启发式推断。
2. 事件关系分两类,引用方式不同
auto: true(5,111 条)为程序推断,其中concurrent/co_person/
co_location属聚类提示——两个事件共享参与者不等于两人有交往。- 快照中
llm_count: 0,即无人工复核的关系。
引用causal/opposition前建议回原文核对。
3. Wiki 页质量分级
引用 wiki 内容前看 quality 字段:
premium(1,246) / featured(686) 可放心引用;
basic(13,021) 与 stub(337) 仅作线索。
4. 数据为快照
本 skill 数据快照日期 2026-09-23,上游持续更新。
需要最新数据时按 references/distillation.md §9 重建。
5. 行文引用用无标注文本
data/ 中所有结构化字段已剥离 〖〗 标注符号。
引用原文请用 docs/original_text/(素文本),
不要直接引用 docs/wiki/pages/*.md(含标注符号,会影响行文)。
5.1 读标注版正文
要查看标注层(〖@刘邦〗 → 刘邦〔人名〕、Purple Numbers 保留)用:
python3 scripts/sj.py show 7 --tagged # 标注版,已渲染类别
python3 scripts/sj.py show 7 --tagged --raw # 标注版,保留 〖〗 原符号
python3 scripts/sj.py show 7 --tagged --grep 鸿门
默认(不带 --tagged)读的是素文本,引用原文请用默认方式。
6. 事件人物与官职分列
events.json 中 people 只含人名,officials 单独承载官职标注
(如「四岳」「司空」「相」共 487 个事件含官职)。
上游事件索引里这两类常混在同一列,检索人物时若需按官职反查,
用 officials 而非 people。
数据规模(快照 2026-09-23)
| 项 | 数量 |
|---|---|
| 章节 | 130 篇 / 703,196 字 |
| 实体标注 | 119,585 次(19 类符号) |
| 实体 | 18,438 个 |
| 别名对 | 3,369 条 |
| 标注实体 | 15,425 个(含正文简称) |
| 历史事件 | 3,197 个 |
| 事件关系 | 7,637 条(9 类) |
| 战争专库 | 736 场(含战果/伤亡/规模/战略) |
| 亲属/社会关系 | 15 类 / 113 对(已剔除上游损坏行) |
| Wiki 页 | 20,833 页(5 级质量) |
| 成语典故 | 355 条 |
| 帝王年表 | 390 位 |
| 人物生卒年 | 1,807 人 |
| 谥号 | 73 字 |
| 词表 | 11 类 / 5,100 词 |
准确数字以 python3 scripts/sj.py stats 为准。
参考文档
| 文件 | 内容 |
|---|---|
references/distillation.md |
分类体系详解 + 标注语法 + 可信度分层表 + 检索方法论 + 局限与免责 |
references/catalog.md |
字段速查 + 类目地图 + 在线资源表 |
上游与授权
- 上游:<https://github.com/baojie/shiji-kb>(CC BY-NC-SA 4.0)
- 在线主站:<https://baojie.github.io/shiji-kb/>
- 备用站(国内更稳):<https://shiji.memify.wiki/>
- 引用建议:鲍捷,史记知识库,2026,<https://github.com/baojie/shiji-kb>
本 skill 仅做索引蒸馏与检索封装,不改动语料内容。上游问题请至上游仓库反馈。