内容提要
本文介绍将Dify工作流迁移至Amazon Bedrock AgentCore Runtime的实践。核心发现是Dify工作流引擎已解耦为独立Python库graphon,迁移只需安装该库并适配少数节点。通过自定义node factory,一条20步KYB尽调流程无需修改业务逻辑即可在AgentCore上运行,5条分支路径全部验证通过,且DSL可双向闭环。文章还讨论了版本风险和生产化前需补齐的边界。
延伸解读
迁移的本质:从平台搬迁到库依赖
文章指出,新版 Dify 已将工作流执行引擎解耦为独立的 Python 库 graphon,因此迁移一条 workflow 不再需要部署整个 Dify 平台,只需安装 graphon 并适配少数节点类型。这一发现显著降低了迁移成本,使迁移从“重平台搬迁”变为“轻量库依赖”。但需注意,graphon 并非 Dify 官方文档承诺的独立运行方案,而是基于源码与包结构的工程发现,使用前应自行核对版本与接口。
自定义节点工厂:适配收敛的关键
迁移的核心是继承 SlimDslNodeFactory 并覆盖 LLM、knowledge-retrieval、CODE 三类节点。LLM 节点通过自定义 BedrockLLM 直连 Bedrock,绕开 Dify 插件 daemon;知识库节点接入 S3 Vectors 实现向量检索;CODE 节点改用进程内执行器。其余节点(START、IF_ELSE 等)完全复用 graphon 原生实现。这种设计使所有适配逻辑收敛在一个 build_engine() 函数内,业务 DSL 无需改动,体现了良好的封装性。
验证与边界:可行但有前提
PoC 用一条 20 步 KYB 流程验证了迁移可行性,5 条分支路径在 AgentCore 上全部走通,且 DSL 可双向闭环。但文章明确列出生产化前需补齐的边界:graphon 版本迭代快(0.4.0 到 0.6.0),需锁定版本;知识库检索仅实现 single + 语义检索,未支持 rerank;CODE 节点用进程内执行器替代沙箱,存在安全风险;长流程需关注 Runtime 超时。这些限制意味着该方案并非开箱即用,需谨慎评估。
Q&A
如何将Dify工作流迁移到Amazon Bedrock AgentCore Runtime?
迁移的关键在于Dify的工作流引擎已解耦为独立的Python库graphon。只需安装graphon库,并适配少数几类节点(如LLM、知识库、CODE),通过自定义node factory即可将Dify导出的DSL部署到AgentCore Runtime上,业务逻辑无需修改。
Dify工作流迁移到AgentCore需要修改业务逻辑吗?
不需要。在PoC中,一条20步的KYB尽调流程,包含调模型、调代码、调知识库和多路判断,业务逻辑一行未改,仅通过自定义node factory适配了LLM、知识库和CODE节点,即可在AgentCore上运行。
graphon是什么?它在Dify工作流迁移中起什么作用?
graphon是Dify背后的组织langgenius维护的一个Python图执行引擎,用于agentic AI工作流。新版Dify将工作流执行引擎解耦为graphon库,使得迁移工作流只需安装该库并导入DSL,无需搬整个Dify平台。graphon支持用graphon.dsl.loads()导入Dify DSL,并提供了可调度的图引擎。
迁移Dify工作流到AgentCore时,哪些节点需要特殊处理?
需要特殊处理的节点包括:LLM节点(默认需要外部daemon,可自定义为直连Bedrock)、知识库节点(slim工厂不支持,需自定义接S3 Vectors)、CODE节点(默认依赖外部沙箱,可替换为进程内执行器)。其他如START、END、IF_ELSE、TEMPLATE等纯逻辑节点无需改动。
Dify工作流迁移到AgentCore后,DSL能否导回Dify画布?
可以。同一份DSL既能导回Dify画布渲染,也能在AgentCore上运行,形成双向闭环。因为Dify导入服务和AgentCore路线使用同一个graphon引擎,Dify导出格式是教学版DSL的超集,多余的UI字段会被graphon忽略。
将Dify工作流迁移到AgentCore有哪些风险和限制?
主要风险包括:graphon仍处于快速演进期,版本跳动快,需锁定版本;这不是Dify官方迁移方案,接口可能变化;slim工厂原生只支持约8种节点,其他节点需自行扩展;生产化前需补齐安全边界、超时处理、知识库检索增强等。
Dify工作流迁移到AgentCore的验证结果如何?
在PoC中,一条20步KYB尽调流程通过自定义node factory部署到AgentCore Runtime,云端5条分支路径(低风险通过、中风险转人工、高风险拒绝、信息不一致打回、注册号异常打回)全部验证通过,本地和云端结果一致。
Dify工作流迁移到AgentCore的部署步骤是什么?
部署步骤包括:1. 安装graphon库并准备DSL;2. 编写自定义node factory适配LLM、知识库、CODE节点;3. 使用BedrockAgentCoreApp创建入口函数,调用build_engine();4. 使用agentcore CLI配置(指定入口、区域、容器部署)、部署(创建ECR和Runtime)和调用(invoke)。