feat(collector): 每一則知識都答得出「原稿在哪一台機器上」(inkstone/mira#6)
現況只缺這一格:雲端的麵包屑已經有資料夾多層路徑、檔名、片段錨點 (kb://RFP/design.md#0),唯獨答不出「哪一台機器」。 leo 2026-08-18 拍板的三層,由強到弱: ① 抓得到就用真實可讀的名字 → `<使用者>@<主機名>`(實跑:youlinhsieh@Leo-MBA) ② 使用者要能改成自己看得懂的稱呼 → config.json 的 machine_label(實跑:教育部 Leo 的 Mac) ③ 什麼都抓不到也要保證兩台不同 → unknown@<隨機 8 hex>,持久化在 machine.json 做法照既有的 library 走,不新增第二種: - daemon 逐筆隨 payload 送 machine/machine_label(收卡、總覽卡、下架、舊直送四處) - 雲端寫進 block 的 metadata_json,與 source/source_path/library 並排 - 三元組寫進 machine slot(slot 由 matrix/arcrun 的 seed 補,見該 repo 分支) - upsert/下架的比對規則照抄 arcrun-rag#46 對 library 的處置:**兩邊都有值才收緊** ⇒ 既有資料(沒有這一格的)行為一字不變,不會變兩份、也不會撤不掉 🔴 machine **不混進 source_uri**:portal 的 srcLocalPath() 直接把 kb:// 之後整段當本機 相對路徑用,混進去會吐出不存在的路徑,而且舊資料的第一段會被誤讀成機器名 ——那就是「憑空長出假機器」。分成獨立欄位,舊資料就誠實地空著。 ID 一鑄就不再重算(machine.json):user@host 會變,重算會讓同一台機器的舊知識 突然掛到「新機器」底下。改名走 machine_label,不碰 ID。 驗過(youlin stage,實測輸出見 inkstone/mira#6 回報): - 真 daemon 跑 direct --once → 每個 block 的 metadata 都有 machine=youlinhsieh@Leo-MBA、machine_label=教育部 Leo 的 Mac - 同一相對路徑、兩台機器 → block 各留一份、三元組 4 筆並存,沒有互相刪掉 - 既有資料(無 machine)照樣被同一台機器 upsert 掉,沒有變兩份 - workflows/tests/machine-scope.test.mjs 13 passed;takedown-scope 8 passed;isdoc 21 passed - collector go test ./... 全綠
This commit is contained in:
+10
-4
@@ -270,11 +270,17 @@ func syncInventory(cfg *DirectConfig, absRoot string, m *Manifest, hasEvents, dr
|
||||
if wf == "" {
|
||||
wf = "rag_ingest_card"
|
||||
}
|
||||
// machine(`inkstone/mira#6`):總覽卡的 path 是**合成**的(inventoryCardPath),
|
||||
// 只帶 library ⇒ 兩台機器上同名的資料夾會生出一模一樣的鍵,後同步的那台會把
|
||||
// 前一台的總覽卡蓋掉。這裡與逐檔卡走同一組欄位,不另開一種。
|
||||
mach := cfg.machineIdentity()
|
||||
status, _, err := cfg.postJSON(cfg.triggerURL(wf), map[string]any{
|
||||
"page_name": page,
|
||||
"path": res.Path,
|
||||
"card_content": card,
|
||||
"library": lib,
|
||||
"page_name": page,
|
||||
"path": res.Path,
|
||||
"card_content": card,
|
||||
"library": lib,
|
||||
"machine": mach.ID,
|
||||
"machine_label": mach.Label,
|
||||
})
|
||||
res.HTTPStatus = status
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user