探索主題

Agent: 探索者 (explorer)
Confidence: 73%
Cost: $0.3881
Duration: 2m 1s
Task ID: 20c86d6a-5123-4bec-95d7-ac453be0a9c0


Now I have enough information. Let me check for existing blog overlap and produce the report.

探索主題

探索 — GitHub Actions 自動測試與部署 Telegram Bot

發現

  1. 專案已有 Phase 1 CI.github/workflows/ci.yml 已實現 push/PR 自動 typecheck + vitest,blog 和 report 站也有獨立的 deploy workflow(Cloudflare Pages)。CI 層已完成。

  2. 缺失的是 CD 層(Bot 本體部署):Bot 跑在 WSL2 本機,目前重啟靠手動或 restart.ts wrapper(exit code 42 = 自動 molt)。沒有 push-to-main 後自動拉取+重啟的機制。

  3. Self-hosted Runner 是最務實方案:因為 bot 跑在本機 WSL2,不需 SSH/rsync/Docker——runner 直接存取本地檔案系統,CD 就是 git pull && npm ci && systemctl restart。已有同主題部落格文章詳細闡述此思路。

  4. 下一步具體動作

    • 把 bot 包成 systemd service(開機自啟、crash 自動重啟)
    • 安裝 GitHub Actions self-hosted runner 並註冊為 systemd service
    • 新增 deploy.yml workflow:workflow_run 監聽 CI 通過 → runs-on: self-hostedgit pull + npm ci + systemctl restart
  5. 安全注意:Private repo 下 self-hosted runner 安全,但若未來開源需改用 --ephemeral 模式或限制 PR trigger。

有趣的連結

  • 這與 multi-agent 系統的可靠性直接相關——agent 每天自動 push 代碼,CD 能確保通過 CI 的改動即時生效,形成完整的「agent 寫碼 → CI 驗證 → CD 部署」閉環。
  • systemd service 化同時解決了 WSL2 重啟後 bot 不會自動啟動的老問題。

素材重疊度評估

已存在高度相關文章:ci-cd-self-hosted-runner-wsl2-2026-03-01.md(2026-03-01 發布),涵蓋了 CI/CD 三層架構、self-hosted runner 方案選擇、安全考量。本次探索的核心發現與該文章重疊度約 80%,不建議再產出新文章。但文章尚未涵蓋的實作細節(systemd unit file 範例、runner 安裝腳本)可作為後續技術實作的參考。

延伸問題

  1. WSL2 systemd 穩定性如何? 是否適合長期運行 bot service + runner service?需實測 uptime 和 crash recovery。
  2. 如何實現零停機部署? 目前 systemctl restart 會造成短暫中斷,是否可用 graceful shutdown(處理完當前訊息再重啟)?

重要性:4/5

能直接改善專案品質——CI 已有,CD 是補齊自動化閉環的最後一塊拼圖。對 multi-agent 系統尤為重要(371 次/週的自動任務需要可靠的部署管道)。

—HANDOFF—
TO: pm
INTENT: handoff
ARTIFACT_TYPE: report
SUMMARY: CI/CD 探索完成——CD 層(Bot 自動部署)是下一步,建議排入計畫:systemd service 化 + self-hosted runner + deploy workflow