司马光:以史为鉴,以鉴为牢
2026-10-01
一、起点:他写《资治通鉴》是要造一台决策机器
司马光在进《资治通鉴》表里写下一句被后世引用到失去锋利的话:“鉴前世之兴衰,考当今之得失。”
字面意思是历史是一面镜子。但他的实际操作远比“照镜子”激进得多。照镜子只是看,司马光做的是归类。他把一千三百六十二年的历史拆成可以提取的因果单元:某个君主在某种约束下做了某种选择,产生了某种结果。选择是自变量,结果是因变量。他相信这套因果关系可以跨时间迁移——唐德宗建中年间藩镇财政挤占中央、导致削藩无力的教训,在宋神宗熙宁年间一样成立。
这不是文学修辞。这是他的认知操作系统。历史中的事件被压缩为类型(types),当下的事件被当作类型的一个实例(instance)来处理。 看到实例,调用类型,提取结果,规避或复制。他整个政治生涯的决策质量,取决于一个变量:当下的情境在多大程度上真的属于他所调用的那个历史类型。
当它真的属于——他赢了。
当它不属于——他输了,而且输得非常彻底。
二、归地:一次被历史类型正确覆盖的决策
1086年,司马光拜相。他做的第一类重大决策中,有一项在今天看近乎卖国:归还四寨给西夏。
元丰年间的宋军攻入西夏境内,在米脂、浮图、葭芦、安疆四地筑城驻军。神宗以此来宣示武功。到哲宗即位、司马光执政时,这四寨成为持续的外交和军事负担:驻军补给线穿越数百里的横山山脉,每年耗费无数军粮民力,西夏的报复性袭扰从未停止。
司马光的决定是:把这四个寨子连同土地还给西夏。
他的推理链条清晰得可以逐节验证:
前提一:这四寨距宋境核心区太远,距西夏核心区太近,属于“险远之地”。(地理事实,可验证。)
前提二:据有险远之地的成本不是一次性的,而是永续的——驻军、供粮、防备突袭,是每年固定支出。(资源逻辑,可验证。)
前提三:历史上所有为了面子据守险远之地的王朝,最终都被成本拖垮。汉弃珠崖,唐罢安西,是同一类型事件的正确解。(历史调用——这里调用的类型正确。)
结论:归还四寨,换取边境和平和一个可承受的军事边界。
他在给朝廷的奏疏里写得很直接:“此乃边鄙小事,何足惜之!”——《宋史·司马光传》记为“此四寨者,皆边隅隙地,得之不足以为多,失之不足以为少。”
这不是外交投降。这是一次极冷酷的成本收益计算。他看见的不是“我们的国土被割让”,而是一笔持续流血的负资产被止损。 他当时的信息环境里,这一决策正确的核心证据是:四寨驻军对西夏构不成实质进攻威胁(其作用是象征性的),而维持成本是实质性的。他的对手看不见这一层,因为“收复失土”这一概念本身具有道德重量。
司马光的归地决策奏效了。 西夏接受归还,边境在随后数年间趋于稳定。他调用了一个正确的历史类型(帝国据守不经济飞地的历史),做出了一个在当时遭骂名、却被后世验证为务实的选择。
但同一年,他把同一套机制用在另一个领域——然后犯下了终身最严重的错误。
三、差役法:同一个推理结构在错误地形上的翻车
1086年初,司马光开始着手废除王安石的核心变法之一:免役法。
免役法(募役法)的逻辑是:乡村农户不再被征发差役(轮流到州县服差役,期间荒废农事),改为缴纳免役钱,官府用这些钱雇人服役。王安石看到的是差役法的副作用:一个农户被拉去服差役,家里的田就荒了;差役轮派还存在严重的分摊不均,富户往往通过关系被免派,负担全部落在贫户身上。免役法用货币化手段把劳役负担转化为可预测的固定税费——它实际上解放了农业生产力。
司马光反对,并且最终废除了它,恢复差役法。
他的推理依据是什么?用他自己的话:
“凡民间有青苗、免役、市易、保甲等法,皆宜罢去。今日当如救焚拯溺,犹恐不及。”——《上哲宗论罢免役钱》,见《司马温公集》卷四十八
而他对免役法的核心反对理由,集中在一点:免役钱是一种税,而差役是人民对国家的责任。 他在《乞罢免役钱状》中写道:“民之贫富系于钱之有无……富者积钱以幸免,贫者无钱而见役。”——他的意思是:用钱来决定谁服役,等于把公民义务变成了可以购买的豁免权。富人可以花钱买到自由,穷人只能以身体偿还。这在道德上是可憎的。
这一步推理本身没错。免役法确实创造了一个金钱与公民责任之间的换算关系。问题在于他的下一步推理:
差役法虽然有问题,但它是已知问题——唐制以来的旧法,记载完整,缺陷已经被讨论了两百年。免役法的问题未知。所以恢复差役法是选择将风险控制在已知范围内。
但他忽略了一个变量:差役法的问题不是理论上的已知风险,而是已经被王安石变法前的实际治理经验反复验证的灾难性后果。 司马光自己在《论差役》中承认,差役最重的州县,农户因频繁被征发而“田里荒芜”。他看见了,却用了一个“已知”的标签覆盖了这个事实——“已知”在历史类型分析里意味着可控,但在现实层面,已知有时候只是“已习惯”。
更关键的是,在1086年的恢复决策中,他几乎完全无视了他人的实证反馈。苏轼、范纯仁、吕公著都提出了保留免役法或折中的方案。苏轼上书明言:“差役不免烦扰之患,然不若免役钱之为民害。”——他甚至承认差役有“烦扰”,但指出免役钱有害。这是因为免役钱征收是刚性的:不管年景丰歉,钱必须交。而差役虽然劳民,但在灾荒年景下有时可以被官府免派。苏轼看到的是两种制度在极端情形下的不同压力曲线。
司马光的回答是直接引用自己的历史类型:国家的职责分配应该遵循“古者民年十五受田,六十归田,以供军赋”的模式。差役就是这种“古制”的残余。任何试图把公民责任货币化的尝试,都是唐代两税法以来的一大弊端的延续——两税法的教训就是:一旦你开始用钱取代实物和劳役,政府就会失去对赋税的道义约束。
他关于差役法的决策,底层逻辑是:
制度应该保持类目纯净。差役是劳役类,免役是货币税类。免役把劳役换成货币税,是把两类制度杂交,而杂交制度在历史上没有成功的先例。
他这里犯了两个错误:
错误一:把类目纯净性当作决策目标,而不是制度绩效。 他评估的是“这个制度在分类上是否像历史上的好制度”,而不是“这个制度在实际运行中是否让人民过得更好”。当他被告知免役法在实践中确实减少了农户的破产时,他反问(大意):如果它是好制度,为什么它需要向农户收钱?
错误二:他把“没有先例”等同于“危险”。 宋代货币经济比唐代发达得多,真正的新现实——商业的扩张、地权的流动、劳动力市场的出现——需要新的制度形式。司马光的历史类型库中根本没有“货币化劳役替代方案”这个类目。所以他无法判断免役法的运行逻辑,只能把它归入某种混合了“敛财”和“破制”的模糊危险类别。
结果:他恢复了差役法。差役法的恢复使得农户被重新绑在不定期的强制劳役上。由于宋代制度经过百年的现实演变,差役在地方实际执行中已经比唐制更糟——它不是回到了“古制”,而是回到了一个已经被证明失败的制度的近代劣化版。 司马光死于1086年,没有时间看到自己决策的后果。但差役法复辟后,北宋的乡村治理效率下降,社会矛盾加剧。这是明确的政策衰退。
同一个推理模式,用在军事地理上和用在社会经济制度上,产生了一个正确决策和一个灾难性决策,因为这两类现实的性质不同。
四、零和前提:那场著名的辩论中透露出的核心世界观
要对司马光的决策机制做最后一道解剖,必须回到他一生中最为人知的那次思想和权力交锋:与王安石的理财之争。
熙宁元年(1068年),两人有一次著名的御前对质,涉及国家是否可以“善理财”。王安石主张:国家可以通过因天下之力以生天下之财,即通过好的政策工具创造增量财富来增加财政收入。司马光的回应是暴烈的:
“天地所生货财百物,止有此数,不在民则在官。譬如夏秋雨泽,自有定数。”
这句话被记录在《宋史·司马光传》中,成为他经济思想最凝练的表达。“止有此数”四个字,是他决策机制的地基。 天下的财富总量是常数。如果政府拿到的多了,民间拿到的就一定少了;反之亦然。财富创造只是转移,没有增量。
在这个前提下,所有试图“理财”的政策,本质都是重新分配——重新分配必然有输家。国家财政困难时,任何以理财为名的举措,都是把财富从民间转移到官府的劫掠。从这一令其深信不疑的前提出发,王安石的一切变法都被自动归入“敛财”这一历史类型。这一类型在《资治通鉴》里有大量实例:从汉武帝的盐铁专卖,到唐德宗的聚敛之政,全部以民怨和动荡告终。
但“止有此数”在当时已经是一个错误的经验前提。宋代的经济现实是:农业生产力通过早熟稻的推广提高了,商业城市和长途贸易在扩张,货币流通量的增长足以支撑更大规模的市场交易。财富总量在增长——这意味着政府可以在不减少民间财富存量的前提下,通过参与增长获得收入增量。 王安石看到的正是这一点。免役法、青苗法的本质是:让农户有更多时间专注生产(免于劳役),让政府财政分享效率增长的红利。
司马光看不见增量,因为他的历史类型库里没有“经济增长”这个类目。唐以前的经济史几乎全部是掠夺型经济在增长与崩溃之间循环:土地兼并→财政危机→横征暴敛→民变→朝代更替。“止有此数”是那个时代真实的经验概括,他把它当成了永恒的常理。他的因果结构可以迁移的前提是:人类生产方式的底层结构不变。当结构变了,他的类型库失效了。
这里有一个细思极恐的闭环:他看不出现实变化,因为现实变化没有历史先例;因为没有历史先例,他否认现实变化的真实性;因为他否认,他的类型库继续指导他的决策。
五、认知指纹的提炼
把司马光一生中上述几个决策节点放在一起看,他的认知指纹呈现出一个非常一致的结构:
第一层:压缩。 面对一个复杂现实情境,他的第一步动作是把它与历史类目对齐——“这个情况本质上是X类事件”。X类事件在《资治通鉴》中有完整记录,包含标准成因、标准进程、标准结局。
第二层:调取。 对齐完成后,调取该类目的历史结局,并检查当前实例是否满足类目的关键定义特征。
第三层:执行。 决策是基于类目规则直接得出:支持属于“优良类目”的方案,反对属于“劣质类目”的方案。决策完成后,他不再进行第二轮实证验证。
这个机制的运行效率极高。它允许司马光在信息不完整的情况下快速给出判断——因为历史类型替他完成了推理。他不需要知道当下的每一个细节,只需要确定“这是哪一类”。
但第三层是单行道。他在调用类目后就关闭了反馈通道。归地决策之所以正确,是因为他调的类目对,并且他没有遇到实证反馈与类目冲突的情况。差役决策之所以出错,是因为他遇到了冲突——同僚一边倒地告诉他免役法在实际中的运行优于差役——他选择让类目规则覆盖实证反馈。
他的失败不是因为他无知,而是因为他的知识系统结构性抹除了反例。当一个反例现身时,系统自动把它归类为“例外”(不是类目定义的问题,是反例的情况不够典型),或用政治道德判断把反例逐出讨论域(“苏轼在搞调和论”)。这套系统在认知结构上高度稳定,在现实失败面前也高度稳定。
六、一个可以带走的操作指令
司马光的认知机制并非全然的错误。在大多数真实决策中,类目推理确实是高效策略:我们不可能每次决策都从零开始收集证据。问题在于类目何时被允许推翻证据。
可以带走的动作:
把一个决策的“类目判断”和“实证证据”分两栏写下来。
第一栏:这是哪一类事件? 只写类目名称。例如:“这是一次成本永续化决策”“这是刚性的固定税”“这是不可持续的前线驻军”。
第二栏:在这次具体情境中,我实际观察到了什么? 只写与类目判断相关的、具体的、当下的事实。例如:“我的同僚报告说免役法减少了破产农户的数量”“西夏的边境袭扰在四寨驻军存在时增加了”。
然后执行两条规则:
规则一:如果第二栏为空——没有任何与类目相关的当下证据——那么信任第一栏的类目判断。 这很合理:无法获得具体信息时,用历史类型进行推理是次优但可接受的方案。
规则二:如果第二栏只填了一个字——有一条实证——自动暂停第一栏的类目结论十五分钟,强制你去判断:这条实证能否被当前类目解释?如果能,继续决策;如果不能,把类目标记为“待更新”再决策。
司马光缺的就是规则二。他把类目判断当成了第一也是唯一的决策依据。他的整套从历史中提取因果的机制,在军事地理类的现实重叠度高的情况下屡试不爽,在一旦受制于经济结构变迁的情境下则屡试屡错。
“以史为鉴”不是一个安全的动作。历史是最好的导师,也是最隐蔽的牢笼。从司马光身上你能看见:笼子最坚固的部分,就是他为自己打造的那部分。