init: kbdb-ingest-plugin 骨架

KBDB 堆疊的餵食器(最薄一層):拉 GitHub repo → 採取/萃取三元組 →
餵 graph 寫入端 → 織跨 vault 的圖。

- CLAUDE.md:上游指針 + ingest 鐵律(純餵食器/不碰儲存/不算向量/
  不帶查詢 MCP/部署繞 Actions/三守則)
- README:定位 + 護城河命題(跨 vault 的圖)
- contracts/ingest-candidate.json:凍結 envelope 契約(與 graph repo 同份)
- docs/3-specs/ingest-pipeline/:SDD 三件式骨架(藍圖指向 InkStoneCo mira-dissolve)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 12:43:26 +08:00
commit dffefdcdc2
7 changed files with 313 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
# ingest pipeline — Design
> 對應 requirements.md。**架構設計(envelope 契約、職責切割、normalize 歸屬、MCP 邊界、模型策略)在 InkStoneCo `docs/3-specs/mira-dissolve/design.md`。本檔只放 ingest 內部設計。**
## 1. 資料流
```
GitHub repo MD(精耕 LLM Wiki
│ commit / content-hash 變動
SourceAdapter(拉 + content-hash
├─ 路徑 A:本地已建三元組+gloss → 採取(拉)
└─ 路徑 B:裸原文 → extract(text, model) → 候選 (s,p,o)+gloss
▼ 跨 repo 匯總(織跨庫關聯)
▼ POST envelopecontracts/ingest-candidate.json
graph 寫入端 POST /triplets/ingest
```
## 2. envelope= contracts/ingest-candidate.json
形狀與職責切割見 InkStoneCo design §3。ingest 給:原始 s/p/o + source.* + extractor.* + nodes[].gloss/type + confidence。**禁送**id / clusters / bridge_score / 時間戳 / 邊上 typegraph 算)。
## 3. extract 模型策略
見 InkStoneCo design §6.6:用戶選意圖非型號、品質門檻白名單(深層暗示+中文)、預設 Haiku、深萃 Claude via CC、難度隨來源分層(AI 報告弱模型夠/人類 vault 須好模型)。
## 4. 觸發
被 KBDB MCP `refresh` 代轉(人發起,非自動 fan-out)。flag 紅線見 InkStoneCo design §6.7:禁 Actions/webhook 自動觸發。
## 5. cherry-pick 來源
- `polaris/mira/tools/_kbdb_client.py` → 純餵食器 client。
- `polaris/mira/arcrun/wiki_synthesis.yaml` classify 節點 → extract。
- 兩個 KBDB skill block(精耕規則 prompt)。
詳 InkStoneCo requirements §6。
@@ -0,0 +1,27 @@
# ingest pipeline — Requirements
> 建立:2026-06-26
> **跨專案藍圖在 InkStoneCo `docs/3-specs/mira-dissolve/`R7 攝入分工、§6.6 模型策略、§6.7 MCP 邊界)。本 SDD 只放 ingest 內部實作細節。**
> 凍結契約:`contracts/ingest-candidate.json`(與 graph repo 同一份,唯一耦合面)。
## 範圍
ingest 插件內部:SourceAdapter(拉)+ 採取/extract + 跨庫織網匯總 + POST envelope 給 graph。**不涉**graph 內部圖演算法、不涉 base 儲存。
## 需求
- **R1 SourceAdapter**GitHub 拉 repo + content-hash`source.uri = github:owner/repo@path`)。webhook/排程觸發,或被 KBDB MCP `refresh` 代轉觸發。
- **R2 採取(路徑 A,優先)**:用了 system-dev-template 的 repo → 本地 CC 已建三元組 + gloss → ingest 拉取,不重萃。
- **R3 extract(路徑 Bfallback**:裸原文 → 萃 (s,p,o)+gloss。模型用戶可選(意圖非型號)+ 品質門檻白名單(深層暗示 + 中文);預設 Haiku;深萃 Claude via CCJSON-fail 升級閘。
- **R4 跨 repo 織網**:匯總多 repo 三元組(單 repo 看不到的橋/異見)=主職。
- **R5 輸出**POST envelope(嚴格符合 contract)給 graph `POST /triplets/ingest`,不直連 base。
- **R6 ops CLI**:手動觸發重萃。不帶查詢 MCP。
## 約束(沿用 ingest 鐵律,見 CLAUDE.md
- 純餵食器、不碰儲存、不算向量、不帶查詢 MCP、部署繞 Actions、三守則(無環/純 API/凍結契約)。
## 待對端
- graph 的 `POST /triplets/ingest` 寫入端(InkStoneCo T3.3graph repo 實作)。
- 模型品質門檻測試集(含中文 + 人類暗示樣本,InkStoneCo §6.6)。
+45
View File
@@ -0,0 +1,45 @@
# ingest pipeline — Tasks
> 唯一進度來源。狀態:[ ] 未開始 [🔄] 進行中 [x] 完成 [⏸] 卡住
> 跨專案藍圖:InkStoneCo `docs/3-specs/mira-dissolve/`。
## T0 repo 骨架(本輪)
- [x] 0.1 建 public repo `uncle6me-web/kbdb-ingest-plugin`
- [x] 0.2 CLAUDE.md(上游指針 + ingest 鐵律)+ README + .gitignore
- [x] 0.3 `contracts/ingest-candidate.json`(從頂層 SDD 複製,凍結契約)
- [x] 0.4 SDD 三件式骨架
- [ ] 0.5 package.json / tsconfig / wrangler.toml(參考 kbdb-graph-plugin
## T1 SourceAdapterR1
- [ ] 1.1 GitHub 拉 reporuntime API/clone,非 Actions
- [ ] 1.2 content-hashper-filesource.uri = github:owner/repo@path
- [ ] 1.3 被 KBDB MCP `refresh` 代轉觸發的接口
## T2 採取(R2,路徑 A 優先)
- [ ] 2.1 拉本地 CC 已建三元組 + gloss(用了 system-dev-template 的 repo
- [ ] 2.2 cherry-pick `polaris/mira/tools/_kbdb_client.py` → 改純餵食器(POST envelope,不寫 KBDB
## T3 extractR3,路徑 B fallback
- [ ] 3.1 cherry-pick `wiki_synthesis.yaml` classify / 兩 skill block
- [ ] 3.2 模型用戶可選 + 品質門檻白名單(預設 Haiku,深萃 Claude via CC
- [ ] 3.3 模型測試集(中文 + 人類暗示樣本,轉回歸測試)— deferred,先跑預設
- [ ] 3.4 JSON-fail 升級閘(淺萃失敗升 deep)
- [ ] 3.5 第一版不 embedembed 等 base vectorizeInkStoneCo T2.4
## T4 跨 repo 織網(R4,主職)
- [ ] 4.1 匯總多 repo 三元組
## T5 輸出 + CLIR5/R6
- [ ] 5.1 POST envelope 給 graph `POST /triplets/ingest`(嚴格符合 contract)⏸ 待 graph 寫入端(InkStoneCo T3.3
- [ ] 5.2 薄 ops CLI(手動重萃);不帶查詢 MCP
## 阻擋項
1. ⏸ T5.1 依賴 graph `POST /triplets/ingest`InkStoneCo T3,待 graph repo 實作)。
2. ⏸ embed 依賴 base vectorizeInkStoneCo T2.4)。第一版不 embed 可先動。