331e4d56a7
裸 [[wikilink]] 是弱連結——只說「有關」,沒說關係是什麼,下游要建 knowledge graph 還得回讀兩張卡。改寫成帶語義的三元組,下游 ingest 直接 parse 出帶類型的有向邊,把關係也預編譯。 - wiki-init.md + docs/SKILL.md 的 ## 關聯 改用 [[A]] >> 謂詞 >> [[B]]。 - 規則:方向性、謂詞用動詞、自由詞彙、向後相容(裸 [[A]] 仍合法)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
187 lines
5.5 KiB
Markdown
187 lines
5.5 KiB
Markdown
---
|
||
name: wiki-cowork-scan
|
||
description: "掃描本機 Documents 下所有裝了 system-dev-template 的資料夾,自動整理 LLM Wiki。支援一般專案、Logseq vault、Obsidian vault 三種結構,偵測方式與 install.sh 一致。觸發時機:使用者說「整理 wiki」「幫我掃 wiki」「更新我的 wiki」「wiki 掃描」,或 Cowork cron 定期觸發。"
|
||
---
|
||
|
||
# Wiki Cowork Scan
|
||
|
||
## 核心原則
|
||
|
||
這個 skill 與 Claude Code 的 `/wiki-init` `/wiki-capture` 共用同一套規則:
|
||
|
||
| 層 | 規則 |
|
||
|------------|-------------------------------------------|
|
||
| raw source | 只讀,不動 |
|
||
| `.claude/wiki/` | 唯一輸出地點,只增不覆 |
|
||
| `CLAUDE.md` | 不動 |
|
||
| `logseq/`、`.obsidian/`、`assets/` | 絕對不動 |
|
||
|
||
**CC 和 Cowork 輸出格式相同,任何一方整理過的內容,另一方看到就跳過或補充,不覆蓋。**
|
||
|
||
---
|
||
|
||
## 第一步:發現所有目標資料夾
|
||
|
||
掃描 `~/Documents`(遞迴深度 3 層),找出所有含 `.claude/wiki/` 的資料夾。
|
||
|
||
```
|
||
~/Documents/
|
||
project-a/.claude/wiki/ ← ✅ 目標
|
||
Logseq/.claude/wiki/ ← ✅ 目標
|
||
其他資料夾/ ← ❌ 跳過
|
||
```
|
||
|
||
找到後列出清單,告訴使用者:「找到 N 個 wiki 資料夾,開始整理。」
|
||
|
||
---
|
||
|
||
## 第二步:對每個資料夾偵測 vault 類型
|
||
|
||
進入每個目標資料夾的**根目錄**(`.claude/wiki/` 的上兩層),依序判斷:
|
||
|
||
### 判斷順序(與 install.sh 一致)
|
||
|
||
```
|
||
if 根目錄有 logseq/ 資料夾
|
||
→ vault 類型:Logseq
|
||
→ raw source:pages/、journals/
|
||
→ 忽略:logseq/、assets/
|
||
|
||
else if 根目錄有 .obsidian/ 資料夾
|
||
→ vault 類型:Obsidian
|
||
→ raw source:根目錄下所有 .md(排除 .obsidian/ 內的檔案)
|
||
|
||
else
|
||
→ vault 類型:一般專案
|
||
→ raw source:docs/ 下所有 .md
|
||
```
|
||
|
||
---
|
||
|
||
## 第三步:讀取現有 wiki 狀態
|
||
|
||
進入 `.claude/wiki/`,讀取:
|
||
|
||
- `INDEX.md`:目前已有哪些 wiki 頁面
|
||
- `status.md`:上次整理時間、進度
|
||
- `log.md`(如果有):誰動過什麼
|
||
|
||
目的:**知道哪些已整理過,只處理新增或有變動的 raw source**,不重複整理。
|
||
|
||
---
|
||
|
||
## 第四步:整理規則
|
||
|
||
### 讀 raw source
|
||
|
||
逐一讀取 raw source 的 `.md` 檔。跳過:
|
||
- 檔名以 `.` 開頭的隱藏檔
|
||
- `.wikiignore` 裡列出的 glob pattern(如果存在)
|
||
- 含有 `<!-- wiki:ignore -->` 標記的區段
|
||
|
||
### 整理邏輯
|
||
|
||
每個 raw source 檔案,判斷:
|
||
|
||
1. **INDEX.md 裡已有對應條目,且 raw source 未修改** → 跳過
|
||
2. **INDEX.md 裡已有條目,但 raw source 有新內容** → 更新對應 wiki 頁面,補充新資訊,不刪舊內容
|
||
3. **INDEX.md 裡沒有對應條目** → 新建 wiki 頁面
|
||
|
||
### Wiki 頁面格式
|
||
|
||
```markdown
|
||
# [主題名稱]
|
||
|
||
**來源**:`[raw source 相對路徑]`
|
||
**最後更新**:YYYY-MM-DD
|
||
|
||
## 摘要
|
||
|
||
[2-3 句話說明這份文件在講什麼]
|
||
|
||
## 重點
|
||
|
||
- [要點 1]
|
||
- [要點 2]
|
||
|
||
## 關聯
|
||
|
||
- [[本主題]] >> 謂詞(動詞短語) >> [[相關主題]]
|
||
- [[原子筆記]] >> 是其最小單元 >> [[卡片盒筆記法]]
|
||
```
|
||
|
||
### 使用 typed-edge 三元組(不只裸 `[[wikilink]]`)
|
||
|
||
整理時,發現內容與其他頁面有關聯,用**帶語義的三元組**寫進 `## 關聯`,而非只列裸 `[[頁面]]`。裸 `[[A]]` 只說「有關」、沒說關係,下游要建 knowledge graph 還得回讀兩張卡;三元組把關係也預編譯,ingest 直接 parse 出帶類型的有向邊。
|
||
|
||
格式 `A >> 謂詞 >> B`,規則:
|
||
1. **方向性**:必須讀成「A(謂詞)B」一句通順的話;A、B 順序=主→賓真實方向。
|
||
2. **謂詞用動詞 / 動詞短語**(反駁、奠基於、是…的實作),天然帶方向。
|
||
3. **謂詞自由書寫**,不受控詞彙;下游對謂詞 embedding 時同義謂詞會自動聚類,但方向仍靠書寫順序保證。
|
||
4. **向後相容**:純 `[[A]]` 仍合法(無類型邊),盡量補謂詞。
|
||
|
||
`>>` 為分隔語法,全程一致即可。這是 Karpathy LLM Wiki「知識互連」的強化版——連結不只存在,還帶類型與方向。
|
||
|
||
---
|
||
|
||
## 第五步:更新 INDEX.md 和 status.md
|
||
|
||
### INDEX.md 格式
|
||
|
||
```markdown
|
||
# Wiki Index
|
||
|
||
> 最後更新:YYYY-MM-DD HH:MM | 來源:cowork-scan | 總頁數:N
|
||
|
||
## 頁面列表
|
||
|
||
| 頁面 | 來源 | 摘要 | 最後更新 |
|
||
|------|------|------|----------|
|
||
| [[頁面名稱]] | `raw/path.md` | 一句話摘要 | YYYY-MM-DD |
|
||
```
|
||
|
||
### status.md 更新
|
||
|
||
在現有內容**末尾追加**(不覆蓋):
|
||
|
||
```markdown
|
||
## YYYY-MM-DD HH:MM|cowork-scan
|
||
|
||
- vault 類型:[Logseq / Obsidian / 一般專案]
|
||
- 掃描檔案:N 個
|
||
- 新增頁面:N 個
|
||
- 更新頁面:N 個
|
||
- 跳過:N 個(未變動)
|
||
```
|
||
|
||
---
|
||
|
||
## 第六步:回報結果
|
||
|
||
整理完所有資料夾後,輸出摘要:
|
||
|
||
```
|
||
✅ Wiki 整理完成
|
||
|
||
資料夾 1:~/Documents/project-a
|
||
類型:一般專案
|
||
新增:3 頁,更新:1 頁,跳過:12 頁
|
||
|
||
資料夾 2:~/Documents/Logseq
|
||
類型:Logseq vault
|
||
新增:5 頁,更新:2 頁,跳過:47 頁
|
||
|
||
總計:8 頁新增,3 頁更新
|
||
```
|
||
|
||
---
|
||
|
||
## 絕對禁止
|
||
|
||
- ❌ 修改任何 raw source 檔案
|
||
- ❌ 修改 `CLAUDE.md`
|
||
- ❌ 動 `logseq/`、`.obsidian/`、`assets/` 資料夾
|
||
- ❌ 刪除 `.claude/wiki/` 裡已有的頁面(只增補,不刪除)
|
||
- ❌ 把機敏資訊(密碼、金鑰、個資)寫進 wiki(遇到跳過並記錄)
|
||
- ❌ 整理沒有 `.claude/wiki/` 的資料夾(那不是這個 skill 的目標)
|