Skip to content
产品

按您的方式扩展 JieGou:自定义工具、步骤类型和生命周期钩子

定义 webhook 支持的工具、V8 沙盒工作流步骤类型和生命周期钩子,将 JieGou 与您现有的基础设施集成——无需 fork。

JT
JieGou Team
· · 2 分钟阅读

JieGou 提供 260+ MCP 集成、9 个 LLM 供应商和可视化工作流构建器。但每个组织都有通用平台无法预见的独特工具、内部 API 和流程。

今天我们推出三个可扩展性功能,让您将自己的能力引入 JieGou——无需 fork 代码库或等待我们构建集成。

自定义 Webhook 工具

定义由任何 HTTP 端点支持的工具。您的工具在配方、工作流和对话 agent 中可用——就像内置工具一样。

工作方式

  1. 定义工具:名称、描述、JSON 输入模式和端点 URL
  2. 配置请求:方法(GET/POST)、自定义头(加密的)、可选的 Handlebars 请求模板
  3. 映射响应:JSONPath 表达式提取相关输出
  4. 限定范围:分配给特定部门或设为账户范围

示例:库存检查工具

{
  "name": "check_inventory",
  "description": "Check current inventory levels for a product SKU",
  "inputSchema": {
    "type": "object",
    "properties": {
      "sku": { "type": "string", "description": "Product 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 访问(限定到账户)

示例:情感聚合步骤

// Custom step: aggregate-sentiment
// Allowed APIs: llm

export async function execute(input: { reviews: string[] }, context: any) {
  const results = await Promise.all(
    input.reviews.map(review =>
      context.llm.invoke(`Rate this review's sentiment from 1-5: "${review}". Reply with just the number.`, { 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 编辑器中编辑代码,定义输入/输出模式,并在部署前使用示例数据测试。

自定义步骤类型在企业计划上可用。

生命周期钩子

注册在工作流和配方执行事件上触发的 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 notify on completion",
  "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.