WT 個人 AI 助手系統架構

← 返回索引

系統總覽

這是 WT(王逸倫)的個人 AI 助手系統,運行在 Hetzner 雲端主機(46.225.179.123),24/7 在線。核心是 Claude Code(Opus 4.6),透過 Discord 與 WT 即時對話,同時管理多個自動化服務。

架構圖

┌─────────────────────────────────────────────────────┐
│                    Hetzner Cloud                     │
│                  46.225.179.123                      │
│                                                     │
│  ┌──────────────┐    ┌──────────────────────────┐   │
│  │  Claude Code  │◄──►│  Discord Plugin (MCP)     │   │
│  │ (tmux session)│   │  channel: 148476...       │   │
│  │  Opus 4.6     │   └──────────────────────────┘   │
│  │               │                                   │
│  │  ┌──────────┐ │   ┌──────────────────────────┐   │
│  │  │ Hooks    │ │   │  Cron Jobs (14 個)         │   │
│  │  │ 11 個    │ │   │  每 5 分~每天             │   │
│  │  └──────────┘ │   └──────────────────────────┘   │
│  │               │                                   │
│  │  ┌──────────┐ │   ┌──────────────────────────┐   │
│  │  │ Memory   │ │   │  Services (3 個)           │   │
│  │  │ Git Repo │ │   │  captain / transcribe      │   │
│  │  └──────────┘ │   └──────────────────────────┘   │
│  └──────────────┘                                   │
│                                                     │
│  ┌──────────────┐    ┌──────────────────────────┐   │
│  │ Cloudflare   │    │  GitHub (4 repos)          │   │
│  │ Pages (4站)  │    │  adom-near/*               │   │
│  └──────────────┘    └──────────────────────────┘   │
└─────────────────────────────────────────────────────┘
         ▲                        ▲
         │ HTTPS                  │ SSH/SFTP
         ▼                        ▼
┌──────────────┐          ┌──────────────┐
│  WT 的手機    │          │  MacBook Pro  │
│  (Discord)    │          │  (本機 Claude │
│  (JPR 錄音)   │          │   Code)       │
└──────────────┘          └──────────────┘

核心元件

2.1 Claude Code 主程序

運行方式
tmux session "claude"
模型
Claude Opus 4.6(1M context)
方案
5x Max Plan($100 USD/月)
插件
Discord、Claude Router、Codex
  • 啟動時帶 --channels 參數啟用 Discord 即時通訊
  • 自動重啟:每 6 小時或記憶體低於 500MB 時由 cron 觸發

2.2 Discord 通訊層

  • 頻道:1484763667512823808
  • 功能:即時對話、任務指派、進度回報、檔案傳輸
  • Bot token 存於 /root/.claude/channels/discord/.env

2.3 記憶系統

  • 儲存:Git repo(adom-near/claude-memory),markdown 檔案
  • 同步:每 5 分鐘自動 git sync(sync-memory.sh)
  • 跨 session:雲端和本機 Claude 共用同一個 repo
  • TTL 機制:patrol.sh 定期掃描過期記憶(project 30天、feedback 90天、user 180天)

記憶庫結構

  • user_profile.md / user_preferences.md — 使用者檔案
  • feedback_*.md(13 個) — 行為規則
  • project_*.md(24 個) — 專案記憶
  • reference_*.md — 外部資源指引
  • daily/*.md — 每日工作日誌

Hooks 系統(11 個)

Hook 名稱 觸發時機 功能
load_current_task.sh SessionStart 載入當前任務上下文
memory-git-sync.sh pull SessionStart 拉取最新記憶 + 生成差異摘要
backfill_empty_logs.sh SessionStart 補建缺失的 daily log
user_prompt_context.sh UserPromptSubmit 注入當前時間(UTC+8)
check_index_sync.sh PostToolUse(Write/Edit) 檢查網站 index 是否同步
memory-git-sync.sh push PostToolUse(Write/Edit) 推送記憶變更
daily_log_append.sh PostToolUse(Bash) git commit 後自動 append 日誌
post_push_verify.sh PostToolUse(Bash) git push 後自動驗證 Cloudflare 部署
pre_compact_checkpoint.sh PreCompact Context 壓縮前保存斷點
memory-git-sync.sh push Stop Session 結束時推送記憶
skill_dispatch.json 參考用 技能自動觸發 dispatch 表
memory_impact_matrix.json 參考用 任務→記憶影響對照表

Cron 排程(14 個)

排程 腳本 功能
每小時 :00 auto-restart-claude.sh 檢查是否需重啟(>6h 或記憶體低)
每 15 分鐘 auto_transcribe.sh 自動轉譯新錄音
每小時 :30 refresh_claude_token.py OAuth token 刷新(flock 鎖)
每 5 分鐘 sync-memory.sh 記憶 repo git 同步
每 30 分鐘 patrol.sh 主動巡檢(9 項檢查)
每天 00:00 auto-daily-log.sh 自動建立新日誌
每天 23:00 check_daily_log.sh 檢查日誌完整性
每天 08,14,20 verify-daily-log.sh 驗證日誌內容
每天 03:00 find ... -delete 清理聽力工具暫存
每週一 09:00 security-audit.sh 安全稽核
每天 23:50 dc-daily-summary.sh DC 對話每日摘要
每天 09:00 generate-project-dashboard.sh 更新專案狀態 Dashboard
每小時 :35 captain refresh_claude_token.py 隊長 Claude token 刷新
每 5 分鐘 captain-sync-memory.sh 隊長記憶同步

常駐 Services(3 個)

服務 用途
captain-ai-secretary.service 隊長 AI 秘書 FastAPI 後端(LINE webhook → Whisper → Gemini → GCal)
claude-code-captain.service 隊長專用 Claude Code(Discord 連線)
watch-recordings.service 監視 incoming/recordings 目錄,新錄音自動觸發轉譯

網站部署(4 站)

全部由 Cloudflare Pages 託管,git push 後自動部署。

站點 URL 用途 儲存庫
公開站 research-reports-bbm.pages.dev 可公開的研究報告 adom-near/research-reports
私人站 wt-all-reports.pages.dev 含客戶資料的完整報告 adom-near/wt-all-reports
隊長私人站 captain-private-site.pages.dev 隊長個人 dashboard adom-near/captain-private-site
隊長公開站 captain-public-site.pages.dev 隊長對外資源 adom-near/captain-public-site

巡檢系統(patrol.sh,9 項檢查)

patrol.sh 每 30 分鐘執行一次,有異常時回報 DC,沒事就靜默。

  1. 新錄音未處理
  2. auto_transcribe lock 卡住
  3. task_queue pending 任務
  4. checkpoint 中斷任務
  5. claude-memory 未 commit 變更
  6. 最近錯誤 log
  7. DC 漏回覆偵測(Discord API 比對時間差)
  8. 記憶檔案 TTL 過期(每天 09:00 那一輪)
  9. 磁碟使用率

資料流

8.1 語音轉譯流

iPhone JPR 錄音 → SFTP → /root/incoming/recordings/
    → watch-recordings.service 偵測
    → auto_transcribe.sh(每 15 分鐘)
    → faster-whisper 轉譯
    → Claude 分析摘要
    → 更新語音轉譯摘要頁
    → git push → Cloudflare 自動部署
    → DC 傳連結

8.2 報告產出流

WT 透過 DC 指派研究任務
    → Claude 搜尋/分析
    → 生成 HTML 頁面
    → git push → Cloudflare 部署
    → post-push-verify.sh 驗證
    → DC 傳連結

8.3 記憶同步流

Claude 寫入記憶檔案
    → PostToolUse hook 觸發 memory-git-sync.sh push
    → git commit + push
    → sync-memory.sh 每 5 分鐘雙向同步
    → 本機 Claude 啟動時 git pull 取得更新

8.4 自動重啟流

cron 每小時檢查 → 超過 6h 或記憶體低
    → 重啟前生成 daily log
    → /exit 優雅退出(等 30 秒)
    → tmux new-session 重啟
    → postcheck 確認 PID
    → DC 通知「🟢 auto-restart 成功」
    → SessionStart hooks 自動恢復(拉記憶、載任務、補日誌)
    → fetch DC 訊息補漏

安全機制

存取控制

  • 獨立 Linux user(ai-secretary / captain)
  • 檔案權限 chmod 700
  • Cloudflare Tunnel 提供 HTTPS
  • 記憶 repo 私有(GitHub private)

維運安全

  • OAuth token 自動刷新(flock 鎖防雙開)
  • 每週安全稽核(security-audit.sh)
  • Codex plugin 獨立權限沙盒
  • Discord Bot 只能存取指定頻道

成本

項目 月費
Claude Max 5x $100 USD
Hetzner CX22 ~€5 EUR
Cloudflare Pages 免費
GitHub 免費
OpenAI API(生圖) 按量($5 儲值很久)
合計 ~$108 USD/月