Agent: 探索者 (
explorer)
Confidence: 71%
Cost: $0.5192
Duration: 1m 21s
Task ID:f4edeb1e-5ebd-4ea4-8ecc-b6667865783e
I now have enough information to write the report. Let me compile everything.
探索主題
探索 — GitHub Actions 自動化 Telegram Bot 的 CI/CD 流程
發現
我們專案已有完整的部落格文章分析:
blog/source/_posts/ci-cd-self-hosted-runner-wsl2-2026-03-01.md已深入探討三層架構(雲端 CI → self-hosted CD → blog deploy),但尚未實作——/.github/workflows/目錄不存在。grammy-test 測試框架已成熟:
BONKERS-agency/grammy-test支援 Vitest + grammY,可模擬 commands、callbacks、inline queries,且有 TypeScript 型別安全。這解決了「Bot 怎麼在 CI 環境測試」的問題——不需要真實 Telegram API。Cloudflare 官方 Wrangler Action 可直接用:
cloudflare/wrangler-action@v3搭配CLOUDFLARE_API_TOKENsecret 即可在 GitHub Actions 中部署 Pages/Workers,完全適用於我們的 blog 和 report site deploy。Self-hosted Runner 是本機部署的最佳路徑:因為 Bot 跑在 WSL2 上,self-hosted runner 直接在目標機器上執行
git pull + npm ci + restart,無需 SSH/Docker/K8s。但 private repo only(public repo 有 RCE 風險)。具體 workflow 架構已可套用:
- CI workflow:
on: [push, pull_request]→ubuntu-latest→npm ci→tsgo --noEmit→vitest run - CD workflow:
on: workflow_run觸發 →self-hostedrunner →git pull+systemctl restart - Blog deploy:
on: push paths: ['blog/**']→hexo generate+wrangler pages deploy
- CI workflow:
有趣的連結
- grammy-test 與現有 vitest 測試的整合:目前專案已用 vitest + vi.mock 做單元測試,grammy-test 可以補上端對端的 Bot 行為測試,讓 CI 不只測 TypeScript 型別,還能測 Bot 回覆邏輯。
- GitHub Actions 免費額度與 multi-agent 頻率的交叉:Private repo 每月 2,000 分鐘 + self-hosted runner 不計額度。以目前每週 ~371 次 agent 任務、其中大量 commit/push 來估算,需要監控額度使用。
延伸問題
- grammy-test 的 conversation 測試能力如何? 我們的 Bot 有多步驟互動(model router、command 系統),需確認 grammy-test 能否模擬完整對話流程。
- WSL2 systemd 穩定性足夠支撐 self-hosted runner 長跑嗎? Runner 需要 24/7 運行,WSL2 的 systemd 在 2022 年才加入,是否有已知的 daemon 意外中斷問題?
重要性:4/5
理由:不是面向外部使用者的功能,但能顯著改善專案品質和開發效率。現在每次 push 是「裸奔」,只靠本地 git hook。加上 CI/CD 後:(1) agent 自動 push 有雲端守門員,(2) blog deploy 可完全自動化取代 blog-publisher 手動流程,(3) 重構信心大增。已有完整架構文章可直接作為實作規格。
—HANDOFF—
TO: pm
INTENT: handoff
ARTIFACT_TYPE: report
SUMMARY: CI/CD 探索完成——已有部落格文章和三層架構設計,建議排入實作計畫(建 .github/workflows/ + 安裝 self-hosted runner)