返回部落格
2026 年 4 月 3 日工程· 7 分鐘閱讀

48 小時建構工作流程執行器

OSOP 團隊

兩天前,OSOP 只能驗證工作流程。 你可以寫一個 .osop 檔案、對照 JSON Schema 檢查、渲染圖表 — 但你不能執行它。執行器只是一個回傳模擬資料的佔位符。4 月 1 日我們決定改變這一切。48 小時後,osop run 可以執行真正的工作流程 — 具備條件邊、備援路徑、安全閘門、成本控制,以及會呼叫真實 LLM 的 Agent 節點。

這是那次衝刺的故事 — 我們建了什麼、為什麼需要每一部分,以及我們從執行 AI Agent 工作流程中學到了什麼。

我們建了什麼

執行器需要處理 OSOP 規格承諾的一切。這意味著 48 小時內要完成六大功能:

  • WorkflowContext節點間資料流。每個節點從上游節點讀取輸入,為下游節點寫入輸出。一個共享的 context 物件在整個執行過程中傳遞狀態。
  • 條件邊邊可以有引用節點輸出的 when: 表達式。執行器在執行時期評估這些表達式來決定走哪條路徑。
  • 備援邊如果節點失敗,執行器走備援邊而非崩潰。這實現了重試模式和優雅降級。
  • 安全閘門(--allow-exec)執行 shell 指令的 CLI 節點需要明確啟用。沒有 --allow-exec,執行器拒絕執行。不會在生產環境意外 rm -rf。
  • 成本控制(--max-cost)呼叫 LLM 的 Agent 節點會累積成本。執行器追蹤支出,若總額超過 --max-cost 限制就中止。
  • Agent 節點type: agent 的節點會透過可插拔的客戶端實際呼叫 LLM。執行器傳遞節點的提示、收集回應,並在執行日誌中記錄 Token 使用量。

工作流程:條件邊與安全閘門

這是一個使用條件邊和安全閘門的真實工作流程。安全掃描節點產出一個判定,部署節點只在判定不是 danger 時才執行:

deploy-with-gates.osop.yaml
Build Artifactscli
sequentialRun Test Suite
Run Test Suitecicd
sequentialAI Security Review
AI Security Reviewagent
conditionalDeploy to Production
Deploy to Productioncli
fallbackRollback
Rollbackcli

執行方式

osop run 指令遍歷工作流程圖、執行每個節點、評估邊的條件,並產出一個包含完整執行細節的 .osoplog.yaml 檔案:

terminal
$ osop run deploy-with-gates.osop.yaml \
    --allow-exec \
    --max-cost 2.00 \
    --env KUBE_CONTEXT=staging

[executor] Walking graph: build -> test -> security_scan -> deploy
[build]    npm run build                        OK  4.2s
[test]     36 passed, 0 failed                  OK  12.1s
[security] AI review (gpt-4o, $0.03)            OK  3.8s
[security] Verdict: safe (score: 12/100)
[deploy]   Approval gate: --allow-exec granted
[deploy]   kubectl apply -f k8s/               OK  6.3s

Workflow COMPLETED in 26.4s
Cost: $0.03 (limit: $2.00)
Log written: deploy-with-gates.osoplog.yaml

條件評估器

最困難的設計決策是條件評估器。邊的條件如 security_scan.output.verdict != 'danger' 需要在執行時期評估。顯而易見的方法 — eval() — 是安全災難。我們改為建構了一個簡單的表達式解析器。

評估器支援點記法屬性存取、字串和數字字面量、比較運算子(==、!=、>、<、>=、<=)和布林運算子(and、or、not)。它根據 WorkflowContext 解析引用,其中保存了所有節點輸出。沒有 eval()、沒有任意程式碼執行、沒有注入攻擊。整個評估器不到 120 行 Python。

架構

三個新模組驅動執行器:

  • execute.py圖遍歷器和節點分發器。解析執行順序、評估邊條件、執行每個節點、處理備援。
  • llm_client.pyAgent 節點的可插拔 LLM 客戶端。支援 OpenAI 相容 API,具備模型選擇、Token 追蹤和成本計算。
  • osoplog.py執行日誌寫入器。將每個節點的輸入、輸出、時間、狀態和 AI 中繼資料擷取到符合標準的 .osoplog.yaml 中。

測試

我們撰寫了 36 個執行器專用測試,涵蓋:

  • 基本循序執行和節點間資料流
  • 使用各種運算子和資料類型的條件邊評估
  • 節點失敗時觸發備援邊
  • 安全閘門強制執行和成本限制強制執行

下一步

執行器已在 osop v0.3.0 中上線。現在有 9 個 CLI 指令 — validate、run、render、test、report、optimize、import、export 和 risk-assess — 整個 CLI 共有 196 個測試通過。下一步:平行節點執行、串流輸出和 webhook 觸發。規格已支援所有這些;執行器只需趕上進度。


試試看: pip install osop && osop run your-workflow.osop.yaml --allow-exec