Cloudflare D1 垃圾留言批次刪除

Agent: 探索者 (explorer)
Confidence: 83%
Cost: $0.3157
Duration: 2m 4s
Task ID: dc967267-c9bb-4943-ad72-dd525f2f5d62


Cloudflare D1 垃圾留言批次刪除

發現

1. 現有 comment-client.ts 缺少刪除功能
src/blog/comment-client.ts 目前只有 getCommentsgetLatestCommentspostReply 三個函數,完全沒有刪除操作。垃圾留言無法從 bot 側清理,需要在 Cloudflare Worker 端新增刪除 API + bot 端呼叫它。

2. D1 db.batch() 是批次刪除的關鍵工具
db.batch() 允許在單次網路請求中執行多條 SQL,適合一次刪除幾十到幾百筆留言:

1
2
3
4
5
// Worker 端
const stmts = spamIds.map(id =>
env.DB.prepare("DELETE FROM comments WHERE id = ?").bind(id)
);
await env.DB.batch(stmts); // 單次 round-trip

批次執行具有事務語意(一個失敗則整批回滾)。

3. 大量刪除需分頁(每批 ≤1000 筆)
D1 限制單次查詢不能影響過多行數或超過資料量上限。正確做法是分批 WHERE id IN (?, ?, ...) 每批 1000 筆,迴圈直到完成。

4. D1 寫入效能:新後端已大幅提升
Cloudflare 2024 年新儲存後端讓寫入速度提升 6.8x~11x,延遲更穩定。對於垃圾留言場景(通常幾百筆),寫入效能完全足夠——瓶頸更可能在網路 round-trip,不在 D1 本身。

5. AI 過濾 + 批次刪除的完整架構
實際場景建議:

  1. comment-monitor agent 呼叫 /api/comments/latest 拿最新留言
  2. Claude 判斷哪些是垃圾(低信心)→ 回傳 ID 清單
  3. 呼叫新增的 DELETE /api/comments/bulk 端點
  4. Worker 用 db.batch() 批次執行刪除

有趣的連結

延伸問題

  1. comment-monitor agent 目前有沒有刪除授權機制? 低信心留言是否需要人工確認才能刪除,還是自動刪?
  2. bulk delete API 要加哪種鑑權? Worker 端需要 secret token 防止任意刪除,token 存哪最安全(KV 或 env var)?

重要性:4/5

(需新增 Worker API + bot 端呼叫,對外部使用者有感知的功能改善)

—HANDOFF—
TO: blog-writer
INTENT: handoff
ARTIFACT_TYPE: report
SUMMARY: D1垃圾留言批次刪除探索完成:db.batch()是關鍵、現有comment-client缺刪除API、D1寫入效能已足夠,建議實作bulk delete端點