當 Antigravity 遇見 Obsidian CLI:AI 代理程式的「手腳」革命

長期以來,AI 代理程式雖然能思考、能寫碼,但在作業系統與應用程式之間,總像隔著一層玻璃。透過 Obsidian 1.12.x 全新釋出的 CLI 工具,AI 終於擁有了能直接操作 UI 的「手腳」。

2026-03-28 · 1 min · 118 words · Wuulong

[技術隨筆] 當 Hugin 投降時:我與 AI 協作拼接珍貴地圖的「灰盒」實戰

哈爸筆記: 有時候最專業的工具不一定是最快的工具。這是一次從「想學專業軟體」到「讓 AI 寫專屬程式」的心路歷程,也驗證了人機協作中「人類提供結構,AI 提供執行」的高效模式。 1. 背景:細節與強度的拉扯 在田野中發現了一張細節極其豐富的珍貴舊地圖。這類地圖有個特性:如果你想一張照片拍完,細節(尤其是文字)會因為解析度不足而變得模糊不清。 為了保留所有細節,我採取了「局部特寫」法:分別拍下地圖的四個角落。照片是清晰了,但挑戰也來了:如何把這四張帶有手拿變形、光影與透視差異的照片,拼回原樣? 2. 挫折:專業軟體的高牆 一開始我很有志氣地問了 AI,它推薦我使用全景攝影界的開源神器 Hugin。 雖然 Hugin 功能極強,但它的介面充滿了攝影測量學的專有名詞:焦距 (Focal Length)、失真係數 (Lens Projection)、控制點 (Control Points)…等。即便對著 AI 給的指南操作,我依然在無數次的對齊失敗與複雜的參數設定中感到挫敗。對我來說,我只是想拼一張圖,並不想成為攝影量測專家。 3. 轉機:AI 代理程式的「灰盒」實驗 我決定把「死馬當活馬醫」,直接請我的 AI 代理程式 (Antigravity) 寫程式處理。過程中我也學到了一課: 全自動的失敗 (Black Box):一開始 AI 給了一支使用 OpenCV 內建 Stitcher 的程式。這類「黑盒」工具在處理旅遊風景照很強,但面對手拿翻拍、重複特徵不明顯的地圖時,演算法直接放棄(回報失敗碼 1)。 關鍵的人類介入 (Human-in-the-loop):我發現機器缺的是「空間感」。我主動告訴 AI 每張圖檔對應的位置: 左上:IMG_4953 右上:IMG_4955 左下:IMG_4954 右下:IMG_4956 精準執行:有了這份資訊,AI 放棄了不穩定的全自動模式,改寫一支基於 SIFT 特徵匹配與透視變換的客製化腳本。 4. 技術大腦:這支程式的工作邏輯 這支 Python 程式不再是瞎猜,而是執行了以下步驟: 特徵提取 (SIFT):在照片中尋找數千個數位特徵(如地圖上的線條交會點、古文字的筆畫)。 空間受限匹配:利用我提供的佈局,限定程式只比對「鄰接」的邊界,這大大降低了機器「認錯特徵」的機率。 透視投影變換 (Homography):這是最重要的一步。手拍照片一定有歪斜,程式透過數學計算,將照片進行如同 3D 空間般的「拉伸對齊」,確保地圖上的道路能無縫銜接。 三階段融合:先拼左半部、再拼右半部,最後合體。 5. 心得:AI 時代的「灰盒」策略 這次經驗讓我體會到,我們不一定要去硬啃專業軟體的說明書。最有效率的方式是 「灰盒策略」: ...

2026-02-02 · 1 min · 88 words · Wuulong

Python 與 ATAK 的通訊實戰:如何用 TCP 發送動態 CoT 標點

在開發 AI Field Scout (AI 偵查員) 系統的過程中,我們的一個核心需求是:讓 AI Agent 能即時把發現的資訊(例如:附近的便利商店、危險地形、或是沿著路徑移動的隊友)投放到使用者的 ATAK 地圖上。 ATAK (Android Team Awareness Kit) 是一個非常強大的戰術地圖軟體,它使用 CoT (Cursor on Target) 這種 XML 格式來交換訊息。網路上大部分的教學都推薦使用 UDP Multicast,但在實際的開發環境(特別是 Mac 電腦連接 iPhone 熱點,或是複雜的內網環境)中,UDP 經常因為路由、防火牆或廣播限制而撞牆。 經過了一番「通訊地獄」的除錯後,我們總結出了一套最穩定的解決方案:使用 TCP 直連。 這篇筆記將分享如何用 Python 建立一個穩定的 CoT 發送器,讓你的程式碼能直接控制 ATAK 地圖上的標記。 為什麼選擇 TCP 而不是 UDP? 雖然 CoT 的原生設計大量依賴 UDP Multicast 來達到「即插即用」的群組廣播效果,但在點對點(Point-to-Point)的開發測試中,UDP 有幾個痛點: 網路不可靠:在手機熱點或某些 Wi-Fi 設定下,Multicast 封包常被丟棄或過濾。 除錯困難:UDP 是「射後不理 (Fire and Forget)」,程式碼送出去了,你完全不知道對方收到了沒。 路由黑洞:作業系統(特別是 macOS)在多重網路介面下,UDP 出站路由容易走錯路(No route to host)。 相對的,TCP (Transmission Control Protocol) 提供了一個非常明確的機制: ...

2026-01-10 · 3 min · 456 words · Wuulong

告別索引焦慮:用 n8n + GitHub API 打造 AI 的即時知識庫

Google Search 找不到剛發布的文章?本篇介紹如何利用 n8n 直接讀取 GitHub Repo 原始碼,結合 Gemini 的長文本能力,實作真正的「即時」問答機器人。

2025-12-19 · 1 min · 207 words · Wuulong

實戰 n8n 整合 Google Custom Search:從踩坑到成功

紀錄如何在 n8n 中透過 HTTP Request 節點實作 Google 搜尋功能,包括 API Key 申請、CSE 設定、網站驗證與除錯技巧。

2025-12-19 · 2 min · 224 words · Wuulong

哈爸實驗室:技術與應用生態全景圖

哈爸實驗室:技術與應用生態全景圖 這張圖展示了「哈爸筆記」作為核心技術引擎,如何支撐並孵化出「2026 台灣河流探索」這個實踐場域。 graph TD %% === 定義可視化樣式 (Styles) === %% 核心技術區 (Core) - 藍/綠色系 classDef C_Mind fill:#e1f5fe,stroke:#01579b,stroke-width:2px; classDef C_Infra fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px; classDef C_AI fill:#fff3e0,stroke:#ef6c00,stroke-width:2px; classDef C_Comm fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px; %% 應用場景區 (River) - 大地色/深色系 classDef R_Vision fill:#4285F4,stroke:#0d47a1,stroke-width:2px,color:white; classDef R_Content fill:#F9A825,stroke:#f57f17,stroke-width:2px,color:black; classDef R_Tech fill:#2E7D32,stroke:#1b5e20,stroke-width:2px,color:white; classDef R_Meta fill:#607D8B,stroke:#263238,stroke-width:2px,color:white; %% === Core Domain: 哈爸筆記技術堆疊 === subgraph CoreDomain [🛠️ Core Tech: 哈爸筆記技術堆疊] direction TB subgraph C_Phase1 [GenAI 思維模組] Expert(複製專家思維):::C_Mind V2B(Voice-to-Blog 自動化):::C_Mind Insight(GAI 年會洞察):::C_Mind Insight --> Expert --> V2B end subgraph C_Phase2 [雲端基礎建設] GCP(GCP 成本優化):::C_Infra Zeabur(Zeabur 部署 n8n):::C_Infra CloudAI(AI 雲端管理):::C_Infra CloudAI --> GCP --> Zeabur end subgraph C_Phase3 [Agentic AI 實作] BotDebug(Discord Bot):::C_AI Agent(打造 Agentic AI):::C_AI Tool_SQL(SQL 資料庫工具):::C_AI Zeabur --> |提供算力| BotDebug --> Agent --> Tool_SQL end subgraph C_Phase4 [社群擴散] HabaLab(哈爸實驗室 Discord):::C_Comm Event(機械系 50 週年):::C_Comm Agent --> |賦能| HabaLab HabaLab --> Event end end %% === Application Domain: 河流探索計畫 === subgraph AppDomain [🌊 Field App: 2026 台灣河流探索] direction TB subgraph R_Phase1 [願景與方法] Method1(數位河流學):::R_Vision Infra(個人文章網站):::R_Meta end subgraph R_Phase3 [實地探索] Trip1(大甲溪車宿攻略):::R_Content Trip2(后里/高美指南):::R_Content Trip1 --> Trip2 end subgraph R_Phase4 [GIS與數據深化] Data1(Shapefile 轉 KML):::R_Tech Data2(River Buffer 萃取):::R_Tech Schema(SQL Schema 設計):::R_Tech Data1 --> Data2 --> Schema end subgraph R_Phase5 [工具賦能] Tool_Fab(Fabric + Gemini CLI):::R_Tech end end %% === 跨域整合連接 (The Merger) === %% 1. 基礎設施共用 V2B ==> |內容發布| Infra Infra ==> |載體| Trip1 %% 2. 技術賦能 (Agentic AI -> GIS Tech) Agent -.-> |技術指導| Tool_Fab Tool_Fab -.-> |自動化處理| Data1 %% 3. 社群匯流 HabaLab ==> |探索基地| Method1 Method1 --> |指導| Trip1 %% 4. 資料庫整合 Tool_SQL -.-> |Schema 參考| Schema

2025-12-19 · 2 min · 236 words · Wuulong

[實戰] n8n + Google Drive + Gemini:打造能讀懂私人文件的 AI 助理

繼 Discord Bot 之後,今天挑戰讓 AI 讀取我的「私人知識庫」。利用 n8n 的 Google Drive 節點下載文件,透過 Extract Text 解析,最後餵給 Gemini 進行問答。過程中踩了 Google OAuth ‘測試使用者’ 的坑。

2025-12-18 · 1 min · 177 words · Wuulong

社群經營自動化暖身:用 n8n 打造 Discord 每日歡迎機器人

覺得 Discord 的 MEE6 歡迎訊息太制式?本文分享如何用 n8n 自幹一個「每日歡迎機器人」。這個自動化流程會在每天中午定時執行,除了整理新成員名單,還串接了 Google Gemini,自動閱讀 #general 频道的討論串並生成「每日社群懶人包」。文中包含完整的權限設定與 AI 摘要實作教學。

2025-12-18 · 2 min · 359 words · Wuulong

【踩坑筆記】用 n8n 打造 Discord Bot:那些官方文件沒說的「隱形牆」

本以為用 n8n 接 Discord Bot 是件輕鬆愜意的事,沒想到卻在「權限設定」和「除錯」上撞得滿頭包。這篇文章整理了我遇到的幾個關鍵問題:為何機器人明明上線卻「已讀不回」?為何 n8n 會跳出莫名其妙的 Invalid URL 錯誤?以及如何開啟那個藏得很深的 Message Content Intent。

2025-12-17 · 1 min · 131 words · Wuulong

自架 n8n 不求人:用 Zeabur 輕鬆部署自動化神器

自架 n8n 是許多自動化愛好者的首選,但維護 Docker 和 SSL 憑證往往令人卻步。這篇文章分享我如何使用 Zeabur 平台,在 GCP 基礎設施上快速部署 n8n (SQLite 版本)。透過 Zeabur 的託管服務,我不需要處理底層繁瑣設定,就能擁有一套穩定、易維護且開箱即用的自動化中樞。

2025-12-17 · 1 min · 141 words · Wuulong