南京有一個姓顧的書生,博學多才,能寫會畫,他家裡卻非常貧窮。因為母親年老,顧生不忍離開老母膝下,只好天天給人家畫畫,得點錢維持生計。顧生已經二十五歲了,還沒娶妻。他家對門是一所空房子,一個老太太和一個少女借住在裡邊。因為她們家裡沒有男人,所以也從沒問過她們是什麼人。
一天,顧生偶然從外頭回家,見對門的女子從他母親房裡出來,約有十八九歲,長得秀麗風雅、世間無比。女子迎頭碰見顧生,也不太迴避,但神情冷峻威嚴。這女子走後,顧生走到母親房裡詢問母親,母親說:「剛才來的是對門的女郎,來向我借剪刀尺子。她說她家也只有一個母親,別無他人。我看這個女孩子不像窮家人,問她為什麼不嫁人,她說母親年老無人侍奉。明天我過去看看她母親,順便暗示一下。如果她們要求條件不高,我們結親,你可以代養她的母親。」
第二天,顧母去女郎家裡拜訪,見她母親是一個聾老太太,看她家裡窮得沒有隔夜糧。問她們靠什麼維持生活,回答說靠女兒做針線活。顧母慢慢試探著說了一起過日子的想法,老太太似乎同意,但女兒默默不語,意思不太願意。顧母沒再說什麼,就回家了。回到家裡仔細想了一下當時的情況,對顧生說:「莫不是女子嫌我們家窮?這孩子為人嚴肅,不說也不笑,長得雖艷如桃李,性情卻冷如冰霜,真是個怪人!」母子倆猜疑了一會兒,也就罷了。
一天,顧生坐在房子一端作畫,有個少年來求他畫幅畫。這少年長得很漂亮,但樣子很輕薄。顧生問他從那裡來,他說是「鄰村」的。自此以後,每三兩天就來一次。稍稍熟了點,就漸漸與顧生說笑。顧生擁抱他,他也不太拒絕,隨即關係暖昧起來。從此,兩人來往更加親熱。一次,那少年見女郎走過,用眼盯著她走遠,問顧生是誰。顧生說是「對門的女子」,少年說:「這女子長得這麼漂亮,神情卻非常可怕!」一會兒,顧生到母親屋裡。他母親說:「剛才女子來借米,說是斷炊已經一天了。這個女孩子很孝順,家裡窮得可憐,應該多少周濟她一些。」顧生聽了母親的話,就背一斗米去她家,並轉告了母親的話。女子留下來,也不說感謝的話。自此,女子也常到顧生家,見到顧母做衣服或鞋子,她就拿過來替顧母做,出出進進,幫著操持家務,就像顧家的兒媳婦一樣。顧生看到這樣,越發感激女子。後來顧家每次得到別人送來的禮物,總是分一半給女子的母親。而女子也仍不說感謝一類的客氣話。
一次,顧母的陰處生病,疼得日夜喊叫,女子天天來看望她,給她擦洗換藥,一天來三四次。顧母很是不安,但女子卻從不嫌髒。顧母說:「唉!我們家到哪裡娶到個像你這樣的媳婦,早晚伺侯老身到死!」說罷就哭起來。女子安慰她說:「你兒子很孝順,勝過我們孤女寡母幾百倍呢!」顧母又說:「在我床頭來來去去的,這豈是孝子能辦得到的?況且老身已是暮年之人,早晚難保不入土,我所不放心的就是沒有後代根苗。」她倆正說著,顧生進屋來。顧母哭著對兒子說:「我們欠姑娘的太多了,你不要忘記,要報答她的大恩大德呀!」顧生聽了,向女子施禮感謝。女子說:「你照顧我母親,我都沒有謝你,你何必謝我呢?」於是顧生更加敬愛她。然而女子的舉止一直很嚴肅,顧生一點也不敢輕易接近她。
一天,女子出門回來,顧生注視著她。她忽然一回頭,向顧生嫣然一笑。顧生喜出望外,就跟在女子後面進了她家的門。顧生想親近她,女子也不拒絕,欣然同意。事後,女子告誡顧生說:「這事只可一而不可再!」顧生沒表示同意,就回了家。到了次日,顧生又約女子相會,女子非常嚴肅地連理也不理他就走了。此後,女子仍天天來顧家,天天相見,並不給顧生好話聽、好臉色看。有時顧生說句笑話逗她,她就冷語拒絕。有一次,女子忽然在沒有人的地方問顧生:「前幾天常來的那個少年是誰?」顧生告訴了她。女子接著說:「那人舉止行動,幾次對我無禮!因為是你的朋友,沒有理他。請轉告他:要再對我無禮,他是不想活了!」到了當天晚上,顧生把女子的話告訴了那少年,並且告誡他說:「你要小心,她可不是好惹的!」少年說:「既然她不可侵犯,你怎麼侵犯了她呢?」顧生表白並無其事。少年又說:「若是沒有事,怎麼男女之間不好說的話她都說給你呢?」顧生一時回答不上來。少年又說:「請你也轉告她:不要裝模作樣!不然的話,我就到處給你們宣揚!」顧生聽了很生氣,怒形於色,那少年就走了。
一天晚上,顧生正一個人坐在屋裡,女子忽然來了,笑著說:「我與你情緣未斷,這豈不是天意!」顧生高興得不得了,急忙把女子抱在懷裡。忽然聽到有腳步聲,兩人驚慌地起來,就見少年推門進來。顧生驚問:「你要幹什麼?」少年笑著說:「我來看貞潔的人呀!」又望著女子說:「今天不怪我了!」女子柳眉倒豎、臉面發紅,一句話不說,急忙翻開上衣,露出一個皮囊,隨手抽出一把匕首,閃閃發光。少年一見,嚇得拔腿就跑,女子追出門外,四下一看,不見蹤影。她把匕首往空中一拋,嘎嘎有聲,一道亮光像長虹一樣,接著就有一件東西「撲」地落在地上。顧生急忙用蠟燭一照,見是一隻白狐,已經身首兩處了,他大驚失色。女子說:「這就是你戀著的好朋友!我本來想饒了它,誰知他偏偏不想活!」便收了匕首放在鞘裡。顧生又拉女子進屋,女子說:「剛才讓妖精來掃了興,請等明晚吧!」說罷出門就走了。
第二天晚上,女子果然又來了,二人便共同歡好。顧生問她有什麼法術,女子說:「這不是你應該知道的,需要保密。洩露了,恐怕對你不利。」顧生又與女子商量嫁娶的事,女子說:「我們已經同床共枕,我又幫助你干家務,已經成了夫妻,還談什麼嫁娶呢?」顧生又說:「你是不是嫌我家窮?」女子說:「你家固然窮,難道我家富有?今晚相會正是可憐你窮呀!」臨走時又對顧生說:「這種見不得人的事,不能次數太多。該來的時候我自然就來;不該來的時候,你強求也沒有用。」以後兩人遇到一起,顧生每每想引她單獨說句話,女子每次都避開了。但是她來顧家縫衣做飯,料理家務依然如故,不亞於真正的媳婦!
又過了幾個月,女子的母親去世了,顧生竭盡全力幫助女子料理喪事。女子從此就一個人過日子。顧生想:女子一個人住在家裡,可以隨便去找她了。於是他就跳牆進了女子的院子,隔著窗子叫她。但喊了好幾聲,沒有人答應。他看看門,門關得好好的,人卻沒在屋裡。顧生暗想:女子可能與別人約會。第二夜又去探看,仍和昨晚一樣,他便將一個玉珮放在窗台上回家了。隔了一天,顧生與女子在顧母房裡相遇,顧生走出房來,女子也追了出來,對顧生說:「你懷疑我了?人都有自己的心事,有的不能隨便告訴別人。今天不叫你懷疑,也不可能。但是有一件急事你得趕快幫我想法子。」顧生問是什麼事,女子說:「我已懷孕八個月了,恐怕不久就要生了。我的身份還不清楚,只能給你生下來,但不能幫你撫養。你可秘密告訴你母親,找一個奶媽,假說是抱了個小孩,不能說是我生的。」顧生答應後,告訴了母親。他母親笑著說:「這個姑娘真奇怪,娶她不願意,卻與我兒私自相好。」高興地同意了他們的要求,只等生下孩子再說。
又過了一個多月,一連幾天女子沒有來顧家。顧母心裡有疑慮,就去女子家探看。一看大門關得嚴嚴的,院裡寂靜無聲。叫門很長時間,女子才蓬頭垢面從屋裡出來,請顧母進了屋,又把門關上。顧母進屋一看,一個小嬰兒已在床上了。顧母驚訝地問:「生了多少時候了?」回答說:「三天了。」顧母解開小褥子一看,是一個小男孩,寬寬的腦門,非常可愛。顧母高興地說:「我的兒,你已經為老身生孫子了。今後你孤單一人,哪裡去安身?」女子說:「我還有一件心事未了,不能告訴母親。等夜裡沒有人時,可把小兒抱去。」
顧母回到家裡,與兒子說了這一切,心裡都暗暗覺得奇怪。到了夜裡,便把嬰兒抱回去了。又過了幾天,夜半三更時,女子忽然推開顧生的門進來,手裡提著一個皮口袋,笑著對顧生說:「我的大事已辦完了,從此咱們就分別了。」顧生急著問是什麼原因,女子說:「你幫我奉養母親的恩德,我一時一刻不會忘記。以前我曾對你說過『可一而不可二』,是說報答你的恩情不在於與你同居,而是因你家貧不能娶妻,想給你留下後代根苗。本來希望一次就能懷孕,誰知又來了月經,所以破戒又與你同房了一次。今日既已報答了你的大恩大德,我的心事也已了卻了,沒有什麼遺憾了!」顧生問:「皮袋中是什麼東西?」回答說:「仇人的頭。」打開一看,血肉模糊。顧生非常驚慌,細問原因。女子說:「過去一直沒有與你說,就是因為事情機密,怕走漏了風聲。今天大事已經成功,不妨告訴你。我本是浙江人,父親官居司馬,為仇人陷害,被抄斬滿門。我背著母親逃了出來,隱姓埋名三年了。之所以沒有立即報仇,就是因為有老母在世。後來老母去世,卻又有一嬰兒在肚內,因此又推遲了一些時間。那些夜晚我沒在家,是去探探仇人家的道路和門戶,怕不熟,出了失誤。」說罷,就出了顧生房門,回頭又囑咐說:「我所生的孩子,你要好好的養著。你福薄且沒有多少壽限,這個孩子可以給你光宗耀祖。夜已深了,不要驚動老母親,我走了。」顧生心甚淒涼,正想問她到哪裡去,女子身子一閃,像電光一亮,就不見了。顧生呆呆地站在那裡像木頭一樣,一直過了很久很久。
到了天亮,顧生告訴了他母親,母子兩人只有感歎而已。三年後,顧生果然死了。他的兒子十八歲就中了進士,奉養祖母,直到送終。