
提起AI 对话历史人物这个玩法圈子里已经不算新鲜了但我这次把目标锁定在东汉史学家班固身上之后事情变得有意思起来。班固和他的《汉书》在史学史上的地位太特殊了正是从他开始中国正史的书写从司马迁的纪传体通史转向了断代史并且明确用断代为史的方式构建了一整套关于王朝正统、制度沿革、文化传承的知识框架。用 AI 和班固对话本质上不是玩穿越而是在用信息时代的知识组织方法重新检视古人那套知识建构的逻辑。这个项目适合三拨人一是对历史感兴趣、想了解中国史学传统的读者二是做 AI 应用开发、尤其是做角色扮演和数字人讲解场景的技术人员三是对知识管理、知识图谱构建有好奇心的朋友。整个项目从构思到落地我踩了不少坑也梳理出了一些值得分享的方法。这篇文章就把这些经验完整记录下来从为什么选班固、怎么把断代史法翻译成 AI 系统设计到搭建过程、实战翻车现场最后聊几句关于文化传承的思考。1. 为什么选班固史学体系里的一个分水岭1.1 从通史到断代史班固到底改了什么司马迁的《史记》是通史从传说中的黄帝一直写到汉武帝时间跨度两千多年。但班固写《汉书》时做了一个影响中国史学近两千年的决定只写西汉一朝。这个断代为史的做法在当时看起来像是格局缩小了可放到知识建构的角度看反而是一次非常重大的方法论升级。通史的难点在于时间跨度太长事件、人物、制度在几百年间不断流变书写者必须有足够统一的历史观来统帅全局否则很容易写成流水账。而断代史把时间边界收缩到一个王朝的兴衰周期之内历史叙述就可以聚焦在政权更迭、制度设计、君臣关系这些具体要素上史料的组织和解释效率一下子高了起来。班固不是简单地截取一段而是在这个边界内建立了一套自洽的知识分类体系。《汉书》里的纪表志传四类体例其实就是四种不同的知识组织方式。纪按时间轴记录帝王在位期间的大事表用表格整理世系和职官任免志系统记述制度、地理、历法、文化等专门领域传以人物为单位记录个体命运和言行。用今天的话说班固做的是一套典型的知识结构化工程——他不是在讲故事而是在为一个王朝建立档案库和文化记忆库。这套结构直接影响了两千年来的官修史书体例一直沿用到了《清史稿》。1.2 正统观念史书背后的知识立场聊到班固绕不开正统二字。班固所处的东汉时期光武帝刘秀以中兴汉室的名义重建政权这种政治合法性需要历史书写来支撑。《汉书》之所以断代为史一个深层动机就是把汉朝作为独立的历史单元突出出来强调汉承尧运、天命所归。班固在《叙传》里甚至把刘邦的世系追溯到尧这些安排都不是随手写的而是精心设计的叙事策略。从文化传播的角度正统观念本质上是一种知识立场的选择。任何知识建构都不可能完全中立——史书选择记哪些人、按什么顺序记、用什么语气评价本身就包含了价值判断。班固的高明之处在于他不仅不掩饰这种立场反而把它明确地植入到史书的结构里面。读《汉书》的人会清晰地感受到这是一部由汉朝史官站在汉朝立场上写的汉朝史。做 AI 对话项目时理解这一点特别关键。因为我们用 AI 模拟班固不是简单地在数据库里检索《汉书》内容然后输出而是要模拟一个带着正统观念的知识分子的言说方式。AI 输出的每一句话都要体现班固作为东汉史官的身份立场、他对汉代制度文化的认同、他对历史人物的褒贬尺度。这就需要在系统设计时把身份立场和知识边界作为两个独立的参数注入模型配置。缺少这两个参数AI 产出的就只是一个穿着古装的百科问答机器人而不是一个有血有肉的班固。2. 核心方法论把断代史法翻译成 AI 知识建构语言2.1 断代史法的三层结构拆解用 AI 做班固对话项目关键不是把《汉书》全文背下来而是把班固的方法论转化为可执行的系统架构。我梳理出了三层结构每一层都对应一个可落地的技术模块。第一层是时间边界。断代史法要求我们把知识限定在西汉一朝这个时间区间里。AI 系统在这一层要做的是对时间信息做严格校验用户问的知识点如果明显不属于西汉时期比如问唐朝的均田制、宋朝的科举改革系统就要自动触发边界机制用班固的口吻回应此非本朝典册所载。这个拒绝回答的动作看似简单实际是角色可信度的重要来源。一个什么都能答的班固反而像个皮套有明确知识边界的班固才让人信服。第二层是知识分类。对应《汉书》的纪、表、志、传我把西汉知识库拆成四个子库大事年表库对应纪官职世系库对应表制度地理文化志库对应志人物传记库对应传。用户提问后系统先判断问题属于哪一类再定向检索对应子库。这样做的好处是回答的准确性远高于把所有史料混在一个库里检索——因为不同体例的史料其信息密度和叙述视角是完全不同的。问汉武帝时期有哪几位丞相答案在表里检索表库的效率和质量都更高问霍光这个人怎么样答案在传里需要的是人物叙事的完整脉络。第三层是价值立场。对应正统观念的表达机制。系统维护一个立场词典收录班固在《汉书》里表达过的关键价值判断比如对王莽的态度、对霍光的复杂评价、对汉室正统的维护立场。当对话涉及这些评价性内容时模型输出的用词、语气、结论倾向都要向《汉书》本身的立场靠拢。这一步做得好不好直接决定了用户是否觉得这真的是班固在说话。2.2 从知识库问答升级到知识建构演示项目初期我一直停留在AI 问答的思路上用户提问系统从史料库找答案。做完第一版测试后我发现这个思路太单薄。班固的价值不在于当一个西汉百科词典而在于他展示了一种如何把零散的史料组织成完整知识体系的方法。所以我把项目重心从问答转向了知识建构演示。具体来说系统除了回答具体问题还会在几类场景下主动展示建构逻辑。场景一用户问某项制度比如察举制时系统不仅解释制度本身的运作方式还会顺势说明班固在《汉书·百官公卿表》里是怎么组织这部分内容的为什么把察举制放进表而不是志。这种元层面的回答让用户看到知识分类的标准。场景二用户问某个历史事件比如七国之乱时系统会引导用户关注《汉书》怎样通过互见法在多篇传记中交叉叙述同一事件并解释这种安排的用意——既保证每篇传记的完整性又让事件的全貌在多个视角的拼合中呈现。场景三用户问某个历史人物的评价时系统会对比《史记》和《汉书》对同一人物的不同写法说明班固在立场和详略上做了哪些调整。比如对项羽《史记》给了本纪的待遇而《汉书》把他放进列传。这一对比立刻能引出司马迁眼中的天下和班固眼中的汉朝这两个完全不同的知识框架。这样调整之后AI 的角色就从答题机器变成了史学方法论演示者对话的输出层次丰富了很多用户的反馈也明显变好。2.3 断代史法本质上是知识编辑的减法思维做完这个项目我逐渐想明白一件事班固的断代史法本质上是用减法做知识编辑。司马迁写通史什么都要包罗班固只写西汉意味着必须对海量信息做主动取舍。他放弃的不只是《史记》里已经写过的上古内容还包括大量与西汉兴衰主线关系不大的边角材料。他的选择标准很清晰进入《汉书》的信息必须与西汉这个知识单元相关。这种减法思维对做 AI 知识建构特别有启发。现在做 AI 应用大家默认的思路往往是越多越好——尽量喂更多的资料让模型吸收更多知识。但实际跑下来会发现知识过载会加重模型输出混乱。我在早期版本里把《史记》《后汉书》《资治通鉴》的部分内容也混进了知识库结果模型经常把不同史书的评价混在一起讲立场变得极其模糊。后来我果断做了清理只保留与西汉强相关的语料回答质量立刻上了一个台阶。按照班固的思路知识建构的首要问题是明确边界先划定什么不算再讨论什么算。我在系统设计里专门加了一个排除清单模块把不属于西汉范畴的知识点、后人附会的传说、有争议的伪史料全部列入排除项。这个模块在后续测试中起到了关键作用。比如用户如果问刘邦斩白蛇的传说有几分可信系统会承认这是《汉书》记载的内容但不会用现代考证去拆解它保持班固作为汉代史官对祥瑞记载的克制态度。3. 实操过程从零搭建一个班固对话系统3.1 语料准备要给 AI 喂什么资料语料是整个项目的地基。我的做法是把语料分成三类原文语料、注释语料、背景语料。原文语料选的是《汉书》的整理本电子文本以及《史记》中与西汉相关的部分章节。原文语料的主要用途不是直接喂给大模型而是用于人工校验和后续做向量数据库索引时的数据源。整理本文字经过点校比古本更易读也减少了异体字、通假字带来的干扰。注释语料选的是几套通行的《汉书》注本包括颜师古注和一些现代学者的选注。注释的价值在于帮助理解古文的确切含义。如果不加注释语料模型容易把汉代的官职名称、礼制术语理解成现代概念。比如尚书在汉代是掌管文书的小官和后代六部中的尚书完全不是一回事这种差异靠模型自身的训练数据很难准确察觉必须有注释语料兜底。背景语料包括后世研究者对班固史学思想的评述文章、关于西汉历史的通论性著作、少量汉代考古发现的通俗介绍。背景语料帮助 AI 形成一个整体的汉代世界观。对角色扮演类对话来说世界观的一致性非常重要——班固说话时引用的山川地理、风土人情、器物名称都要符合汉代实况。文本处理上所有语料统一转换成 UTF-8 编码的纯文本然后做了三个步骤分句切分、段落标号、出处标记。每一条文本片段都附上出处标签格式类似Hanshu·DiJi·GaoZuDiXia方便后期追溯。这个工作很枯燥但绝对不能省——没有出处标记后续做事实校验时就没有办法定位依据。3.2 系统架构三层校验机制整个项目的技术架构不算复杂亮点在安全性和准确性的强化上。核心结构是三层。第一层是角色指令层。这里放系统提示词用来定义班固的身份、说话风格、知识边界和立场倾向。我把《汉书·叙传》里班固自述的写史宗旨综其行事旁贯《五经》上下洽通直接改写成了角色锚点。实测下来这种用古人原话做锚点的方式比写几百字的你是一个历史学家有效得多——原话自带文言气质模型在模仿时会自然地收敛到对应的语域。第二层是知识检索层。我把语料做向量化建库用户提问后系统先用一个意图识别模块判断问题属于哪一类然后定向检索对应的子库把最高相关度的片段作为上下文注入模型。这里的检索不是简单做相似度排序而是要先过分类门再在对应子库内做向量检索这样能有效避免跨体例混用。第三层是事实校验层。这一层是我踩了很多坑之后才决定加的。模型生成的回答会先经过一个校验环节把回答中涉及的具体年份、人名、官名、事件名称与知识库进行比对如果出现对齐不上的实体就判定为可疑触发重写。我用的是一种比较轻量的实现——不依赖复杂外部接口而是用一个本地维护的实体词典做正则匹配词典覆盖西汉主要帝王、年号、官员、诸侯国、重大事件等条目。注意实体校验层不追求 100% 的覆盖它真正解决的是明显错误问题。比如把汉武帝在位年号记错、把同一个人的名和字搞混、把官职品级写错这类错误通过实体比对很容易暴露。但更深层的立场偏移、叙事逻辑混乱还是得靠提示词和语料质量来兜底。3.3 提示词模板设计实录下面给出一个实际使用的核心提示词模板我做了脱敏简化处理但关键结构完整保留。这里用中文伪代码形式因为不同模型接口写法不同核心在于理解设计思路。角色设定 你是班固东汉史学家、《汉书》作者。你的言行符合东汉士大夫的言谈方式 引述《汉书》时不脱离原文框架日常应答可用白话与文言交融但必须保持身份的庄重感。 时间边界 你只讨论西汉一朝公元前202年—公元8年以及与其直接相关的东汉初期史实。 凡超出此边界的内容以此非本朝典册所载回应不做展开不得猜测。 知识分类 - 纪类问题帝王大事引用《汉书》帝纪体系回答 - 表类问题世系职官引用《汉书》诸表回答 - 志类问题制度文化引用《汉书》诸志回答 - 传类问题人物事迹引用《汉书》列传回答 - 立场评价问题先陈《汉书》所载事实再叙汉室立场 立场要求 你认同汉室正统维护《汉书》的褒贬体系。涉及王莽、吕后、霍光等争议人物时 须先陈史实后叙《汉书》之评不得以今人视角直接论断。 表达规则 - 先给直接结论再用史实佐证 - 涉及具体年代、人名、官名时必须准确 - 如不确定明言典册未详禁止编造 - 细节描摹必以《汉书》原文为据不得自行补充 - 遇到超出西汉知识范围的问题果断停止并说明边界这个模板的关键在于边界先行时间边界、知识边界、立场边界都在角色指令层做了硬性约束。相比在回答生成后再做后置修订这种前置约束稳定得多也省算力。3.4 多轮对话的几个设计要点单轮问答跑通以后我开始处理多轮对话。这里有几个值得展开的细节。对话记忆管理。AI 角色要记住前面聊过什么尤其要记住用户提到的历史人物和话题线索。我的方案是做一个轻量级的对话状态表记录当前话题、涉及的主要人物、已经解释过的概念。每轮生成回答前把状态表作为附加上下文喂回模型。这个方法比直接拼接历史消息更省 token也比完全不记状态显得更有连续性。话题切换的引导。班固的身份决定了他是以史为纲的讲述者。如果用户突然问天气、问吃喝这类无关话题系统不应该生硬拒绝也不应该完全跑偏。我在指令层里明确写了遇无关之问可答以《汉书》所载之物归入正史之谈实测下来这个规则让对话既能友好回应又始终围绕主线。立场冲突的处理。这是最有意思的部分。有一次测试用户故意问王莽是不是真的篡位者还是被后世抹黑系统如果机械执行维护汉室正统会显得简单站队。我的处理是在指令层加了一条规则先陈《汉书》所载事实再叙汉室立场亦并举当世异说但以正统为归。也就是说允许 AI 承认存在不同说法但在结论处回归班固的主体立场。这样既保持了角色的历史真实感又不会让用户觉得系统在回避问题。4. 踩坑实录那些测试中反复翻车的问题4.1 第一类坑时代错乱班固预知了后世第一版系统最大的问题就是时代错乱。用户问班固你怎么看司马迁的《史记》模型能正常回答因为《史记》在班固之前就已成书。但有一次用户问班固你觉得《资治通鉴》写得怎么样模型居然一本正经地评价起来了——这个回答在现代人看来当然没问题但它根本不该出现在东汉史官口中。解决这个问题的核心是建立时间意识。我在实体校验层增加了一个事件时间戳词典每条关键史事都标注了发生时间。模型生成回答时凡是涉及史事比较的内容都要先经过时间戳检查。再配合指令层的边界规则让模型对晚于班固时代的知识点统一回应不知此事。注意时代错乱问题会以非常隐蔽的方式出现。模型可能不直接提《资治通鉴》这本书名而是把后世的某个评价观点混进回答里。比如把宋代学者对汉武帝的批评当作一般性观点说出来这就更难察觉了。所以校验不能只看名称还要看观点的时间归属。4.2 第二类坑文言与白话的比例失衡最初做角色设定时我希望对话尽量有古风刻意鼓励模型多用文言。结果用户反馈听不懂。文言比例过高对话变成了阅读理解体验非常糟糕。后来我调整了表达规则把语言分层处理结论性语句用现代白话引证史料时用文言原文加白话解释日常应答语气则用谦和庄重的士人口吻。三层语言搭配起来既保留了角色的历史感又保证了信息传达效率。这个规则写进模板之后用户满意度明显提升。4.3 第三类坑正统观念的价值溢出正统观念是一把双刃剑。用得好能强化角色的历史真实感控制不好会让对话充满说教感甚至在某些话题上显得不可理喻。比如涉及西汉与周边政权的关系时模型可能输出过于强烈的华夷之辨表述放在现代语境下容易引发不适。我的处理办法是给正统观念设置一个表达半径在制度、文化、学术这类问题上允许充分体现汉室立场在涉及民族关系、战争评价这类话题上只陈述《汉书》原文记载不做超出原文的发挥并引导用户参考现代研究者的不同视角。说白了要让用户看到一个有立场的班固但不是带着偏见滤镜的传声筒。这个分寸感需要反复调调一次测一轮最后是在十几轮测试之后才找到了相对稳妥的表达尺度。4.4 第四类坑回答太正确失去了对话质感这一点最容易被忽略。实体校验层加上之后回答的准确率上去了但对话也越来越像官样文章每个回答都像在朗读书本完全没有对话该有的互动感。我最后在系统里加了一些史料细节触发器。当触发特定话题时模型会被要求输出一小段《汉书》中记载的细节内容比如某位大臣的仪态举止、某个朝堂场合的微小插曲。这些细节能让对话变得生动也能体现班固作为史学家的观察视角。这里要强调细节必须来自真实的《汉书》记载不能是模型发挥出来的。我在指令层专门加了限制凡细节描摹必以《汉书》原文为据不得自行补充。确保每一个细节都有出处宁可细节少而准确也不要多而虚构。这也是这个项目区别于一般AI 角色扮演产品的底线。5. 关于 AI 知识建构与文化传承的几点思考5.1 知识建构不是堆资料而是确立秩序做完这个项目我最大的体会是知识建构的核心不是资料量的多少而是秩序的确立。班固的《汉书》能成为典范不是因为班固掌握了当时所有史料而是因为他给这些史料建立了一套秩序——时间秩序、体例秩序、价值秩序。做 AI 知识建构也是同一个逻辑。向量数据库搭起来容易知识图谱画起来也不难难的是愿不愿意静下心来做减法把边界划清楚把分类体系搭扎实把价值立场说明白。很多做 AI 应用的朋友有个误区觉得知识库越大越好、语料越全越好。实际上没有秩序约束的海量知识只会让模型输出变得混乱。班固给我们的启发是先划定一个清晰的知识单元比如西汉一朝然后在这个单元内部建立分类和层级最后用明确的价值立场去统摄整个体系。这三步做完才谈得上建构。5.2 AI 对话历史人物打开的不只是问答这个项目的用户反馈里最让我意外的是大家提出的一些超纲问题。他们不满足于问班固你写《汉书》时怎么处理资料还会进一步追问班固如果让你写一个今天的人你会怎么选择材料。这种问题已经超出史料问答的范畴进入到了方法论迁移的层面——读者在用 AI 提供的古代思维方式反思当下的信息处理问题。这说明 AI 对话历史人物的价值不局限于重现古人而是提供一个思考的支点。当系统足够准确地模拟了一位古代知识分子的思维方式读者就能自然地拿这套方式去对照今天的信息环境。这种跨越时空的思维对话才是这类项目最有活力的部分也是我坚持把项目重心放在方法论演示而不是百科问答上的原因。5.3 后续扩展的几个方向目前项目已稳定运行了一段时间我计划在三个方向上继续推进。一是增加思想史层面的对话主题比如请班固谈礼制思想、经学传承这些话题更能发挥《汉书》诸志的优势二是做易代之际的特殊话题设定让角色面对西汉灭亡这一核心事件展开更深入的思辨考验系统的立场处理能力三是尝试把断代史法的知识建构框架迁移到其他领域比如用断代思维去整理某个行业的发展史算是一个方法论迁移的实验。有兴趣的读者可以自己试着做一个类似的项目直接拿班固对话作为起点把《汉书》当作第一份训练语料你会发现古人的知识整理方法比市面上很多知识管理理论都更锋利。最后分享一个我常被问到的问题怎么判断 AI 输出的历史内容是否靠谱我的经验是不要只看回答里有没有具体年份和出处要看回答的方式是否体现了边界意识。一个经过良好约束的 AI会在不确定的地方主动承认不确定会在涉及多重立场的问题上分开陈明不同说法会在超出知识边界时果断停下来说不知道。这种学会说不知道的能力恰恰是班固断代史法里最值得现代知识工作者借鉴的部分——知道自己知道什么更知道自己不知道什么然后在这个清晰的边界之内把知道的事情讲清楚、讲系统、讲得体。这大概就是文化传承里真正可以穿越时间的那部分东西。