lancedb-opencode-pro 0.2.5 去重功能 Bug 報告
Bug 描述
問題
consolidateDuplicates 函式在執行合併時,發生「自我合併」的情況 — 一筆記錄的 mergedFrom 欄位指向自己的 ID。
發生環境
- Plugin 版本: 0.2.5
- 發生時間: 2026-03-21(較舊記錄)
- 觸發條件: 執行
memory_consolidate 時
證據
受影響的記錄
| 欄位 |
值 |
| ID |
ebb542a9-dfd2-4d77-aab8-cbecbe2e8998 |
| mergedFrom |
ebb542a9-dfd2-4d77-aab8-cbecbe2e8998(自己) |
| Timestamp |
2026-03-21T10:09:37.958Z |
| Scope |
project:38d897a773acf779 |
程式碼位置
// store.ts 第 349-366 行
const older = a.row.timestamp <= b.row.timestamp ? a.row : b.row;
const newer = a.row.timestamp <= b.row.timestamp ? b.row : a.row;
// ...
const updatedNewerMeta = { ...newerMeta, mergedFrom: older.id };
// 問題:當 a 和 b 是同一筆記錄時,older.id === newer.id
影響範圍
| 項目 |
說明 |
| 資料完整性 |
自我參考的 metadata 標記錯誤 |
| 功能影響 |
低 — 不影響搜尋和召回 |
| 統計準確性 |
consolidatedCount 會把這筆計為成功合併(虛假計數) |
| 發生頻率 |
罕見 — 目前只發現 1 筆 |
建議修復
在 consolidateDuplicates 函式中增加 ID 檢查:
// store.ts 約第 349 行
const older = a.row.timestamp <= b.row.timestamp ? a.row : b.row;
const newer = a.row.timestamp <= b.row.timestamp ? b.row : a.row;
// 新增:跳過自我合併
if (older.id === newer.id) {
continue;
}
或在第 361 行寫入前驗證:
// 在更新 newer 之前
if (older.id === newer.id) {
continue;
}
額外觀察
相似問題
這種類型的問題(迴圈中同一筆資料被重複處理)在 consolidateDuplicates 的雙重迴圈結構中都有可能發生。
測試建議
- 單筆資料的邊界情況測試
- 連續兩次幾乎相同時間戳記的資料
- 確保
mergedFrom 永遠不會等於自己的 ID
lancedb-opencode-pro 0.2.5 去重功能 Bug 報告
Bug 描述
問題
consolidateDuplicates函式在執行合併時,發生「自我合併」的情況 — 一筆記錄的mergedFrom欄位指向自己的 ID。發生環境
memory_consolidate時證據
受影響的記錄
ebb542a9-dfd2-4d77-aab8-cbecbe2e8998ebb542a9-dfd2-4d77-aab8-cbecbe2e8998(自己)程式碼位置
影響範圍
consolidatedCount會把這筆計為成功合併(虛假計數)建議修復
在
consolidateDuplicates函式中增加 ID 檢查:或在第 361 行寫入前驗證:
額外觀察
相似問題
這種類型的問題(迴圈中同一筆資料被重複處理)在
consolidateDuplicates的雙重迴圈結構中都有可能發生。測試建議
mergedFrom永遠不會等於自己的 ID