李庆西:官渡疑云

编者按

官渡之战是东汉末年极其重要的一场战役,在史书《三国志》和小说《三国演义》中都是浓墨重彩的一笔。但这场战役的“描述”,确实也有很多疑点。李庆西这篇“老读三国”就致力于发掘其中的缝隙,继续对历史叙事和小说叙事的发微。

官渡疑云

文:李庆西     来源:《读书》

《三国演义》写官渡战役,从关羽解曹操白马之围说起,事在第二十五回后半截。袁绍遣大将颜良从黎阳渡河,在南岸白马与增援刘延的曹军相遇。颜良连斩宋宪、魏续二将,又杀退武艺不俗的徐晃,直使曹营诸将栗然。这时程昱给支着儿,让关羽出战。书中写道:“曹操指山下颜良排的阵势,旗帜鲜明,枪刀森布,严整有威,乃谓关公曰:‘河北人马如此雄壮!’关公曰:‘以吾观之,如土鸡瓦犬耳。’”关羽纵马下山,直冲彼阵,“河北军如波开浪列”,猝不及防的颜良竟被一刀劈翻。于万军之中直取上将首级,表现关羽之威武神勇,小说家之艺术夸张直如神来之笔。

官渡之战

不过,《三国志》曹操、袁绍纪传述及此节,只说颜良被斩,未说死于谁手。《武帝纪》谓:“使张辽、关羽前登,击破,斩良。”关羽自下邳城外被擒,已为曹操效力。这里“前登”是打头阵的意思,张辽列于关羽之前,莫非是他操刀斩良?《袁绍传》此节相当简略:“太祖救(刘)延,与良战,破斩良。”《后汉书·袁绍传》亦谓:“曹操遂救刘延,击颜良斩之。”但看《蜀书·关羽传》,明确说是关羽之功——

绍遣大将颜良攻东郡太守刘延于白马,曹公使张辽及关羽为先锋击之。羽望见良麾盖,策马刺良于万军之中,斩其首还,绍诸将莫能挡者,遂解白马围。

还真是关羽,这不是小说家杜撰。斩颜良这事儿,搁在其他纪传中可作缺省之笔,《关羽传》却不能轻易放过。只是请关羽出战并非程昱建言,其时程昱正带兵守鄄城(见《魏书》本传)。白马之战是整个官渡战役的序幕,随后袁曹两军在官渡、乌巢、仓亭几处相持与厮杀,自建安五年(二〇〇)二月开战,至七年五月袁绍兵败病死为止,历时两年之久。关于这次战役的历史记载,主要见于《三国志·魏书》武帝纪、袁绍传及裴松之注,还有《后汉书》袁绍传及李贤注。另外,曹操帐下荀彧、荀攸、贾诩、钟繇、程昱、郭嘉、董昭、崔琰、王粲、赵俨诸传,对此均有涉及。跟从曹操征战的曹仁、张辽、乐进、于禁、张郃、李典、许褚诸将,传中亦各有记述。

陈寿撰《三国志》以曹魏为正统,将曹操视为“明主”,其叙史倾向性相当明显。反之,《三国演义》“尊刘抑曹”,则是一种反向立场。这样拧了个劲儿,小说家讲史与史家叙事难免有许多抵牾。而且,史家记述的事况未必处处合榫,即便同一部《三国志》亦不免互相乖迕。如果细核官渡之战的各种叙事文本,不能不发现诸多疑点。

首先,战事缘何而起?《武帝纪》语焉不详。据《武帝纪》《袁绍传》,是袁绍率先渡河进犯,好像就是抢地盘,亦如当初吕布四处侵扰。但据《蜀书·先主传》,袁绍讨曹跟刘备有关,似乎亦有“匡扶汉室”的意思。先是,刘备离开曹操后,杀徐州刺史车胄,占据下邳、小沛,乃“遣孙乾与袁绍连和”。《孙乾传》亦谓:“先主之背曹公,遣乾自结袁绍。”《袁绍传》不经意透露:“备杀刺史车胄,引军屯沛。绍遣骑佐之。”可见刘备与袁绍着实已是盟军关系。此后刘备被曹操击溃,转道青州投奔袁绍。《先主传》又谓:当镇守青州的袁谭护送刘备到平原,“绍遣将道路奉迎,身去邺二百里,与先主相见”。其时袁绍已兼并冀、幽、并、青四州,诸镇中堪称老大,竟亲自远赴二百里外迎奉惶然流窜的刘备,实非同寻常。何以如此抬举刘备?不妨作想,袁、刘结为同盟是否另有背景,譬如献帝衣带诏?《先主传》说到刘备在许昌时与董承、王子服等受密诏同谋诛曹大事,而《武帝纪》写曹操东征刘备之前,突然插入一句:“五年春正月,董承等谋泄,皆伏诛。”此句看似前后不接,却透露出这正是曹操要追杀刘备之真正原因。而刘备出离许昌,难道不就是传送诛曹密诏的天子使徒?

更多的情节不见于史书。古人以纪传体撰史,比较接近隐去叙述主体的小说笔法,除了卷末“评曰”“赞曰”一类评语,通常不以叙述人口吻说事,以标榜叙史之客观。其倾向性主要表现在写什么和不写什么。《三国志》对衣带诏一事不能不提,却是相当简略而含糊。《武帝纪》干脆不予明说,只是“董承等谋泄”一语带过。就叙事语境而言,此事若是秉笔直书,不啻申明天子诛曹密诏之合法性。

但另一位史家范晔并不如此维护曹操,《后汉书·献帝纪》分明记述:“五年春正月,车骑将军董承、偏将军王服、越骑校尉种辑受密诏诛曹操。”同书《袁绍传》尽管大书传主悖惑无能,却道其讨曹师出有名,全文刊录袁绍宣示天下的檄文。其中列数曹操种种恶行,有谓“历观古今书籍所载,贪残虐烈无道之臣,于操为甚”。这份檄文据说出于大才子陈琳手笔,可谓义正词严,气势不凡。《三国志》诸传对此只字未引。从衣带诏到讨曹檄文,皆以表明这是一场讨逆之战,而不是诸镇之间打乱仗。

范晔:《后汉书》

讨曹檄文在《三国演义》中见于第二十二回,刘备派孙乾与袁绍“连和”之后,袁绍即起兵讨曹,但当时双方在黎阳相持未战。至第三十回,曹、袁对阵官渡,彼此在阵前詈斥,袁绍便祭起衣带诏这法器:

曹操以鞭指袁绍曰:“吾于天子之前,保奏你为大将军,今何故谋反?”绍怒曰:“汝托名汉相,实为汉贼,恶罪弥天,甚于莽、卓,乃反诬人造反耶!”操曰:“吾今奉诏讨汝!”

绍曰:“吾奉衣带诏讨贼!”

“吾奉衣带诏讨贼!”毛宗岗批曰:“只此七字,抵得一篇陈琳檄文。”这是将衣带诏与讨曹檄文联系到一起,小说家替袁绍强调出兵的合法性,倒更像是替史家申明大义。

然而,陈寿眼里的乱臣贼子则是袁绍。但看《魏书》武纪、袁传,完全回避了官渡之战的起因与是非,而在王粲、桓阶诸传中,却从传主嘴里道出曹操抵拒袁绍的正义性。如《王粲传》谓:

(曹操取荆州后)太祖置酒汉滨,粲奉觞贺曰:“方今袁绍起河北,仗大众,志兼天下,然好贤而不能用,故奇士去之……明公定冀州之日,下车即缮其甲卒,收其豪杰而用之,以横行天下;及平江汉,引其贤俊而置之列位,使海内回心,望风而愿治,文武并用,英雄毕力,此三王之举也。”

又如《桓阶传》:

太祖与袁绍相拒于官渡,(刘)表举州以应绍。阶说其太守张羡曰:“夫举事而不本于义,未有不败者也。故齐桓率诸侯以尊周,晋文逐叔带以纳王。今袁氏反此,而刘牧应之,取祸之道也。明府必欲立功明义,全福远祸,不宜与之同也。”羡曰:“然则何向而可?”阶曰:“曹公虽弱,仗义而起,救朝廷之危,奉王命而讨有罪,孰敢不服?”

以王霸之道称颂曹操,乃强调一种历史合法性(太史公以后的史家大多认同这种既成事实的政治正确)。如此借传主之口说事,也是纪传体史著常规套路。如同小说人物作为叙述者,其言语即是“存在”,这就是元故事叙事。

清皇家珍藏手抄善本绘图描金银《三国志演义》中的曹操像

刘备是否投身官渡之战,或者以怎样的方式介入,也是一个问题。但关羽先替曹操拔了头筹,这不啻是一个暗示:搭台唱戏的是刘备,砸台子的也是刘备这哥儿俩。颜良被斩后,《魏书·袁绍传》记云:“绍渡河,壁延津南,使刘备、文丑挑战。”《武帝纪》所述略同,文丑就死于是役(非如小说所云被关羽斩杀)。但《蜀书·先主传》《后汉书·袁绍传》都未提到刘备参加延津南岸的战事。《魏书·荀攸传》有一段记述值得注意:

太祖拔白马还,遣辎重循河而西。袁绍渡河追,卒与太祖遇。诸将皆恐,说太祖还保营,攸曰:“此所以禽敌,奈何去之!”太祖目攸而笑。遂以辎重饵贼,贼竞奔之,陈乱。乃纵步骑击,大破之,斩其骑将文丑。

从白马“循河而西”正是延津。这里亦未见刘备出战,是袁绍亲率大军渡河而来。延津之战在小说中出现于第二十六回,采用武纪与袁传说法,让文丑、刘备前后杀到。只是小说里又将关羽差遣一回。但刘备远远看见“汉寿亭侯关云长”大旗,来不及招呼已被曹兵冲散。整个官渡战役期间,小说叙事焦点置于刘备、关羽兄弟暌隔之念,中间插入关羽辞别曹操,封金挂印、过五关斩六将诸事。刘备一边则虚写,关羽先后斩颜良、文丑,袁绍两番拿刘备问罪,大有寄人篱下之况味。盖因《三国志》于此语焉不详,小说家自有虚构余地。但是,前后皆以刘备、关羽相呼应,这条若隐若现的主线使得战争叙事显得有些支离破碎。

关于刘备在官渡战役中的活动,《先主传》透露一个重要事况:

曹公与袁绍相拒于官渡,汝南黄巾刘辟等叛曹公应绍。绍遣先主将兵与辟等略许下。关羽亡归先主。

按,《武帝纪》亦谓:“汝南降贼刘辟等叛应绍,略许下。绍使刘备助辟。公使曹仁击破之。备走,遂破辟屯。”刘备带兵去汝南,是深入敌后的战略运动,这事情显然比延津出战重要。汝南在许昌以南,靠近荆州,此番远征路途之远甚于小说中关羽千里走单骑。《先主传》和《关羽传》都提到关羽此时已回归刘备(《关羽传》有谓“奔先主于袁军”),可想关羽亦随同南下,其阵容颇壮。奇怪的是,《关羽传》《袁绍传》及其他诸传竟未提及此事。《三国志》诸传记述官渡战役是有一搭无一搭,笔墨缺省太多,或是给人遮掩之感。

与《三国演义》叙述有所不同,实际上刘备先后有两次南下运动。上引《先主传》一段文字后,紧接有以下一节:

曹公遣曹仁将兵击先主,先主还绍军,阴欲离绍,乃说绍南连荆州牧刘表。绍遣先主将本兵复至汝南,与贼龚都等合,众数千人。曹公遣蔡阳击之,为先主所杀。

这段记述表明:一、刘备会合刘辟袭击许昌的计划没有完成,原因是被曹仁阻击;二、刘备自汝南返回袁绍本部,至此与袁绍尚为盟友;三、其后,刘备想脱离袁绍,以联结荆州刘表为由,率本部兵马再度抵达汝南。问题是,陈寿的表述极为简略而迫促,如“先主还绍军,阴欲离绍,乃说绍南连荆州牧刘表”一句,将两件事并在一起说,好像是这样一个叙述逻辑:刘备之所以返回,是要劝说袁绍派自己去联络刘表,借以趁机脱身。如果说刘备当时就想脱离袁绍,回来岂非多此一举?其实,此中必然有一个时间间隔,或由形势变化,或是终于意识到袁绍不堪大任,刘备这才决意离去。

刘备撤了,袁绍是否觉得被人涮了?没有文字记载。

问题还不止于此。刘备第一次前往汝南,是要会合投靠袁绍的黄巾余党刘辟,一起袭击许昌。《武帝纪》《先主传》都是这么说的。但有意思的是,刘辟此人数年前早已就戮。正是《武帝纪》建安元年纪事中说到,“汝南、颍川黄巾何仪、刘辟、黄邵、何曼等,众各数万,初应袁术,又附孙坚。二月,太祖进军讨破之,斩辟、邵等。仪及其众皆降”。刘辟是被曹将于禁所部干掉的,《于禁传》亦云:“从征黄巾刘辟、黄邵等,屯版梁,邵等夜袭太祖营,禁帅麾下击破之,斩辟、邵等,尽降其众。”《三国志》何以如此错乖?清人赵翼《廿二史札记》对此大惑不解,感叹“一纪中已歧互若此”。其实,这倒不一定就是搞错了,大变活人亦自有其妙用,考虑到陈寿竭力维护曹操的撰史立场,抑或杜撰“伪事件”作为一种叙事策略?

刘备(左)和曹操(右)

官渡的搏杀不仅是王寇之役,历来还被认为是以少胜多的著名战例。不过,所谓以少胜多,宣传要诀在于交战双方寡众悬殊。如果是比例接近,以少获胜亦自可嘉,却不至于让人津津乐道。官渡一役,《三国志》所述双方兵员相去甚远,倒是让人大感惊讶。《武帝纪》竟称曹、袁两边人数为一比十。如谓:“是时袁绍既并公孙瓒,兼四州之地,众十余万,将进军攻许。”又:“时(曹)公兵不满万,伤者十二三。”另外,《荀彧传》亦称曹操“以十分居一之众,画地而守之,扼其喉而不得进”。

然而,《武帝纪》描述双方布防倒完全不像是兵力悬殊的样子。是谓:“八月,绍连营稍前,依沙塠为屯,东西数十里。公亦分营与相当。”可以想象,倘若没有相应的兵力,其“分营与相当”从何说起?陈寿既要宣扬曹操的威武之师一以当十,又要让曹军摆出大兵团作战阵势,故而武纪及诸传描述战场态势多用“相拒”“相持”一类字眼。当然,需要强调敌众我寡时自有另一套说法。譬如,《荀彧传》即谓:“太祖保官渡,绍围之。”

根据武纪、袁传,双方移兵官渡后,基本上是对攻的阵地战。武纪曰:“绍复进临官渡,起土山地道。公亦于内作之,以相应。”实际上曹军并未被袁军所包围,袁绍没有那么大的兵力优势。袁传的记述较为详细:

绍为高橹,起土山,射营中,营中皆蒙楯,众大惧。太祖乃为发石车,击绍楼,皆破,绍众号曰霹雳车。绍为地道,欲袭太祖营,太祖辄于内为长堑以拒之。

再看《后汉书·袁绍传》,相关文字亦略同。《三国演义》第三十回描述的双方攻防战就取自这一节。这种工事对垒不同于马背上厮杀,双方既是相持日久,任何一方兵力不可能具有压倒性优势。所以,武纪裴松之注对双方兵力悬殊的说法提出有力质疑:

臣松之以为魏武初起兵,已有众五千,自后百战百胜,败者十二三而已矣。但一破黄巾,受降卒三十余万,余所吞并,不可悉记。虽征战损伤,未应如此之少也。夫结营相守,异于摧锋决战。本纪云:“绍众十余万,屯营东西数十里。”魏太祖虽机变无方,略不出世,安有以数千之兵,而得逾时相抗者哉?以理而言,窃谓不然。绍为屯数十里,公能分营与相当,此兵不得甚少,一也。绍若有十倍之众,理应当悉力围守,使出入断绝,而公使徐晃等击其运车,公又自出击淳于琼等,扬旌往还,会无抵阂,明绍力不能制,是不得甚少,二也。诸书皆云公坑绍众八万,或云七万。夫八万人奔散,非八千人所能缚,而绍之大众皆拱手就戮,何缘力能制之?是不得甚少,三也。将记述者欲以少见奇,非其实录也。按《钟繇传》云:“公与绍相持,繇为司隶,送马二千余匹以给军。”本纪及《世语》并云公时有骑六百余匹,繇马为安在哉?

裴注的驳议在在透彻,每一条都很有说服力。仅曹军获胜后坑杀袁军七八万人(《献帝起居注》谓七万,《后汉书·袁绍传》谓八万),这绝非不足一万士卒所能办到。

曹操以一万兵力战胜袁绍十万人马,在小说家看来亦有悖常理。《三国演义》给出的双方总兵力尽管也是这个比例,却将员额都增至七倍:曹军为七万,袁军为七十万。但关键是,小说中袁军并未将所有的兵力都投入官渡战场。第三十回写到袁军部署:

袁绍移军逼近官渡下寨。审配曰:“今可拨十万守官渡,就曹操寨前筑起土山,令军人下视寨中放箭……”绍从之。

七十万大军何以只用十万守官渡?其余六十万干吗去了?小说未予明说。但是,小说家知道一比十的配置没法搞阵地战,以曹军七万对付人家十万还说得过去,因而不得不修正《三国志》的悬殊比例。小说家讲史不能没有现实感,史家讲故事倒是直奔革命浪漫主义。

曹操之所以能于官渡胜出,按武纪、袁传之说,主要是断了袁军的粮草。一次是派徐晃等偷袭运粮车(武纪称袁绍运粮车有“数千乘”之多),一次是曹操亲率五千人马攻击转运粮草的乌巢。后一次是许攸的主意,许攸本是袁绍的谋士,因贪贿被究劾,投奔了曹操。袁绍得知乌巢被攻,做出一个错误决策,只派少量骑兵往乌巢救援,却让张郃、高览等主力部队去攻打曹操大营。这大概是搬用“围魏救赵”的战法。但张郃等拔寨不成,闻说淳于琼守卫的乌巢已失,便投降了曹操。于是袁军大溃,袁绍带着袁谭弃军而走。

这也是小说第三十回后半截的故事梗概。小说因为有细节铺垫,读来倒不觉突兀,尤其最后袁军溃败一节处理尚好。裴松之为《魏书·张郃传》作注,参核武纪、袁传,发现一个问题:本传称张郃等降曹是见大势已去,而武纪、袁传说是张郃投降而导致袁军大溃,彼此因果参错。其实,无论孰因孰果,这都过于简率。相比之下,小说叙述多少有些层次:让降曹的张郃、高览往劫袁绍大寨,又扬言攻邺郡、取黎阳,断袁军后路,然后曹军八路齐出……这才使袁军俱无斗志,彻底崩溃。耗费这些笔墨,是弥补史传叙述可信性之缺失。

以粮草定胜负,看似很有道理,其实大谬不然。因为袁军并非小股部队纵深突入,十万大军粮草不可能只囤于乌巢一处。官渡战役战场拉得很开,从白马、延津斜插西南,迤逦二百余里,诸史并未说到袁绍的战争动员能力不足。相反,如《魏书·赵俨传》则谓:“时袁绍举兵南侵,遣使招诱豫州诸郡,诸郡多受其命。”连许昌以南的豫州诸郡都响应袁绍,而近处河内、东郡一带何愁不能解决一时之给养,其十万之众怎么突然就不战而溃?

再看《三国志》和《后汉书》两篇袁传,都说到当地百姓多叛离曹操而倒向袁绍,一曰:“太祖与绍相持日久,百姓疲乏,多叛应绍,军食乏。”一曰:“相持百余日,河南人疲困,多畔应绍。”这就是民心向背,在史家叙述中也完全被忽略了。

其实,曹军也缺粮,劫了对方运粮车却“尽焚其谷”,人家的粮草未能为己所用。袁军没有粮草就趴窝,曹军不吃不喝还能打胜仗,这也太神了。陈寿倒是在《贾诩传》中给出一个制胜法宝,说来简单至极,就是破釜沉舟,决一死战:

袁绍围太祖于官渡,太祖粮方尽,问诩计焉出,诩曰:“公明胜绍,勇胜绍,用人胜绍,决机胜绍,有此四胜而半年不定者,但顾万全故也。必决其机,须臾可定也。”太祖曰:“善。”乃并兵出,围击绍三十余里营,破之。绍军大溃,河北平。

本来是被人家包围,这下曹操豁出去玩命,须臾之间就来了个反包围。这种描述缺乏起码的可信度。贾诩夸赞曹操“四胜”,有“决机胜绍”之说,却又认为半年之久搞不定对方是“但顾万全故”,那么曹操的“决机”原本何在?

作为一种历史文本,官渡战役唯独没有疑问的一点是曹胜袁败。那些年湮代远的故事残缺不全,却有着僭述的特征。似乎对史家来说,过程只是想象与叙述,或曰某种建构,而结局才是最本质的东西,因为结局早已判定成王败寇。