Skip to content
產品

以你的方式擴展 JieGou:自訂工具、步驟類型和生命週期掛鉤

定義 Webhook 支援的工具、V8 沙箱工作流程步驟類型和生命週期掛鉤,將 JieGou 與你現有的基礎架構整合 — 無需分叉。

JT
JieGou Team
· · 2 分鐘閱讀

JieGou 內建 260+ MCP 整合、9 個 LLM 提供商和視覺化工作流程建構器。但每個組織都有通用平台無法預見的獨特工具、內部 API 和流程。

今天我們推出三個擴展功能,讓你可以將自己的能力帶入 JieGou — 無需分叉程式碼庫或等待我們建構整合。

自訂 Webhook 工具

定義由任何 HTTP 端點支援的工具。你的工具在配方、工作流程和對話式代理中可用 — 就像內建工具一樣。

運作方式

  1. 定義工具:名稱、描述、JSON 輸入 schema 和端點 URL
  2. 設定請求:方法(GET/POST)、自訂標頭(加密)、可選的 Handlebars 請求範本
  3. 映射回應:JSONPath 表達式以提取相關輸出
  4. 設定範圍:指派到特定部門或設為帳戶級

範例:庫存檢查工具

{
  "name": "check_inventory",
  "description": "檢查產品 SKU 的當前庫存水平",
  "inputSchema": {
    "type": "object",
    "properties": {
      "sku": { "type": "string", "description": "產品 SKU" }
    },
    "required": ["sku"]
  },
  "endpoint": {
    "url": "https://api.internal.example.com/inventory/{{sku}}",
    "method": "GET",
    "headers": { "Authorization": "Bearer {{env.INVENTORY_API_KEY}}" },
    "timeoutMs": 10000
  },
  "responseMapping": "$.data.quantity"
}

現在任何配方或工作流程步驟都可以使用 check_inventory 作為工具。LLM 會在內建工具旁看到它,並在相關時呼叫。

安全性

  • 生產環境必須使用 HTTPS
  • 自訂標頭靜態加密(與 BYOK 金鑰相同的 AES-256-GCM)
  • 所有外部請求都通過平台的逾時、重試和速率限制基礎架構
  • 回應大小上限 100KB
  • 工具執行計入帳戶的速率限制

自訂 Webhook 工具在 Team 方案及以上可用。

自訂工作流程步驟類型

對於超越 Webhook 呼叫的邏輯,可以將自訂步驟類型定義為在 V8 隔離環境中執行的 TypeScript 模組 — 完全沙箱化,無法存取檔案系統、網路或主機程序。

沙箱

自訂步驟在具有嚴格約束的 isolated-vm V8 隔離環境中執行:

  • 記憶體限制:每次執行 128MB
  • CPU 時間限制:每個步驟可設定
  • require()import:依賴項是明確注入的
  • 無檔案系統或網路:只有平台提供的 API 可用

注入的 API

自訂步驟可以使用平台能力的子集,在定義時宣告:

API提供的功能
http代理的 HTTP fetch(遵守速率限制)
llmLLM 呼叫(使用帳戶的 BYOK 設定,計入帳單)
firestore_read唯讀 Firestore 存取(範圍限制在帳戶內)

範例:情感聚合步驟

// 自訂步驟:aggregate-sentiment
// 允許的 API:llm

export async function execute(input: { reviews: string[] }, context: any) {
  const results = await Promise.all(
    input.reviews.map(review =>
      context.llm.invoke(`為這則評論的情感從 1-5 評分:"${review}"。只回覆數字。`, { model: 'haiku' })
    )
  );

  const scores = results.map(r => parseInt(r.trim())).filter(n => !isNaN(n));
  const average = scores.reduce((a, b) => a + b, 0) / scores.length;

  return {
    averageSentiment: Math.round(average * 10) / 10,
    totalReviews: scores.length,
    distribution: {
      positive: scores.filter(s => s >= 4).length,
      neutral: scores.filter(s => s === 3).length,
      negative: scores.filter(s => s <= 2).length,
    },
  };
}

在內建的 Monaco 編輯器中編輯程式碼,定義輸入/輸出 schema,並在部署前使用範例資料測試。

自訂步驟類型在 Enterprise 方案可用。

生命週期掛鉤

註冊在工作流程和配方執行事件上觸發的 Webhook 端點。用它們與 Slack、PagerDuty、自訂儀表板或任何 HTTP 服務整合。

支援的事件

事件觸發時機
workflow:start工作流程開始執行
workflow:complete工作流程成功完成
workflow:error工作流程失敗
step:start個別步驟開始
step:complete個別步驟完成
step:error個別步驟失敗
recipe:start配方開始執行
recipe:complete配方完成
approval:requested審批閘門觸發
approval:granted審批通過
approval:rejected審批拒絕

非阻塞 vs. 阻塞

非阻塞掛鉤(預設)是即發即忘的。平台發送 Webhook 後繼續執行,不等待回應。用於通知和日誌。

阻塞掛鉤暫停執行直到 Webhook 回應(10 秒逾時)。回應可以修改執行上下文。用於預檢查或動態設定注入。阻塞掛鉤有熔斷器 — 如果反覆失敗,會自動停用。

範例:工作流程完成時 Slack 通知

{
  "name": "完成時 Slack 通知",
  "events": ["workflow:complete", "workflow:error"],
  "webhookUrl": "https://hooks.slack.com/services/T.../B.../xxx",
  "blocking": false
}

生命週期掛鉤在 Team 方案及以上可用。

它們如何協同運作

三個擴展功能自然組合:

  1. 自訂工具檢查你的內部庫存 API
  2. 自訂步驟在 V8 沙箱中執行專業業務邏輯
  3. 生命週期掛鉤在工作流程完成時通知你的 Slack 頻道

三者都遵守平台現有的安全模型 — RBAC、稽核日誌、速率限制和部門範圍統一適用。

在你的帳戶設定中探索擴展功能

custom-tools lifecycle-hooks extensibility webhooks v8-sandbox enterprise
分享這篇文章

喜歡這篇文章嗎?

在您的信箱中獲取工作流程技巧、產品更新和自動化指南。

No spam. Unsubscribe anytime.