您现在的位置是:首页 > 清口之战

清口之战(宋魏清口战役)

清口之战简介

清口之战:“国之大事,在祀与戎”,戎即军事行动,即战争。然而受限于文字载体相对不足、记述形式相对落后,很多历史上的战争连基本的经过都无法复原,留下莫大的遗憾。宋魏清口之战想在广泛获取和梳理资料的基础上,利用已有的各种研究手段弥补这份遗憾。

清口之战过程分析——

image

“国之大事,在祀与戎”,“戎”即军事行动,即战争。在人类悠久的历史中,战争是重要的主题,前后大小战争不可胜数,汇聚成壮观残酷的历史华章。可以说正是在这暴力的碰撞、血肉的倾洒中,我们的文明一点一点走向进步和光明。所以,战争是值得后人探索研究的,我们研究它不是为了追求感官刺激和历史的虚荣,而是总结经验教训,更好地理解文明、创造文明、捍卫文明。

要探索研究战争,就必须立足历史资料的记载。近现代战争有大量官私档案文献存世,足以支持对战争的细节化研究,甚至可以小到一兵一卒的状态。可是古代战争就不同了,尤其是早期战争,受限于文字载体相对不足、记述形式相对落后、历史记录的思路不同,资料十分缺乏,大多数就连基本的经过都无法复原,给战争史研究留下了莫大的遗憾。作为后人不必苛责古人,我们可以在广泛获取和占有资料的基础上,利用已有的各种研究手段,去尽可能还原和复述一场战争或战役。尽管这样的推究未必能做到完美和圆满,但足以推动研究的进展,并为再后来的研究者提供有益的参考。这里一直是这么认为的,也努力尝试写过几篇微末的文字。不过,以前的文字都是立足复原,着力从头至尾叙述战争或战役经过,这既是因为资料相对充分,也是因为此乃战史叙述的程式。然而,由于所涉及的战役资料奇缺,不足以构建完整的故事,所以,特地采取另一种方式,借此战役为题,将复原的思路、方法、经过原原本本展示出来,希望对其他研究者有益。

战役的背景和导火索

我们知道,南北朝初期,宋与魏作为南北对峙的两个大国,相互敌视。刘宋一直想通过北伐收复河南之地,乃至恢复汉晋故土;北魏则始终想统一天下,成为名副其实的“帝国”。两者之间剑拔弩张,乃至多次爆发战争,清口战役就是其中很典型的一战。

那么清口战役是不是北魏又想征伐刘宋,或者刘宋想北伐引起的呢?先翻查两国的史籍,刘宋方面的记载是“(大明二年)是冬,索虏寇青州,刺史颜师伯频大破之”(《宋书·孝武帝纪》) 和“其年(大明二年),索虏拓跋濬遣伪散骑常侍、镇西将军天水公拾贲敕文率众寇清口”(《宋书·颜师伯传》) ;北魏方面的记载是“(太安四年冬十月)刘骏将殷孝祖修两城于清水东,诏镇西将军、天水公封敕文 等击之……十一月,诏征西将军皮豹子等三将三万骑助击孝祖”(《魏书·高宗纪》) ,“(太安)四年,骏遣其将殷孝祖寇济州,高宗遣清水公封敕文等击走之”(《魏书·岛夷刘裕传》) ,“明年(太安四年),宋将殷孝祖侵魏南鄙,诏征南将军皮豹子击之”(《魏书·天象志》)

image

▲ 清口周边示意图。底图为谭其骧《中国历史地图集·东晋南北朝时期》北魏兖青齐徐等州(P48—49),切取清口附近。1为汉晋时东郡郡治,2左侧有模糊黑字“清口”

看,问题来了:双方记载有明显的差异。刘宋方面认为是北魏入侵;北魏认为是刘宋在军事要点修筑了新城池或对旧城池进行了加强(“修”字有整治或修筑的含义,故两义均予保留,后文专称“修城”),形成了军事威胁,甚至于有主动入侵行为。大家知道,史书的记载是有明显的立场烙印的,从不同立场叙述同一件事,是有不同的感情倾向和取舍的。显然《宋书》记述的重点是异族的入侵,而《魏书》的重点是己方出兵的动机,夸大对手的威胁程度。所以两份资料都有可信之处,融汇之后拼成的一幕就是,大明二年(458年)冬天之前,刘宋在清水以东的清口“修城”,为了破坏刘宋方面的这一成果,北魏出动军队(皮豹子军号的差异见第四节相关讨论)予以打击。细心的读者也许会发现,在前述语句里没有使用“加强防御”作为“修城”的修饰,这是因为仅凭上述资料无法确证,需要探查其原因。

那么,刘宋军队为什么在清口“修城”呢?我们首先要搞明白清口在哪儿。根据《水经注》,“济水又北,汶水注之,戴延之所谓清口也……今枯渠注巨泽,巨泽北则清口,清水与汶会也”,再翻阅《中国历史地图集·东晋十六国南北朝时期》(下文言及地图未具体说明的,都是参照这本地图),可知清口在梁山(今山东省梁山县东南梁山)以东。

在这里,北魏与刘宋基本以济水为界。济水以西是北魏的控制范围,属济州(州治碻磝,今山东省茌平县西南);以东是刘宋的领土,属兖州(州治瑕丘,今山东省兖州市)。自清口溯济水而上,经巨野泽、洪水、菏水可至彭城(今江苏省徐州市),顺济水而下则可经四渎口入河水(即黄河)。从彭城到四渎口入河水,是东晋以来南方政权历次北伐主力必走的路线。而自清口东去,可经旧寿张县(山东省东平县西南)向北抵达东平郡治无盐(今山东省东平县东)、兖州州治瑕丘。清口,可谓兖州的门户。

根据《宋书·州郡志》所记平陆、须昌、寿昌(即寿张)、范“四县并治郡下”的情况看,刘宋已经失去对旧寿张、须昌县城的实际控制,也就是说清口并不在刘宋政权的掌控中,当然这里也没有完全被北魏控制,属于中间地带。“修城”恢复对这一带的控制,就等于控制了攻防转换的枢纽,有着军事与政治双重意义。那么 “修城”是为北伐做准备,还是单纯的防御呢?是单纯的防御,原因有二:

image

▲ 在今日梁山风景区北侧的青龙山向北偏东取景,济水出巨野泽过梁山后,在照片右侧远方向偏北流去(百度贴吧历史风云阁全球史吧提供)

其一,宋文帝在元嘉二十七年(450年)、二十九年(452年)连续两次北伐失败,国家元气大伤。元嘉三十年(453年)宋文帝被太子刘劭弑杀,刘劭的弟弟刘骏起兵平乱,并于当年登基成为宋孝武帝;次年(孝建元年,454年),宋孝武帝历经苦战,平定了皇叔刘义宣、开国勋戚之后臧质等人的叛乱;孝建二年(455年),他又镇压了弟弟武昌王刘浑的犯上之举;大明元年(457年)至二年,清理辅佐自己登基的颜竣及士族高门王僧达等。由于连年征战、政局不稳,宋孝武帝一直将主要精力放在内政之上,无力也无暇去真正筹备北伐。

其二,追查史籍,发现《魏书·高宗纪》有这样一段记载:“(太安二年十一月)刘骏濮阳太守姜龙驹、新平太守杨伯伦,各弃郡率吏民来降。”这里新平太守杨伯伦似与北秦州之氐人相关,暂且不论, 问题在这个濮阳太守姜龙驹身上。首先姜是氐姓之一,姜氏可能是北秦州的氐人,但也可能与北秦州无关。《宋书·阮佃夫传》载:“细铠主南彭城姜产之”,可见南迁之侨户有姜姓。那么濮阳郡呢?据《宋书·州郡志》,南徐州“南濮阳太守,本东郡,属兖州,晋武帝咸宁二年,以封子允,以东不可为国名,东郡有濮阳县,故曰濮阳国。濮阳,汉旧名也。允改封淮南,还曰东郡。赵王伦篡位,废太孙臧为濮阳王,王寻废,郡名遂不改”;兖州“永初郡国有东郡、陈留、濮阳三郡”;徐州“濮阳令,本流寓郡,并省来配”。也就是说,濮阳郡就是汉晋时的东郡,而刘宋永初以后沦陷,郡民南迁,形成两个同名侨郡,一个称濮阳郡,后降格成濮阳县,归属徐州侨郡阳平郡;一个在南徐州,称南濮阳郡。又据《宋书·文帝纪》,“(元嘉十八年十月)乙卯,省南徐州之南燕、濮阳、南广平郡”。如果记载无误,则濮阳郡南迁后先隶属南徐州,降格成为县之后才改隶徐州。濮阳郡既然取消了,怎么又钻出来一个呢?是不是这个姜龙驹的身份有问题?

《宋书·鲁爽传》记载,鲁爽于元嘉二十八年(451年)背弃北魏来降,受封“督司州豫州之陈留东郡济阴濮阳五郡诸军事、征虏将军、司州刺史”。鲁氏虽然坐镇义阳(今河南省信阳市),但部属中受封濮阳太守是可能的,因为当时郡太守未必是实职,遥领虚授是普遍的正常的现象。其后,鲁爽因为支持孝武帝争夺皇位,晋封“使持节、督豫司雍秦并五州诸军事、左将军、豫州刺史”,坐镇寿阳(今安徽省淮南市寿县)。这个濮阳郡挂在司州之下的可能性仍然存在,只是这种遥领太守的位置不好确定(大体应该在豫州境内)。鲁爽后来背叛孝武帝被诛, 部下缺乏记载,更不知其所在了。于是,疑问又来了,既然位置不好确定,是怎么将其与兖州联系起来的呢?有两个间接证据。第一就是在孝建三年(即北魏太安二年,456年)冬至大明元年春的一次军事行动。关于这次行动《宋书》有两段记载,其一来自薛安都传,“大明元年,虏向无盐,东平太守刘胡出战失利。二月,遣安都领马军北讨,东阳太守沈法系水军向彭城,并受徐州刺史申坦节度。上戒之曰:‘贼若可及,便尽力殄之。若度已回,可过河耀威而反。’时虏已去……”其二来自申坦传,“大明元年,虏寇兖州,世祖遣太子卫率薛安都、新除东阳太守沈法系北讨,至兖州,虏已去”。从宋书的记载看,宋军中央禁军部队未与魏军接触。但这里有个问题,因为翻遍《魏书》,并未看到当时有讨伐刘宋的行动。不过这个问题我们可以留到后面去解答。

我们来看第二个证据。《宋书·州郡志》记载:“济北太守……永初郡国有临邑、东阿二县,孝武大明元年省。”这两县刘宋时位置不详,但从北魏后来置两县于清口以北济水下游北岸,以及《魏书》记载两县有临邑城、东阿城来看,可能就在济水北岸或侨置在南岸。为什么突然裁掉了呢?

好了,现在来做个假设,姜龙驹因为过去跟鲁爽的关系而不被信任,于是决定带领自己的部曲、民户投向北魏。他可能是从豫州边境投敌,得到了北魏地方军队向清口一线出击的袭扰策应;也可能是先前就因惩罚被迁至济北郡一带(惩罚性戍边),隶属临邑、东阿县,就地投向北魏时,得到北魏地方军队的直接接应。

姜龙驹大约在太安二年十一月跟北魏方面进行接洽,之后行动。北魏军队则在接应中击败了刘宋东平郡地方部队的拦截。此战对于北魏方面来说,算不上主动出击,自然也没有留下讨伐对方的记载。另一方面,当地方的败报层层上报到建康,宋孝武帝经过决策,于次年二月正式派出部队增援;之后,他还裁掉了济北郡的临邑、东阿两县。如此一来,所有的信息就成功串联了起来,便有理由相信是姜龙驹的叛变引发刘宋对清口一带防御的担忧,进而做出加强之举。

清口“修城”的战略背景

前面推测了清口防御性“修城”是引起清口之战的直接原因,那么“修城”本身只是孤立的应时反应吗?显然不是!它是在宋孝武帝系统地调整与充实东方战线这一背景下发生的。这条东方战线,大体包含了青、冀、兖、徐四州, 基本上沿济水或河水与北魏分界。

元嘉三十年,宋孝武帝即位后,征调担任“使持节、监徐青兖冀四州豫州之梁郡诸军事、徐兖二州刺史”的萧思话进京任职,并封萧思话的部属垣护之为“督冀州青州之济南乐安太原三郡诸军事、宁远将军、冀州刺史”、申恬挂宁朔将军军号为“青州刺史”,“寻加督徐州之东莞东安二郡诸军事”,另封功臣徐遗宝为“督兖州诸军事,辅国将军、兖州刺史”。他还将徐兖二州并入南兖、豫都督区,归沈庆之管辖。

徐、青、兖、冀四州都督区被分解,形成多头并存局面 。由于萧思话对京城职务不满,于孝建元年安排其出任“使持节、都督徐兖青冀幽五州豫州之梁郡诸军事、安北将军、徐州刺史,加鼓吹一部”,重任旧督(增督不在管辖的幽州,只有符号意义;军号提升,地位提高;加鼓吹尊崇;减一刺史,民政和控御略削弱)。但萧氏尚未上任,刘义宣、臧质即叛乱,于是前者又被安排去了江州,这块都督区重归旧态。

期间,鲁爽、徐遗宝跟随刘义宣、臧质叛乱,孝武帝任命萧思话的部属夏侯祖欢 为建武将军、兖州刺史,讨伐徐氏。前者顺利平定兖州,成为实际意义上的州都督。而徐兖二州(除东安、东莞两郡)重新聚合成一都督区,交给垣护之。

孝建二年,萧思话病故,引起该都督区内部形势格局与力量对比改变。相对分散的多头军区不利于整体防御,孝武帝安排垣护之“复督青冀二州诸军事、宁远将军、青冀二州刺史,镇历城”,将青冀二州统一成一个都督区,徐兖都督区则保持不变。

孝建三年,孝武帝又升垣护之为宁朔将军,“进督徐州之东莞东安二郡军事”。这两郡是青冀二州由陆路前往建康的重要通道,配属之后,不仅增强了实力,还确保了都督区的纵深,方便维护与后方的联络。同时,孝武帝还注意到历城(今山东省济南市)这个点的重要性,提出将青州州治迁至历城,使青冀二州州治并存,加强当地的防御力量。

image

▲ 南京钟山风景区头陀岭景区刘基洞附近的萧思话抚琴石雕(图片来自网络,拍摄者朱林)

但这个提议遭到了朝野许多大臣的反对。此时,垣护之成为皇帝有力的支持者——除军事因素以外,他仍愿意选 择支持皇帝,因为一是皇帝提升了他的职权,已经给了他甜头,支持是回报,这种支持还可能带来更大的利益;二是这一举措使他更容易控制青州的部属,对他行使职权有利。当然,垣护之在台面上讲的是纯军事因素。他认为,青州以北多河湖等天然屏障,北魏军入侵不会选择这里为进攻方向,每次都走历城一线,所以加强历城防御是非常有远见的策略。在垣氏的强势支持下,青州移镇成功。当年底,濮阳郡与济北郡变乱等一系列事件导致历城西面威胁加大,反过来证实青州移镇的决策是及时的。只是,此次入侵没有走历城,兖州清口—无盐方向便成为一个关键点,需要通过“修城”来堵塞这个通道。

“修城”的实际行动时间介于大明二年的春至初秋之间。因为北魏军队一般习惯在秋冬马肥之际进攻南朝,工程自然以回避这一时期为要(纵然大明 元年开始讨论,可能定策时已经错过佳时);尽管春秋之间正好是农忙时节,那也是没有办法的事情。另外,从时间上而言,“修城”就算不是夏侯祖欢提出的,也至少得到了他的支持。然而夏侯氏很可能没看到清口戍城的完工,因为《宋书·刘义宣传》提及他“大明中,为建武将军、兖州刺史,卒官”,《宋书·孝武帝纪》又云:“(大明二年八月)甲午,以宁朔将军沈僧荣为兖州刺史”。由此可知,夏侯祖欢在八月份之前,于兖州刺史任上去世了。(就此看,夏侯氏担任兖州刺史五年,颇受孝武帝信任。如果姜龙驹及其部曲、民户真是鲁爽所部,被惩罚迁至属于兖州的济北郡,则与夏侯氏的关系未必好,后者必然猜忌前者,更容易逼反。)

image

▲ 东方都督区变迁示意图。白色线为元嘉末年萧思话为都督时四州都督区边界,黑色线为孝建二年垣护之为都督时青冀都督区边界,红色线为孝建三年青冀都督区扩大边界,绿色线为大明二年青冀都督区扩大边界(元嘉三十年的垣护之都督区区域细节较难确定,但从文字即可明白比黑色线区域小,故未绘)。又,图中可见义阳、寿阳等地及豫州全境,可供姜龙驹之位置猜测。底图为谭其骧《中国历史地图集·东晋南北朝时期》宋图(P25—26),冀州应在左侧济南郡历城

夏侯祖欢离世前后,正是东方战线新一轮的结构微调。先是在大明二年七月二十一日,宋孝武帝派遣自己的亲信颜师伯为“持节、督青冀二州徐州之东安、东莞兖州之济北三郡诸军事、辅国将军、青冀二州刺史”,取代垣护之。颜氏不仅在军号上有所提高,在控制区域、支配力量上也略超垣氏。

这是青冀都督区扩张以来的新顶点。它西起须昌县以北济水河岸,东至大海,北及济水,南至蒙山东南,以历城为核心,济北郡为左臂,青州为右膊,进可以出击济水以北甚至河水以北,退可据守建康、下邳(今江苏省睢宁县古邳镇)至历城的东侧通道。显然,在济北郡损失人口,甚至可能损失土地之后,需要进一步拓展青冀都督区的力量,增强其对西侧的控御能力,并安排一个更强势又值得信任的人作为东方砥柱。而垣护之拥护皇帝政策,此事简在帝心;青州移镇平稳之后,皇帝也正好提拔其回朝任职(参见下一节有关文字,垣护之被提拔为右卫将军,负责禁卫之职)。

接替夏侯氏掌控兖州的沈僧荣,面对的是一个支配力量和空间有所压缩的战区,但边防责任也有所减轻。所以他可以集中精力和全副力量来应对清口向东通道的威胁,包括完成清口“修城”的任务。

根据《宋书·颜师伯传》,“其年,索虏拓跋濬遣伪散骑常侍、镇西将军天水公拾贲敕文率众寇清口,清口戍主振威将军傅乾爱率前员外将军周盘龙等击大破之……虏别帅它门又遣万余人攻清口戍城,乾爱、方兴出城拒战”来看,就算是筑新城,也在北魏军队进攻之前成功完成。

随后,同年九月二十一日,孝武帝腹心、挂宁朔将军军号的刘道隆出任徐兖二州都督、徐州刺史,与颜师伯形成搭档和制衡关系。原任都督沈昙庆调回京师任左卫将军,与垣护之分掌禁卫,又是一对搭档和制衡。

刘宋军的将帅和军队

一般对近现代战争中的战役进行研讨,首先是要搞清楚各方的部队编制和投入的部队序列,并由此查实主要几级序列的指挥官和所属部队力量。但是,这种方式很难应用到古代战争,清口之役也是如此。不过,我们有其他的方式,可以稍微拼凑一些有用的碎片。比如刘宋军队,就可以通过搞清楚参加将领的身份,大致了解其所领部队的一些信息。

《宋书》中,以颜师伯传记载此事最详,于是整理该传得以下13个人名(此处个别人物标点按更容易理解的方式重点):

持节,督青冀二州,徐州之东安、东莞,兖州之济北三郡诸军事,辅国将军,青冀二州刺史颜师伯;清口戍主、振威将军傅乾爱;前员外将军周盘龙;虎贲主庞孟虬;积射将军殷孝祖;(辅国)中兵参军苟思达;(辅国)中兵参军江方兴;平南参军童太一;司空参军卜天生;军主刘怀珍;白衣客朱士义;殿中将军孟继祖(据《宋书·孟系祖传》又为孟系祖);建威将军、平原乐安二郡太守分武都。

那么照方抓药,看看正史中是否有这些人的列传,可以借此找到更多人物。很可惜,除颜师伯之外的12人中,殷孝祖、卜天生、童太一在《宋书》里有传,刘怀珍、周盘龙在《南齐书》中有传,但都没有牵涉更多人物。

然后,我们确定,清口属于兖州,兖州属于徐兖都督区,原则上徐兖二州都督刘道隆必然涉及,挂宁朔将军军号出任兖州刺史的沈僧荣一定也参与了作战指挥(两人从被任职到大明二年闰十二月分别有4、5个月的时间,如无意外,基本可以认定到任),但《宋书》中两人的传都极为简单,没有一字涉及。《南齐书》里周山图传记载:“兖州刺史沈僧荣镇瑕丘,与山图有旧,以为己建武府参军”,李安民传记载:“大明中,虏侵徐、兖,以安民为建威府司马、无盐令”。沈僧荣为宁朔将军,军府应为宁朔,何来建武府呢?可能此处是记史者误记或攀附之词(前任夏侯祖欢倒是建武军府)。不管如何,两人都有参与兖州方向作战的可能。

image

▲ 河南邓州出土的彩绘横吹画像砖,表现的是南朝军乐队奏乐行进的情景,原载金维诺《中国美术全集画像石画像砖3》P699

image

▲ 1965年南京富贵山东晋墓出土执盾俑。刘宋去东晋不远,步兵状态亦近。原图载张道一、李星明《中国陵墓雕塑全集4》P116

这是不是全部?不是!在《宋书·刘诞传》里有这么一句:“(大明三年)上乃遣车骑大将军沈庆之率大众讨诞……先是,右卫将军垣护之、左军将军崔道固、屯骑校尉庞孟虬、太子旅贲中郎将殷孝祖破索虏还,至广陵,上并使受庆之节度。”根据《宋书·孝武帝纪》,沈庆之出师是在大明三年四月乙卯,两相对照,则可知前文所述的“破索虏”,就是指大明二年冬爆发的清口之战。这里的将领名单就是参加清口之役的名单,但两传记载的每个人官职不同,参看《宋书·殷孝祖传》中“大明初,索虏寇青州,上遣孝祖北援,受刺史颜师伯节度,累与虏战,频大破之,事在师伯传。还授太子旅贲中郎将,加龙骧将军”即可明白,是清口战役大捷后晋升所致。又按前述同样方法,查《宋书》垣护之、崔道固两传亦无更多延伸。

还有《南齐书·焦度传》记载:“孝武初,青州刺史颜师伯出镇,台差度领幢主送之。索虏寇青州,师伯遣度领军与虏战于沙沟杜梁。”这位台军幢主焦度也参加了本役。

人头集齐了,我们一个个来梳理:

颜师伯肯定是职权最高的长官无疑,但他无权指挥军号低于自己的刘道隆及其徐兖都督区。垣护之是颜师伯的前任,虽然调任京官,但没有立即返回建康,而是留在当地打完了清口战役。估计有三个原因,一是颜师伯抵达青冀二州州治历城很晚,尚未完成正常交接清口战役即爆发;二是正常交接完成,垣护之尚未离开青州,见战事爆发主动留下;三是原定就安排垣护之辅助颜师伯一段时间(至少度过当年冬天),属于非正常交接。这里倾向于第三点。毕竟从颜师伯的履历来看,他不是宿将。虽然孝建元年刘义宣、臧质造反时,他曾担任过宁远将军、东阳太守,领兵置佐,防备东面,但当时叛军在西线,东线主要是威慑地方官员,所面临的风险和需要的军事能力不尽相同。

颜师伯统率下的将领应包括崔道固、庞孟虬、殷孝祖、苟思达、江方兴、童太一、卜天生、刘怀珍、朱士义、孟继祖、分武都、焦度。这12人分别来自四个体系:颜师伯自身辅国军府、台军(中央禁军)、其他官员军府、地方军府。

辅国军府即两位中兵参军苟思达、江方兴。这两人不是皇帝安排的,就是颜师伯自己挑选的。从官职看,这两人统率的是青冀二州的核心州兵力量。

台军系统包括虎贲主庞孟虬、积射将军殷孝祖、殿中将军孟继祖、领幢主焦度。前三个官职在平时都没有明确的部队归属,战时配给台军部队,所以统领的是中央禁军的精锐。当然最后一位焦度还可以算半个辅国军府的人。为什么?他带一幢人送颜师伯上任,既然是护卫,那么也可视为辅国府的卫队。而且战役期间,他因为战功被颜师伯任命为辅国参军。

还有一个崔道固也属于此系统,但需要特别拿出来单说。根据前面的推论,我们已知他在刘诞传中的职务应是清口战役之后晋升的,那么战前呢?《宋书·崔道固传》载:“历太子屯骑校尉,左军将军。大明三年,出为齐、北海二郡太守。”其在清口之役前可能是太子屯骑校尉,出征统率的自然是台军部队。另外,这个职务明显高于虎贲主,为何崔道固在诸传中皆无关于此役的像样记载?这应该是崔后来卷入刘宋末年政治斗争所致。

其他官员军府包括太宰参军、军主刘怀珍(第一个官职查自《南齐书·刘怀珍传》),司空参军卜天生,平南参军童太一。当时的太宰是江夏王刘义恭,司空为竟陵王、南兖州刺史刘诞,平南将军为东海王、刚离开江州刺史任的刘祎 。可见朝廷从各藩王军府中抽调了不少人才(当然不能简单认为这些人就是某藩王的人)。他们率领的部队,主要是配给的台军部队,当然还可能有一部分藩王军府管辖的部队。

地方军府一人,即建威将军、平原乐安二郡太守分武都。他统率的是平原、乐安二郡的郡兵以及个人的私军。当然前面各体系的将军,出身优越的,可能都多少有点私军,这就不赘述了。

还有一个白衣客朱士义。他是平民,应该和出身“北馆客”的焦度类似,是从平民自荐投效者中选拔的武艺高超之人,临时充任将领。他跟随刘怀珍出战,则可 等同于焦度跟随颜师伯,应该是充任台军部队的中下级军官。

徐兖都督区的情况则更为简单一些,因为仅涉及沈僧荣的部下。从前述分武都的分析便可知,周山图、李安民、傅乾爱、周盘龙指挥的都是当地州郡兵以及自己的私军。当然还有一些间接证据,如《南齐书·周盘龙传》记载:“周盘龙,北兰陵兰陵人也。宋世土断,属东平郡。”这里东平郡即是前述清口以东的东平郡,即周盘龙以郡中将官身份率郡兵戍守清口。需要说明的是,按《魏书·傅竖眼传》记载,傅乾爱的官职为青冀二州司马兼领魏郡太守,应属颜师伯帐下,但《魏书》所记不如《宋书》可信,暂不采纳。不过《魏书》记载亦有其价值,该疑点与倒数第二节另一套复原模型有涉,特提醒读者注意。

北魏军的将帅和军队

相对刘宋,北魏的相关记载就更为简略了。在第一节战役的背景和导火索中,引《魏书·高宗纪》,参战的两位高级指挥官为镇西将军、天水公封敕文与征西将军皮豹子。翻查《魏书》两人传记,封敕文多了个副手“新平公周盆”,皮豹子也有个副手“给事中周丘”。此二周皆无传,且皮传没有提到第三人,与高宗纪中的三将对不上。再翻遍《魏书》,也没有任何其他信息了。

是不是真的一点线索都没有呢?光看北魏方面的记载就不够了,需要对照着看。《宋书·颜师伯传》记载的北魏将领有以下9位:

伪散骑常侍、镇西将军天水公拾贲敕文,窟环公,五军公,河南公树兰,黑水公,济州公,青州刺史张怀之,别帅它门,陇西王。

《南齐书·焦度传》还提及一位:骑将豹皮公

并且,按照刘宋官方说法,他们斩杀了窟环公、五军公、河南公树兰、别帅它门。按照萧齐官方说法,焦度刺伤了骑将豹皮公。

由于南朝记载部分是音译,部分是意译,还存在误传误记的可能,加上讳败吹胜是人之常情,所以大部分不能相信。比如在《魏书》内可以查到的有河南公和陇西王。河南公有两位,一位叫伊馛,一位叫寇祖。按伊馛传,伊为“侍中、司空、领太子太保”,并且自太安三年(刘宋大明元年)“与司徒陆丽等并平尚书事”,根本不可能分身出外作战。至于寇祖,参考《魏书·寇赞传》,他活到了其后孝文帝时代,自然不可能死,但其时任官职不详,不能断定是否在军中。(据说北魏袭 爵有降级的惯例,寇祖袭爵自父亲,可能时为河南侯。)

陇西王为源贺,时在朝为官,到次年才外任征南将军、冀州刺史 。他可能带兵出征吗?观两位主将是公爵,再出现一位王爵的指挥官不太合理。至于为源贺一位异姓王直接讳败,似乎也无必要。如果记错或夸张爵位呢?当时还有一位陇西公叫拓跋仑,是皇族,据《魏书》其传,“高宗即位,除秦州刺史,进爵陇西公。卒,谥定公”。因为其死亡时间不详,不知是否牵连其中。

青州刺史张怀之的官职与姓很可能是对的。因为《魏书·张彝传》记载:“曾祖幸,慕容超东牟太守,后率户归国。世祖嘉之,赐爵平陆侯,拜平远将军、青州刺史。祖凖之袭,又为东青州刺史。”按此记载,青州刺史为张幸其他儿子或张氏族人担任,又张氏担任东青州刺史或青州刺史属官,被刘宋方面误传为青州刺史等等,各种情状皆有可能。

此外,拾贲敕文就是封敕文,而豹皮公就是皮豹子。当然,焦度传中记的豹皮公是不是真的皮豹子本人又两说了,就看各位读者愿意相信什么。

image

▲ 1990年洛阳市偃师南蔡庄出土的北魏彩绘铠马武士俑。武士身着两当甲,马身披甲,为重骑兵。皮豹子属下的重骑兵很可能是这个样子。原图载俞凉亘、周立《洛阳陶俑》P129

这里还有个小小的脑洞。在《魏书·高宗纪》中有这么一句:“(太安四年)十有二月,征东将军、中山王托真薨。”这个时间死得太巧合了。这位中山王是谁呢?《魏书·太武帝纪》记载:“(太平真君十年十二月)己酉,以平昌公元托真为中山王。”作为北魏皇族之王爵,若真出征,不太可能给封敕文与皮豹子当下手。同时北魏真需要为 位王爷讳败讳亡而隐去真实历史记录吗?有利的解释是,北魏后期,同为中山王的皇族元英亦有大败,《魏书》仍然记载了。不利的解释是,元英毕竟没有死。而又根据《宋书·杜骥传》的记载,太武帝的叔父英文特勒之死便不见于《魏书》的记载。当然《宋书》这段文字本身的真实性值得探究。

脑洞打住,继续正题,从已知的四位的职务情况去推测其所领部队。封敕文的实际官职存在很大疑点。据《魏书·封敕文传》记载:“始光初为中散,稍迁西部尚书。出为使持节、散骑常侍、镇西将军、开府、领护西夷校尉、秦益二州刺史,赐爵天水公,镇上邽……高宗时,与新平公周盆击刘骏将殷孝祖于清东”。始光为魏太武帝第一个年号,查《魏书·世祖纪》,封敕文出现两次,一次在太平真君六年四月“诏秦州刺史、天水公封敕文击慕利延兄子什归于枹罕……秋八月丁亥,封敕文入枹罕,分徙千家还上邽”,一次是在太平真君七年三月“金城边冏、天水梁会反,据上邽东城。秦州刺史封敕文击之”。但在其两次出现之间,还夹带了一个太平真君六年十一月“河东蜀薛永宗聚党盗官马数千匹,驱三千余人入汾曲,西通盖吴,受其位号。秦州刺史、金城公周鹿观率众讨之,不克而还”。这说明什么?说明封敕文先因讨伐什归有功,迁任别职,因继任者周鹿观不能胜任甚至伤重而死 ,又再次回到秦益二州刺史位上。由此来看,其传疏漏甚多,不能简单认为他在文成帝时还在秦益二州刺史任上。所以封敕文可能从都城平城(今山西省大同市)出发,也可能先前就在东南战线。其所领部队可能混合了中央禁军与河北、河南军镇的镇戍部队。从其执行任务看,可能混合了步骑部队,并携带有攻城的战具。

image

▲ 云冈石窟第16窟主佛,据说是按照文成帝的形象雕刻,原图载张焯《中国石窟艺术云冈》P165

封敕文的副手周盆为新平公, 新平是关中旧郡名,按北魏初期封爵多数与镇守地、立功地相关来看,周盆曾与封敕文搭档或相识的可能性很大。但由于时任何职不知,难以判断,姑且与封氏一样理解了。

另一路主将皮豹子时任“内都大官”,属于尚书系统,负责刑狱,应在京师。尽管《魏书·皮豹子传》记载“出内都大官”,像是到外任职,但更像是文句有误。 至于第一节中出现的他的军号问题,最有可能是文本有误,当然也不能全然排除改军号的可能。

皮豹子的副手周丘任职给事中,这个官职一般认为是加官,是荣誉性质,赏赐功臣子弟,亦在京师可能性为高。因此皮豹子所统,可能以中央禁军部队为主。特别是明确记载“三万骑”,应当是纯的骑兵,而且核心是冲锋陷阵的重甲骑兵部队。

另外,从前文青州刺史张怀之的推测以及存在济州公看,北魏在东南边境一带的镇戍兵也参加了本战役。(这个青州应属于遥领,实际驻屯位置不详,以边境可能性为大。北魏济州州治在碻磝,是河南四大军镇之一。此处所说的东南边境镇戍部队概念,被包含于前面封敕文条目下的“河北、河南军镇”中,但所指范围要小得多。)

北魏视角的作战情况

需要首先说明的是,本节与下一节资料直引处,因《南史》《北史》与《宋书》《南齐书》内容基本相同或不及,不作重复罗列。个别字有不同的,属文本差异,不影响整体解读,亦不赘论细辨(另,原文明显未简化的个别字予以简化)。

好了,我们先来看北魏方面的记载:

“(太安四年)冬十月甲戌……刘骏将殷孝祖修两城于清水东,诏镇西将军、天水公封敕文等击之……十一月,诏征西将军皮豹子等三将三万骑助击孝祖……五年春正月己巳朔,征西将军皮豹子略地至高平,大破孝祖,斩获五千余级。” (《魏书·高宗纪》)

“高宗时,与新平公周盆击刘骏将殷孝祖于清东,不克。” (《魏书·封敕文传》)

“刘骏遣其将殷孝祖修两当城于清东以逼南境。天水公封敕文击之,不克。诏豹子与给事中周丘等助击之。豹子以南寇城守,攻围费日,遂略地至高平。刘骏瑕 丘镇遣步卒五千助戍两当,去城八里,与豹子前锋候骑相遇,即便交战,豹子军继至,大破之。纵骑追击杀之,至于城下,其免者十余人而已。城内恐惧,不敢出救。既而班师。” (《魏书·皮豹子传》)

“(太安)四年,骏遣其将殷孝祖寇济州,高宗遣清水公封敕文等击走之,又诏征西将军皮豹子击孝祖于清东。五年,豹子还,遂掠地至高平,大获而还。” (《魏书·岛夷刘裕传》)

“明年,宋将殷孝祖侵魏南鄙,诏征南将军皮豹子击之,宋军大败。” (《魏书·天象志》)

“皇兴初,加白曜使持节、都督诸军事、征南大将军、上党公,屯于碻磝,以为诸军后继。白曜攻纂于无盐城,拔其东郭。其夜纂遁,遣兵追执之,获其男女数千口……白曜既拔无盐,回攻升城。肥城戍主闻军至,弃城遁走,获粟三十万斛。既至升城,垣苗、麋沟二戍拒守不下。白曜以千余骑袭麋沟,麋沟溃,自投济水死者千余人。击垣苗,又破之……先是,淮阳公皮豹子等再征垣苗不克,白曜以一旬之内,频拔四城,威震齐土。显祖嘉焉,诏曰:‘卿总率戎旅,讨除不宾,霜戈所向,无不摧靡,旬日之内,克拔四城,韩白之功,何以加此……’” (《魏书·慕容白曜传》)

最后一段文字,虽然不是直接讲本次清口之役,但对理解本次战役很有帮助,特予以摘录。从这几段,可以确定以下几点:

1.文成帝向封敕文下发征讨诏书的时间是十月甲戌,即十月初三日。

2.封敕文进攻清口城不利。于是,文成帝在十一月又加派皮豹子率精锐骑兵参与战斗。

3.皮豹子似乎没有攻城,采取野战(为什么用似乎参见本节后文),先在瑕丘城外8里处消灭增援清口的刘宋援军5000余人,并继续南下在次年正月初一打到高平郡境内。

4.皮豹子取胜后立即班师。

5.封敕文受挫于清口城下,而皮豹子的小胜也没有达成北魏统治者的期望。这次“挫折”成为北魏上下的遗憾,以至于后来慕容白曜在同一战略方向上连破无盐、肥城(今山东省肥城县)、垣苗(今山东省长清县西南)、麋沟(推测在今山东省长清县西南,具体见后文)四城时,献文帝给予大大的表扬,称之为“韩白之功,何以加此”。(现在大家好理解,为什么北魏方面记述本次战役文字寥寥了吧。)

分析现在就止步还太早,这里还藏有封敕文可能不在秦益二州刺史任上的间接 证据。据《元和郡县图志》,秦州(即封敕文所在的上邽,今甘肃省天水市)至长安800里,云州(即北魏都城平城)至长安1960里,诏旨传达者行程合计2760里。按400里一日计算,诏旨传递约需7日。另长安至郓州(清口以北之须昌)1820里,合计封敕文部队行程大约在2600里,按大军日行50里计,约需52天。实际上,就算事先有所准备,大军也不可能接旨当天就出动;这样连续强行军,期间也必然要有休整;抵达目的地之后,更不可能当天就投入战斗。按照最低限度进行计算:十月初三一早诏使出发,接旨3天后大军开拔,期间10天休息1天,抵达第二天即进攻……则至少约两个月零一旬。

image

▲ 假设封敕文仍驻扎上邽(秦州治所),从秦州出军的推测示意图。白线为诏令下达路线,蓝线为封敕文进军路线。底图为谭其骧《中国历史地图集·东晋南北朝时期》宋魏时期全图(P17-18),为元嘉二十六年状况

我们知道,封敕文是进攻清口不利,文成帝才派皮豹子增援的。十月的两个多月之后早就超过十一月了吧。但这里还真不一定。为什么?新问题来了:按赵宋朝刘羲叟编的《长历》,北魏在这一年是闰十月,而按清朝汪曰祯《历代长术辑要》取闰十一月。十月初三的两个月之后到底是十一月还是闰十一月呢?史学大家陈垣在《二十史朔闰表》中保留了两家说法。如果是闰十一月,这个问题就不用讨论了; 如果是闰十月,那么按前述推算清口之战爆发的时间大约在十一月十二日的样子。封敕文进攻清口不利的消息一定是他或者在军中的其他人士上报的,报告从清口前线传回平城大约需5天 。也就是说,就算文成帝是十一月三十日下旨皮豹子出发,留给封敕文在清口作战不利的时间满打满算也只有13天。才进攻13天就觉得攻不下来,向皇上请求援兵,这个可能性太低了,特别是封敕文的军队很可能攻击的不止清口,还有更东面的场合,所需的进军时间和回报时间就更长了。(这一点后文还会涉及。)

日历的问题还影响到前述第三条皮豹子攻没攻城的判断。在不知道皮豹子具体十一月几日出发,又不知道北魏历法究竟是取闰十月还是闰十一月的情况下,无法估测皮部抵达前线的时间,自然也就难以判断《魏书》的记载是真实的还是维护北魏的体面了。

关于日历的问题还有个更有趣的地方,就是刘宋方面取十二月为闰月。也就是说后人在研究大明二年最后3个月时,不得不面对三套时间体系:按刘羲叟的意见是闰十月、十一月、十二月,按汪曰祯的意见是十一月、闰十一月、十二月,按刘宋朝的是十一月、十二月、闰十二月。瞧这乱的……当然幸运的是,宋魏双方这3个月都罕有详细资料,毋须对比澄清,但不幸也在此,没有充分资料可资对比研究。

刘宋资料地理信息的回溯

讲完北魏方面,接下来就要从刘宋方面着手了。北魏因为作战不利,所以资料少,那么刘宋呢?按照惯例先罗列资料:

“是冬,索虏寇青州,刺史颜师伯频大破之。” (《宋书·孝武帝纪》)

“其年(大明二年),索虏寇历下,遣羽林军讨破之。” (《宋书·天文志》)

“大明二年,虏寇青州,为刺史颜师伯所破,退走。” (《宋书·索虏传》)

“其年(大明二年),索虏拓跋濬遣伪散骑常侍、镇西将军天水公拾贲敕文率众寇清口,清口戍主振威将军傅乾爱率前员外将军周盘龙等击大破之。世祖遣虎贲主庞孟虬、积射将军殷孝祖等赴讨,受师伯节度。师伯遣中兵参军苟思达与孟虬合力。行达沙沟,虏窟环公、五军公等马步数万,迎军拒战。孟虬等奋击尽日,孟虬手斩五军公,虏于是大奔。孝祖又斩窟环公,赴水死者千计。虏又遣河南公、黑水公、济州公、青州刺史张怀之等屯据济岸,师伯又遣中兵参军江方兴就傅乾爱击破 之,斩河南公树兰等。虏别帅它门又遣万余人攻清口戍城,乾爱、方兴出城拒战,即斩它门,余众奔走。虏天水公又率二万人复来逼城,乾爱等出战,又破之,追奔至赤龙门,杀贼甚众。上嘉其功,诏曰:‘虏驱率犬羊,规暴边塞,辅国将军、青冀二州刺史师伯宣略命师,合变应机,济戍奋怒,一月四捷,支军异部,骋勇齐效,频枭名王,大歼群丑。朕用嘉叹,良深于怀。可遣使慰劳,并符辅国府详考功最,以时言上。’

“苟思达、庞孟虬等又追虏至杜梁,虏众多,四面俱合,平南参军童太一及苟思达等并单骑出荡,应手披靡。孟虬等继至,虏乃散走,透河死者甚多。既而虏更合众大至,孟虬等又破之。世祖又遣司空参军卜天生助师伯。张怀之据縻沟城,师伯遣天生等破之,怀之出城逆战,天生率军主刘怀珍、白衣客朱士义、殿中将军孟继祖等击之。怀之败走入城,仅以身免。继祖于陈遇害,追赠郡守。又虏陇西王等屯据申城,背济向河,三面险固,天生又率众攻之,朱士义等贯甲先登,贼赴河死者无算,即日陷城。虏天水公又攻乐安城,建威将军、平原乐安二郡太守分武都与卜天生等拒击,大破之,虏乃奔退,追战克捷,直至清口。虏攻围傅乾爱,乾爱随方拒对,孝祖等既至,虏彻围遁走。师伯进号征虏将军。” (《宋书·颜师伯传》)

“大明初,索虏寇青州,上遣孝祖北援,受刺史颜师伯节度,累与虏战,频大破之,事在师伯传。” (《宋书·殷孝祖传》)

“(大明)二年,索虏寇青、冀,世祖遣军援之,系祖自占求行。战于杜梁,挺身入陈,所杀狼籍,遂见杀。诏书追赠颍川郡太守。” (《宋书·孟系祖传》)

image

▲ 《宋书·颜师伯传》中清口战役相关的内容,版本为汲古阁本

“大明二年,虏围泗口城,青州刺史颜师伯请援。孝武遣怀珍将步骑数千赴之,于麋沟湖与虏战,破七城。拜建武将军、乐陵河间二郡太守,赐爵广晋县侯。” (《南齐书·刘怀珍传》)

“索虏寇青州,师伯遣度领军与虏战于沙沟杜梁,度身破阵,大捷。师伯板为己辅国府参军。虏遣清水公拾贲敕文寇清口,度又领军救援,刺虏骑将豹皮公堕马,获其具装铠矟,手杀数十人。” (《南齐书·焦度传》)

刘宋方面的资料丰富多了,甚至还有战争细节。但别高兴得太早,仔细看看,这些信息相当混乱。我们重点关注特别详细的颜师伯传和《南齐书》两传的记载。

首先令人奇怪的是,清口明明属于兖州,为何所有记载都说北魏是“寇青州”?甚至天文志直指“历城”呢?

其次,按照颜师伯传的描述,战斗大致分成两阶段,第一阶段是清口、沙沟、济水河岸方面“一月四捷”,第二阶段追杀至杜梁,又在麋沟城、申城作战。第一阶段庞孟虬、殷孝祖率援军参战,第二阶段除了庞、殷援军之外,还有卜天生带刘怀珍等参战。

刘怀珍传与颜传基本没有抵牾,刘传说泗口是错的,应该是清口,但麋沟湖跟麋沟城显然相关。这个后文讨论。

焦度传证明了两次援助,而且第二次遇到皮豹子,与北魏军的行动可对应,可信度陡然提高。但该传的问题也很大,按传文,焦度第一次就打到杜梁了,第二次却没提杜梁,与颜传似乎对不上。

那么这究竟是怎么回事?中国古代史书,特别是列传的记载,未必一定严格按时间和事情发生的顺序来。重点在于突出传主光辉的一面,所以在使用材料时有剪辑和取舍,甚至先说时间发生在后面的重要情节,再说之前的其他事情。所以,我们不能简单地照搬史书内容。不照搬的话有没有什么方法可以尝试窥测真相呢?有,那就是复原地理信息,以一个军事指挥官的眼光去审视战役。

我们从前述刘宋方面的记载中寻找出如下地理点:

青州,清口、清口戍城,沙沟,济岸,赤龙门,杜梁,麋沟城,申城,乐安城,麋沟湖及七城。

对照北魏方面的记载,再清理出如下地理点:

清水、清东、两当城,高平郡,无盐,肥城,升城,垣苗戍,麋沟戍。

在这些地理点中,大部分被一条线索贯穿,那就是济水。我们翻阅《水经注》 便能明白其中大部分的关系。这一切的起点在清口。前文已述,清口即济水与汶水汇合处,而清水即巨野泽流出的济水的别称,清东即清水以东。对照三者,清口戍城可能不会离这个清口很远。为什么只是可能?因为还存在另一种情况,等全部分析完,大家就会明白。这里先按照距离不远剖析。从地图上看,最有可能的位置就是汶水北岸须昌县以南,只有这样才能扼水陆的要冲,在进一步恢复对须昌、寿张县城的控制后,形成掎角互援之势。那么两当城呢?“两当”是古代的一种短袖衣服,前后两片形态大体一致。明白了这点,两当城就好解释了:一种解释是与汶水南岸的旧寿张县城形成夹立之势;另一种是此城可能对开二门,即四面城墙中平行的两面开城门(考虑到旧寿张县城不在控制,这一种可能性更大)。同时,傅乾爱、江方兴击破张怀之的“济岸”,可能就在济水、汶水相夹的三角区域济水一侧。

表1

《水经》原文 《水经注》
须昌县西 /
谷城县西 /
临邑县东 石门、平阴城(齐长城、防门、广里)、巫山(孝子堂)、湄湖、河水经四渎口与济水汇合、垣苗城
卢县北 与湄沟汇合(湄沟出自湄湖)、卢县故城、升城、与中川水(沙沟水)汇合、与玉水汇合、泺口(与泺水汇合,泺水源出历城县故城西南)、华不注山
台县北 巨合城、平陵县故城(新朝为乐安)
菅县南 /
梁邹县北 /
临济县南 临济(北城东汉乐安郡治,南城被阳城)、平州坈、平安故城、高昌县故城、乐安县故城、薄姑城

注:本表主要为了论证清口之役的相关地点,故水经注中各县注文所讲地点,全体无关者整县不录,相关者选录,以避免太过冗杂。

自清口以下,将《水经注》的文字整理成表(参见表1),一眼便能看到三个地名是完全对应的——“垣苗城”与“垣苗戍”,“升城”与“升城”,“中行水”(沙沟水)与“沙沟”。而青州州治历城已知是在华不注山的西南,泺水以东。这样我们就先确定了4个点。

接来下的,需要其他方面的知识基础和联想能力。也许有人会说,那个麋沟湖、麋沟是不是有可能对应湄湖和湄沟啊?对,没错。在上古,麋与湄是通假。如,《诗·小雅·巧言》中“彼何人斯,居河之麋。”所以麋沟湖和麋沟的位置大致也能确定了,麋沟城(麋沟戍)应在麋沟入济水处附近(可以扼济水要冲),另外七城如果属实(详见下一节的相关讨论),也大体在麋沟湖、麋沟一带。

image

▲ 湄湖设想诸示意图,左上为按任相宏先生的推测复原(以下简称任图),右上为按张华松先生的推测复原(以下简称张图),左下为按推测复原(以下简称笔图)。图未作精确推测,仅示意。底图自左下至右上的河道为今日黄河河道,其中一部分为昔日济水河道。各图中白色1—5点分别为今日胡官屯镇、赵官镇、马集镇、牛角店镇与广里村。红色1为升城。左侧蓝线为四渎口来的河水(《水经注》卷五认为东北流,卷九有东南注的说法,中国历史地图集从后者,这里按前者),右上角红线为沙沟水。任图中浅蓝色粗线为当时济水推测水道,细线圈为湄湖,细直线为湄沟。浅蓝色1为垣苗戍,2为麋沟戍。张图黄色线及号码亦同。笔图中沙沟之外的红色线与前两者意义相同。红2为垣苗戍,3为麋沟戍

这里需要展开一下。关于湄湖(麋沟湖)的精确定位存在一定的争议。山东大学考古系的任相宏先生判断湄湖原址是孝里洼,而济南市社科院的张华松先生认为湄湖就是后来唐朝《元和郡县图志》里记载的“淯沟泊”,并提出“从地理形势上看,今长清孝里、归德两镇濒河之平原洼地,以及黄河以西东阿县牛角店镇和齐河县马 集乡、赵官镇、胡官屯镇,中古时代都在湄湖的湖区之内”。任相宏先生判断的湄湖有两个问题:一是失之太小,《水经注》载湄湖“方四十余里”,即南北、东西跨度均40里以上,显然孝里洼偏小;二是位置过于南面,麋沟的长度过于长。张华松先生的结论也有问题,他对湄湖则估计过大。因为倘若湄湖向北延伸到胡官屯的话,则其位置不应在升城西南方而近似西方了。同时,麋沟、垣苗两戍的位置也就十分别扭——升城的位置只有扼麋沟、垣苗二戍后路,构成足够威胁,《魏书·慕容白曜传》记载的“既至升城,垣苗、麋沟二戍拒守不下”才有表达的意义。是什么造成张先生误判呢?可能是度量衡的问题。根据汉尺(23.1厘米)计算的1里大约是415.8米,晋尺比汉尺长4.8%(1.1厘米),相去不远;而《陕西技术监督志》载,按唐尺计算的1里大约是530米。唐代30余里相当于汉代的38里以上,25里相当于汉代约32里。则方40余里与此相差不大,可视为湖面积缩小的结果。以此在卫星地图上推测的垣苗、麋沟二戍与升城的关系更为紧密。(这里的相关讨论参见湄湖设想诸示意图。)

还有可以联想的地名吗?有。这就跟表1中的齐长城有关。根据任相宏先生对齐长城的考察,其源头在今济南市长清区孝里镇广里村北400多米处。在220国道西侧平地,现存“一条孤立的东西向墙体,东西长160米,高2米,底宽30米,顶宽27米”。这段墙体堵塞的正是自历城至平阴的交通要道。齐长城虽然在后世逐渐被废弃,但夯土城墙并未立即消失。此外,根据《水经注》,“平阴城南有长城,东至海,西至济。河道所由,名防门,去平阴三里。齐侯堑防门,即此也。其水引济,故渎尚存”,这段城墙还有护城河保护。那么现在想象一下,一段高耸的夯土墙与河道共存,是什么样的情景?像不像堤坝?堤坝在古语里怎么说?是“梁”。而杜就是堵塞、封闭的意思。于是有理由怀疑,“杜梁”指的是这一段废弃的齐长城。

image

▲ 齐长城起点附近遗迹分布图,原载《东方考古》第1集P265,为任相宏先生《齐长城源头建置考》一文配图

其次就是“赤龙门”。这里注意到了临邑县的济水石门。《水经注》引《地理志》,“水有石门,以石为之,故济水之门也”。按中古音,赤、石是近音字, 存在混淆的可能。而石门两侧,必有墙体,久之荒废,亦高于四周,如垄形状,存在被叫成“石垄门”的可能。又此门本水门,因鲤鱼与龙门之故事流传,被附会戏称为“石龙门”亦有可能。综上,流传变异成“赤龙门”的可能不能排除。当然不利的证据也有,按地图上临邑县东取到须昌县南汶水北岸,直线距离已有约100里,傅乾爱真能离开城池追出那么远?所以讨论了这么多,并不能确认“赤龙门”的所在。

剩下需要推理的,一个是乐安城。从表1可以看出,可能叫乐安城的不少。依《宋书·州郡志》,乐安郡治千乘县似乎就是乐安县故城,被称为乐安城的可能性很高。但从军事作战角度而言,此城距离战地过远,难以理解。要知道,此乐安城虽为《宋书》记载,但未必与州郡志完全对应。那么该怎么确定呢?解这个题目的关窍在分武都的官职身上,他是平原、乐安两郡的太守,并身带建威将军军号。按《魏书》中“东平原郡,刘裕置,魏因之。治梁邹”,可知北魏人所谓的东平原郡即刘宋的平原郡,平原郡治在梁邹,那么离此最近的乐安就是东汉乐安郡治所在的临济北城。以梁邹—临济北城画一个圈,此圈所在区域东去是巨大的平州坈,西面 是南北延伸的长白山(就是隋末农民起义爆发地),形成一段独立的战线,在此设立一个身兼两郡的军府,十分合理。更重要的是,这里是历城的右翼,攻击这里能真正做到让颜师伯首尾难顾。

image

▲ 分武都辖区示意图,底图为谭其骧《中国历史地图集·东晋南北朝时期》北魏兖青齐徐等州(P48-49)切取部分。1为梁邹城,其西南为长白山脉;2为乐安城(临济北城);3顶着的灰色图块为平州坈

还有一个是申城。根据前文,该城位置“背济向河,三面险固”,推测其城门向河水方向开启,其余三面应该都是河湖,其中背靠济水。从描述上看,它更像是位于河水、济水汇合处附近,只有这样才能三面险固。

最后还剩下3个与济水关系不大的。其中无盐即东平郡治,肥城戍当为肥城县城,高平郡即兖州所属郡(郡治高平县,今日山东省微山县西北),这些都不难理解。

两种可能

尝试将上节讨论的诸地理点还原到复原地图之上(见清口战役第一种态势示意图),再对照《宋书》颜传与《南齐书》两传,很明显一种大态势就固定下来:北魏封敕文部进攻西端的清口,并出动一部分军队在东线沙沟一带既阻援又牵制青冀二州的力量。颜师伯在得到台军增援之后,主动出击,先击破沙沟方向的北魏军队,随后一部在湄湖一带反击,一部向西南挺进,杀到杜梁,还进一步增援到清口。湄湖、杜梁的反击至少发生了两次,在颜师伯的支援下,清口驻军屡挫北魏军队的攻势,确保了清口戍城。而北魏方面在封敕文遭挫后,又增派皮豹子打击青兖的刘宋机动力量。皮豹子在麋沟湖以北一带受制于坚城,只得南下打到瑕丘甚至高平,寻求野战。封敕文也出动偏师袭击乐安,企图让颜师伯首尾难顾,分散力量。前者虽取得一定战果,但没有决定性的胜利;后者虽达到让颜师伯分兵的目的,可并没有对主战场形成有效影响,而且偏师亦受挫。最终北魏军队得不偿失,坚持无益,不得不撤军。

这里无法讲清的主要是湄湖、杜梁的反击。地理位置虽然初步理顺了,可仍然无法解释前一节质疑的焦度传与颜师伯传不统一的问题。如果把全部推测展开,这里存在N种组合可能,有“骗”稿费的嫌疑,所以不再赘述,感兴趣的读者可自行排列组合推测。唯一方便探讨的细节是刘怀珍夺取7座营垒的推测:个人觉得在麋沟湖附近存在7座城池的可能性不大,如果将升城、卢县故城也算进去,这些可不是小营垒,则刘怀珍及其上级卜天生功劳太盛,在《宋书》内完全一笔不提也不像话,可能是《南齐书》为凸显刘怀珍而有所夸张。所以,应该是包括申城、麋沟戍和北魏军为堵截刘宋军增援临时设下的营垒在内有多座为刘宋军所破。

当然,前述的态势构建在更大层面上,还存在致命的缺陷。缺陷在哪儿?试举七方面:

其一,前面已经陈述过一次,即清口明明在兖州,为什么《宋书》的记载全是“寇青州”(历城可视为对青州的指代),完全不涉及兖州?真的是为突出颜师伯,以次要战场描述取代主要战场吗?而《魏书》一直说清水东、清东,却未语及清口。从北魏官员郦道元著《水经注》只认可一个“清口”看,是否这里面存在问题呢?

其二,杜梁之战北魏军队失败,“透河死者甚多”,也就是说许多人跳河水了。如果按前述构建,杜梁是齐长城,那么它正位于济水南岸,战败了应该是“透济死者甚多”,如何会越过济水去跳更北的河水?

其三,北魏青州刺史张怀之囤据的“济岸”如果是汶水与济水的三角,为何他后来又出现在约200里外的麋沟城据守?这样的调动合理吗?

其四,从前面引用的《魏书·慕容白曜传》可以看出,慕容白曜是自碻磝出发先攻无盐,再掉头经肥城去升城、垣苗戍、麋沟戍的,这条行军路线就是清口一带至无盐的通道,夺取的也是前述四城(见清口战役第二种态势示意图)。清口戍城如果在清口,为什么经过此地没有夺取扼重要枢纽的该城?如果他绕道,那么没有夺取该城的他,如何以胜利者的姿态与皮豹子进攻垣苗戍失败对比?垣苗戍与清口 戍之间是否有内在关联?这个矛盾究竟是《魏书》行文的荒诞,还是这其中真的有问题?

image

▲ 清口战役第一种态势示意图,蓝色线为北魏军队行动推测路线,黄色线为皮豹子南下推测路线。红色线为颜师伯指挥宋军反击与增援清口推测路线,绿色线为建康台军增援青州路线

其五,从历城到清口距离在280里以上,到瑕丘在190里之内,建康北上也是到瑕丘近于到历城 。为何不是台军增兵瑕丘,在内线就近增援,反而要颜师伯自300里外,走一条几乎贴着边境推进、侧翼极易遭到北魏军打击的路线去增援?这个以迂为直也玩得太惊心动魄了吧。

其六,还记得前面讲傅乾爱是兖州的将领存疑吗?《魏书·傅竖眼传》中对傅乾爱的记载全是青冀二州的事。假如傅氏真是颜师伯的辅国司马、魏郡太守,《宋书》所记其振威将军、清口戍主与这样的职位完全可以对应,即四个官职可以合理组合在一个人身上,毫无怪异之感(即辅国司马带大郡郡守,振威将军军号低于辅国将军一个品级,以第四品将军带大郡号并兼具体的要地城守。类似的例子在《宋书》中不少)。

image

▲ 清口战役第二种态势示意图。红色线为宋军行动推测路线,蓝色线为北魏军行动推测路线,蓝色带点曲线为北魏军阻击线。张怀之蓝色圈内麋沟戍之外的小黑点,代表正文推测的刘怀珍夺取的城池营垒大致可能位置。由于刘怀珍夺取的城池没有明证,不好轻易推测为升城和卢县故城,故而将这两城置于圈外。黄色线为宋明帝时,北魏慕容白曜入侵推测路线

其七,如果清口战役主战场真在兖州境内,刘道隆与沈僧荣传为何未置一词?真的只是记载上的忽略或者因为瑕丘城外战败不光彩?

这里最致命的要数第二点。一旦杜梁的位置变动的话,那么原先的体系就彻底崩溃了——假设杜梁靠近河水,则 青州部队不是向西南增援清口,而是向西,向垣苗戍一带进攻。这样一来,前七点质疑将烟消云散。

综合以上,似乎当时存在第二个清口,或者说清口戍城不在清口而在垣苗戍一带。这样一来济岸、杜梁与赤龙门也要移位,济岸应在沙沟与湄湖之间的济水岸边,而杜梁、赤龙门无法精确定位,只能猜测是河、济汇流的某处河坝和某石水门或河坝缺口或河口险要处。

也许有人会说,你别忘了,你开头推测战役的起因可使用过清口的位置,如果清口真的要移位,是否意味着战役原因分析错了呢?还有《魏书·天象志》认为是殷孝祖“寇济州”,这个又是否能对应?这两个问题都可以找到合理的解释。第一个问题看地图即可理解,因为姜龙驹背叛及济北郡两县的损失,北魏对济北郡的军事压力增加,更容易向济北以东的垣苗戍、麋沟戍一带侵略,必须增强当地的防御才能有效保护历城这一青冀咽喉。第二个问题更不是问题,北魏济州的东北缘正是延伸到垣苗戍、麋沟戍一带。

由此,得到第二种战役形态。封敕文率北魏军队挺近垣苗戍及清口戍,他们夺取了麋沟戍,切断垣苗戍、清口戍的后路,建立营垒数座,并以一部推进至沙沟阻援。颜师伯在台军崔道固、庞孟虬、殷孝祖所率援军的支援下,打破沙沟防线后向前推进。随后,卜天生、刘怀珍的增援赶到,连续前进,攻取了一些城戍和营垒。北魏派皮豹子增援,之后就与第一种态势的结尾描述一致。(见清口战役第二种态势示意图。)

需要补充的是,在这个形态下,封敕文如果是从秦州来的,他所需行军及汇报的时间更多(具体数据就不详细计算了),更证明了他不可能来自秦州。而刘宋方面表现抢眼的傅乾爱应该属于颜师伯的青冀二州军府系统的将领。另外,兖州刺史沈僧荣及下属的作用也就有限了,史书忽略实属正常。

那么我们是否可以就此更改清口的位置呢?当然不能,因为当前没有任何文献资料支持第二个清口存在,原来的清口位置又是郦道元认定的。要知道郦道元的父亲郦范以慕容白曜左司马的身份参加了对青、冀、兖州一带的征伐,对当地地理十分熟悉。据学界对郦道元出生年份的研究,就算按最晚的472年计算,郦范去世时他也已经18岁,其中13—17岁随父亲在青州刺史任上,搞错地点的可能性很低。 既然两套体系都存在致命问题,又有自身的合理性,那就只好两者均予以保留。但这样一来,复原就不可能实现了。

读到此,也许有人会说,你绕了一个大圈,结果最后还是没能拿出复原构建,这又有什么意义呢?开头就说了,这篇文章不在于实现复原,而是将过程尽可能地展示给大家看,使大家了解我的探索方式,也启发大家的思考,共同探讨、交流,使古代战役复原的工作得到完善。

对两军表现优劣的思考

最后,就两军实战表现,谈一些不成熟的看法。

从北魏方面的记载来看,刘宋军队有效利用坚固的城戍堡垒,遏制了北魏重骑兵的冲击力。当然,在湄湖一带作战,还可能利用了河湖的天然地理优势,由于不能复原当时精确的地理形势,难以细说了。而北魏军队为了打破这种僵局,也尝试了攻敌必救(进军乐安、瑕丘、高平),从各个方面调动刘宋军队,企图破坏刘宋军的整体防御,但效果不显著。其中瑕丘城外的战斗值得多讲几句。刘宋兖州增援部队很可能是在缺少侦察的情况下,以为离城近安全,被少数轻骑兵组成的侦察骑兵黏住,未及时转移,突然遭遇敌军重骑兵突击而惨溃。当然这些都是猜想,仅供参考。

从刘宋方面的记载看,本来骑兵不占优势的刘宋军,在对抗马步混编的北魏军队,甚至含重甲骑兵的纯骑兵队伍时,表现抢眼。除了前述地形因素,以及中央禁军具备相当实力之外,不少将领的军事素质高、熟悉敌情地情是重要原因。如崔道固有“干用”(即才干),垣护之“气干强果”(有气魄和才干,并且强悍果断),殷孝祖“有气干”,卜天生有“骁壮之气”,童太一“虓虎有干力”,出身氐人的焦度“力气弓马并绝人”,孟继祖“有筋干异力,能儋负数人”,周盘龙“胆气过人,尤便弓马”。同时,崔道固侨居青州,父亲出任过泰山太守(泰山郡属兖州,在济北郡东南,郡治在今山东省泰安市岱安区范镇);垣护之、刘怀珍、傅乾爱久居青冀;殷孝祖做过济北太守,对战区地域十分熟悉。垣氏甚至参加过元嘉年间全部三次北伐,拥有在东线与北魏军队周旋的丰富经验。相对而言,封敕文长期在北魏西部与诸少数民族作战,皮豹子虽然屡挫刘宋军队,也主要是在西线,难免差人一筹。

此外,在作战中,刘宋军队不少将领身先士卒。像朱士义、焦度出身“馆客”,即自己投军的人士,两人均可谓剽悍刚强,热心战功。所以,前者攻申城时“贯甲先登”,后者“手杀数十人”,以“身破阵”,并刺皮豹子落马,抢得他的马铠装 具和武器。像苟思达、庞孟虬亦曾“单骑出荡”。还有,孟继祖为刘宋开国名将孟龙符之弟孟仙客之孙,因为孟龙符无后,由其父孟微生继承伯父之临沅县男爵位,后遇罪夺爵,被流放南荒之地广州。大明元年刚遇到大赦返回,他没能继承爵位,只招入台军中为将。此次作战本来轮不到他出征,但他“自占求行”。在杜梁,他如同伯公孟龙符当年单骑入敌阵破敌立功,后又众寡不敌战死在青州境内一样,也是挺身入阵,杀敌“狼籍”战死。就他的举动而言,一是遗传的个性使然,二是强烈的功名心和恢复家族荣耀、洗刷耻辱的欲望使然。

image

▲  1982年陕西省安康市长岭乡出土的南朝挟鼓徒附俑,所谓青州刘怀珍的门生大体也是这样的依附民。本图原载《神韵与辉煌——陕西历史博物馆国宝鉴赏:陶俑卷》P63

当然,这里还怀疑,青、冀当地人入中央禁军和地方私军,他们表现出的保土卫家意识也是重要因素。如孝建初年,刘怀珍(就是前述参加清口战役的这位)献自家附庸门生千人充当京城宿卫,这事震惊了孝武帝。后来,青冀一带豪强共被强行征召数千人为台军(也是削弱地方的对策);崔道固也曾到青州招募士卒,亦是入台军。从中可以看出两点,一是这些人中有不少人很可能在大明二年作为台军支援青冀,所以表现出出色的战斗力;二是青冀地方豪强,诸如傅乾爱、分武都等,一定还保留着不少私军,这些士卒成为清口战役中的作战骨干。要知道,步兵为主的军队在遇到骑兵突击时,对内在的组织纪律和意志力的需要往往大于对个体武力的需要。而将兵熟悉、上下信任及服从、与作战地域血脉相连,正是组织纪律和意志力的重要保障。

此外,刘宋方面的记载中,多次出现北魏军“投水”或“透河”而死的事例。这固然是由于战场在河湖遍布的区域,但其中是否有北魏军布阵失误或者因骄轻敌而被诱入不利地形的情况呢?

以上种种,包括全文种种推测,在有更多资料佐证之前,也只有保持疑问状态了。或许在未来,伴随着新资料的发掘,不同人士脑力的补充和智识的碰撞,乃至更多精力的投入,可能还会有更多进展吧。