下拉重新整理
rails 公開 llm knowledge-management rails vibe-coding postgresql ai

在 Rails 部落格上以 Vibe Coding 實作 LLM 知識管理系統(取代 Obsidian)

利用 Claude Code 與 LLM,於 Rails 部落格快速建置 Vibe Coding 知識庫,取代 Obsidian,支援中英全文搜尋與多管道輸入。

| 匯入於 2026-04-06 |

背景與靈感

受 Andrej Karpathy 的 LLM Knowledge Base 工作流啟發,將 Vibe Coding 方法應用於自己的 Rails 部落格,打造一套完整的個人知識管理系統,完全取代 Obsidian。

  • 核心概念:LLM 作為知識管理員,三層架構 Raw Sources → Wiki → Schema
  • 靈感來源:Vannevar Bush 1945 年的 Memex 概念。

此實作與 rails-vibe-coding-llm-obsidian 的案例相似,皆以 Rails 為基底,利用 LLM 完成筆記結構化。


系統概觀

  • WikiEntry 模型:儲存 markdown、分類、標籤、交叉連結(backlinks)以及 private/published 狀態。
  • 全文搜尋:PostgreSQL tsvector + ILIKE,支援中英文混合搜尋與關鍵字高亮。
  • LLM Ingest:將雜亂筆記送入 LLM,自動產生標題、摘要、分類、標籤與交叉連結。
  • REST API
    • POST /api/wiki/ingest – 上傳原始素材。
    • GET /api/wiki/search?q=... – 關鍵字搜尋,返回高亮結果。
  • i18n:完整的中英雙語支援。

技術架構

graph LR
    A[Raw Sources] --> B[LLM Ingest]
    B --> C[WikiEntry (PostgreSQL)]
    C --> D[REST API]
    D --> E[Frontend (Rails Views)]
    C --> F[Full‑text Search]
  • 模型WikiEntry 包含 title:string, content:text, category:string, tags:string[], backlinks:string[], status:enum
  • 搜尋:使用 to_tsvector('simple', content) 建立 tsvector 欄位,配合 ILIKE 處理中文。
  • 部署:單一 Rails 應用,Docker 化部署,資料庫使用 PostgreSQL。

此架構與 nicklecheng-project-architecture 中提到的模組化設計理念相呼應。


多管道輸入

管道 說明
Admin 後台 完整編輯介面 + 「LLM 匯入」按鈕
Terminal CLI curl -X POST … 或自訂 shell function 一行指令
Claude Code skill /wiki-add 指令,可在任何目錄新增筆記
手機 iOS Shortcut 透過 API 呼叫,隨時隨地上傳素材

為何不需要 Obsidian

  1. 多 vault 切換問題 → 單一資料庫、單一搜尋框。
  2. 安裝成本 → 只要瀏覽器即可使用。
  3. 結構維護 → LLM 自動整理筆記結構。
  4. 同步費用 → 部落格本身即為線上同步平台。
  5. 中文搜尋 → PostgreSQL ILIKE 直接支援中英文。

Vibe Coding 體驗與心得

  • 流程:從討論 Karpathy 的理念 → 分析痛點 → AI 產生提案 → 設計 spec → 實作程式碼 → 撰寫測試 → 部署上線。
  • 關鍵:不是 AI 能否寫程式,而是使用者能否清晰表達需求、在適當時機做決策。
  • 成果:一個下午完成 22 個任務、37 個測試、2585 行程式碼,全部由 Claude Code 協助。
  • 價值:大幅降低從想法到成品的摩擦力,讓知識管理與程式開發同時進行。

部署與測試

# 建立資料庫
rails db:create db:migrate
# 執行測試
bundle exec rspec spec/models/wiki_entry_spec.rb
# 啟動伺服器
rails server -e production

參考連結


本文即為在 Rails 部落格上以 Vibe Coding 完成的 LLM 知識管理系統說明,已成功取代 Obsidian。

© 2025-2026 Nickle Cheng Built with Ruby Ruby on Rails