iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
Build on Google AI

打造專屬 AI 參謀群:以 Gemini Spark、Workspace 與 ADK 構建自動化決策雷達系列 第 22 篇

Day 22:雙腦共振:Obsidian DataviewJS 看板與雙向鏈結實戰

  • 分享至 

  • xImage
  •  

在 Day 21 中,我們成功打通了情報沉澱的最後一哩路,透過 ObsidianVaultAdapter 將經由四大代理人評估為 PROCESSED 且評分 $\ge 4$ 的高價值技術情報,轉譯為帶有標準 YAML Frontmatter 的 Markdown 檔案並沉澱至 00_Inbox/Radar/ 目錄。

然而,如果只是把檔案丟進資料夾,這些筆記很快就會變成另一個形式的「數位垃圾場」。在個人知識管理(PKM)體系中,筆記必須能動態湧現(Dynamic Emergence)與網狀互聯(Bidirectional Linking)。

今天我們將在 Obsidian 中利用強大的社群外掛 Dataview (含 DataviewJS) 與 雙向鏈結(Wikilinks),在本地筆記庫打造媲美 Day 20 Google Sheets 戰情室的「跨領域情報熱點看板」,並實現領域知識圖譜的自動演化。


一、設計藍圖:從靜態檔案到動態知識看板

在 Day 21 所生成的筆記 Frontmatter 結構中,我們已經埋下了結構化查詢的種子:

---
id: "dfd9abe0"
title: "State Locking Verification Paper"
source: "https://arxiv.org/abs/test.lock"
domain: "SCIENCE"
score: 5
date: "2026-09-25 14:50:55"
tags:
  - intelligence-radar
  - domain/science
---

藉由這些標準屬性,我們可以在 Obsidian 建立一個名為 跨領域情報戰情總覽.md 的核心索引筆記(Map of Content, MOC),透過以下四個模組聚合情資:

  1. 即時情報指標條(KPI Header):統計當前雷達收錄篇數、平均技術評分、覆蓋領域數。
  2. 五星重磅情報卡片流(Top Tier Radar):以美觀的表格或卡片即時過濾 score >= 5 的必讀突破。
  3. 分領域動態切換視圖(Domain Slices):依據 domain 分組呈現前沿進展。
  4. 雙向鏈結與語義圖譜(Local Graph & Wikilinks):透過雙鏈使孤立筆記自動串接至領域核心節點。

二、環境準備:安裝 Dataview 外掛

  1. 開啟 Obsidian 設定(Cmd + , 或 Ctrl + ,)。
  2. 進入「社群外掛(Community Plugins)」並關閉「受限模式(Restricted Mode)」。
  3. 搜尋並安裝 Dataview 外掛,隨後點選啟用。
  4. 進入 Dataview 的設定頁面,務必將 「Enable JavaScript Queries (DataviewJS)」 與 「Enable Inline JavaScript Queries」 切換為開啟狀態。

三、實戰構建:打造 Obsidian 動態情報戰情室

請在 Obsidian 的根目錄或 10_MOC/ 資料夾下,新增一篇筆記:跨領域情報戰情總覽.md。

1. 頂部即時 KPI 狀態欄(Inline DataviewJS)

利用 DataviewJS 的即時運算能力,計算當前情報庫的動態數據:

> [!summary] 📡 情報雷達本地資產統計
> ```dataviewjs
> const pages = dv.pages('"00_Inbox/Radar"').where(p => p.score !== undefined);
> const total = pages.length;
> const avgScore = total > 0 ? (pages.score.array().reduce((a, b) => a + b, 0) / total).toFixed(2) : 0;
> const domains = new Set(pages.domain.array()).size;
> 
> dv.paragraph(`🔥 **收錄總數**:${total} 篇 | 🌟 **平均評分**:${avgScore} / 5.0 | 🌐 **涵蓋領域**:${domains} 個`);
> ```

這段代碼會直接掃描 00_Inbox/Radar 下的所有檔案,提取 Frontmatter 的 score 欄位即時統計,每次開啟筆記即可掌握當前情報庫體量。


2. 重磅情報焦點閱覽室(Dataview Standard Query)

透過簡潔的 DQL(Dataview Query Language),快速抓取評分為滿分(5 分)的最具衝擊力情資,並直接將筆記內部提煉的摘要展示在表格中:

## 🌟 評審滿分(Score 5)頂級情資

```dataview
TABLE 
  domain AS "領域",
  date AS "收錄日期",
  choice(contains(file.tags, "domain/science"), "🔬 科學探索", 
    choice(contains(file.tags, "domain/finance"), "📈 總經金融", "⚡ 基礎建設")) AS "分類標註",
  file.link AS "筆記入口"
FROM "00_Inbox/Radar"
WHERE score >= 5
SORT date DESC
LIMIT 10

---

### 3. 多領域情報矩陣(DataviewJS 動態聚合)

如果我們想進一步按照領域(`SCIENCE`、`FINANCE`、`COMMUNITY` 等)自動分組,並以更緊湊的清單或卡片展開,可以使用以下進階 DataviewJS 腳本:

```markdown
## 🗂️ 跨領域技術進展矩陣

```dataviewjs
const folder = '"00_Inbox/Radar"';
const pages = dv.pages(folder).sort(p => p.date, 'desc');

// 依據 domain 分組
const groups = {};
for (let p of pages) {
    const d = p.domain || "未分類";
    if (!groups[d]) groups[d] = [];
    groups[d].push(p);
}

// 動態為每個領域生成清單
for (let [domain, items] of Object.entries(groups)) {
    dv.header(3, `📌 領域節點: [[${domain}]] (${items.length} 篇)`);
    dv.table(
        ["技術標題", "評分", "原始來源", "入庫時間"],
        items.map(p => [
            p.file.link,
            "★".repeat(p.score || 0),
            p.source ? `[前往原文](${p.source})` : "無連結",
            p.date ? p.date.substring(0, 10) : "-"
        ])
    );
}

這段代碼具備高度靈活性:只要 `ObsidianVaultAdapter` 同步了新的領域資料(例如新出現的 `ROBOTICS` 或 `QUANTUM`),此處完全無需手動修改 Markdown,看板會自動湧現新的一組表格!

---

## 四、語義織網:雙向鏈結與知識圖譜(Graph View)共振

除了用 Dataview 聚合表格,PKM 的核心威力在於「非線性關聯」。

回顧我們在 Day 21 定義的 Markdown 模板尾端:

```markdown
---
## 關聯實體
- 領域節點: [[{{ item.domain }}]]
- 原始追蹤: [論文/研報連結]({{ item.source_url }})

這裡的 [[{{ item.domain }}]](例如 [[SCIENCE]]、[[FINANCE]])是 Obsidian 的雙向鏈結語法(Wikilinks)。

1. 建立領域彙總核心筆記(Domain MOC)

當你在任何一篇論文中點擊 [[SCIENCE]] 時,Obsidian 會自動導引或提示建立 SCIENCE.md。

我們可以在 SCIENCE.md 中寫入反向查詢:

# 領域 MOC:科學探索與 AI 前沿 (SCIENCE)

> 本節點自動彙整跨領域情報雷達中所有評估為 SCIENCE 領域的高價值研究。

```dataview
LIST
FROM [[SCIENCE]] AND "00_Inbox/Radar"
SORT date DESC

如此一來,任何被雷達標記為 `SCIENCE` 的情資,都會自動「被吸附」到這個領域筆記的反向連結清單中,形成一個自動生長的領域情報樹。

### 2. 在局部圖譜(Local Graph)觀察技術叢集

開啟任一情報筆記,點開右上角的「開啟局部關聯圖(Open Local Graph)」:

* **中心節點**:當前情報筆記(例如 `State Locking Verification Paper`)。
* **一階關聯**:直接相連到 `[[SCIENCE]]` 節點。
* **二階關聯**:當其他論文也相連到 `[[SCIENCE]]`,或者後續在編輯筆記時手動補上 `[[分散式鎖定]]`、`[[狀態機安全]]` 等技術標籤,局部圖譜就會自動浮現出**技術依賴簇群(Cluster)**。

這達成了真正的「雙腦共振」——前哨站與 LLM 代理人在雲端自動採集與提煉結構化資料,本機知識庫則負責將結構化資料織入個人長期的思考網絡。

---

## 五、進階體驗優化:Frontmatter 鍵名與 Dataview 規範

在實作 Dataview 看板時,有兩個常見的規範細節:

1. **日期型別識別**:
Frontmatter 中的 `date` 建議使用 ISO 格式(`YYYY-MM-DD` 或 `YYYY-MM-DDTHH:mm:ss`)。若寫為 `2026-09-25 14:50:55`,Dataview 能直接將其識別為 Date 物件,支援 `.year`、`.month` 等進階時間過濾(例如 `WHERE date >= date(today) - dur(7 days)` 查詢近一週情報)。
2. **數值型別驗證**:
在 YAML 中,`score: 5` 不應加上雙引號。若標記為 `score: "5"`,Dataview 會視為字串,導致 `WHERE score >= 4` 的數值比對失效。我們在 Day 21 實作的模板中保持了 `score: {{ item.verified_score }}` 不帶引號,正是為了確保 Dataview 的數值比較運算子能精準觸發。

---

## 總結與下一步

今天我們完成了一套動態、自適應的本地戰情室:

* 透過 **DataviewJS**,免除了人工手動整理筆記的繁瑣,讓高價值情報具備即時統計、評分篩選與分組透視。
* 透過 **Wikilinks**,建立了從情報碎片到領域 MOC 的自動反向索引與局部圖譜網絡。

然而,目前整個流程仍依賴我們在本機終端機手動下指令:

```bash
python -m scripts.sync_to_obsidian

如果本機關機,或是出門在外只有手機、平板,情報就無法自動沉澱。

在 Day 23,我們將讓這個閉環徹底擺脫手動依賴:「全自動化雲端閉環:GitHub Actions 透過 SSH Deploy Key 自動將情資 Push 至私有 Obsidian Vault」,實現 100% 雲端無人值守同步!


上一篇
Day 21:情報沉澱:將戰情室情資無縫同步至個人第二大腦 (Obsidian Vault 雙鏈知識網)
系列文
打造專屬 AI 參謀群:以 Gemini Spark、Workspace 與 ADK 構建自動化決策雷達 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言