feat: KBDB-graph 插件獨立 — 全面改寫成走基本盤 API(API-as-Wall)
按 leo 鐵律(2026-06-14)把插件從「直接 SQL 操作基本盤表」改寫成 「只透過基本盤 arcrun/kbdb HTTP API 讀寫」。零建表、零 migration、零 SQL。 - 新增 src/lib/kbdb-client.ts:唯一對外通道,封裝 entries/templates/records API - 新增 src/lib/templates.ts:triplet/entity template 定義(替代建表) - 改寫 21 個違規 action(triplet/graph/entity/search)→ 走 client,圖在插件層記憶體組裝 - 移除所有 migrations、D1/Vectorize/AI 綁定;embedding/語意搜尋歸基本盤 optional 模組 - index.ts 只掛 triplets/graph/entities/search 路由;基本盤路由歸 arcrun/kbdb - 測試改走 mock client(純 node);裁剪 CLAUDE.md 只留 graph 插件 + 鐵律 - 修正 SDD design.md「讀現狀推翻鐵律」的錯誤判斷(共用 D1 → API-as-Wall) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# /sdd-check — 確認當前任務有沒有對應 SDD
|
||||
|
||||
動手前執行。確保 CC 有全局觀,不會在沒有設計文件的情況下猛衝。
|
||||
|
||||
---
|
||||
|
||||
## 執行流程
|
||||
|
||||
### 第一步:理解任務
|
||||
|
||||
確認使用者要做什麼:
|
||||
- 涉及哪個子系統?
|
||||
- 是新功能還是修改現有功能?
|
||||
- 影響範圍?
|
||||
|
||||
### 第二步:尋找對應 SDD
|
||||
|
||||
在 `docs/3-specs/` 下尋找對應的子系統目錄,確認有沒有:
|
||||
- `design.md`(設計文件)
|
||||
- `tasks.md`(任務清單)
|
||||
|
||||
### 第三步:根據結果回應
|
||||
|
||||
**情況 A:找到對應 SDD**
|
||||
```
|
||||
✅ 找到 SDD:docs/3-specs/[子系統]/
|
||||
📋 design.md:[確認]
|
||||
📋 tasks.md:[確認,列出相關 task]
|
||||
🎯 對應 task:[編號和描述]
|
||||
繼續嗎?
|
||||
```
|
||||
|
||||
**情況 B:找不到 SDD,任務明確**
|
||||
```
|
||||
⚠️ 找不到對應 SDD
|
||||
任務:[描述]
|
||||
建議在 docs/3-specs/[建議子系統名]/ 建立 SDD
|
||||
|
||||
要我幫你起草 design.md 嗎?(需要你確認後才動手)
|
||||
```
|
||||
|
||||
**情況 C:找不到 SDD,任務模糊**
|
||||
```
|
||||
⚠️ 找不到對應 SDD,而且任務範圍不夠清楚
|
||||
請先回答:
|
||||
1. 這個功能屬於哪個子系統?
|
||||
2. 完成的標準是什麼?
|
||||
3. 有沒有不能動的邊界?
|
||||
```
|
||||
|
||||
### 注意
|
||||
|
||||
- 找不到 SDD **不等於可以直接動手**
|
||||
- 小修改(修 bug、改文字)可以豁免,但要明確說「這是小修改,範圍是 X」
|
||||
- 新功能、架構變動、跨模組的修改 → 一定要有 SDD
|
||||
@@ -0,0 +1,61 @@
|
||||
# /wiki-capture — 把對話結論存進 wiki
|
||||
|
||||
把這次對話中產生的決策、誤解釐清、或重要結論存入 wiki。
|
||||
解決「討論過了但知識消失」的問題。
|
||||
|
||||
---
|
||||
|
||||
## 執行流程
|
||||
|
||||
### 第一步:辨識對話中的可記錄內容
|
||||
|
||||
掃描當前對話,找出:
|
||||
|
||||
| 類型 | 判斷標準 | 存到哪 |
|
||||
|------|---------|-------|
|
||||
| 架構決策 | 「為什麼選A不選B」「我們決定用X」 | `decisions-summary.md` + `docs/2-architecture/decisions/` |
|
||||
| CC 的誤解被糾正 | CC 說了某件事,使用者說「不是,是...」 | `mistakes.md` |
|
||||
| 重要狀態更新 | 完成了某件事、阻擋了某件事 | `status.md` |
|
||||
| 技術發現 | 踩到坑、找到解法、重要行為確認 | `mistakes.md` 或對應 SDD |
|
||||
|
||||
### 第二步:列出清單給使用者確認
|
||||
|
||||
格式:
|
||||
```
|
||||
這次對話我整理了以下內容要存入 wiki:
|
||||
|
||||
1. [MISTAKE] CC 誤解了 X,正確是 Y
|
||||
2. [DECISION] 決定用 A 不用 B,原因是 C
|
||||
3. [STATUS] 完成了 task 2.3,下一步是 2.4
|
||||
|
||||
確認後存入,有需要修改的嗎?
|
||||
```
|
||||
|
||||
**停下來等確認。**
|
||||
|
||||
### 第三步:寫入
|
||||
|
||||
確認後,依照格式寫入對應檔案:
|
||||
|
||||
**mistakes.md 格式:**
|
||||
```
|
||||
⚠️ MISTAKE: [錯誤描述]
|
||||
症狀: [CC 的表現]
|
||||
正確做法: [應該怎麼做]
|
||||
原因: [背景]
|
||||
日期: [YYYY-MM-DD]
|
||||
```
|
||||
|
||||
**decisions-summary.md 格式:**
|
||||
```
|
||||
## [主題] — [YYYY-MM-DD]
|
||||
**結論**:[一句話]
|
||||
**原因**:[簡短說明]
|
||||
**詳細**:docs/2-architecture/decisions/[檔名]
|
||||
```
|
||||
|
||||
重大決策同時在 `docs/2-architecture/decisions/` 建立 ADR 檔案。
|
||||
|
||||
### 第四步:確認
|
||||
|
||||
告知存到哪些檔案,共幾條記錄。
|
||||
@@ -0,0 +1,77 @@
|
||||
# /wiki-init — 初始化或接入 LLM Wiki 系統
|
||||
|
||||
初始化這個專案的 LLM Wiki 記憶系統。
|
||||
新專案建立空白結構,已有專案掃描現有文件並建立 wiki。
|
||||
|
||||
---
|
||||
|
||||
## 執行流程
|
||||
|
||||
### 第一步:偵測專案狀態
|
||||
|
||||
檢查以下項目,判斷是新專案還是已有專案:
|
||||
- 根目錄有沒有 `.claude/wiki/`
|
||||
- 根目錄有沒有 `docs/`
|
||||
- 有沒有散落的 `.md` 檔案
|
||||
|
||||
**新專案**(幾乎空的)→ 直接建立結構,跳到第三步
|
||||
**已有專案**(有文件)→ 執行第二步
|
||||
|
||||
### 第二步:已有專案的掃描(已有專案才執行)
|
||||
|
||||
1. 遞迴找出所有 `.md` 檔案
|
||||
2. 對每個檔案標注建議位置和信心度
|
||||
3. 列出清單給使用者確認,**停下來等確認**
|
||||
|
||||
分類規則:
|
||||
```
|
||||
有明確子系統 + 設計內容 → docs/3-specs/[子系統]/
|
||||
解釋為什麼做某個決定 → docs/2-architecture/decisions/
|
||||
說明怎麼操作 → docs/4-guides/
|
||||
記錄發生過的事 → docs/5-records/
|
||||
給外部使用者看的 → docs/6-user/
|
||||
不確定 → 列為「待確認」,問使用者
|
||||
```
|
||||
|
||||
### 第三步:建立缺少的結構
|
||||
|
||||
只建立不存在的目錄和檔案,**已有的一律不動**:
|
||||
|
||||
目錄:
|
||||
```
|
||||
docs/{1-vision,2-architecture/decisions,3-specs,4-guides,5-records/{incidents,test-reports},6-user}
|
||||
.claude/wiki/
|
||||
```
|
||||
|
||||
檔案(不存在才建):
|
||||
- `.claude/wiki/INDEX.md`
|
||||
- `.claude/wiki/status.md`
|
||||
- `.claude/wiki/mistakes.md`
|
||||
- `.claude/wiki/decisions-summary.md`
|
||||
- `docs/README.md`
|
||||
|
||||
### 第四步:訪談(每次一個問題)
|
||||
|
||||
依序問:
|
||||
1. 這個專案做什麼?(一句話)
|
||||
2. 有哪些絕對不能違反的限制?(技術棧、架構原則等)
|
||||
3. 現在進行到哪個階段?
|
||||
4. 有沒有 CC 曾經犯過的錯要先記下來?
|
||||
|
||||
把答案填進 `CLAUDE.md`(如果存在)或建立新的。
|
||||
|
||||
### 第五步:已有專案的文件歸檔
|
||||
|
||||
(第二步確認後執行)
|
||||
|
||||
按照確認好的分類移動檔案,完成後更新 `CLAUDE.md` 的路徑引用。
|
||||
|
||||
### 第六步:完成報告
|
||||
|
||||
告知:
|
||||
```
|
||||
✅ wiki-init 完成
|
||||
建立了:[列出新建的目錄和檔案]
|
||||
跳過了:[列出已有因此不動的]
|
||||
下一步:用 /wiki-capture 把重要決策存進 wiki
|
||||
```
|
||||
@@ -0,0 +1,50 @@
|
||||
# /wiki-update — Session 結束,更新狀態
|
||||
|
||||
每次 session 結束時執行。更新 status.md,確保下次 session 能無縫接上。
|
||||
|
||||
---
|
||||
|
||||
## 執行流程
|
||||
|
||||
### 第一步:整理這次 session 的結果
|
||||
|
||||
從對話中提取:
|
||||
- 完成了哪些 tasks(標記為 [x])
|
||||
- 進行中但未完成的(標記為 [🔄])
|
||||
- 遇到什麼問題或阻擋
|
||||
- 下次應該從哪裡開始
|
||||
|
||||
### 第二步:更新 tasks.md
|
||||
|
||||
把對應 SDD 的 tasks.md 狀態更新(如果這次有動到的話)。
|
||||
|
||||
### 第三步:更新 status.md
|
||||
|
||||
用以下格式覆蓋 status.md:
|
||||
|
||||
```markdown
|
||||
# 當前狀態
|
||||
> 更新時間:[YYYY-MM-DD]
|
||||
|
||||
## 正在做
|
||||
- [🔄] [task 描述] — 阻擋點:[如果有]
|
||||
|
||||
## 下次 session 第一件事
|
||||
[具體的第一個動作,越具體越好]
|
||||
|
||||
## 待負責人確認
|
||||
- [描述] — 等待:[什麼決定]
|
||||
|
||||
## 已知問題
|
||||
| 問題 | 優先級 | 狀態 |
|
||||
|------|--------|------|
|
||||
| [問題] | 🔴/🟡/⚪ | [狀態] |
|
||||
```
|
||||
|
||||
### 第四步:如果有新的誤解或決策
|
||||
|
||||
順帶執行 `/wiki-capture` 的邏輯,把這次的誤解和決策也存進去。
|
||||
|
||||
### 第五步:確認
|
||||
|
||||
告知 status.md 更新完成,下次 session 從哪裡開始。
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
# .claude/hooks/pre-bash-guard-no-table.sh
|
||||
# KBDB-graph PreToolUse guard for Bash
|
||||
#
|
||||
# 鐵律:任何人都不准動表。擋命令列層的動表(wrangler d1 execute CREATE TABLE 等)。
|
||||
# 退出 code:0 = 允許 / 2 = 擋下
|
||||
# 依賴:jq
|
||||
|
||||
set -o pipefail
|
||||
INPUT=$(cat)
|
||||
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // ""')
|
||||
|
||||
block() {
|
||||
cat >&2 <<EOF
|
||||
❌ BLOCKED by KBDB 鐵律:任何人都不准動表
|
||||
指令:${CMD}
|
||||
違反:${1}
|
||||
正確做法:${2}
|
||||
參考:InkStoneCo/.agents/specs/matrix-rearrange/DECISION-kbdb-v3-baseplane.md
|
||||
EOF
|
||||
exit 2
|
||||
}
|
||||
|
||||
# ── wrangler d1 / sqlite 執行含 CREATE/ALTER/DROP TABLE ─────────────────
|
||||
if echo "$CMD" | grep -iqE '(wrangler[[:space:]]+d1|sqlite3|d1[[:space:]]+execute)' \
|
||||
&& echo "$CMD" | grep -iqE '(CREATE|ALTER|DROP)[[:space:]]+TABLE'; then
|
||||
block "命令列動表(wrangler d1 / sqlite)" \
|
||||
"新資料類型=建 template(調基本盤 API);schema 由基本盤維護者管,插件不碰。"
|
||||
fi
|
||||
|
||||
# ── 套用 .sql migration 檔(插件不該有 migration)──────────────────────
|
||||
if echo "$CMD" | grep -iqE 'wrangler[[:space:]]+d1[[:space:]]+(migrations[[:space:]]+apply|execute[[:space:]]+--file)'; then
|
||||
block "套用 migration(插件不建表、不該有 migration)" \
|
||||
"插件零 migration。DB schema 屬基本盤 arcrun/kbdb,插件透過 API 存取。"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
# .claude/hooks/pre-write-guard-no-table.sh
|
||||
# KBDB-graph PreToolUse guard for Write / Edit / MultiEdit
|
||||
#
|
||||
# 鐵律(leo 2026-06-14):任何人都不准動表。插件不准直接接觸表,全走基本盤 API,禁 SQL。
|
||||
# 退出 code:0 = 允許 / 2 = 擋下(stderr 回傳給 CC)
|
||||
# 依賴:jq
|
||||
|
||||
set -o pipefail
|
||||
INPUT=$(cat)
|
||||
|
||||
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.path // ""')
|
||||
CONTENT=$(echo "$INPUT" | jq -r '
|
||||
.tool_input.content
|
||||
// .tool_input.new_string
|
||||
// (.tool_input.edits // [] | map(.new_string // "") | join("\n"))
|
||||
// ""
|
||||
')
|
||||
|
||||
block() {
|
||||
cat >&2 <<EOF
|
||||
❌ BLOCKED by KBDB 鐵律:任何人都不准動表
|
||||
檔案:${FILE_PATH}
|
||||
違反:${1}
|
||||
原因:${2}
|
||||
正確做法:${3}
|
||||
參考:InkStoneCo/.agents/specs/matrix-rearrange/DECISION-kbdb-v3-baseplane.md
|
||||
EOF
|
||||
exit 2
|
||||
}
|
||||
|
||||
# 跳過文件/markdown(規則說明本身會出現這些字)
|
||||
case "$FILE_PATH" in
|
||||
*.md|*/docs/*|*/.claude/*) exit 0 ;;
|
||||
esac
|
||||
|
||||
# ── 規則 1:禁 CREATE / ALTER / DROP TABLE ──────────────────────────────
|
||||
if echo "$CONTENT" | grep -iqE '(CREATE|ALTER|DROP)[[:space:]]+TABLE'; then
|
||||
block "CREATE/ALTER/DROP TABLE" \
|
||||
"任何人都不准動表。3 張基本盤表鎖死,只有基本盤維護者能改。" \
|
||||
"新資料類型=建 template(調基本盤 templates API),永不建表。"
|
||||
fi
|
||||
|
||||
# ── 規則 2:禁插件直接寫表(INSERT/UPDATE/DELETE 基本盤表)─────────────
|
||||
if echo "$CONTENT" | grep -iqE '(INSERT[[:space:]]+INTO|UPDATE|DELETE[[:space:]]+FROM)[[:space:]]+(entries|templates|entry_values|blocks|triplets)'; then
|
||||
block "直接寫基本盤表" \
|
||||
"插件不准直接接觸表(API-as-Wall)。" \
|
||||
"改調基本盤 API:寫 entry/record 走 POST /entries、/records(帶 template)。"
|
||||
fi
|
||||
|
||||
# ── 規則 3:禁插件直接讀表(SELECT/JOIN 基本盤表)──────────────────────
|
||||
if echo "$CONTENT" | grep -iqE '(SELECT[[:space:]].*FROM|JOIN)[[:space:]]+(entries|templates|entry_values|blocks|triplets)'; then
|
||||
block "直接讀基本盤表" \
|
||||
"插件不准直接接觸表(API-as-Wall),讀也要走 API。" \
|
||||
"改調基本盤 API:查 records/search 端點取回資料,在插件層組裝成圖。"
|
||||
fi
|
||||
|
||||
# ── 規則 4:禁 D1 .prepare(...sql...) 這類繞 API 的直接 SQL ─────────────
|
||||
if echo "$CONTENT" | grep -iqE '\.(prepare|exec)\([^)]*(entries|templates|entry_values|blocks|triplets)'; then
|
||||
block "繞過 API 直接 D1 SQL" \
|
||||
"插件層全程禁 SQL。" \
|
||||
"所有 DB 操作走基本盤 HTTP API,插件不直連 D1。"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"hooks": {
|
||||
"PreToolUse": [
|
||||
{
|
||||
"matcher": "Write|Edit|MultiEdit",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "bash .claude/hooks/pre-write-guard-no-table.sh",
|
||||
"timeout": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": "Bash",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "bash .claude/hooks/pre-bash-guard-no-table.sh",
|
||||
"timeout": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
# .claude/wiki/ — LLM 記憶系統
|
||||
|
||||
> 新 session 開始時從這裡導航。
|
||||
> 目的:讓 CC 不需要重新學習已知的事。
|
||||
> 維護者:CC(人不手動編輯這裡)
|
||||
|
||||
---
|
||||
|
||||
## 核心檔案
|
||||
|
||||
| 檔案 | 何時讀 | 內容 |
|
||||
|------|-------|------|
|
||||
| `status.md` | session 開始第一件事 | 當前進度、下一步 |
|
||||
| `mistakes.md` | 做新功能前 | 已知誤解、快速檢查清單 |
|
||||
| `decisions-summary.md` | 遇到設計判斷時 | 架構決策摘要 |
|
||||
|
||||
---
|
||||
|
||||
## 維護規則
|
||||
|
||||
1. 只增不刪——記錄 append,決策改了加新條目說明「舊決策已更新」
|
||||
2. status.md 每次 session 結束更新
|
||||
3. mistakes.md 每次被糾正後 append
|
||||
4. 發現新的重要決策 → 同時更新 decisions-summary.md 和 docs/2-architecture/decisions/
|
||||
|
||||
---
|
||||
|
||||
## 快速導航
|
||||
|
||||
**這個專案是什麼**:KBDB-graph —— KBDB 的 graph 插件(triplet 採集 + graph 查詢),類比 Apache AGE 之於 Postgres。要抽成獨立 repo(leo 產權)。基本盤(block CRUD)在 `arcrun/kbdb`,不在這。
|
||||
|
||||
**動工前必讀**:
|
||||
- `docs/HANDOFF-kbdb-plugin.md` —— 本目錄專屬交棒(待辦:確認邊界 / 改名+git init+推 GitHub / 定義掛載介面)。
|
||||
- 上游約束見 `CLAUDE.md` 最頂 + `github.com/uncle6me-web/InkStoneCo`。
|
||||
|
||||
**文件去哪找**:
|
||||
- SDD(design+tasks)→ `docs/3-specs/`(現有:arcrun-key-auth、blocks-edit-api)
|
||||
- 歷史記錄 / bug 復盤 → `docs/5-records/`(現有:PATCH 403 bug、upsert feature request)
|
||||
- 分類規則全表 → `docs/README.md`
|
||||
|
||||
**絕對限制**:本目錄只做 graph 插件 / 萬物皆 Block(禁 CREATE/ALTER TABLE)/ API-as-Wall / 部署繞開 GitHub、禁跨 repo Actions / 樂高法(actions < 100 行)。
|
||||
@@ -0,0 +1,34 @@
|
||||
# 架構決策摘要
|
||||
|
||||
> 遇到設計判斷時查這裡。
|
||||
> 完整脈絡在 docs/2-architecture/decisions/。
|
||||
|
||||
---
|
||||
|
||||
## KBDB-graph 定位 — 2026-06-13
|
||||
**結論**:本目錄 = KBDB 的 graph 插件(triplet 採集 + graph 查詢),獨立成 repo,類比 Apache AGE 之於 Postgres。
|
||||
**原因**:graph 能力較龐大、非基本儲存功能、leo 產權、較複雜 → 不留 arcrun。基本盤(block CRUD,D1 三表)= `arcrun/kbdb`,不在本目錄。
|
||||
**詳細**:`docs/HANDOFF-kbdb-plugin.md`;來源 InkStoneCo 頂層 `matrix-rearrange` Phase 2 (R2)。
|
||||
|
||||
## 獨立 repo 名 + 邊界乾淨度 — 2026-06-14
|
||||
**結論**:獨立 repo = 新 repo `uncle6me-web/kbdb-graph-plugin`(leo 拍板,沿用目錄名)。grep 證實插件與基本盤 action 層零耦合,耦合只在 DB 層(讀 blocks/entry_values + triplets VIEW)。
|
||||
**原因**:乾淨的 AGE-on-Postgres,插件抽出無程式碼牽連;唯一要設計的是 DB 掛載介面。
|
||||
**詳細**:`docs/3-specs/kbdb-graph-extraction/design.md`(灰色地帶結論 + 掛載介面)。
|
||||
|
||||
## 萬物皆 Block(KBDB v3)— 2026-02-28
|
||||
**結論**:一張 Block 表 + type 欄位,禁 CREATE/ALTER TABLE,新資料類型用 template;API-as-Wall。
|
||||
**原因**:零 migration 擴充;所有讀寫經 API 不繞過直打 D1。
|
||||
**詳細**:`CLAUDE.md` 下半(v3 全規範,含基本盤,待裁剪只留 graph 插件相關)。
|
||||
|
||||
## 避免再被 GitHub flag(上游鐵律)— 沿用
|
||||
**結論**:禁跨 repo 自動同步 Actions;部署繞開 GitHub(wrangler / scp);新 repo 預設不開 Actions。
|
||||
**原因**:當初 monorepo→多 worker 的 Actions 自動同步 + 高頻 API 害帳號被 flag。
|
||||
**詳細**:InkStoneCo 頂層 CLAUDE.md。
|
||||
|
||||
---
|
||||
|
||||
格式:
|
||||
## [主題] — [YYYY-MM-DD]
|
||||
**結論**:[一句話]
|
||||
**原因**:[簡短說明]
|
||||
**詳細**:docs/2-architecture/decisions/[對應檔案]
|
||||
@@ -0,0 +1,49 @@
|
||||
# CC 已知誤解 + 避坑方法
|
||||
|
||||
> 做新功能前讀一遍。
|
||||
> 格式:每條必須有症狀 + 正確做法 + 原因。
|
||||
|
||||
---
|
||||
|
||||
## 快速檢查清單(做任何事前)
|
||||
|
||||
- [ ] 有對應 SDD 嗎?沒有 → 停手
|
||||
- [ ] 這次修改會影響哪些模組?有沒有連帶破壞?
|
||||
- [ ] 驗收標準是什麼?有客觀證據嗎?
|
||||
|
||||
---
|
||||
|
||||
## 誤解記錄
|
||||
|
||||
⚠️ MISTAKE: 把基本盤 block CRUD 當成本目錄的職責
|
||||
症狀: 在本目錄改/實作 block CRUD、migration 0001/0002、整套 v3 規範。
|
||||
正確做法: 本目錄只做 graph 插件(triplet/graph/entity)。基本盤歸 arcrun/kbdb。動手前先讀 docs/HANDOFF-kbdb-plugin.md 確認邊界。
|
||||
原因: 2026-06-13 定調 KBDB-graph = 插件(AGE-on-Postgres 模式),但舊 CLAUDE.md 下半仍是整套 v3 規範,易誤導。
|
||||
日期: 2026-06-13
|
||||
|
||||
⚠️ MISTAKE: 以為本目錄在 git 版控內、用 git mv 搬檔
|
||||
症狀: git mv 報 "not under version control" / "source directory is empty"。
|
||||
正確做法: 本目錄無獨立 git(matrix 降級後脫離,且被頂層 gitignore)→ 用普通 mv。改名 KBDB-graph 後才 git init。
|
||||
原因: git repo 是 InkStoneCo 頂層,本目錄被 gitignore。
|
||||
日期: 2026-06-14
|
||||
|
||||
⚠️ MISTAKE: 部署或同步走 GitHub Actions
|
||||
症狀: 設計依賴 GitHub API 列檔、push 觸發跨 repo 自動同步。
|
||||
正確做法: 部署繞開 GitHub(wrangler 直推 / scp);讀檔走本地 fs;新 repo 不開 Actions。
|
||||
原因: 上游鐵律——當初正是這模式害帳號被 flag。
|
||||
日期: 2026-06-14
|
||||
|
||||
⚠️ MISTAKE: 假設「核心已在 arcrun」是既成事實
|
||||
症狀: 照 HANDOFF 字面以為 arcrun/kbdb 已是 v3 基本盤、插件直接掛上去、共用同一 D1。
|
||||
正確做法: 讀真身——arcrun/kbdb 其實還是 v2(entries,無 blocks/0005/0007/block-crud),與本插件是不同 D1 庫(arcrun-kbdb vs inkstone-kbdb)。v3 基本盤真身其實在本目錄。動工前用 ls/grep 對真身,不信 HANDOFF 字面。
|
||||
原因: HANDOFF 寫的是「意圖/計劃」,未必已落地;跨 repo 重整時尤其要核對現況。
|
||||
日期: 2026-06-14
|
||||
|
||||
---
|
||||
|
||||
格式:
|
||||
⚠️ MISTAKE: [錯誤描述,一句話]
|
||||
症狀: [CC 通常怎麼表現這個錯]
|
||||
正確做法: [應該怎麼做]
|
||||
原因: [為什麼會錯]
|
||||
日期: [YYYY-MM-DD]
|
||||
@@ -0,0 +1,31 @@
|
||||
# 當前狀態
|
||||
|
||||
> 更新時間:2026-06-14
|
||||
> 每次 session 結束必須更新此檔(用 /wiki-update)。
|
||||
|
||||
---
|
||||
|
||||
## 正在做
|
||||
|
||||
- 知識庫骨架建立完成(system-dev-template 接入:SDD + LLM Wiki)。
|
||||
- **HANDOFF 已讀完並整進 SDD**:`docs/3-specs/kbdb-graph-extraction/`(requirements + design + tasks)。
|
||||
- R-EXT-1 邊界初步分類完成(插件 / 基本盤 / 灰色地帶),見該 design.md。
|
||||
|
||||
## 下次 session 第一件事
|
||||
|
||||
讀 `docs/3-specs/kbdb-graph-extraction/tasks.md`。R-EXT-1 邊界 + grep + 讀 arcrun 全局核對都做完。**主阻擋 = 前置議題定案(task 1.4b)**,等 leo/arcrun 答覆三問(見下)。定案後:升 arcrun v3 / 定掛載形態 → 移交 → 裁剪 CLAUDE.md → git init 推 `uncle6me-web/kbdb-graph-plugin`。
|
||||
|
||||
**讀 arcrun 後的關鍵翻盤**:兩份 HANDOFF 假設「核心已在 arcrun」其實**尚未落地**——`arcrun/kbdb` 還是 v2(entries,無 blocks/0005/0007/block-crud),且與本插件是**不同 D1 庫**(arcrun-kbdb vs inkstone-kbdb)。**v3 基本盤真身其實在本目錄**。詳見 design.md「全局核對發現」。
|
||||
|
||||
## 待總管決策(三問已上呈,不是本子 repo 能拍板)
|
||||
|
||||
leo 指示「整理成 wiki、由總管決策」。已寫成頂層決策文件:
|
||||
📍 `InkStoneCo/.agents/specs/matrix-rearrange/DECISION-kbdb-v3-baseplane.md`(頂層 tasks Phase 2 task 2.5 已連結)
|
||||
|
||||
三問:(1) v3 基本盤怎麼進 arcrun (2) 掛載形態共用 D1 vs 走 API (3) 0005 歸屬。總管答覆後本 repo 才能解除 1.4b / R-EXT-3 阻擋。
|
||||
|
||||
## 已知問題
|
||||
|
||||
- 本目錄目前**無獨立 git**(matrix 降級後脫離),改名後需 `git init`。
|
||||
- `CLAUDE.md` 下半部仍是整套 KBDB v3 規範(含基本盤 Block CRUD),與「只做 graph 插件」新定位不符,待裁剪(HANDOFF 待辦 1 的一部分)。
|
||||
- 上游 bug 未解:`PATCH /blocks/:id` 回 403(見 `docs/5-records/incidents/BUG-2026-05-29-...`)——屬 arcrun/kbdb 基本盤端,非本插件。
|
||||
Reference in New Issue
Block a user