fix(collector): 機器寫進筆記庫的檔案一律帶前綴,不再跟使用者的頁面撞名(arcrun-rag#60)

leo 2026-08-12:「我的 Logseq 又被覆蓋⋯⋯**不只是加上 journal,可能所有的檔案都加一個前後綴,比如「wiki」**。」

不是資料被蓋掉,是機器產出用了跟他一樣的命名空間(status.md、日期檔那些)
⇒ 他打開資料夾分不出哪些是自己的。**心理上的覆蓋跟實際覆蓋一樣糟。**
This commit is contained in:
2026-08-12 14:54:59 +08:00
parent 37a02061dd
commit 5a140faf1f
14 changed files with 1305 additions and 45 deletions
+4 -3
View File
@@ -124,9 +124,10 @@ func ExtractWithGemma(apiKey, model, absRoot, relPath string) ([]string, error)
if !strings.HasPrefix(card, "# ") {
return nil, fmt.Errorf("萃出內容不像卡片(未以 # 開頭):%.120s", card)
}
// arcrun-rag#60:非 vault 落 system-dev/wiki/cards/、vault 改落隱藏目錄,避免污染筆記軟體的頁面清單;
// 落地前先查目標存不存在、不無條件覆蓋(safeWriteCard),兩條都是同一票的紅線。
cardRel := filepath.ToSlash(filepath.Join(cardsRelDirFor(absRoot), pageName+".md"))
// arcrun-rag#60路徑與檔名都由 cardRelFor 決定——非 vault 落 system-dev/wiki/cards/、
// vault 落隱藏目錄,且**檔名一律帶 arcrun- 前綴**(第二輪:光換目錄擋不住撞名,
// 因為 Logseq 的頁名是 basename)。落地前先查目標存不存在、不無條件覆蓋(safeWriteCard)。
cardRel := cardRelFor(absRoot, pageName)
dest := filepath.Join(absRoot, filepath.FromSlash(cardRel))
if err := safeWriteCard(dest, []byte(card)); err != nil {
return nil, err