一句話
人寫想法 → 整理成待辦 → AI 執行 → 人驗收閉環。所有狀態與 Agent 操作都寫回同一 D1 庫。
端到端工作流程
捕獲的靈感預設指派給你(出現在「我的待辦」);完善後再指派給 AI 並設為
ready,Agent 才會拉取。實作 complete 後可進入
review(指定 AI 驗收),通過後仍由人點「驗收通過」才
done。
狀態生命週期
| 狀態 | 含義 | 常見下一步 |
|---|---|---|
inbox |
剛捕獲,未整理 | triage / ready / archived |
triage |
整理中。Human 放入後由 Agent 完善標題/描述/類型,再交回 human 分發 | ready / inbox / archived |
ready |
可被認領(Agent 僅見 assignee=ai) | in_progress / blocked / … |
in_progress |
執行中。AI 認領時用戶不可改內容 | done / blocked / ready / review |
review |
AI 驗收中(assignee=ai)。通過後仍交人最終點 done |
in_progress(人驗收) / ready(退回實作) |
done |
已完成(通常由用戶驗收確認) | archived / ready(重開) |
blocked |
受阻。Agent 審視失敗時會 block 並指派 human,寫入 blocked_reason |
ready / in_progress(人工補齊後再交 AI) |
archived |
歸檔,只讀為主 | inbox / ready |
指派(assignee)
human— 出現在「我的待辦」(含捕獲的靈感、待驗收結果)ai—ready時進執行 queue(items);triage時進整理筐(triage_items)unassigned— 未指派,Agent 不會處理
角色分工
👤 用戶(Owner)
捕獲靈感、編輯描述、拖曳排序、看板改狀態、指派 AI、驗收結果、 留言 / 提問並交回 AI、設置每日取任務時間、導出數據。
🤖 AI Agent
僅操作當前項目;先處理 triage_items(完善描述,refine 交回 human 分發);
再拉取 ready + assignee=ai;
claim → 審視合理性/可行性 →
通過則執行並 complete(交回 human 待驗收);
不可行則 block(assignee=human + 原因)。
🔒 系統規則
AI 認領中鎖定人工編輯;項目名不可重複;刪除項目需輸入完整名稱;狀態轉換受狀態機約束。
如何使用 Agent Token
預設為全域 Agent Token(用戶級):寫入 ~/.sparkloop/env;
實際操作的項目由工作區資料夾名對應(請求帶 ?project=資料夾名)。
不能代替用戶 session 做導出等操作。
- 登錄後進入 設置 → Agent Token(或工作台按鈕)。
- 點「輪換全域 Agent Token」並立即複製(明文只顯示一次),保存到本機
~/.sparkloop/env。 - 請求時帶:
Authorization: Bearer slat_…,並加?project=<項目名或 slug>(CLI 用倉庫資料夾名自動帶)。 -
常用 API:
GET /api/agent/queue—items=ready+ai;triage_items=整理中;回應含schedulePOST /api/agent/items— 在指定項目建立任務POST /api/agent/items/:id/refine— 完善整理中描述,交回 humanPOST /api/agent/items/:id/claim— 認領 ready 工作(不可用於 triage)POST /api/agent/items/:id/progress— 進度備註POST /api/agent/items/:id/complete+result_summary(須已 claim 為 in_progress;交還人工驗收;須匹配 agent_kind)POST /api/agent/items/:id/block+reason→blocked+ human(須已 claim 為 in_progress;須匹配 agent_kind)POST /api/agent/items/:id/release— 僅 in_progress / blocked 可放回 ready + ai(須匹配 agent_kind)
- 本地:倉庫 skill 腳本
skills/sparkloop-workflow/scripts/agent.sh queue|refine|claim|block|complete。
Agent 認領後:合理性 / 可行性審視
依 skill sparkloop-workflow,Agent 在 claim 成功之後、動手改程式之前必須審視任務,不可跳過。
審視什麼
- 合理性 — 是否符合本產品/倉庫;是否與規格或安全策略衝突;是否重複已完成工作。
- 可行性 — 當前工作區與工具是否做得到;驗收標準是否清楚;是否缺秘密、權限、跨倉庫或僅人類能做的步驟。
- 範圍 — 是否對應當前項目資料夾;一輪能否完成,或需先拆分。
結果怎麼走
| 結果 | Agent 動作 | 你會看到 |
|---|---|---|
| 通過 | 可選 progress → 實作 → complete |
「我的待辦 · 待驗收」+ result_summary |
| 不合理 / 不可行 / 需人工 | block + 可執行的 reason |
blocked、assignee=human、「我的待辦」顯示阻塞原因 |
| 誤領 / 暫緩(仍屬 AI) | release |
回到 queue(ready + ai) |
block 的 reason 必須可執行:說明缺什麼、衝突點、請你如何改標題/正文或補資源後再
ready + ai。不要用空原因或單字「blocked」。
寫任務給 AI 時請盡量補:目標、範圍、驗收標準、相關路徑或 GitHub URL,可減少被 block 的機會。 只有一句話時,請用「交給 AI 整理」放進整理中,不要直接丟進執行隊列。
整理中:交給 AI 完善任務描述
捕獲常常只是一句話,範圍不清楚。把單放到 triage + assignee=ai
(工作台「交給 AI 整理」、捕獲指派「AI 整理」、或看板拖到整理中欄)。
Agent 只補標題/正文/類型/標籤/優先級,不實作,然後交回
assignee=human(仍在整理中)讓你分發。
- 人:捕獲 → 交給 AI 整理(可指定 Grok / Claude…)。
- Agent:
queue.triage_items→POST …/refine。 - 人:在「我的待辦」或整理中看完善後的規格 → 「交給 AI 執行」,或自己做。
留言(Comment)與交回 AI
任務詳情視窗有留言區。適用於驗收時有疑問、或需要補充說明再讓 AI 繼續。
AI 正在認領執行中(in_progress + assignee=ai)時不可留言。
三種常見操作
| 操作 | 何時用 | 結果 |
|---|---|---|
| 僅留言 | 自己備註、不改指派 | 寫入 item_comments(kind=note);任務狀態不變 |
| 留言並交回 AI | 驗收有疑問、要 AI 再改一輪 | kind=question;正文加入「留言/提問」段落;清 result_summary;ready + assignee=ai |
| 驗收不通過 → 交回 AI | 明確失敗、需重做 | kind=reject;同上交回,標題段落為「驗收不通過」 |
API(需登錄 session)
GET /api/projects/:id/items/:itemId— 詳情含comments陣列GET /api/projects/:id/items/:itemId/comments— 僅留言列表(時間正序)-
POST /api/projects/:id/items/:itemId/comments{ "body": "…", "kind": "note|question|reject", "return_to_ai": true|false }
交回 AI 後任務會再次出現在 agent queue。Agent 應閱讀正文頂部的留言段落與
comments(若透過 session 診斷)後再實作。
資料表:D1 item_comments(migration 0008_item_comments.sql)。
AI 每日取任務時間如何生效
設置頁的排程是寫在項目上的偏好,不是「到點雲端自動幫你跑 AI」的定時器。
- 你在 設置 → AI 每日取任務時間 保存後,資料寫入 D1(該項目)。
- 不會推送通知給 Agent、手機或本機腳本。
- Agent 下次呼叫
GET /api/agent/queue時,從 JSON 的schedule: { enabled, time, timezone }讀到最新值。 - 若要真·每日自動處理 queue,需自行用 cron / 排程服務在該時段執行 Agent 腳本,或到時在對話裡讓 Agent 拉 queue。
技術細節見倉庫文檔
docs/agent-schedule.md
(英文 SSOT 對應 docs/PRODUCT_SPEC.md §5.3)。
推薦操作路徑
- 工作台「捕獲」靈感 → 進入我的待辦(human)
- 點擊編輯,補詳細描述與驗收標準,必要時改類型為 todo
- 「轉為 AI Todo」或指派
ai並設ready - Agent:queue → 先 refine 整理中 → claim → 審視 → 通過則 complete(待驗收);不通過則 block(阻塞 + 指派你)
-
待驗收:
「驗收通過 → Done」;
有疑問用「留言並交回 AI」;
明確失敗用「驗收不通過 → 交回 AI」。
詳見 留言說明。
若任務被 block:讀
blocked_reason,補齊後再 ready + ai
看板可拖曳改欄位狀態;列表可拖 ⠿ 調整 Agent 執行順序。
列表與詳情顯示任務 ID(點擊可複製),方便指定 Agent 先處理哪一筆。
編輯時可依類型套用詳細描述範本。
工作台頂部「詳細」可展開捕獲表單一次寫完標題+描述;點任務會打開居中詳情視窗,用「編輯 / 交給 AI / 我來做」與「更多操作」集中處理。
任務可指定 AI 種類(Grok / Claude / Codex…);同一台機器上多個 Agent 各自用 --agent= 拉 queue,交回時可選下一任 AI(例如 Claude 做完 → Grok 審核)。
Agent 處理中若發現超出當前任務範圍的問題或建議,應主動建立新任務跟蹤(勿只寫在完成摘要裡)。
更多規格見倉庫
docs/PRODUCT_SPEC.md、skills/sparkloop-workflow/SKILL.md 或
文檔索引。
Webhook 驗章
任務進入 ready 或完成交回(item.done)時,Sparkloop 會
POST JSON 到你登記的 HTTPS 端點。若登記時填了 secret,請求會帶 HMAC 簽章,請用它驗證
payload 完整性。自 v0.2.91 起不再送出明文 X-Sparkloop-Secret。
Secret 在 D1 以 AES-GCM 加密存放(金鑰由 SESSION_SECRET 派生);列表 API 不回傳 secret。
輪換 SESSION_SECRET 會讓既有加密 secret 無法解密,需刪除並重建 webhook。
請求標頭
X-Sparkloop-Event—item.ready/item.done/webhook.testX-Sparkloop-Timestamp— Unix 秒(十進位)X-Sparkloop-Signature—sha256=<hex>,HMAC-SHA256(secret, timestamp + rawBody)
簽章字串是標頭時間戳直接接上原始 JSON body(中間沒有分隔符)。
請用收到的原始 bytes 計算,不要先 pretty-print。建議拒絕時間戳與現在相差超過 5 分鐘的請求以防重放。
生產環境只接受 https:// 端點;本機可用 WEBHOOK_ALLOW_HTTP=true 放行
http://。