feat(collector): daemon 產出改成規範形 wiki 卡——1 文件卡+N 原子卡落 .wiki/(InkStoneCo#44 ④)
LLM 只回 JSON 判斷,格式/落點/連結閉合/索引/manifest 全由 wikishape.go 機械組裝: - 卡形=frontmatter(tags/gloss/created/updated)+← 上層+摘要/重點/實體(帶類型)/ 關聯(內文知識關係/卡片關係/出處)——差距表 #6 - 落點 <節點>/.wiki/、檔名=H1(.wiki 隱藏目錄自身即機器標記,machinemark 例外③)——#7 - 00-INDEX 機械維護:每行五樣照抄 frontmatter;每份原稿必列——#8 - 萃取端就切 1 hub+N 原子卡(gemma 路 prompt 改 JSON 契約)——#9 - 無可萃概念標「空」+理由,上索引不產卡——#10 機械保證對著 wiki-lint.py 寫:斷連結拆殼、index 式句改寫、三元組恰三項、 雙向邊自動補反向、佔用不覆蓋、原稿永不動;同名概念跨文件先消歧(merge 歸第⑤環)。 scan/convert 白名單補 .feature/.yaml/.yml/.org/.rst(規範洞 6); lint.go 新舊格式雙軌(workers-ai 雲端 prompt 屬 matrix/arcrun 核心,待開票); direct.go 只送文件卡上雲(takedown 配對鍵不變)、下架收走 .wiki 產物。 實測:真資料夾+真 Gemini → 2 節點 12 卡,wiki-lint 17/17 exit 0, 原稿 sha256 前後不變;go test collector+supervisor+arcrun-app 全綠(新增 9 案)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1169,7 +1169,13 @@ func runDirectOnceRoot(cfg *DirectConfig, root string, dryRun bool, qs *quotaSta
|
||||
continue
|
||||
}
|
||||
ok := true
|
||||
for _, cardRel := range cards {
|
||||
// InkStoneCo#44 ④(2026-08-15):gemma 路現在一份文件產「文件卡+N 張
|
||||
// 概念卡」(cards[0]=文件卡)。雲端 rag_ingest_card 以 page_name upsert、
|
||||
// 下架以原稿頁名比對 ⇒ N 張卡都送會互相蓋寫同一頁。
|
||||
// ⇒ 本環先只送文件卡(雲端行為與改版前一致);原子卡與三元組上雲的
|
||||
// 形狀是第⑤環(Arcrun#129/#130)的題目,屆時在這裡展開。
|
||||
// cards 為空=該檔被判「無可萃取概念」(00-INDEX 已標「空」),不送雲端。
|
||||
for cardIdx, cardRel := range cards {
|
||||
cardData, cerr := os.ReadFile(filepath.Join(absRoot, filepath.FromSlash(cardRel)))
|
||||
if cerr != nil {
|
||||
res.Status, res.Error = "failed", "讀卡片失敗:"+cerr.Error()
|
||||
@@ -1195,6 +1201,9 @@ func runDirectOnceRoot(cfg *DirectConfig, root string, dryRun bool, qs *quotaSta
|
||||
// pageNameOf(ev.Path)(原稿頁名,不帶前綴)⇒ 兩邊從此對不上,
|
||||
// 「刪原檔→下架」永遠 0 命中,跟 07-24 那枚 source_uri 的坑同一個形狀。
|
||||
// 改成原稿頁名後,**雲端看到的頁名與改版前完全相同**(本次只動本機檔名)。
|
||||
if cardIdx > 0 {
|
||||
continue // 概念卡先只落本機 .wiki(品質檢查照跑),上雲等第⑤環
|
||||
}
|
||||
cardBody := map[string]any{
|
||||
"page_name": pageNameOf(ev.Path),
|
||||
"path": ev.Path,
|
||||
@@ -1297,6 +1306,14 @@ func runDirectOnceRoot(cfg *DirectConfig, root string, dryRun bool, qs *quotaSta
|
||||
})
|
||||
}
|
||||
}
|
||||
// InkStoneCo#44 ④:新制 `.wiki/` 的卡(文件卡+概念卡)+索引+manifest
|
||||
// 一起收走——鍵同樣是原稿路徑,與上面的舊制清理並存(過渡期兩制都可能有卡)。
|
||||
if werr := RemoveWikiDoc(absRoot, ev.Path); werr != nil {
|
||||
results = append(results, DirectResult{
|
||||
Type: "warning", Path: ev.Path, Status: "skipped",
|
||||
Error: "wiki 卡收走失敗(不擋下架):" + werr.Error(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
results = append(results, res)
|
||||
|
||||
Reference in New Issue
Block a user