司马光:把历史编译成一个道德因果库
2026-10-09
司马光脑子里装的不是一套观点,是一台机器。一台有一个固定输入口和一个固定输出口的机器。输入口是历史事件,输出口是道德规则。中间的处理单元是一个他从未论证过的假设:道德与后果之间存在稳定的、一一对应的因果映射。这个假设在他的思维操作系统里是一个常量,不是一个变量。证据不在他的哲学论述里——他没有哲学论述——证据在他的编辑方针和每一次“臣光曰”里反复被执行。
《进资治通鉴表》中他写下选材标准:“专取关国家盛衰,系生民休戚,善可为法,恶可为戒者,为编年一书。”注意这个句子的逻辑结构。前半句定义筛选标准——哪些事件进入输入口:关乎盛衰生民,必须是大事。后半句定义输出形式——提取出来的是什么:善可以被效法,恶可以被警戒。但中间缺了一个连接词,一个没有被说出来的推理步骤。这个连接词就是他的核心假设:国家衰败之所以发生,一定因为有“恶”可以被指认;国家兴盛之所以发生,一定因为有“善”可以被指认。因果链的两端必须能被道德词汇包住,否则这个事件不进入他的书。他从来不说“因果链可能断裂”“结果可能有多重原因”“有些兴衰没有人可以直接负责”——因为他的系统没有为这些可能性预留处理路径。
打开《资治通鉴》第一卷,第一篇“臣光曰”是这个算法的运行样本。三家分晋,智伯被赵、魏、韩三家联合消灭。司马光写了什么?“智伯之亡也,才胜德也。”一个政治实体的瓦解——涉及晋水决堤的军事地理、三家临时联盟的外交博弈、晋国制度结构长期腐烂到需要依靠家族私兵——被他压缩为两个变量的相互作用:一个人,才和德的比例失衡。这不是随手的道德评论。这是整部书的模板。二百九十四卷,一千三百六十二年,他反复执行同一个算法:找到历史的转折点,还原到一个人的决策,对这个决策者做道德编译,输出“法”或“戒”。
他的编撰方法本身是这台机器的外化。第一步“长编”——把所有可见史料全部收集,不做取舍。现存记载加上他引用的佚书,长编规模以数千万字计。第二步“考异”——逐条考证史料真伪,分辨冲突记载。第三步“删削”——把考证后的材料压缩到约三百万字。为什么敢把材料删到十分之一以下?因为他的系统假定历史中只有少量信息真正承重:决策点、道德选择、后果。余下全是噪音。如果因果链是可见的——对他是可见的——那么冗余就是可删的。一个人如果相信历史中有大量偶然性、结构性力量、不可预测的涌现,他绝不敢这样删。删削这个动作本身,就是“因果可见性假设”的行为证明。
在这台机器底层,有四个相互咬合的假设。每一个都在他的著作中被实际使用,但没有一个被他自己标记为假设。
假设一:因果可见。 好的结果一定可以追溯到好的决策,坏的结局一定可以追溯到坏的决策。没有不可归因的事件。这个假设驱动了他的全部选材:一个事件如果无法被放入道德因果结构,就不值得记录。它也驱动了他的全部删削:叙事细节被剥离,直到只剩下因果链。他写赤壁之战,不是写战争本身,而是写曹操的骄傲如何导致失败——因果链的起点被锁定为决策者的道德状态。
假设二:道德第一因。 所有因果链的第一推动力是道德品质。经济、技术、地理、人口是背景,不是动因。在《资治通鉴》将近一千年后的历史评论中,你几乎找不到一段对经济规律的独立分析,找不到一段对技术变革如何改变战争形态的讨论。不是他不懂这些——他编《资治通鉴》时对历代食货、兵制都有涉猎——而是他的系统在处理因果时,只有道德这一个第一因的输入端口。
假设三:规则可迁移。 从历史中提取出的“法”和“戒”可以跨时代使用。汉代有效的,宋代同样有效。这个假设的证据在《资治通鉴》的书名本身——宋神宗赐名“资治通鉴”,即“鉴于往事,有资于治道”。司马光接受了这个命名而没有异议,因为它精准描述了他的操作逻辑:过去的事件作为已经完成的实验,实验结果可以直接用于当前的政策制定。中间不需要适应性转换。
假设四:时间同质。 历史的变化从不改变政治的基本逻辑。过去因此包含未来的全部解。这个假设的最直接证据在《与王介甫书》中。他反对王安石变法的核心论证是:“今介甫为政,尽变更祖宗旧法,使上自朝廷,下及田野,内起京师,外周四海,士、吏、兵、农、工、商、僧、道,无一人得袭故而守常者,纷纷扰扰,莫安其居。”论证结构不是“变法的效果会不好”——当时变法刚开始,效果尚无充分数据。论证结构是“变更本身就是错误”,因为祖宗旧法已经被历史验证为“善法”,偏离已验证的路径不需要看结果。
这四个假设从哪里来?
从《春秋》传统来。司马光的学术谱系属于《左传》一线,但在解释方法上继承了整个《春秋》传统的核心主张:历史记录的字面准确性是道德评判的前提。孔子用“弑”还是“杀”,一个字改变事件的道德性质。司马光的“考异”继承了这个主张——先确定事实,再执行道德编译。但他的考异只检验史料的可信度,从不检验解释框架本身。框架是预装的,考异是为框架服务的工具。
从荀子一脉来。荀子提出“法后王”,理由是后王的制度经过了更长时间的经验验证,比远古的传说更可靠。司马光的保守主义是这个逻辑的推广:任何已经长期存在的事物,都已经通过了因果检验;新事物没有通过检验,所以默认不可信。这是他在政治上反对王安石的方法论基础,也是他在史学上拒绝为“新事物”设立新的分析框架的原因。
这些假设在哪些地方是对的?
在技术变迁极慢、社会结构高度稳定的农业社会中,“时间同质性”的近似性很高。汉代的水利工程在宋代以几乎相同的方式运转。汉代的官僚贪污在宋代以几乎相同的方式侵蚀行政效率。当一个系统的参数在几百年间变化极小时,历史数据的预测价值确实高。司马光在这个意义上不是迷信过去,他是在一个慢速世界中做出一个在当时非常理性的归纳判断。
他确实是历史上最敏锐的“权力错误模式识别器”之一。《资治通鉴》至今被阅读,不是因为他的道德框架正确,而是因为他的模式库足够大、足够精确。他看见了一个皇帝如何被谄媚者缓慢包围,看见了一个将军如何因过度自信而忽视补给线,看见了一个财政制度如何因短期需求而埋下长期崩溃的种子。这些模式是真实的、跨时代的。他的系统在“一个人的选择如何导致可预测的后果”这个尺度上是高效的。
错在哪里?三个根本性缺陷。
第一,因果链的不确定性被系统性地否认。 真实的因果远比他假设的复杂。秦的灭亡不只是“不仁”——郡县制的中央集权在没有成熟官僚体系的年代过度扩张,地方治理能力崩盘,税收和军事动员系统失能,这些结构性原因在《资治通鉴》的叙述里永远是配角,主角永远是秦始皇、秦二世、赵高的道德选择。他的系统没有输入的变量,就不会出现在输出中。
第二,封闭循环。 他设定了稳定的道德—后果映射,但从不使用新的历史数据来修正这套映射。恰恰相反,新数据被用来确认已有规则。当历史中出现了与规则库不符的事件,他要么将之归入“乱世”作为例外处理,要么在因果链中找到一个道德变量来强行解释。输入口只接收能被现有规则处理的数据。这是一个没有学习功能的系统。
第三,对“新”的结构性排斥。 因为“时间同质”假设,任何在历史中没有对应项的事物都是不可评估的。不可评估,不是谨慎等待数据,而是直接拒绝。王安石的青苗法是一种国家发放农业贷款的制度创新。司马光的系统无法处理它,因为历史库中没有对应项,规则库中没有可用的“法”或“戒”。在这种情形下,系统只有一个动作:拒绝。这不是权衡后的反对,这是系统遇到了无法解析的输入。
他看见了什么,盲掉了什么?
看见的:短链条因果。一个人的选择、一个决策、一种道德屈服如何产生可预测的后果。在这个尺度上,他的眼睛几乎是完美的。他看见了权力的重复性错误,看见了人性在不同朝代中几乎不变的弱点。
盲掉的:长链条的、非个人的结构性力量。制度如何在没有特定恶人的情况下缓慢崩溃。技术的微小变化如何改写一个时代的可能性。人口压力的积累如何让一个曾经合理的制度变得不可持续。地理条件如何从根本上塑造一个国家的战略空间。这些不是被忽略——是被他的因果结构预先排除在可见性之外。他的盲区是结构性的,不是态度性的。换一个更勤奋的司马光、更博学的司马光、道德上更宽容的司马光,只要他的操作系统还是同一台,盲区就一样大。
这个盲区有一个可观测的结果:后代读《资治通鉴》的人,如果只接受他的框架,会有一个清晰的因果感——每件事都有人负责,每个失败都有道德根源——但这个人无法理解缓慢的结构性变迁。因为结构性的变迁在司马光的叙事里不存在。它是一个被低通滤波器滤掉的频率。
给读者的操作:
司马光的系统最值得拿走的不是对的一面,而是错的那一面。他的错误提供了一个具体的检验工具。
具体动作:下一次分析任何一个结果时——一个项目失败、一次争论胜利、一笔交易亏损——写三列原因。第一列:某个人的决策和品质。第二列:一个结构性的约束(规则、激励、资源分布、时间压力)。第三列:一个随机或不可归因的因素。然后做一个测试:如果去掉第一列中的任何一项,结果会改变吗?如果去掉第二列呢?如果去掉第三列呢?这个测试的执行成本极低,但它强制你的大脑为司马光永远看不见的那些变量分配因果权重。司马光的系统只有一个输入端,你至少应该接三个。