模板與模組市場
把做好的 workflow 發布成範本或模組並依版本迭代;下載時自動解析依賴,裝完即可實例化使用。
市集是控制台裡的「市集」頁面:社群與官方發布的範本與模組都在這裡。你可以把別人發布的項目下載到自己的範本庫或模組庫,也可以把自己做好的工作流發布上去,按版本迭代。範本下載後實例化成自己的工作流;模組下載後可以直接被 sub_workflow 步驟引用。
瀏覽與分類
列表支援按類型(範本 / 模組)、分類、標籤篩選,也可以按名稱、描述、標籤搜尋。頂部有三個檢視:全部、我上傳的、我下載的。每張卡片顯示作者、最新版本號與下載次數;平台自帶的項目帶「官方」標記。
- 分類下拉的選項來自目前已上架項目的實際分類,不是固定清單;分類與標籤會按你的介面語言顯示。
- 市集裡只顯示已上架且對你可見的項目。發布者可以把項目設為公開、僅團隊成員可見或僅指定使用者可見,不可見的項目不會出現在你的列表裡。
- 已下載過的項目在卡片上直接標出「已下載」;有新版本時按鈕變成「更新」。
發布你的範本或模組
發布入口在工作流編輯器裡。只有工作流的擁有者能把它發布到市集——管理員也不能替你發布首個版本。
- 類型:帶模組契約的工作流可以按「模組」發布,否則只能按「範本」發布。想以模組形式發布,先在編輯器裡「提升為模組」並儲存契約。
- 需要填寫標題(必填,最長 200 字元)、簡介(最長 5000 字元)、分類、標籤(最多 20 個)、圖示、版本號與更新說明。
- 版本號要求 semver 格式,如 1.0.0 或 1.0.0-beta。
- 可見性三檔:所有使用者可見、僅我加入的團隊成員可見(填團隊 ID)、僅指定使用者可見(填使用者 ID)。選團隊可見時,你必須是所列每個團隊的成員。
- 價格:目前只支援免費發布(0 USD),付費能力尚未開放。
- 序列化後的工作流定義上限 2MB,超出會被拒絕。
curl -X POST https://braidrun.com/api/marketplace/items \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"sourceWorkflowId": "<workflow-id>",
"type": "TEMPLATE",
"title": "竞品价格日报",
"description": "每天拉取竞品价格并生成对比表",
"category": "数据分析",
"tags": ["监控", "报表"],
"version": "1.0.0",
"changelog": "首个版本",
"visibility": "PUBLIC",
"priceUsdCents": 0
}'上傳後項目進入「待審批」狀態,管理員審批通過才會上架。只有已上架的項目會出現在其他使用者的市集列表裡。被駁回時可以在「我上傳的」檢視裡看到駁回原因。
版本管理
同一個工作流不能重複發布成新項目——編輯器會自動辨識「這個工作流已經發布過」,並把對話框切換成「上傳新版本」。
- 只有項目的原作者可以發布新版本;平台管理員可以代為發布,但項目的作者歸屬不變。系統內建項目只有管理員能發新版本。
- 新版本號必須是合法 semver,且不能低於目前最新版本。同一版本號不能重複上傳。
- 新版本同樣進入待審批;審批期間項目本身保持上架,其他使用者下載到的仍是最新的已上架版本。
- 已下載該項目的使用者會在市集卡片與「我下載的」裡看到更新提示,重新下載即可更新到最新版。
- 項目詳情頁會列出完整的版本歷史與每個版本的更新說明。
安裝:相依自動解析
點「下載」把項目存進你的範本庫或模組庫。如果這個範本或模組裡引用了其他模組(sub_workflow 步驟),下載前平台會先解析完整的相依圖,逐個標出每個相依的狀態:
| 狀態 | 含義 |
|---|---|
| 已下載 | 你的庫裡已有該模組的最新版,跳過 |
| 需更新 | 你下載過舊版本,本次會一併更新到最新版 |
| 可下載 | 市集裡有、你還沒下載,本次會一併下載 |
| 缺失 | 市集裡找不到同名模組 |
| 不可見 | 模組存在,但被限定為你不在其中的團隊或使用者可見 |
確認「連同相依一起下載」後,安裝按相依順序進行:先裝最底層被引用的模組,逐層向上,最後裝你點的項目本身。下載過程中,副本裡 sub_workflow 引用的 workflow_id 會自動改寫成你庫中對應副本的 ID——裝完不需要手動改任何引用,範本可以直接實例化執行,模組可以直接被引用。
# 下载最新版,连同依赖一起(返回本次创建的全部下载记录)
curl -X POST "https://braidrun.com/api/marketplace/items/<item-id>/download?withDependencies=true" \
-H "Authorization: Bearer <token>"
# 下载指定历史版本(只下载该条目本身,不做依赖级联)
curl -X POST "https://braidrun.com/api/marketplace/items/<item-id>/download?version=1.2.0" \
-H "Authorization: Bearer <token>"- 相依解析只在下載最新版時進行;指定歷史版本下載時只下載該項目本身。
- 循環引用(A 引用 B、B 又引用 A)會被辨識並正常處理,不會卡死安裝。
- 下載本身不占用工作流配額,後面的實例化才占。
相依顯示「缺失」或「不可見」時,父項目仍然可以裝進庫裡,但對應的 sub_workflow 步驟無法執行,直到該模組被發布出來或對你可見。下載確認框會明確列出這些缺口。
下載之後:實例化
下載只是把項目放進你的庫,副本預設鎖定為唯讀。真正開始用有兩條路徑:
- 範本:在範本庫裡對下載的項目點「使用」,實例化出一條可編輯的工作流,預設命名為「原名 (從範本建立)」。這一步才計入工作流數量配額。
- 模組:下載後即可被你的工作流以 sub_workflow 步驟按名稱引用;也可以在模組庫裡實例化出一份可編輯副本再改。
實例化出的工作流與市集項目相互獨立:作者發新版本不會改動你的執行個體;在「我下載的」裡解除安裝某個項目,也不影響你已經實例化出來的工作流。
下載的庫副本支援解鎖:解鎖後可以在編輯器裡直接編輯它。但注意,更新下載會用新版本整體替換這份庫副本,你的改動會遺失——想長期修改,實例化出自己的工作流再改。
常用端點
| 端點 | 作用 |
|---|---|
GET /api/marketplace/items | 瀏覽(分頁,支援類型 / 分類 / 標籤 / 搜尋篩選) |
GET /api/marketplace/items/{id} | 項目詳情 + 版本歷史 |
GET /api/marketplace/categories | 目前可見項目的全部分類 |
POST /api/marketplace/items | 發布新項目 |
POST /api/marketplace/items/{id}/versions | 發布新版本 |
GET /api/marketplace/items/{id}/dependencies | 查看相依樹 |
POST /api/marketplace/items/{id}/download | 下載(下載最新版時預設連同相依) |
GET /api/marketplace/my-uploads | 我發布的項目 |
GET /api/marketplace/my-downloads | 我下載的項目(含更新提示) |
POST /api/marketplace/downloads/{itemId}/instantiate | 把已下載項目實例化成可編輯工作流 |
DELETE /api/marketplace/downloads/{itemId} | 解除安裝已下載項目(不影響已實例化的工作流) |