☰
n8n智能体工作流:打通Bubble与Chargebee的订阅自动化实践
2026/10/9 22:37:46 网站建设 项目流程

最近在做一个SaaS产品的智能体支持系统,客户前端用的是Bubble搭的,计费走Chargebee,中间想加一个能听懂人话、自己查订阅、自己处理续费的AI层。绕了一圈,最后还是落到了n8n智能体工作流上,把Bubble节点和Chargebee节点串成了一套完整闭环。今天把这套东西从头到尾拆开讲讲,包括为什么这么选型、节点怎么配、数据怎么映射、哪些坑必须提前避开。

如果你正好在做类似的事——比如给Bubble应用接入AI能力,或者想让智能体能直接操作订阅计费数据,这篇文章应该能帮你少走不少弯路。

1. 先把整个事情想清楚:为什么用n8n搭这个智能体

1.1 一个典型的需求场景

先还原一下实际业务场景。我们做的是一个面向小团队的订阅制工具,前端页面全部在Bubble上搭建,用户的注册、登录、付费信息管理都依赖Bubble的数据库和后端逻辑。计费这一层用的是Chargebee,负责订阅方案、发票、支付对账、续费提醒这些脏活累活。

问题是:用户遇到问题时会直接找客服,或者在我们的帮助中心里留下消息。传统做法是客服手动查Bubble后台看用户状态,再切到Chargebee后台查订阅情况,很不方便。我们想要的效果是——用户在对话框里说一句“我想把套餐从基础版升级到专业版”,智能体自动完成订阅查询、变更预估、调用Chargebee生成新的订阅草稿,最后把结果反馈给用户,必要时再转人工。

这个需求拆开来看,本质上是三件事:让AI理解用户意图、让AI有权限读写业务数据、让AI能安全地触发计费操作。n8n正好把这三点都打包好了,这也是我选它的核心理由。

1.2 方案选型:为什么是n8n而不是硬编码

当时摆在面前的有三条路:用Python直接写一套Agent + API对接;用某个低代码平台自带的AI能力;用n8n这类工作流自动化平台来做编排。

硬编码的问题很明显:Bubble的API、Chargebee的API、LLM调用、会话管理、错误重试,全都要自己写,上线周期至少以周为单位。对于一个业务逻辑经常变动的系统来说,每改一个字段就要重新部署一次,研发资源被拖死。

低代码平台自带的AI能力,比如Bubble内部的一些AI插件,做简单对话可以,但遇到“查Chargebee订阅并执行变更”这种跨系统操作,基本就抓瞎了。因为这类操作需要多个API按顺序调用,还要根据中间结果做分支判断,这恰恰是工作流引擎的强项。

n8n的优势不只是在可视化编排上,它的Agent节点本身就是一个完整的智能体运行框架,可以定义工具列表、绑定LLM、设置系统提示词,让模型自动决定调用哪个节点。这样我的做法就变成了:把Bubble节点当作智能体的“读写字手”,把Chargebee节点当作智能体的“计费操作手”,Agent节点负责调度,整个架构很干净。

从我实际测试下来的结果看,n8n的自托管模式对业务数据的安全感也更好。关键的操作日志都在自己手里,出了问题能快速排查,这对涉及支付数据的系统来说很重要。

1.3 整体架构与数据流向

这套系统跑起来之后,数据流向是这样的:

用户在前端Bubble页面发起对话,消息通过Webhook发送到n8n工作流。工作流先经过Agent节点,LLM根据用户的表述拆解意图,提取关键参数。需要查询用户信息时,Agent调用Bubble节点读取用户资料和当前产品权限;涉及订阅相关操作时,调用Chargebee节点查询订阅状态或创建变更请求。执行结果原路返回给LLM,最后LLM组织成自然语言回复给用户。

这里有一个设计要点要强调一下:Bubble和Chargebee之间是有隐性关联的。用户的唯一标识在Bubble数据库里,但Chargebee里用的是customer_id。所以工作流里第一步永远是“先通过Bubble拿到用户的Chargebee customer_id”,第二步才谈得上操作订阅。如果这两步顺序搞反了,后面全乱套。后面我会详细说这个映射怎么做。

2. Bubble节点开发:给智能体装上一只能读写数据的“手”

2.1 Bubble节点到底能做什么

Bubble本身是个可视化开发平台,底层提供了一套REST API,叫Bubble API,可以对数据库中的数据类型(Data Type)执行增删改查。n8n里接入Bubble有两种方式:一种是直接用n8n官方提供的Bubble节点,另一种是用HTTP Request节点调用Bubble的API Endpoint。

官方Bubble节点在n8n的节点面板里搜索"Bubble"就能看到,它的操作类型主要是Record相关,支持Create、Update、Delete、Get、Get All几个动作,对应到Bubble数据库里就是对某个数据表进行记录级别的操作。这个节点适合处理标准化读写,比如根据User表的某条记录查询邮箱、更新用户的套餐标记字段这种。

但要做一些复杂查询,比如多条件筛选、按字段范围过滤、跨表关联查询,官方节点的表达能力就很吃力了。这种情况下我会直接用HTTP Request节点请求Bubble的Data API,把请求体写成Bubble的约束格式。两种方式各有适用场景,我一般建议在智能体工具里,常规读写用官方节点,复杂查询用HTTP Request节点。

有意思的是,n8n的Bubble节点底层其实也是调Bubble API,只不过封装了字段映射。所以如果你在官方节点里遇到某个字段不知道该怎么填,切到HTTP Request模式看一眼真实的JSON结构,通常会立刻明白。

2.2 配置Bubble节点前的准备工作

这部分工作如果不做,后面百分之百要返工。在n8n里配置Bubble节点之前,我建议先把Bubble侧的API文档打开,在后台确认三样东西。

第一,数据库表名和字段类型。Bubble API的URL路径里,表名的写法非常讲究,比如你建的数据类型叫User,实际API调用时可能对应的是你的应用名加特定前缀。Bubble在后台的数据类型页面会直接显示API Endpoint的完整路径,把这个路径复制下来,后面配节点时直接粘贴,不要自己拼,因为拼错一个字母就是404。

第二,API Key的权限范围。Bubble的API Key可以设置数据权限,是可读可写还是只读,能访问哪些数据类型。给智能体用的Key我建议按最小权限来配,只开放智能体确实需要用到的数据表。别偷懒开全表读写,因为智能体出现幻觉时可能会做出超出预期的操作。

第三,应用的部署状态。Bubble分开发版和生产版,API Key也分环境。如果你在开发测试环境配的是Test API Key,工作流上线后指向的却是生产版Bubble,就会出现“测试环境能通、生产环境一直报错”的诡异问题。直接把生产环境需要的API Key提前准备好。

我之前就是在这上面吃过亏,花了大半天排查为什么同一套工作流换个环境就挂了,最后发现是API Key的Environment字段选错了。

2.3 实际配置步骤详解

下面按我实际配置的顺序来,每一步都过关了再进下一步。

第一步,先在Bubble后台创建一个专用API Key,权限选择“Can perform API calls”并限制到智能体需要的数据表。把Key复制出来,后面要用。

第二步,回到n8n,新建Credentials,类型搜索Bubble。这里需要填的有API URL(或者叫App Name参数)、API Key。API URL一般填Bubble应用的后台域名,比如huangjie.bubbleapps.io这种格式。各个版本的n8n对应的字段名称可能略有差异,但核心就是这两个信息。

第三步,拖一个Bubble节点到画布上,选择Credentials,然后配置Operation。以查询用户为例,Operation选Get All,因为Get通常要求传记录ID,而智能体第一步拿到的往往不是Bubble记录的ID,而是用户的邮箱,需要按条件过滤。

在过滤条件里,把字段设为邮箱,运算类型选Equal to,值那里不要填死,要填一个表达式引用上一步传入的参数。n8n里表达式用{{ }}包裹,比如 {{ $json.email }}。这样智能体说什么邮箱,Bubble节点就查什么邮箱,工作流才真正“活”起来。

第四步,把节点输出和后续步骤串起来。Bubble节点返回的记录是一个数组,如果你只需要第一条记录,后面要接一个“提取字段”之类的处理节点,从数组里取出指定字段值。这个细节很关键,不然Agent拿到的是一个数组而不是明确的用户ID,在下一次工具调用时LLM可能不知道怎么处理。

整个过程里最容易犯的错误是直接在值输入框里敲了“email@example.com”这种假数据做测试,然后又忘记改成表达式。测试通过不代表生产能用,因为测试时走的是写死的值,生产时是动态传入的值,两者路径不同。我的习惯是:值输入框里永远用表达式,静态测试可以在代码节点里故意传一个固定值。

2.4 智能体调用Bubble节点时怎么设计数据映射

智能体和你手动跑工作流有一个本质区别:你手动跑的时候知道每个字段填什么,但LLM是在“黑盒”里做决定的。所以Bubble节点做工具的时候,数据映射设计直接决定了AI好不好用。

我的做法是在Agent节点的Tool配置里,给Bubble工具写清晰的功能描述。比如“根据用户邮箱查询Bubble数据库中用户记录,返回用户ID、用户姓名、当前套餐、订阅到期时间”。这里的描述不是给用户看的,而是给LLM看的。LLM读了这个描述之后,才知道当用户说“帮我查一下我的账户信息”时应该调用这个工具。

同时,所有字段名尽量和业务常识保持一致。Bubble里如果字段叫subscription_type,智能体可能能理解;如果字段名是st_type_x1这种内部缩写,LLM就很容易蒙圈。如果项目里已经用了这种缩写字段,建议在工具描述里显式说明字段含义。

我在设计数据映射时还做了一个额外处理:Bubble节点输出的数据里会有很多业务字段,但我们并不希望全部暴露给LLM,因为有些内部字段(比如权限标记、风控标签)不应该被模型读取。所以中间加了一层过滤,只保留Agent真正需要的字段再返回给LLM。这一步不但能减少token消耗,更重要的是避免模型“看到不说”但实际影响了决策方向。

3. Chargebee节点开发:把订阅计费变成AI可调用的服务

3.1 Chargebee的接入思路

Chargebee在n8n里同样有官方节点,搜索Chargebee就能看到。它的功能覆盖订阅管理的主链路:创建订阅、查询订阅、更新订阅、取消订阅、创建订单、管理客户等。对于智能体使用场景,最常用的是查询订阅和变更订阅方案这两个操作。

这里要先说一个架构层面的决策:Chargebee节点要尽量以“查询优先”接入,变更操作要加人工确认环节。原因很简单——计费操作是不可逆的,一旦执行了升级或者降级,用户的账单、发票、配额都可能发生变化。AI在意图理解上即便准确率做到95%,剩下5%的错误在计费场景里就是实打实的客诉和资损。所以我的设计策略是:查询类操作直接让AI执行,变更类操作AI生成执行建议后走确认流程。

这个设计不复杂,但能避免很多麻烦。后面我详细说怎么在n8n里实现这个“建议-确认-执行”模式。

3.2 API凭据与Webhook配置

配置Chargebee节点之前,先到Chargebee后台准备API Key。Chargebee的API Key分两种,一种是在“API Keys”页面生成的,用来调用REST API;另一种是Webhook签名密钥(Webhook Secret),用来验证Chargebee发给你的事件回调是真是假。

API Key保存的时候,要注意n8n里Chargebee节点的Credential配置,需要填Site名和API Key。Site名通常是你Chargebee站点的子域名,比如你的站点是https://demo.chargebee.com,Site就填demo。API Key填那把rest api key。

Webhook配置则用来做主动事件触发。如果智能体不只是在用户对话时被动查询,还需要在“订阅即将到期”时主动发提醒,那就要在Chargebee后台配置Webhook指向n8n的工作流URL。Chargebee支持的事件类型很多,常见的有subscription_created、subscription_changed、subscription_cancelled、invoice_generated等。

需要特别注意的是,Webhook URL一旦配置,任何能构造合法签名的人都可能往你的工作流里塞假事件。n8n的Webhook节点需要开启“Add Header”或“Verify”选项来校验Chargebee的签名头。Chargebee官方对每个Webhook请求都会带一个签名,n8n里可以校验这个值是否是Chargebee用你的Webhook Secret生成的。这个校验一定不能省,我见过有人没开校验,结果被恶意刷了一大堆假订阅创建事件,导致智能体疯狂发送提醒消息。

3.3 核心操作节点配置实例

先从查询订阅说起。场景是用户问“我现在的订阅是什么套餐,什么时候到期”,智能体需要调用Chargebee节点查到当前激活订阅并返回套餐名称和到期时间。

配置Chargebee节点,Operation选Get Subscription,关键参数是subscription_id。这里又涉及前面提到的数据映射:subscription_id从哪里来?两个办法:一是从Bubble节点拿用户记录里的chargebee_subscription_id字段,二是通过Chargebee的List Subscriptions按客户邮箱过滤。我一般用第一种,因为Bubble里已经存了关联ID,省一次API调用。

拿到subscription_id之后,节点返回的响应里有很多字段,包括subscription中的plan_id、current_term_end等。这些字段名是Chargebee的API规范,n8n节点输出基本就是标准响应结构,可以直接让LLM读取。

再来说订阅变更。我们场景里最典型的是从基础版升级到专业版。这个操作在Chargebee里本质上是Update Subscription,传入subscription_id和新的plan_id,Chargebee会自动计算差价和按比例分配的账单。

但在智能体工作流里,我不会直接让Agent执行Update Subscription,而是设计成这样:Agent调用Chargebee的“预览变更”操作,拿到新价格、立即应付金额、下一个账单周期金额,把这些信息生成一条待确认消息发给用户。用户明确回复“确认升级”之后,工作流再走一个分支,把预览时的参数原样提交给真正的Update操作。

为什么拆两步?因为Changebee的更新操作执行后立即生效,而且会产生对应的发票和支付动作。让用户确认后再触发,一来用户体验上更清楚,二来避免AI理解偏差导致的错误计费。这一步拆分的处理值得为,生产环境的稳定性就是这么一点一点垒起来的。

3.4 智能体操作Chargebee时的安全性设计

提到安全性,这里要展开说几个我踩过坑之后总结的要点。

第一,API Key的权限分离。Chargebee后台可以创建多个API Key,不同Key可以关联不同权限。智能体用的Key和后台运维用的Key一定要分开。运维Key是全能型,智能体Key只开放读操作和特定写操作。比如只允许update subscription,不允许delete或者cancel。万一Key泄漏,损失范围是可控的。

第二,敏感数据过滤。Chargebee的API响应里包含用户的支付方式信息、银行信息、账单地址等。这些数据如果全部原样传给LLM,一方面不符合数据最小化原则,另一方面,也容易让模型在上下文里保留太多敏感字段。我的处理是:在n8n里加一步字段筛选,只保留套餐名、价格、到期时间、状态这几个必要字段,其他都丢掉。

第三,操作留痕。每个对Chargebee的写操作,我都会在工作流后面加一个日志节点,把操作时间、操作类型、目标订阅ID、操作前后的状态变化写进数据库或者日志系统。这个看似额外的工作,在实际排障时帮了大忙。特别是确认升级之后用户说“我没让AI升级”,日志一翻就能说清楚。

第四,让LLM保持只读心态。这在Agent系统提示词里要写明白:“你只能查询订阅信息,不能直接执行任何涉及费用变更的操作。需要变更时必须先向用户确认,再由工作流内部处理后续步骤。”提示词的约束不是绝对的安全屏障,但可以让模型减少误操作的概率,再加上工作流层面的权限控制,才是双保险。

4. 组装一条可用的智能体工作流

4.1 用Agent节点把Bubble和Chargebee变成工具

n8n的智能体核心是Agent节点。你在画布上拖一个Agent节点,它会要求你配置LLM、Memory和Tools。Tools就是上面配置的Bubble节点和Chargebee节点。

把节点当作Tool加入Agent时,n8n的配置方式和纯手工工作流不一样。不是简单的串联,而是给每个节点起一个工具名,写清楚它的功能描述和输入参数。比如Bubble节点作为工具的描述写成“查询用户详细信息,输入参数:用户邮箱,输出用户ID、姓名、套餐字段”,Chargebee节点作为工具的描述写成“查询订阅信息及订阅变更预览,输入参数:subscription_id,输出套餐名、状态、到期时间、变更价格”。

这里名字建议用英文或拼音后缀,比如bubble_get_user_info和chargebee_get_subscription,免得模型在处理中文工具名时出现编码上的意外情况。描述用中文写完全没问题,n8n的Agent节点会把描述一起传给LLM。

工作流入口部分也要精心设计。用户在Bubble页面上发的消息,通常是POST到n8n的一个Webhook URL。Webhook节点接收到消息之后,把消息内容传递给Agent节点。这里可以顺带传递用户的邮箱,用作后续Bubble查询的身份标识。如果Webhook传来的不是邮箱而是用户名,就在前面加一步转换逻辑,从消息里提取出邮箱,或者由LLM在对话中询问用户。

4.2 工作流全流程拆解

一条完整的“用户想升级套餐”流程,在n8n画布上会是这样:

第一步,Webhook接收用户消息,格式类似{“message”: “我想升级到专业版”, “email”: “user@example.com”}。

第二步,Agent节点收到消息,LLM判断用户的真实意图是订阅变更。Agent根据工具列表决定调用Bubble节点,通过email查询用户记录,拿到chargebee_customer_id和chargebee_subscription_id。

第三步,Agent继续调用Chargebee节点,查询当前订阅详情,得到当前套餐和到期时间。随后Agent调用预览变更操作,传入目标套餐专业版,获取新的价格和立即应付金额。

这里有一个看似不起眼但很关键的设计:Agent在调用Chargebee预览时,目标套餐是哪里来的?两种做法,一是让LLM从用户消息“升级到专业版”里提取套餐名,二是提前把套餐列表和标识符写进工具描述里。我强烈建议第二种,因为Chargebee里的plan_id可能叫pro_monthly,用户说的可能是“专业版”,LLM能从描述里找到对应关系最好,不能让LLM隔着两层业务黑箱去猜。

第四步,Agent把预览结果整理成一段自然语言回复给用户:“升级到专业版后,将从下一个账单周期开始生效,本次立即支付XX元。”然后等待用户确认。

第五步,用户确认后,同一个工作流的不同分支继续处理。这里可以用n8n的If节点判断用户回复是否包含确认词,确认则执行Chargebee订阅更新操作,不确认则礼貌结束对话。

第六步,操作完成后,调用Bubble节点回写用户的套餐字段,让前端页面显示最新状态。这一步虽然可以在Chargebee里完成,但Bubble前端经常从自己的数据库读状态,不同步的话页面信息就滞后了。回写之后整个闭环才算真正完整。

4.3 提示词与意图识别设计

Agent节点的系统提示词是这部分工作流里最费心思的地方。我一开始用的提示词很简单:“你是我们的客服助手,根据用户需求调用工具帮助你完成工作。”结果上线后发现模型经常在不该调用工具的时候调用工具,或者好几次给用户返回了工具原始JSON而不是正常人话。

后来我把提示词重写,加入了几个明确约束:只在你需要具体数据时才调用工具;工具返回的数据不要直接展示原始结构,必须转换成自然语言回复;如果判断用户意图不明确,先通过对话确认;涉及费用变更时必须询问用户确认。

这套提示词加上工具描述的配合,整体效果好了很多。如果你想知道怎么一步步调试提示词,我建议先跑一批典型用户语句,把每个样本的Agent轨迹日志翻出来看,观察LLM在哪个环节理解偏了,然后针对性修正提示词或工具描述。AI行为的调试其实跟调参一样,是个反复迭代的过程。

4.4 错误处理与人工兜底

再稳的自动化也要留人工兜底的口子。我在工作流的设计里,专门留了一个“转人工”分支。当LLM连续尝试多次工具调用失败,或者检测到用户的情绪强烈不满,Agent会回复“我帮你转接人工客服”,同时把对话上下文和错误日志通过消息推送发给值班同事。

在n8n里怎么判断‘多次调用失败’?Agent节点本身不会暴露这种次数,我的做法是用Error Trigger节点监听工作流中其他节点的报错。比如Chargebee返回401或者Bubble连接超时,Error Trigger接到这个事件后,触发一个单独的人工兜底工作流,把报错信息和用户会话内容整理发到企业微信或Slack。

这种方法的核心思想就是:不要让用户面对冰冷的技术错误。错误可以发生在后端,但用户侧永远得到的是一个有人情味的回复和一个可预期的下一步动作。这套兜底流程上线之后,客服团队反映处理效率高了很多,因为智能体已经把上下文整理好了,人工不用再问一遍“你刚才想做什么”。

5. 常见问题与排查技巧实录

5.1 Bubble节点相关的坑

最常见的问题是连接成功但Get All查不到数据。原因一般是过滤条件里字段类型不匹配。Bubble的数据库字段是有类型的,文本类型和数字类型的过滤写法不一样,如果你拿数字字段去跑文本匹配,结果必然为空。排查方法是在Bubble后台手动执行一次相同的查询,把返回结果和n8n里的输出对比,很容易看出是数据问题还是配置问题。

另一个高频问题是时区不一致导致的时间字段混乱。Bubble存储时间字段用的是UTC,n8n和LLM处理时如果直接输出,用户看到的时间可能和本地时间差好几个小时。我的处理是在返回给LLM之前,用节点把时间字段转成指定时区格式,并且让LLM直接读格式化的时间字符串而不是原始时间戳。

关于官方Bubble节点和HTTP Request节点的选择,也值得多说一句。如果官方Bubble节点提供的动作覆盖不了你的需求,切HTTP Request的时候,URL格式一定要确认是Production还是Test环境,并且用Bearer Token头带上API Key。很多人在这一步会把Key放在Query参数里,Bubble也支持,但放Header更规范,也避免日志里暴露密钥。

5.2 Chargebee节点相关的坑

Chargebee节点配置后最常遇到的问题就是401或403报错。401通常是API Key错误或者Site名填错,403则需要检查该API Key的权限范围是否包含你调用的模块。把Chargebee官方API文档里对应端点的截图和你的配置对照一下,大多数时候能发现问题出在某个小细节上。

另一个坑是订阅状态判断。Chargebee里订阅状态不只是active和cancelled,还有non_renewing、in_trial、paused等。如果你的工作流只判断“非active就算异常”,那in_trial的订阅用户会被误判。建议在LLM的工具描述里写明所有可能的状态值及其含义,或者在节点后加一个映射节点,把状态翻译成业务通俗说法。

Webhook收不到事件也是高频问题。排查思路按顺序来:先确认Chargebee后台事件是否发送成功,再确认n8n的Webhook URL是否公网可访问,最后确认签名校验是否配置正确。很多人卡在第二步,因为本机调试的n8n地址是localhost,Chargebee怎么可能访问得到。开发环境建议用内网穿透工具把Webhook地址暴露出来,但生产环境一定要放到正式域名后面。

5.3 Agent调用工具时的典型问题

智能体开发里最多的奇怪问题,其实是模型“不知道怎么用某个工具”。具体表现是LLM明明有了Bubble节点,但就是不调用,反而编了一段“我已经帮你查到信息了”的话。原因是工具描述写得不够明确,或者对话历史里没有一个触发调用工具的信号。

解决方法是把工具描述的触发条件写得更直白:“当用户提供邮箱地址并提出查看账户信息需求时,必须调用此工具获取数据。”这样LLM在读工具列表时,相当于得到了一张清晰的对照表,哪个场景用哪个工具,一清二楚。

还有一种场景是模型连续调用同一个工具多次,造成冗余请求。比如用户说“查一下我的信息”,LLM却调用了三次Bubble查询。这通常是因为工具返回内容不够完整,模型觉得第一次结果里缺少某些字段,只好再试一次。优化方式是把Bubble节点返回的字段尽量全一些,或者在工作流里预先提取好常用信息,不要再让模型自己去翻找。

5.4 测试与生产环境的配置建议

最后这一点,是想给所有准备把智能体工作流放上生产环境的朋友提个醒。n8n的工作流默认是不区分环境的,但你可以用环境变量或者Credentials管理来区分测试和生产配置。我习惯的做法是:同一个工作流模板,分别配置两套Credentials,在测试流程里用Bubble测试Key和Chargebee沙箱站点,验证通过后再把流程复刻到生产环境,切换成正式Key。

Chargebee有沙箱模式,大多数情况下测试和生产的API结构一致,这是一个很大的优势。但Bubble要注意开发版和生产版的数据是隔离的,测试环境里创建的数据在生产环境不会出现,所以联调时要特别留意你查到的“用户”到底存在于哪个环境。

日志也是生产环境的一个大头。n8n的Execute Log默认保留一段时间,但如果你的智能体服务量比较大,建议把执行日志同步到独立的外部存储。万一用户申诉说某个操作不是他发起的,日志就是唯一的证据来源。这个习惯帮我解决过不少麻烦。

整体看下来,n8n智能体开发的核心其实不是写多少代码,而是把外部系统的数据模型、业务动作和LLM的决策能力正确地拼接在一起。Bubble节点负责让AI看得到业务数据,Chargebee节点负责让AI碰得到订阅计费,Agent节点负责让AI在正确的时机做正确的动作。这个组合目前在我维护的系统里跑得很稳,前端迭代也快,后端不僵化,后续如果想加新的工具节点,也只是在Agent里多注册一个工具的事情。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询