人工智能AI AgentAgent 编排RPA后端前端企业应用【免费下载链接】astron-agentEnterprise-grade, commercial-friendly agentic workflow platform for building next-generation SuperAgents.项目地址https://gitcode.com/gh_mirrors/as/astron-agent点击查看免费下载本文围绕仓库自带的社区示例 examples/ai-radio-podcast 展开一个只需输入主题或微信公众号链接就能自动产出「结构化播客脚本 真人感语音 封面图」的多节点工作流。读完本文你将掌握该工作流的 DSL 结构、每个节点的配置要点、如何在 Astron Agent 中导入运行以及如何基于仓库源码理解其底层执行机制并据此改造出自己的播客 / 音频内容生成器。一、这个工作流做什么AI Radio Podcast Generator是 Astron Agent 官方 examples 目录中的社区贡献示例之一定位为creative创意类工作流。它的核心价值在于把一次性的「主题 → 成稿 → 配音 → 出图」的内容生产链条固化成一个可复用的工作流 DSL用户只需要丢给它一个主题或一篇公众号文章链接即可获得一档风格化的电台播客节目。在 workflow.yml 的 frontmatter 中可以看到其官方描述id: ai-radio-podcast title: AI Radio Podcast Generator description: Turns a topic into a scripted, multi-segment radio-style podcast with synthesized narration. category: creative features: - Expands a topic into a structured podcast script - Splits the script into ordered segments - Produces voiced audio via text-to-speech author: iflytek dslVersion: v1从 frontmatter 与画布预览可以确认该工作流的整体链路start → LLM脚本生成→ 分段 → TTS语音合成→ output。其中输入既支持纯文本主题也支持微信公众号、CSDN、博客园等网页链接由「解析 URL 内容」工具负责抓取正文大模型节点负责把原始内容改写为口语化、分段式的播客稿件TTS 插件节点把稿件合成为真人感语音并返回可播放的音频 URL结束节点以「封面图 内嵌音频播放器」的 HTML 模板输出最终结果。二、理解 DSLworkflow.yml 的文件结构Astron Agent 的每个示例目录都遵循统一的规范详见 examples/README.md一个示例一个目录包含必填的README.md与workflow.yml可选preview.png。其中workflow.yml是从 Astron Agent 画布导出的真实 DSL自带了flowMeta名称、描述、头像与flowData节点、边、参数两个顶层区块也就是说你看到的这份 YAML 就是画布上那个工作流的完整可执行快照。对照 core/workflow/engine/entities/workflow_dsl.py 中定义的WorkflowDSL模型可以确认 DSL 的骨架约定flowMeta承载元信息flowData.nodes是节点列表每个节点带type、data.inputs、data.outputs、data.nodeParamflowData.edges是节点间的有向连线每个 edge 记录source、target与sourceHandle。以本示例的「判断是否有 URL」分支器节点为例其 DSL 片段如下已省略位置坐标等画布信息- id: if-else::0a38a0da-f662-4039-9aed-658595885613 type: 分支器 data: label: 判断是否有URL inputs: - id: f099d559-55ec-409d-8535-d258ed9ba551 name: input # 取“代码节点”输出的 is_content_url 变量 schema: type: string value: type: ref content: name: is_content_url nodeId: ifly-code::f1c220b9-b3ae-4fbf-aab9-8034fa65c68f - id: 373ce76e-0a4c-4a45-a8fd-56bd3d5a4fdd name: input1 schema: type: string value: { type: literal, content: true } nodeParam: cases: - level: 1 conditions: - leftVarIndex: f099d559-55ec-409d-8535-d258ed9ba551 rightVarIndex: 373ce76e-0a4c-4a45-a8fd-56bd3d5a4fdd compareOperator: is - level: 999 # 兜底分支无任何条件这种「输入变量通过type: ref引用上游节点输出、比较值通过type: literal直接指定」的写法是整个 DSL 变量传递的核心机制与 core/workflow/engine/entities/variable_pool.py 中VariablePool的get_output_variable/add_variable实现一一对应引擎在运行时把上游节点的输出写入变量池下游节点按ref取用从而把离散的节点串成一条数据流。三、节点逐个拆解一份可运行的播客流水线该工作流一共包含 7 个节点开始、代码、分支器、URL 解析工具、大模型×2、文生图工具、消息、TTS 工具、结束下面按执行顺序逐一讲解配置要点。1. 开始节点定义唯一业务输入开始节点定义了工作流的入口变量AGENT_USER_INPUT类型string即用户在对话中输入的原始内容。它既是「解析 URL 内容」工具、大模型节点与 TTS 节点的共同数据源也是整条链路的起点对应引擎侧 core/workflow/engine/nodes/start/start_node.py 的实现。2. 代码节点正则提取 URL判断输入类型这是整个工作流里最体现「智能路由」设计的节点ifly-code::f1c220b9-...类型代码。它接收AGENT_USER_INPUT用一段 Python 正则判断用户输入中是否包含http/https链接并输出两个变量import re def main(input): # 匹配规则以http/https开头直到遇到空格或字符串结束贪婪匹配 url re.findall(rhttps?://[^\s]*, input) # [^\s]* 表示“匹配0个或多个非空白字符” ret { url: url[0] if url else , # 有URL就取第一个没有就返回空 is_content_url: true if url else false } return ret输入input引用AGENT_USER_INPUT输出url提取到的第一个链接无则空串、is_content_urltrue/false字符串代码节点是 Astron Agent 为开发者提供的 Python 扩展点官方对它的描述是「面向开发者提供代码开发能力目前仅支持 python 语言允许使用该节点已定义的变量作为参数传入返回语句用于输出函数的结果」。引擎侧对应 core/workflow/engine/nodes/code/code_node.py 与 core/workflow/engine/nodes/code/executor 下的多套执行器本地执行、远程沙箱执行等。3. 分支器节点有链接则解析网页无链接则直用文本分支器if-else::0a38a0da-...读取is_content_url与字面量true做is比较分支一level 1条件is_content_url is true走「解析 URL 内容」工具节点抓取链接正文分支二level 999无条件的兜底分支直接进入大模型节点此时大模型收到的是纯文本主题。这种「先分类、再分流」的模式对内容类工作流非常实用可以让同一份 DSL 同时兼容「喂链接」和「喂文本」两种输入方式。分支器的条件断言实现可参考 core/workflow/engine/nodes/if_else/if_else_node.py其中内置了is、is not、equal、contains、empty、regex contains等十多种比较算子。4. 解析 URL 内容工具抓取公众号/CSDN/博客园正文「解析 URL 内容」是一个工具插件节点plugin::08a9d252-...类型工具入参url引用代码节点提取的链接出参结构如下输出字段类型含义codeinteger调用返回码msgstring返回消息data.titlestring网页标题data.contentstring网页正文该工具在 DSL 中自带的描述说明了其能力边界「可获取 URL 链接下的网页标题和内容当前支持微信公众号、csdn、cnblogs 等网站 URL 链接下的网页和内容读取其他 URL 链接内容的获取和解析持续演进中」。也就是说目前网页解析能力是白名单式的如果输入的是不支持的站点链接应预期data.content可能为空建议在改造时对该分支做兜底。工具类节点在引擎侧由 core/workflow/engine/nodes/plugin_tool/plugin_node.py 执行底层通过 core/workflow/engine/nodes/plugin_tool/link_client.py 的LinkClient组装参数、调用远端工具服务并解析响应。5. 大模型节点电台播客内容生成把素材改写成播客稿件「电台播客内容」节点spark-llm::5e38f84e-...类型大模型是本工作流的内容生产核心其关键配置如下nodeParam: model: spark # 模型标识 serviceId: bm4 domain: 4.0Ultra # 领域/模型版本 url: wss://spark-api.xf-yun.com/v4.0/chat maxTokens: 2048 # 最大回复长度范围 1~8192 temperature: 0.5 # 核采样阈值范围 (0, 1] topK: 4 # 生成多样性范围 1~6 auditing: default # 内容审核严格程度strict/moderate/show/default template: |- {{input}}{{input_oral}} 请根据以上输入内容生成播客内容。各参数在 DSL 的configs中都有完整约束说明这里摘录两条原文以帮助理解其语义maxTokens「最小值是 1, 最大值是 8192。控制模型输出的 Tokens 长度上限。通常 100 Tokens 约等于 150 个中文汉字。」temperature「取值范围 (01]。用于决定结果随机性取值越高随机性越强即相同的问题得到的不同答案的可能性越高。」节点有两条输入input引用 URL 解析工具的data.content有链接时input_oral引用开始节点的AGENT_USER_INPUT。它的 system promptsystemTemplate非常值得参考定义了「专业广播节目编辑」的角色并要求把原始内容拆解为适合播客的主题/问题将内容长度控制在 300–400 字以内将书面表达转化为口语化、易懂的语言用通俗例子或比喻解释专业术语营造轻松有趣的对话节奏语速、语调、幽默元素。同时限制「只围绕 AI 神奇魔法屋电台播客节目相关内容创作」「输出中不要出现任何链接」「直接输出内容不要出现脚本、开场白等准备性文字」。引擎侧大模型节点由 core/workflow/engine/nodes/llm/spark_llm_node.py 实现实际调用 Spark 系模型WebSocket 协议底层 LLM 提供方见 core/workflow/infra/providers/llm/iflytek_spark/spark_chat_llm.py。注意示例 DSL 中的apiKey: YOUR_API_KEY、apiSecret: YOUR_API_SECRET、appId: YOUR_APP_ID均为发布时被抹除的占位符导入后必须先替换成自己的凭据。6. 消息节点中间过程的流式提示「消息_1」节点message::72662c05-...引用大模型的output向用户流式输出一段中间提示告知「电台播客稿件已完成……正在进入合成语音阶段需时预计 3 分钟请耐心等待」。这类节点用于在耗时步骤如 TTS 合成之前给用户即时反馈提升对话式工作流的体感对应引擎侧 core/workflow/engine/nodes/message/message_node.py。7. TTS 工具节点把稿件合成为真人感语音「语音合成」工具节点plugin::6557df0c-...类型工具是本工作流「最后一公里」的关键其配置inputs: - name: text # 需要合成的文本引用大模型 output required: true - name: vcn # 特色发音人 value: { type: literal, content: x4_lingxiaoxuan_oral } required: true - name: speed # 语速 value: { type: literal, content: 60 } required: false outputs: - name: sid # 合成任务标识 - name: code # 返回码 - name: msg # 返回消息 - name: data.voice_url # 合成后的音频地址 nodeParam: toolDescription: 用户上传一段话选择特色发音人生成一段更拟人的语音 operationId: 超拟人合成-7UcDosEk retryConfig: maxRetries: 2 shouldRetry: true timeout: 300值得注意的三个细节发音人vcnDSL 中注明「目前可选x4_lingfeiyi_oral x4_lingxiaoxuan_oral」本工作流选用x4_lingxiaoxuan_oral口语化音色改造时可替换为另一发音人对比效果语速speed注释为「0 对应默认语速的 1/2100 对应默认语速的 2 倍默认值 50」示例取 60即略快于默认语速失败重试该节点配置了maxRetries: 2、shouldRetry: true、timeout: 300秒的retryConfig并定义了失败时的customOutput返回空的voice_url等字段对应引擎侧 core/workflow/engine/entities/retry_config.py 描述的重试语义。8. 封面图生成支线LLM 提炼绘画提示词 文生图除主链路外该工作流还并行挂着一条「封面图」支线大模型_1spark-llm::42017659-...接收主链路大模型的output扮演「主题提炼师 AI 绘画师」把播客稿件提炼为主题再输出一段「极简手绘风格」的 AI 绘画提示词system prompt 要求「只输出一段用于生成图片的 AI 绘画提示词」文生图_1工具plugin::3641af94-...operationId: 文生图-4y8oUAMe以提示词为prompt输入width/height分别配置为720/1280竖版封面支持的分辨率在 DSL 中列明512x512、640x360、640x480、640x640、680x512、512x680、768x768、720x1280、1280x720、1024x1024输出data.image_url。9. 结束节点拼装封面与音频播放器结束节点接收三个引用变量用 HTML 模板输出最终结果inputs: - name: audio_url # 引用 TTS 节点 data.voice_url - name: article_titile # 引用大模型 output - name: output # 引用文生图节点 data.image_url nodeParam: template: |- AI 神奇魔法屋电台 figure stylebackground: #f5f0e6; padding: 20px; ... img src{{output}} ... /figure audio preloadnone controls stylewidth: 100%; margin-top: 20px; source src{{audio_url}} typeaudio/mpeg /audio模板中的{{output}}、{{audio_url}}会被引擎运行时替换为真实的封面图与音频 URL最终给到用户的就是「一张封面 一个可点击播放的播客音频」。HTML 模板的变量替换机制对应 core/workflow/engine/nodes/util/prompt.py 中的prompt_template_replace/get_placeholders等函数。四、导入与运行三步跑通示例按照 examples/ai-radio-podcast/README.md 的指引运行该工作流只需三步导入在 Astron Agent 中创建一个工作流 → 选择Import导入→ 选取本仓库的examples/ai-radio-podcast/workflow.yml。替换凭据把 DSL 中所有YOUR_API_KEY/YOUR_API_SECRET/YOUR_APP_ID占位符替换为你自己的凭据涉及大模型节点、两个工具节点与代码节点代码节点中的凭据同样被抹除。运行向工作流输入任意主题例如一条微信公众号链接或一段纯文本等待脚本生成与语音合成完成即可。⚠️ 安全提示示例 DSL 在发布前已将所有 API Key、密钥、AppId 替换为占位符。这一点在 examples 目录的整体规范 examples/README.md 中属于强制合并门槛——导出的 DSL 可能内嵌 API Key、token、个人端点、OSS 地址甚至手机号提交前必须清除含真实凭据的 PR 会被拒绝。你在自己导出/分享工作流时也应遵循同样的清理流程。五、从源码看执行机制DSL 如何变成一次运行如果你想深入理解这份 DSL 在 Astron Agent 内部是如何被执行的可以从下面三个层面去读源码1. DSL 模型层WorkflowDSLcore/workflow/engine/entities/workflow_dsl.py负责把 YAML 反序列化为节点Node与边Edge结构并提供check_nodes_exist、extract_iteration_sub_dsl、extract_loop_sub_dsl等方法支撑引擎的图遍历。2. 引擎构建层WorkflowEngineBuilder位于 core/workflow/engine/dsl_engine.py执行build_nodes→build_chains→build_node_dependencies→build_message_dependencies→build_node_status的构建管线把 DSL 节点实例化为可执行节点对象并依据edges建立前驱/后继关系对应SparkFlowEngineNode.add_pre_node/add_next_node。3. 执行层WorkflowEngine.async_run从开始节点出发按「节点执行策略」逐节点驱动支持流式输出与错误处理链节点间的数据流转通过 core/workflow/engine/entities/variable_pool.py 的VariablePool完成——每个节点的输出按ref引用关系被写入/读取这正是前文 DSL 中type: ref与type: literal两种取值方式的运行时对应物。值得一提的是引擎对节点类型做了策略分发见 core/workflow/engine/dsl_engine.py 中的NodeExecutionStrategy与can_handle(node_type)大模型、工具、代码、分支器等不同类型的节点由不同策略执行其中分支器节点在 core/workflow/engine/nodes/if_else/if_else_node.py 中实现了丰富的比较算子本工作流的「URL 判断」只是其能力的一个子集。六、如何改造成自己的播客工作流基于这份示例做二次开发时可以重点关注以下改造点改造目标改动位置说明更换配音音色TTS 节点的vcn字面量在x4_lingfeiyi_oral/x4_lingxiaoxuan_oral之间切换或按平台新增音色调整调整播客风格大模型节点的systemTemplate修改角色设定、字数上限、语气要求即可产出不同风格的稿件调整生成随机性大模型节点的temperature/topK创作类内容可适度调高以增加多样性说明类内容可调低以更贴指令更换封面尺寸文生图节点的width/height按平台支持的分辨率列表调整如方形封面用 1024x1024扩展输入来源分支器结构 代码节点增加「知识库检索」「文件解析」等分支形成更复杂的输入路由替换模型大模型节点的model/domain/url前提是你的 Astron Agent 环境已接入对应模型能力七、注意事项与已知边界凭据必换示例中的所有YOUR_*占位符都必须替换后才能运行TTS、URL 解析、文生图三个工具节点与大模型节点各自独立持有apiKey/apiSecret/appId替换时逐一核对。网页解析白名单URL 解析工具当前明确支持微信公众号、CSDN、博客园等站点其他站点「持续演进中」依赖链接输入的场景需要实测确认。输入兼容代码节点对 URL 的提取采用正则贪婪匹配https?://[^\s]*多链接输入时只取第一个无链接时is_content_url为false走纯文本分支。语音合成耗时消息节点提示合成约需 3 分钟TTS 节点超时配置为 300 秒并带 2 次重试长稿件建议控制脚本字数示例大模型要求浓缩在 300–400 字内。版本一致性该 DSL 标注dslVersion: v1导入前请确认你的 Astron Agent 版本兼容该 DSL 版本。结语ai-radio-podcast示例完整演示了 Astron Agent 如何用「代码路由 分支器 大模型 插件工具 消息反馈 HTML 输出」的组合把一条多模态内容生产链路压缩成一份可导入、可复用、可二次开发的工作流 DSL。无论你是要复制这个「主题 → 播客」的能力还是想借鉴它的节点编排思路先分类、再生成、后合成、带封面这份 workflow.yml 都是一份可以直接上手、值得逐字段研读的参考实现。赞分享人工智能AI AgentAgent 编排RPA后端前端企业应用【免费下载链接】astron-agentEnterprise-grade, commercial-friendly agentic workflow platform for building next-generation SuperAgents.项目地址https://gitcode.com/gh_mirrors/as/astron-agent点击查看免费下载相关推荐MoneyPrinterTurbo 全解析从主题关键词到高清短视频的 AI 自动化生成流水线MoneyPrinterTurbo 全解析从主题关键词到高清短视频的 AI 自动化生成流水线 MoneyPrinterTurbo 是一个基于 AI 大模型与自AI 应用媒体生成音视频视频零配置打造React Native自动部署流水线从开发到上架全流程自动化零配置打造React Native自动部署流水线从开发到上架全流程自动化 你还在为React Native项目的手动打包、测试和部署烦恼吗每次发布新版本都开发工具CLI移动开发全自动化文档生成使用ShellGPT打造智能文档流水线全自动化文档生成使用ShellGPT打造智能文档流水线 痛点与解决方案 你是否还在手动编写项目文档面对频繁更新的代码库文档总是滞后于实现本文将展示如何利AI 应用大模型CLI交互助手上一篇路由性能基准测试history库在不同设备上的表现分析下一篇Pipenv错误排查指南10个常见问题与快速解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
