— 《资治通鉴》+二十六史+《清史稿》

二十六史全文库

Skill · 功能全览 | 27 部 · 4408 卷 · 246.9 MB 全文 · 先检索,再回答。每一项都是一问一答:提问 → 检索 → robot 答复 → 核验。

01 · 原文检索与证据块

原文检索

群里的一次提问 · 真实记录(节选)
@robot 大索貌阅
检索 · tools\rag.py · 本库实测
$ python tools\rag.py 大索貌阅
# rag query 「大索貌阅」 → 源 data|扫描 4408 文件 / 246.9 M字|候选 2 文件|0.35s
[E1] 《隋书·卷二十四·志第十九》 …/024_卷二十四·志第十九.md:35-35 [原文]
「…高祖令州县大索貌阅,户口不实者,正长远配,而又开相纠之科。大功已下,兼令析籍,各为户头,以防容隐。…」
[E2] 《资治通鉴·卷176》(陈) …/资治通鉴_卷176.md:161-161 [原文]
「…隋主命州县大索貌阅,户口不实者,里正、党长远配;大功以下,皆令析籍,以防容隐。…」
=== 判定:有据(2 段|关键词覆盖 1/1) ===
引用纪律:只抄上面标 [原文] 的段,逐字照录、不改写;[译文] 段是后人所译,引用须注明“译文”;[待核] 段务必先 Read 原文件复核再引。
robot 答复 · 已过库内核验
R
robot

大索貌阅是隋代核查户口的办法。

• 《隋书·卷二十四·志第十九》:「高祖令州县大索貌阅,户口不实者,正长远配,而又开相纠之科。大功已下,兼令析籍,各为户头,以防容隐。」

• 《资治通鉴·卷176》所记相合:「隋主命州县大索貌阅,户口不实者,里正、党长远配;大功以下,皆令析籍,以防容隐。」

• 两书用词略有出入:《隋书》作正长,《资治通鉴》作里正、党长。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 2 条|《》书名 4 处
# 结论:无 FAIL(WARN 0)
02 · 通称改写·异体字·避讳

通称与避讳

示例提问
@robot 讲讲乌台诗案
检索 · tools\rag.py · 本库实测
$ python tools\rag.py 乌台诗案
# 通称改写:「乌台诗案」是后世通称,本库原文不用此词;
# 已同时按史文用词检索 → 逮赴台狱、御史狱
[E1] 《宋史·卷三百三十八·列传第九十七》 …/338_…列传第九十七.md:47-47 [原文]
「…御史李定、舒亶、何正臣摭其表语,并媒蘖所为诗以为讪谤,逮赴台狱,欲置之死…」
$ python tools\rag.py locate 刘渊 --book 05晋书文白 --count book
1 05晋书文白
$ python tools\rag.py locate 元海 --book 05晋书文白 --count book
132 05晋书文白
→ 唐修《晋书》避李渊讳:人名多写作「元海」
robot 答复 · 已过库内核验
R
robot

乌台诗案是后世通称,本库原文不用此词;我按史文用词逮赴台狱检索,查到:

• 《宋史·卷三百三十八·列传第九十七》:「御史李定、舒亶、何正臣摭其表语,并媒蘖所为诗以为讪谤,逮赴台狱,欲置之死,锻炼久之不决。神宗独怜之,以黄州团练副使安置。」

库里只记经过与处置,起因以外的评说我不另行推断。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 1 条|《》书名 1 处
# 结论:无 FAIL(WARN 0)
03 · 人物字号与专传定位

字号与专传

示例提问
@robot 苏轼字什么?陈玉成有传吗?
检索 · tools\rag.py · 本库实测
$ python tools\rag.py 苏轼 --fast
# 03-人物出现索引|★本传:苏轼 = 20宋史文白\现代文\338_卷三百三十八·列传第九十七.md
# 02-人物字号索引|字号:苏轼 = 子瞻
[E1] ★本传 《宋史·卷三百三十八·列传第九十七》 …:3-3 [原文]
$ python tools\rag.py locate 陈玉成 --first
索引:03-人物出现索引 有此条目
起读(无专传 → 列传里提及最密的卷):26清史稿文白·卷四百七十五|16 处
注意:全库 93 处里没有一处开传式起句——此人无专传,只在他人纪传里被提及。
robot 答复 · 已过库内核验
R
robot

• 苏轼字子瞻。《宋史·卷三百三十八·列传第九十七》:「苏轼,字子瞻,眉州眉山人。」

• 陈玉成:本库没有他的专传,全库 93 处都是在他人纪传里被提及,最密的是《清史稿·卷四百七十五·列传二百六十二》:「先是李侍贤常与陈玉成、李秀成谋解金陵围,犯江西、福建。」

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 2 条|《》书名 2 处
# 结论:无 FAIL(WARN 0)
04 · 同名异代消歧

同名异代

示例提问
@robot 元嘉年间发生了什么
检索 · tools\rag.py · 本库实测
$ python tools\rag.py locate 元嘉 --count book
# 查询「元嘉」→ 变体 元嘉
1658 14南史文白
488 06宋书文白
120 07南齐书文白
89 16旧唐书文白
71 00资治通鉴
52 13隋书文白
51 17新唐书文白
→ 一审锚点:命中 06宋书/14南史 ⇒ 刘宋
# 规则:宋=刘宋 420–479《宋书》/赵宋 960–1279《宋史》;汉、唐、周、魏、齐、梁、晋、金同理
# 通鉴「宋纪」=刘宋,不是赵宋;首次出现必加限定语
robot 答复 · 已过库内核验
R
robot

先定政权:「元嘉」在库里主要落在《宋书》《南史》,指刘宋文帝年号(不是赵宋);东汉桓帝也用过「元嘉」,若问的是后者请告诉我。

检索到的刘宋元嘉记载(仅为片段,不是全貌):

《宋书·卷三十·志第二十》:「宋文帝元嘉二十一年六月,京邑连雨百余日,大水。」

《宋书·卷三十一·志第二十一》:「元嘉二十七年八月,不雨,至二十八年三月。时索虏南寇。」

要通读请从《宋书·卷四·本纪第四·文帝》起。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 2 条|《》书名 5 处
# 结论:无 FAIL(WARN 0)
05 · 跨书互证·帝王本纪定位

互证与本纪

示例提问
@robot 李白见于哪几卷?杨坚的本纪在哪?
检索 · tools\rag.py · 本库实测
$ python tools\rag.py locate 李白 --count juan --book 16旧唐书文白,17新唐书文白
8 16旧唐书文白·卷一百九十下
8 17新唐书文白·卷二百二
4 16旧唐书文白·卷一百九十二
4 17新唐书文白·卷二百一
$ python tools\rag.py 杨坚 --fast
# 帝王本纪锚点(07-帝王本纪索引):命中 2 卷
# 隋·高祖|《隋书·卷一·帝纪第一·高祖上》|年号 大统、大象、大定、开皇
# 自称行:高祖文皇帝,姓杨氏,讳坚,弘农郡华阴人也。…
# 北朝·隋高祖|《北史·卷十一·隋本纪上第十一》
→ 02/03 不收帝王;07 索引按本名、庙号、年号定位本纪卷,引用仍读原文
robot 答复 · 已过库内核验
R
robot

李白:两唐书各有本传,记载有出入。

• 《旧唐书·卷一百九十下·文苑下》:「李白,字太白,山东人。少有逸才,志气宏放,飘然有超世之心。」

• 《新唐书·卷二百二·列传第一百二十七》:「李白,字太白,兴圣皇帝九世孙。」

杨坚(隋文帝)的本纪:

• 《隋书·卷一·帝纪第一·高祖上》:「高祖文皇帝,姓杨氏,讳坚,弘农郡华阴人也。」

• 《北史·卷十一·隋本纪上第十一》也有他的本纪,可互证。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 3 条|《》书名 4 处
# 结论:无 FAIL(WARN 0)
06 · 表卷·世系·宰辅年表

表卷与世系

示例提问
@robot 张居正哪年入阁?
检索 · tools\rag.py · 本库实测
$ python tools\rag.py locate 张居正 --source ocr --limit 3
ocr|224册|第169页·06-表卷OCR机读稿(简体)/224_第十一冊_卷一〇七至卷一一二.md:2183
张居正二月晋吏部左侍郎兼东阁大学士入四月晋礼部尚书武英殿大学士
# 命中 1 处、1 个文件(0.24s)
→ 机读稿恒判 [OCR稿],只作检索线索,不能当原文引
# 册号速记:宋史宰辅表 161|元史宰相年表 207|明史宰辅年表 224|清史稿大学士年表 262
robot 答复 · 已过库内核验
R
robot

张居正入阁在隆庆元年二月。

• 《明史·卷十九·本纪第十九》:「礼部侍郎张居正为吏部左侍郎兼东阁大学士,预机务。」

另:06 索引的《明史宰辅年表》机读稿(224 册第 169 页)也有同月晋东阁大学士的行,但它是机器识别的草稿,只作检索线索,不当原文引用。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 1 条|《》书名 2 处
# 结论:无 FAIL(WARN 0)
07 · 案件·制度索引

案件与制度

示例提问
@robot 空印案是怎么回事
检索 · tools\rag.py · 本库实测
$ python tools\rag.py 空印案
# 通称改写:「空印案」是后世通称,本库原文不用此词;
# 已同时按史文用词检索 → 空印事、空印纸、空印文书
[E1] 《明史·卷九十四》 …/094_卷九十四_文白.md:91-91 [原文]
「…先是,十五年空印事发。每岁布政司、府州县吏诣户部核钱粮、军需诸事,以道远,预持空印文书,遇部驳即改,以为常。…」
[E2] 《明史·卷一百三十九·列传第二十七》 …/139_卷一百三十九_钱唐_文白.md:147-147 [原文]
「…士利乃为书数千言,言数事,而于空印事尤详。曰:「陛下欲深罪空印者,恐奸吏得挟空印纸,为文移以虐民耳。…」
# 08-案件索引:覆盖 254 案,分 10 节(秦→清),每条 1–2 处实测出处
# 本库未载:哭庙案、苏报案、杨月楼案、太原奇案、宋教仁案……命中即答「本库未载」
robot 答复 · 已过库内核验
R
robot

空印案是后世通称,史文作空印事。

• 《明史·卷九十四》:「先是,十五年空印事发。每岁布政司、府州县吏诣户部核钱粮、军需诸事,以道远,预持空印文书,遇部驳即改,以为常。及是,帝疑有奸,大怒,论诸长吏死,佐贰榜百戍边。」

同卷接着记:「宁海人郑士利上书讼其冤,复杖戍之。」

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 2 条|《》书名 1 处
# 结论:无 FAIL(WARN 0)
08 · 抽签讲史

抽签讲史

群里的一次提问 · 真实记录(节选)
@robot 给我讲一个历史故事
R
robot

《辽史·卷一百一十四·列传第四十四》。签号#033651。

萧特烈,字讹都碗,是遥辇洼可汗宫分人。乾统年间入宿卫……天祚决意渡河奔往西夏,从臣恳切劝谏不听,人情惶恐惧怕不知如何是好。

特烈暗中对耶律兀直说:「事态如此,亿兆离心,正我辈效节之秋。不早为计,奈社稷何」

……不到三十天,与朮烈一起被乱兵所杀。

检索 · tools\pick_story.py · 本库实测
# 签号 = sha1(书名|路径|起止行)[:6]
$ pick_story.ticket("21辽史", ".../114_卷一百十四·列传第四十四_译文.md", 38, 45)
'033651' OK 与回答首行 #033651 一致
窗口 38–45 首句:萧特烈,字讹都碗,遥辇洼可汗宫分人。
→ 签号能重算:这就是「真的去查了」的凭证
08 · 抽签讲史

抽签器

示例提问
@robot 讲个故事
检索 · tools\pick_story.py · 本库实测
$ python tools\pick_story.py --no-log
抽签——分层等概率;候选书 24 部 / 18418 窗
■ 05晋书文白
签号 #19FFF2 ← 讲史回答的首行请原样带上此签号
路径 …\073_《晋书》文白对照·卷七十三·列传第四十三.md
行号 95–104(共 10 行)
首句 希字始彦。初拜秘书郎,累迁司徒右长史、黄门侍郎、
一轮一签 本条回答讲完这一个即止:不要自问自答续讲第二个故事
# 窗口中位数仅 8 行,须前后补全:讲清是谁、经历了什么、结局如何
robot 答复 · 已过库内核验
R
robot

《晋书·卷七十三·列传第四十三》。签号 #19FFF2。

庾希,字始彦,是庾冰之子,曾任徐、兖二州刺史。桓温深忌其弟庾倩,海西公被废后,诬陷庾倩、庾柔为武陵王党羽而杀之。庾希闻难,与弟庾邈、子庾攸之逃进海陵的沼泽。后来他与武沈之子武遵在海滨聚众,夜入京口城,战败被擒:「希、邈及子侄五人斩于建康市,遵及党与并伏诛,唯友及蕴诸子获全。」

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 1 条|《》书名 1 处
# 结论:无 FAIL(WARN 0)
$ python tools\pick_story.py --check 答复.txt
# 结论:合格(仅 1 处 WARN:签号为试抽,未入台账)
09 · 引文核验 verify

引文核验

群里的一次提问 · 真实记录(节选)
@robot 讲一下黄肠题凑
R
robot

黄肠题凑是汉代高级墓葬制度,主要见于《汉书·梅福传》等史料记载。

检索 · tools\rag.py · 本库实测
$ python tools\rag.py verify 答案.txt # 把回答里的出处和引文存成稿件
OK 引文「梓宫、便房、黄肠题凑各一具」→ 《汉书》…/077_卷六十八·霍光金日磾传第三十八….md:79-79(原文)
FAIL 答案把引文系于《汉书》的「梅福传」,而该卷此段实际篇名为「霍光金日磾传第三十八」——传名与实际不符(出处对不上,须改成真篇名)
$ python tools\rag.py verify 示例答案.txt # 示例:魏徵的话记给李勣
FAIL 引文「夫以铜为镜…」答案记在「李勣」名下,但它命中处(《旧唐书·卷七十一》…/071_卷七十一_魏徵_文白.md:279,篇名「列传第二十一」)连上下各 4 行都没有此人独立成词的记载——疑似张冠李戴
# 结论:FAIL —— 必须修改后重跑
改正后重发的答复 · 已过库内核验
R
robot

黄肠题凑见于《汉书·卷六十八·霍光金日磾传第三十八》,记霍光去世时所赐丧葬之物:

• 「梓宫、便房、黄肠题凑各一具,枞木外臧椁十五具。东园温明,皆如乘舆制度。」

(我先前把这段记错了篇名,核验发现与库内不符,已按真篇名改正。)

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 1 条|《》书名 1 处
# 结论:无 FAIL(WARN 0)
10 · 猜人物

猜人物

示例提问
@robot 猜人物:羯人;与门臣祭酒有关;说过「脱遇光武,当并驱于中原」
检索 · tools\rag.py · 本库实测
$ python tools\rag.py 谜 羯人 门臣祭酒 "当并驱于中原"
# ① 锚度:「羯人」11 文件·窄|「门臣祭酒」3 文件·独有引语级|「当并驱于中原」1 文件·独有引语级
# ③ 候选(全部来自语料原文):
★ 石勒(段内 3·距 15 字)
★ 张良(段内 2·距 16 字)
★ 彭越(段内 1·距 18 字)
$ python tools\rag.py 对照 石勒 "当并驱于中原" 羯人
[1] √ 「当并驱于中原」共现 2 段 《晋书·卷一百五·载记第五》:117 [原文]
[2] √ 「羯人」共现 7 段
# 反证栏:× 0 条、△ 0 条(对不上必须写出来;全打勾≠真核对)
→ 结论建议:全部线索共现——「石勒」通过;仍须与其他候选比,再过 verify
robot 答复 · 已过库内核验
R
robot

答案:石勒

线索对照:羯人√;门臣祭酒√;「当并驱于中原」√。无不符。

• 《晋书·卷一百五·载记第五》记石勒酒酣时对徐光说:「朕若逢高皇,当北面而事之,与韩彭竞鞭而争先耳。脱遇光武,当并驱于中原,未知鹿死谁手。」

候选里的张良、彭越只是同段被提到,不是说话人。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 2 条|《》书名 1 处
# 结论:无 FAIL(WARN 0)
$ python tools\check_guess.py 答复.txt
# 结论:合格(形态①全中:已声明无不符)
11 · 辨伪六查

辨伪

示例提问
@robot 沈括拜访王安石论新法,是真的吗?
检索 · tools\factcheck.py · 本库实测
$ python tools\factcheck.py 稿件.txt --person 沈括
# 事实核查:沈括(生约 1031 – 卒 1095)
FAIL 第1行命中错误用词「沈括去拜访王安石,与他论新法。王安石」→ 应作:二人私下会面论新法,正史全无此载;史载沈括「希安石意」(迎合)…
FAIL 第1行命中错误用词「换一批人」→ 应作:现代治理话术,宋人无此语;史实是「遣提举官四十余辈,颁行天下」…
# 结论:存在 2 处硬错,必须改
robot 答复 · 已过库内核验
R
robot

结论:库里查不到沈括与王安石私下会面论新法的记载,这个说法不能当史实讲。

• 最接近的原文,《宋史·卷四百七十一·列传第二百三十》:「三司使沈括谒宰相吴充论免役法,确言括为近臣,见朝廷法令未便,不公言之而私语执政,意王安石既去,新法可摇耳。」

• 冲突点:谒见的是宰相吴充,不是王安石,且此时王安石已去位;另《宋史·卷一百八十一·志第一百三十四》只载他在盐法上「括希安石意」(迎合)。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 2 条|《》书名 2 处
# 结论:无 FAIL(WARN 0)
$ python tools\factcheck.py 答复.txt --person 沈括
# 结论:无硬错(0 处待人工确认)
12 · 事实卡与写史双闸

事实卡与双闸

示例提问
@robot 帮我写一段岳飞的故事
检索 · tools\factcheck.py · 本库实测
$ python tools\factcheck.py 稿件.txt --person 岳飞
# 事实核查:岳飞(生约 1103 – 卒 1142)
FAIL 第1行命中错误用词「精忠报国」→ 应作:《宋史》本传作「尽忠报国」…365·115;「精忠」为后世讹传
FAIL 第1行命中错误用词「岳飞谋反」→ 应作:「谋反」是万俟卨等诬构(365·115);本传明载「阅实无左验,铸明其无辜」…
INFO 可用的正史支点:郾城大捷|365·91
INFO 可用的正史支点:背刺「尽忠报国」四大字|365·115
# 结论:存在 2 处硬错,必须改
robot 答复 · 已过库内核验
R
robot

据《宋史·卷三百六十五·列传第一百二十四》写,不添虚构情节:

• 郾城之战,金兵逼城,岳飞说:「金人伎穷矣。」随后「乃日出挑战,且骂之」。

• 朱仙镇大破兀术后,他「一日奉十二金字牌」,愤惋泣下,东向再拜:「十年之力,废于一旦。」

• 受审时,「飞裂裳以背示铸,有“尽忠报国”四大字,深入肤理」。

若要加对话或场景,我会标【虚构】并附史实支点。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 6 条|《》书名 1 处
# 结论:无 FAIL(WARN 0)
$ python tools\factcheck.py 答复.txt --person 岳飞
# 结论:无硬错(0 处待人工确认)
13 · 边界:查不到就说查不到

查不到就说

示例提问
@robot 戒石铭是什么
检索 · tools\rag.py · 本库实测
$ python tools\rag.py 戒石铭
# rag query 「戒石铭」 → 源 data|扫描 4408 文件 / 246.9 M字|候选 0 文件|0.35s
# 零命中关键词:戒石铭(连繁简/异体变体都没有)
=== 判定:无据(0 段) ===
本库未见「戒石铭」。
禁止凭记忆作答。应回答:本库未载/正史无此记载,并说明已检索的关键词与范围。
不要再自行换词反复全库重试(每换一次就重扫 247MB)。
robot 答复 · 已过库内核验
R
robot

本库未载「戒石铭」。

我已用「戒石铭」检索全库(27 部、4408 个文件),零命中,连繁简、异体变体也没有,所以不凭记忆作答。

若您能给朝代或人物线索,我可以换成史文用词再查一次。

核验 · 本库实测
$ python tools\rag.py verify 答复.txt
# 抽取:引文 0 条|《》书名 0 处
# 结论:无 FAIL(WARN 0)
14 · 自检与维护

自检与维护

检索 · tools\_selftest_report.txt(随发布包附带)|check_dupnames.py(本库实测)
# 索引体检报告(快档 --quick),随发布包附带:
OK 00-目录索引.md(120 行)
OK 02-人物字号索引.md(42188 行)
OK 03-人物出现索引.md(13243 行)
OK 04-故事精选索引.md(19803 行)
OK 05-卷名总表.md(5258 行)
OK 06-表卷与原件索引.md(222 行)
OK 体检未动抽签台账(_draw_log.md / story_log.md 前后字节一致)
结论:全部通过
$ python tools\check_dupnames.py
全库 md 文件 4408 | 重名 basename 89 种 | 涉及文件 187 个
50 种 11北齐书文白 + 12周书文白
17 种 06宋书文白 + 17新唐书文白
提醒:Glob 必须带书文件夹前缀;拿到的路径先看第一段文件夹名再定书名。