上一篇提到,一篇文章裡面如果有不同工具,我希望可以分開保存,同時保留來源與關聯。
接著想到另一個問題:如果我忘記自己存過,又把同一個網址貼進去,系統會怎麼處理?
我希望它可以提醒我已經有這筆資料。不過在提醒之前,也要先比較內容,因為網址沒有變,不代表裡面的資料沒有更新。
這次我請 AI 核對雲端正式版的程式,看看目前的做法,和我期待的方式差在哪裡。
在一般沒有進入多主題拆分的保存流程裡,系統會查詢資料庫,確認是否已經有完全相同的來源網址。
如果找到,就直接回傳原本那筆資料。
下面是正式版程式的核心片段,省略了紀錄訊息:
if source_url and _allow_split:
existing_id = db.find_item_by_url(source_url)
if existing_id:
return db.get_item(existing_id)
這段的意思是:
找到相同網址 → 取得既有資料 → 結束這次保存流程。
它可以避免在這條路徑裡新增一筆重複資料,但這裡沒有比較新舊正文,也沒有把新內容寫入。
原本程式的註解與紀錄訊息用了「合併」這個說法,不過實際執行的是回傳既有資料。所以不能只看到「合併」兩個字,就認為內容已經更新了。
以 MCP 的網址存入入口來說,前面會先嘗試擷取網頁,再交給保存流程。即使這次取得的文字有所不同,走到上面這個分支時,仍然會直接回傳舊資料。
目前這段回傳也沒有另外提供「新舊內容有差異」的結果,讓我做下一步選擇。
上一篇談過,一篇文章可能會拆成多筆資料。這個情況也要分開看。
目前程式會先嘗試判斷是否需要拆分主題,再進行前面提到的網址重複檢查。因此,不能把所有存入情況都說成「相同網址就直接跳過」。
如果內容被拆成多個獨立主題,程式會用主題名稱尋找既有條目。找到時,會把這次的內容加在舊內容後面,附上「更新(日期)」的小標題,再重新分析。
不過,名稱比對使用的是文字包含關係,不能保證每次都判斷成同一個工具;這條附加路徑也沒有先完整比較新舊內容是否相同。
| 情況 | 目前的處理 |
|---|---|
| 未走多主題拆分,找到相同網址 | 直接回傳既有資料 |
| 拆成獨立主題後,名稱比對找到既有條目 | 把內容附加到原本資料後面 |
前者不代表已更新,後者也還不是完整的版本管理。
這次是查閱程式確認流程,沒有在正式資料庫重複送入資料做測試。
對我來說,只判斷網址是不是一樣,還不太夠。
例如同一個工具的介紹頁,原本只有基本功能,後來新增使用限制或設定方式。如果系統只告訴我「已經有了」,我可能不知道內容其實改過。
所以我希望的流程是:
如果這次沒有成功取得正文,也應該說明無法比較,而不是直接判定內容沒有變。

討論到這裡,我才進一步想清楚,「保留」對我來說不是繼續只看舊資料。
如果選擇保留版本,我希望主要閱讀的位置放新的內容,舊的版本則透過內文連結留下來。這樣平常先看到更新後的說明,有需要再回頭比較以前的內容。
用畫面來說,就是上方顯示目前的內容,下方有「查看舊版」的入口。點進去之後,可以看到上一次保存的內容,而不是把所有新舊文字一直堆在同一頁。

圖說:版本保留的介面構想,非現有系統畫面。主要頁面閱讀新版,需要時再查看舊版。
這裡有個細節:「查看舊版」不能只是連回原網站。
原網站如果已經更新,點回去看到的仍然是新內容。要真正保留舊版,知識庫必須保存當時的內容快照,再讓連結指向那一份。
這個知識庫還會用 AI 整理內容,也會透過 NotebookLM 加入補充。
因此,後續做差異比較時,不能直接拿「這次抓到的原文」,和「已經加過補充的整份內容」相比。兩者原本就包含不同材料,出現差異不一定代表網站更新了。
比較合理的方向,是先分清楚:
例如原網站完全沒變,但知識庫多了一段 NotebookLM 補充。如果直接比較整份文字,就可能把這段補充誤認成網站的新內容。
至於如何保存這些材料,以及哪些差異需要提醒,還需要在改善時進一步確認。
原本只是想到,重複存入時應該要提醒我。討論之後才發現,還有內容是否更新,以及舊資料要怎麼保留的問題。
我目前希望的方式是:先比較,有差異就讓我知道,再由我選擇覆蓋或保留版本。保留的話,新內容放在前面,舊內容也能透過連結找回來。
這些是這次整理出的改善需求,還不能寫成已經完成的功能。後續會加入改善項目,再用測試確認實際行為。