Skip to content
产品

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

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

JT
JieGou Team
··2 分钟阅读

JieGou has evolved.

Since this post was published, JieGou has pivoted from an AI automation platform to an AI-powered operations company delivering managed marketing and operations services. Learn about our managed services →

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(遵循速率限制)
llm LLM 调用(使用账户的 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-toolslifecycle-hooksextensibilitywebhooksv8-sandboxenterprise
分享这篇文章

喜欢这篇文章吗?

在您的信箱中获取工作流程技巧、产品更新和自动化指南。

No spam. Unsubscribe anytime.