鄭州金大用,出身世家舊貴。其妻庚娘,是尤知府的女兒,容貌端莊秀麗,品格溫柔賢惠。夫妻兩個如膠似漆,感情深厚,日子過得很是愜意。後因流寇侵擾,河南戰亂不休,金大用只得帶領全家同難民一起逃往南方。
逃亡途中,隅遇一年輕人,自稱名叫王十八,揚州人,也是帶著家眷逃難的,願意為金大用一家引路。金大用很高興和他結伴同行。
不久,一行人來到河邊,王十八便要找船走水路。庚娘悄悄告訴丈夫:“這個人表情很奇怪,常常偷看我,不知在想什麼,八成不是好人,我們不能和他同船。”金大用同意了。
王十八忙前忙後找到船,又幫忙搬行李,顯得十分殷勤。金大用盛情難卻,見他也有妻子跟隨,就沒再懷疑有什麼問題。
王妻對庚娘態度和藹可親,兩人住在一起有說有笑的,談得十分投機。王十八和船工就像老相識一般在船頭攀談著。
黃昏時,船行到一偏僻險要的地方,只見四周水霧迷漫,讓人看不清方向,金大用有些懷疑起來。當夜幕降臨,明月升起時,船已駛進一片蘆葦叢中停了下來。 金大用父子受王十八相邀,出艙賞月。金大用剛走到船邊,就被王十八乘其不備擠到水裡。金父看見,急得要喊,又被船工用篙捅了下去。金母聞聲出來探看,也被捅下水去。這時,王十八才大喊救人,但水天茫茫,已無三人蹤跡。
金母出來時,庚娘跟在後面,眼前的一幕正好被她看見,已經明白十之八九了,但她不動聲色,也沒有任何驚慌的表現,只哭著說:“丈夫和公婆都溺水而亡,教我到哪裡去呢?”王十八連忙安慰,說:“請不要悲傷,我有良田美宅,家境殷實,請娘子隨我到金陵去,保你一生吃穿無憂”。庚娘聽罷就不哭了,說:“如果能得到你的照顧,我也知足了。”王十八大喜過望,對她大獻殷勤。
夜裡,王十八向庚娘求歡,被庚娘以正來月經為由拒絕,王十八隻得和妻子一同去睡。
半夜,艙中忽然傳來王十八夫妻的吵架聲,不知是何緣故。聽王妻說:“你做的事要遭報應,恐怕離天打雷劈不遠了。”接著聽到王十八毆打他妻子的聲音。又聽女的大聲說:“就是死,也不願當你這個殺人犯的老婆。”王十八大聲怒吼,隨即聽到他把自己老婆拖出船艙扔進水裡的聲音。
船到金陵,王十八帶著庚娘回家拜見老母。老母見回來的不是原來的兒媳,十分奇怪。王十八解釋說原來的已落水死了,這是後來新娶的。
當晚,王十八又要與庚娘同房,庚娘說:“成親這樣的事能隨隨便便的嗎?就是窮人,也要喝一杯薄酒,你是有錢人,就這樣冷冷清清地度過洞房花燭夜,是會被笑話的。”王十八覺得說得有道理,很高興地擺上酒菜,和庚娘對飲起來。王十八喝了幾杯就有了醉意,本想不喝,但拗不過庚娘殷勤相勸,就又喝了一大杯,一下子醉得很利害。
王十八乘醉急不可耐地拉著庚娘就要上床。庚娘收拾好房間,熄了燈,說要小便就出去了。進來時她手中多了一把刀,黑暗中王十八什麼也看不見,等庚娘到了身邊就一把摟住。庚娘順勢捉住著王十八脖子用力砍下去,第一刀沒砍死,他慘叫著跳起來,庚娘立即砍第二刀,砍死了。
王十八有個弟弟王十九,此時聽到哥哥的喊叫聲,就過來檢視。庚娘見無處可逃,便揮刀自刎,因刀口太鈍沒砍進去,只得開門向外跑。王十九在後緊追不捨,庚娘急忙跳進水池。
庚娘被打撈起來時,已經死了,但依然容貌秀麗,像活著一樣。
眾人來王家驗屍,在窗上找到一封信,信是庚娘留下的。她把事件的來龍去脈寫得清清楚楚,說自己忍辱負重殺王十八是為死去的丈夫和公婆報仇。
庚孃的剛烈行為感動了大家,經過商量,都願意出錢安葬她。天剛亮,已有幾千人前來祭奠,人們面對她的遺容肅然起敬。
當天就籌到一百兩銀子。庚孃的墓地選在南郊,她穿著錦袍戴著珠冠下葬,墓中隨葬品也很豐富。
金大用沒有死,他被擠下水後,幸好抓到一塊木板,身子順水飄流到淮河邊上,第二天早上被一條小船搭救上岸。 救他的船是當地富翁尹老翁的。尹老翁是個大善人,專門用船在河裡巡視,遇有落水者都會被拯救。
金大用對救命恩人非常感激,甦醒後就去拜謝。尹老翁見他孤身一人,無處可去,就留他在家教自己兒子讀書。
金大用不知父母下落,很想去尋找。這時,又有人撈起一個老頭和一個老太婆的屍體。金大用過去,見正是自己的父母,於是痛哭不止。在尹老翁的幫助下,金大用安葬了父母。
不久,又從河裡救起一個女的,女的自稱是金大用的妻子。金大用去看後,說她不是自己的妻子,而是王十八的。她向金大用哭訴,稱自己也是被王十八陷害的,一定要和他在一起,而不能拋棄她。金大用此時心亂如麻,堅決不同意她的請求,女人更加悲傷,哀哭不止。尹老翁問明事情經過,很同情她的遭遇,就勸金大用收她為妻。金大用以父母剛剛去世正在居喪,而且自己有仇要報,帶著妻室不方便等等為由拒絕了。女的問金大用:“如果庚娘在,你也能找理由推脫不要她嗎?"尹老翁也在旁勸說,並願意暫時代為收養,金大用就答應了。金大用安葬自己父母時,女人披麻戴孝,傷心痛哭和自己父母去世沒什麼兩樣。
辦完喪事,金大用就尋思著報仇的事。他把自己打扮成乞丐,身上藏了刀子,就要到揚州找王十八。女的說:“他過去說家在揚州是騙你的。我姓唐,那個狼心狗肺的和我是同鄉,祖居金陵。江湖上的強盜都是他的幫兇,你冒然前往,很可能報仇不成,反遭暗害。”金大用聽後不知該怎麼辦。
這時有傳聞,說金陵女子替夫報仇的事。人名、地點都有憑有據,金大用確定這女子就是庚娘,他悲喜交集,淚流滿面,對唐氏說:“幸好我們沒做對不起她的事,這樣的烈婦,我怎麼能忘恩負義呢?"但唐氏堅決不肯中途分手,情願留下作妾。
一天,尹老翁有客來訪。客人與金大用一見如故。客人姓袁,是軍中的副將軍,此時正奉命清剿流寇,因缺個秘書,就請金大用去擔任。後來流寇被剿滅,袁某立了戰功升遷,就保薦金大用任遊擊。
回到淮上,金大用便與唐氏成婚。不久二人去金陵,準備為庚娘修理墳墓。船過鎮江,金山在望,此時江面開闊,忽然一隻小艇貼著船邊駛過。金大用看見艇上一位老太太身旁有位少婦長得與庚娘一模一樣。此時,少婦也從視窗探頭往外看,金大用發覺就連她的神情都很像庚娘。他不敢隨便打招呼,情急之下便喊:“看一群鴨子飛上天了“少婦也高聲回應說:“饞嘴兒想偷吃貓食嗎?”這兩句話是當年他們在閨房開玩笑說的話,現在卻成了相互驗證身份的暗語。金大用大驚,急忙掉轉船頭,靠近一看,認得真是庚娘。兩人相見,抱頭痛哭,船上人無不為之動容。
唐氏過來以妾的身份叩拜庚娘,庚娘非常吃驚,金大用便把自己落水後的經歷向她訴說了一遍。庚娘拉著唐氏的手親熱地說:“我們當初在船上相談甚歡,還記得嗎?沒想到現在成了一家人。你幫我安葬公婆,應該是我謝你,怎麼能以妾的身份見我呢。"於是兩人就以姐妹相稱,庚娘比唐氏大一歲,稱唐氏為妹妹。
接著,庚娘把自己的遭遇也一五一十地講給金大用聽。原來,她被埋葬後,也不知過了多久,忽然耳邊有聲音說:“庚娘,你丈夫還活著,你們還有機會團聚。”她像是從夢中驚醒,睜開眼睛周圍一片漆黑,伸手觸控四壁堅硬窄小,才知道自己已經死了,如今身在墳墓。雖覺得胸中憋悶,也還不太難受。
附近一些無賴少年,見庚娘殉葬品多而且精美,就挖開墳墓,打破棺材。正準備取出東西時,卻發現庚娘還活著,都非常驚慌。庚娘怕這些人傷害自己,就對他們說:“幸虧你們來,我才能重見天日。我頭上的珠寶,你們都拿去吧,請把我送去尼姑庵,還能賣點錢。我決不會告發你們。”盜墓賊一齊說道:“娘子是烈婦,連鬼神都敬重。我們是因為窮才幹出這種事情,你不洩漏就已經很好了,怎麼能把你賣了當尼姑呢?”庚娘卻說這是自己願意的。其中一個盜墓賊說:“鎮江有個老夫人,姓耿,沒有兒女,你去見她,她一定會十分歡喜。”庚娘表示感謝,把頭上珠寶首飾取下都送給他們,他們開始不敢接受,在庚娘一再堅持下,才收了。
盜墓賊將庚娘送到耿夫人家裡,只說因船遇險迷路才來投奔的。耿夫人果然十分高興,把庚娘當自己親生女兒一樣對待。今日母女倆到金山遊玩後準備回家,不曾想讓金大用碰巧遇上了。
金大用聽庚娘講完事情的經過後,就到船上拜見耿夫人。夫人像對待女婿一樣熱情,接到家裡盛情款待,還留在家裡住了幾天才讓他們回去。耿老夫人出身世家,寡居當地多年,此後,他們就像至親一樣經常來往。