Astron Agent 社区示例工作流模板使用指南:基于 TEMPLATE 的导入、编写与贡献实战
发布时间:2026/10/14 3:04:56 锦皓数字建站

人工智能AI AgentAgent 工作流RPA后端前端工具调用【免费下载链接】astron-agentAn enterprise-ready AI agent development platform combining intelligent RPA, enabling agents to not only think but also act—automating workflows across digital and desktop environments. 这是一个镜像仓库有issue、pr欢迎去github提交。项目地址https://gitcode.com/ifly_opensource/astron-agent点击查看免费下载本文面向希望在 Astron Agent 开源仓库中提交或二次开发工作流示例的开发者。通过本文你将完整掌握examples/TEMPLATE模板的目录约定、README frontmatter 元数据规范、导出 DSLflowMeta/flowData的文件结构、密钥清理红线以及从复制模板 → 填写说明 → 提交 PR的完整贡献流程同时结合仓库内的真实示例与后端解析源码理解一个示例工作流从 YAML 文件到被引擎识别执行的完整链路。一、模板定位社区示例库的标准入口在仓库的examples/目录下存放着一批可复用、可直接导入、可二次开发的 Astron Agent 工作流示例。与由团队维护的企业案例不同这里的示例是开放的社区贡献任何人都可以通过 Pull Request 提交自己的工作流。为了保证每个示例都开箱可用、格式统一、便于文档站点渲染成卡片仓库提供了一个标准模板即本篇文章的主题——examples/TEMPLATE。模板目录包含两个文件缺一不可examples/TEMPLATE/ ├── README.md # YAML frontmatter 元数据 人类可读的说明正文 └── workflow.yml # 从 Astron Agent 导出的工作流 DSL.yml其中workflow.yml必需——从 Astron Agent 控制台导出工作流 → Export。导出的 DSL 已携带工作流的flowMeta名称、描述与flowData节点/连线。README.md必需——YAML frontmatter 元数据头 文字说明。frontmatter 字段与示例画廊gallery的卡片 schema 对齐供文档站点按category分组渲染为可筛选的卡片。preview.png可选但推荐——画布或运行结果的截图能让画廊卡片更直观。任何新的示例都遵循一示例一目录、用短横线小写 id 命名的约定examples/example-id/ ├── README.md # 必需——元数据 使用说明 ├── workflow.yml # 必需——导出的工作流 DSL └── preview.png # 可选——画布/结果截图二、README frontmatter 元数据逐字段详解模板 README.md 的开头是一个 YAML frontmatter 头它是整个示例的身份证。字段定义如下--- id: my-example-id # 唯一kebab-case且必须与目录名一致 title: My Example Workflow # 展示名称 description: One-sentence summary of what this workflow does. # 一句话摘要 category: productivity # productivity | creative | learning | entertainment | health | finance | other features: # 3–5 条要点 - First thing it does - Second thing it does - Third thing it does author: your-github-handle # 贡献者的 GitHub 用户名 sourceUrl: # 可选——解释该工作流的博客/视频/讨论链接 dslVersion: v1 # 导出时的工作流 DSL 版本 event: # 可选——如 Astron Training Camp · Cohort #1 ---逐字段的填写要点如下字段必填说明id是全小写 kebab-case如ai-radio-podcast必须与目录名一致仓库会据此校验唯一性title是示例的展示名称将显示在画廊卡片上description是一句话说清这个工作流解决什么问题、产出什么结果category是仅限productivity、creative、learning、entertainment、health、finance、other之一用于画廊按类目筛选features是3–5 条要点式能力描述每条以动词开头如 Parses a resume into structured fieldsauthor是贡献者的 GitHub 用户名sourceUrl否可填写介绍该工作流思路的外部文章/视频/讨论地址dslVersion是导出该工作流时的 DSL 版本。当前仓库导出格式为v1详见下文 DSL 结构event否可选的活动标识如训练营第几期frontmatter 之下是说明正文模板要求覆盖五块内容what it does做什么、the nodes/skills it uses用到哪些节点/技能、any external dependencies外部依赖模型、插件、知识库、how to import run it如何导入并运行、Notes其他注意事项。下面逐一展开。三、说明正文五大章节的撰写规范3.1 What it does——一句话交代场景与产出用一段短文字描述该工作流解决的问题与产出的结果。可以参考仓库中 history-knowledge-qa/README.md 的写法A conversational agent that acts as a personal history advisor — ask it about historical events, cultural change, or notable figures and it returns accurate, sourced answers.3.2 How it works——讲清节点链路与设计亮点描述工作流的主干节点/技能链路例如 start → LLM → knowledge retrieval → output以及设计中值得说明的地方。仓库中的示例给出了两种典型的写法简单链路history-knowledge-qa 是单轮对话start → LLM配一个历史导师 system prompt 和一组示例问题引导式开场白不依赖外部知识库。链式管道chained LLM pipelinemeeting-notes-organizer 将提取与格式化拆成两个串行 LLM 节点第一个 LLM 扮演记录员从杂乱会议记录中提取主题、参与人、决策与行动项并严格禁止臆造内容第二个 LLM 拿到结构化提取结果后改写为正式、条理清晰的会议纪要。这种拆分 prompt的做法让每个提示词保持短小输出稳定性显著优于单个大 prompt 一把梭——该骨架可复用于任何原始输入 → 结构化输出 → 精修成文的任务。3.3 Dependencies——显式声明外部依赖模板要求列出三类依赖即使为无也要显式说明Models例如 Spark X1 或任意对话模型。若凭据已清理需注明credentials scrubbed。Plugins / skills工作流调用的插件或技能如文本转语音TTS。Knowledge bases若工作流依赖知识库需说明如何准备/填充该知识库没有则写 none。3.4 Import run——给出可复现的三步操作这是模板中最具实操性的部分标准写法也是本文后面六、导入与运行展开的浓缩版在 Astron Agent 中创建工作流 →Import→ 选择本目录下的workflow.yml填写被清理掉的占位符API keys、knowledge base ids 等运行并根据需要调整。3.5 Notes——补充用户须知记录其他用户需要知道的事项限制、成本、语言、依赖环境等。四、workflow.ymlAstron Agent 导出 DSL 的文件结构模板配套的 examples/TEMPLATE/workflow.yml 文件说明了 DSL 的来源与骨架# Astron Agent → open your workflow → Export → save the .yml here as workflow.yml一份导出的 DSL 由两大部分组成flowMeta: name: My Workflow description: What it does. category: 10 dslVersion: v1 flowData: nodes: [ ... ] edges: [ ... ]以仓库真实示例 examples/ai-radio-podcast/workflow.yml 为例可以拆出以下关键结构省略了坐标等画布信息后的骨架flowMeta: name: AI电台播客生成 description: AI播客生成 avatarIcon: 头像图片地址 avatarColor: advancedConfig: {needGuide:false,prologue:{...}} # 注意JSON 编码的字符串 category: 13 dslVersion: v1 flowData: nodes: - id: node-start::bb83bdc5-... # 开始节点 type: 开始节点 data: label: 开始 nodeMeta: {aliasName: 开始, nodeType: 基础节点} outputs: - id: 4cb707a4-... name: AGENT_USER_INPUT # 平台保留变量用户本轮对话输入 schema: {type: string, default: 用户本轮对话输入内容} required: true nodeParam: {} - id: spark-llm::5e38f84e-... # 大模型节点 type: 大模型 data: nodeMeta: {aliasName: 播客风格内容生成, nodeType: 基础节点} inputs: - id: 0c98c01a-... name: input schema: type: string value: {type: ref, content: {name: data.content, id: 6549c72a-..., nodeId: plugin::08a9d252-...}} nodeParam: template: {{input}}{{input_oral}}... systemTemplate: ## 角色... maxTokens: 2048 temperature: 0.5 topK: 4 apiKey: YOUR_API_KEY # 已清理的占位符 apiSecret: YOUR_API_SECRET appId: YOUR_APP_ID url: wss://spark-api.xf-yun.com/v4.0/chat - id: if-else::0a38a0da-... # 条件分支节点 type: 分支器 data: nodeMeta: {aliasName: 判断是否有URL, nodeType: 分支器} inputs: - id: f099d559-... name: input schema: {type: string, value: {type: ref, content: {name: is_content_url, ...}}} nodeParam: cases: - {id: branch_one_of::2192a758-..., level: 1, logicalOperator: and, conditions: [...]} - {id: branch_one_of::a0a0cfd9-..., level: 999, logicalOperator: and, conditions: []} - id: ifly-code::f1c220b9-... # 代码节点Python type: 代码 data: nodeParam: code: | import re def main(input): url re.findall(rhttps?://[^\s]*, input) return {url: url[0] if url else , is_content_url: true if url else false} - id: plugin::6557df0c-... # 工具/插件节点如语音合成 type: 工具 data: nodeParam: pluginId: tool72213899d821000 operationId: 超拟人合成-7UcDosEk retryConfig: {maxRetries: 2, shouldRetry: true, timeout: 300} - id: node-end::bf6a1cdd-... # 结束节点 type: 结束节点 data: nodeMeta: {aliasName: 结束, nodeType: 基础节点} inputs: - id: 6b8905ed-... name: audio_url schema: {type: string, value: {type: ref, content: {name: data.voice_url, ...}}} nodeParam: template: audio ...source src{{audio_url}}/audio streamOutput: true outputMode: 1 edges: - source: node-start::bb83bdc5-... target: ifly-code::f1c220b9-... type: customEdge id: reactflow__edge-... markerEnd: {type: arrow, color: #6356EA} data: {edgeType: curve}值得注意的几点 DSL 语义advancedConfig是 JSON 编码的字符串不能写成 YAML 对象category是数字如13与 README frontmatter 中的字符串类目如creative是两套体系节点的执行类型取id中::前的前缀如spark-llm、if-else、plugin、ifly-code、node-start、node-end这一语义在后端有直接对应实现。变量引用输入项的schema.value为ref时通过content.nodeIdcontent.namecontent.id三元组精确指向上游节点的某个输出。五、源码侧佐证DSL 如何被后端解析flowMeta/flowData的 DSL 并非前端私有格式后端工作流引擎会将它解析为领域模型并执行。核心证据位于 core/workflow/engine/entities/workflow_dsl.pyWorkflowDSL 模型L137 直接对应 DSL 的flowData由nodes: List[Node]与edges: List[Edge]组成并提供了check_nodes_exist、extract_iteration_sub_dsl、extract_loop_sub_dsl等方法——后两者说明 DSL 还支持从主图中抽取迭代/循环子图。Node 模型L105 的id字段校验正则^.*::[0-9a-zA-Z-]印证了节点 ID 必须形如类型前缀::UUID其 get_node_type 方法L115 通过self.id.split(:)[0]提取执行类型——这正是执行类型取自::前缀这一规则的代码来源。NodeDataL88 定义了节点的inputs、outputs、nodeMeta、nodeParam、retryConfig结构InputItemL47 与 ValueL25 定义了schema.value中ref节点引用与literal字面量两种取值方式。在接口层core/workflow/api/v1/flow/layout.py 通过WorkflowDSL.model_validate(...)将导入的协议数据校验并解析为引擎可执行的模型对象随后进入 core/workflow/engine/dsl_engine.py 的WorkflowEngine按节点依赖链执行。同时仓库还提供了一份面向本地 Agent 编写 DSL 的完整规则文档 docs/skills/astron-workflow-dsl/SKILL.md其中明确目标格式是控制台导出格式 v1flowMeta、flowData必须是对象nodes、edges必须是数组并详细规定了节点、连线、变量引用的书写约束如提示词里的{{question}}只对应本节点 inputs 的 name必须先用 ref 把上游变量绑定到本节点。这份文档是深度编写/修改workflow.yml时的最佳配套参考。六、导入与运行三步让示例跑起来模板 README 给出了统一的导入路径任何示例都遵循同样的流程创建并导入在 Astron Agent 中创建一个工作流 → 点击Import→ 选择该示例目录下的workflow.yml。导入会创建一个全新工作流并校验当前用户/空间可见的资源绑定。填写占位符补上发布时被清理的配置常见三类大模型节点YOUR_APP_ID/YOUR_API_KEY/YOUR_API_SECRET插件/工具节点同样需要替换为自有凭据并确认pluginId/operationId对应的插件已开通知识库节点如有repoId/docIds绑定需替换为当前空间下可见的知识库。运行调试用示例输入运行并观察输出必要时调整提示词与节点参数。导入阶段前端会做依赖检查并给出报告相关实现见 console/frontend/src/services/workflow-import.tsWorkflowImportReport接口与 console/frontend/src/components/workflow/utils/workflow-import-dependencies.tsgetActiveImportDependencyIssues等。需要理解两点导入依赖报告显示 0 项并不代表模型已选择普通模型节点缺少可用serviceId时前端校验会提示请选择模型插件、知识库、数据库、子工作流等资源可能产生 unresolved / ambiguous 的导入报告需按报告逐项绑定。相同 ID 在不同部署中不一定代表同一资源不能靠复制源环境 ID 保证运行。七、密钥清理发布前的安全红线这是模板与示例库规范共同强调的最高优先级事项。examples/TEMPLATE/workflow.yml 的注释明确警告⚠️ BEFORE COMMITTING: remove any secrets the export may contain — API keys, tokens, personal endpoints, OSS URLs, phone numbers — and replace them with placeholders such as YOUR_API_KEY.原因是导出的 DSL 可能内嵌敏感信息包括但不限于API Key / API Secret / App ID模型、插件节点中常见如apiKey、apiSecret、appId字段Token、访问令牌、认证头个人端点personal endpoints、OSS 存储地址手机号等个人数据。清理规范将所有真实凭据替换为占位符仓库统一使用YOUR_API_KEY、YOUR_API_SECRET、YOUR_APP_ID这类命名对占位符做全局排查grep -rn YOUR_一类检查确认没有遗漏真实示例中的做法可作参考examples/ai-radio-podcast/README.md 明确声明 All API keys, secrets, and app ids in the exported DSL were replaced with placeholders before publishing。示例库的合并门槛将这条列为硬性条件含真实凭据的 PR 会被直接拒绝Rejected。八、贡献流程与合并门槛把示例提交进仓库按照 examples/README.md 的贡献指南提交一个新示例的完整流程是# 1. 复制模板一示例一目录用短横线小写 id 命名 cp -r examples/TEMPLATE examples/your-example-id # 2. 替换 workflow.yml把你导出的 DSL 覆盖到该文件可选补充 preview.png # 3. 编辑 README.md填好 frontmatter 元数据 写说明正文 # 4. 清理密钥必需见上一节 # 5. 针对 main 分支提交 PR git checkout -b examples/your-example-id git add examples/your-example-id git commit -s -m examples: add your-example-id # -s 必须用于添加 DCO 签名 git push origin examples/your-example-id一个示例被合并需要同时满足四条质量门槛能在当前 Astron Agent 实例中导入并运行若与版本相关需注明所用版本不含任何密钥——导出的 DSL 中所有真实凭据均需删除或替换为占位符说明清晰——正文覆盖做什么/怎么工作并列出外部依赖模型、插件、知识库id唯一且与目录名一致。九、模板的落地形态仓库四个真实示例速览模板的价值在于照葫芦画瓢。当前仓库的示例恰好覆盖了从最简单到较复杂的多种形态是编写自己示例的最佳参照示例链路可借鉴的点english-essay-correctorstart → LLM → end最小可用形态单个大模型节点 专业 system prompt演示输入即作文、输出即批改history-knowledge-qastart → LLM单轮对话 引导式开场白prologue无任何外部依赖meeting-notes-organizerstart → LLM(提取) → LLM(格式化) → end双 LLM 链式管道展示拆分 prompt 提升稳定性的设计模式ai-radio-podcaststart → 代码 → 分支 → 插件(URL 解析) → LLM → 插件(TTS) → end最完整的复合形态代码节点正则提取 URL、if-else 分支路由、两个工具插件、结束节点 HTML 模板输出音频 图片其中 ai-radio-podcast/workflow.yml 尤其值得精读它演示了ifly-code代码节点如何用re.findall(rhttps?://[^\s]*, input)从用户输入中提取 URL、if-else分支如何用is_content_url is true路由、plugin工具节点如何声明pluginId/operationId与retryConfigmaxRetries: 2、timeout: 300、以及node-end如何通过outputMode: 1与{{audio_url}}模板插值输出最终 HTML 结果。十、常见问题FAQQ1workflow.yml必须自己手写吗不需要。正确做法是在 Astron Agent 中完成画布编排后通过Export导出模板文件中的骨架flowMetaflowData仅供理解结构与自查使用手写时请遵循 docs/skills/astron-workflow-dsl/SKILL.md 的完整规则。Q2README frontmatter 的category与 DSL 里的category为什么一个是字符串、一个是数字两者服务于不同系统frontmatter 的category是画廊卡片的过滤标签productivity/creative/...而 DSL 内flowMeta.category是工作流自身的业务分类编号如13。提交示例时只需保证 frontmatter 的category合法即可。Q3导入后提示模型未选择是不是文件有问题不是。模型绑定属于环境级资源跨环境迁移后通常会被清除这是预期行为——按导入报告在对应大模型节点重新选择自己账号下可用的模型即可这也正是模板要求列出 Dependencies 的原因。Q4如何确认自己的示例满足合并门槛对照八、贡献流程与合并门槛的四条逐一自检本地导入并运行一次、全文件搜索确认无真实凭据、说明覆盖五个正文章节、id与目录名一致。通过本文你已经掌握了从examples/TEMPLATE出发完成一个合格社区示例所需的全部要素frontmatter 元数据规范、五个正文章节的撰写标准、导出 DSL 的结构与后端解析原理、密钥清理红线以及 PR 贡献流程。下一步复制模板、导出你的工作流、填好说明就能为 Astron Agent 的示例画廊贡献一个可复用、可运行的示例。赞分享人工智能AI AgentAgent 工作流RPA后端前端工具调用【免费下载链接】astron-agentAn enterprise-ready AI agent development platform combining intelligent RPA, enabling agents to not only think but also act—automating workflows across digital and desktop environments. 这是一个镜像仓库有issue、pr欢迎去github提交。项目地址https://gitcode.com/ifly_opensource/astron-agent点击查看免费下载相关推荐Astron Agent 工作流示例库社区贡献、导入即用的 DSL 示例规范与完整贡献指南Astron Agent 工作流示例库社区贡献、导入即用的 DSL 示例规范与完整贡献指南 examples/ 是 Astron Agent 开源仓库中的社区人工智能AI AgentAgent 工作流RPA后端前端工具调用Astron Agent 工作流示例库实战指南可复用 DSL 的导入、改造与社区贡献Astron Agent 工作流示例库实战指南可复用 DSL 的导入、改造与社区贡献 导读 docs/zh/examples.md 是 Astron Ag人工智能AI AgentAgent 编排RPA后端前端企业应用Astron Agent 工作流示例贡献模板完全指南从 TEMPLATE 目录到可复用 workflow.yml 的实战规范Astron Agent 工作流示例贡献模板完全指南从 TEMPLATE 目录到可复用 workflow.yml 的实战规范 本指南围绕仓库 examples人工智能AI AgentAgent 编排RPA后端前端企业应用上一篇Visual C 运行库离线修复指南三步补齐全部缺失组件下一篇QtScrcpy 完整指南Android 投屏、键鼠控制与多设备管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。