ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GSD 高级工作流模式深度解析:context_from 上下文链、iterate 扇出迭代与 params 参数化

GSD 高级工作流模式深度解析:context_from 上下文链、iterate 扇出迭代与 params 参数化 人工智能AI Agent代码智能体Agent 编排CLIAI 应用【免费下载链接】gsd-2A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture项目地址https://gitcode.com/gh_mirrors/gs/gsd-2点击查看免费下载本文是 GSD 仓库内置技能create-workflow的进阶参考feature-patterns.md的完整展开。GSDGitHub 加速计划 gsd-2是一套面向长时间自治运行 Agent 的元提示、上下文工程与规格驱动开发系统其 V1 工作流引擎允许用户用 YAML 定义多步骤流水线让 Agent 在无人值守下持续产出并自我验证。读完本文你将掌握三大高级特性用context_from做步骤间上下文链、用iterate对产物做正则驱动的扇出迭代、用params让同一份定义在不同场景下复用并能在项目内独立编写、校验与运行可复用的工作流定义。前置V1 工作流定义的最小骨架在深入高级特性之前先明确所有特性所依附的 V1 Schema 骨架。每个定义必须以version: 1、非空name、至少一个steps[]起步可选顶层字段为description字符串与params键值默认值。每个 step 必须有唯一的id、非空name与prompt可选的字段包括requires/depends_on前置步骤 ID 数组、produces产物路径数组、context_from上下文来源步骤数组、verify验证策略对象与iterate扇出配置对象。YAML 一律使用snake_casedepends_on、context_from引擎在加载后内部转换为 camelCase 的 TypeScript 类型——这一转换可以在 definition-loader.ts 中看到YAML 侧为 snake_caseTS 侧为dependsOn、contextFrom。yaml-schema-v1.md 提供了完整的字段级表格而 workflow-definition.yaml 是可直接复制填写的空白脚手架所有可选字段都以注释形式列出。version: 1 name: my-workflow # description: A brief description of what this workflow accomplishes. steps: - id: step-one name: First step prompt: Describe what this step should accomplish. produces: - output.md编写完成后定义文件默认存放于项目内的.gsd/workflows/name.yaml随仓库提交或全局的~/.gsd/workflows/name.yaml仅限本机旧位置.gsd/workflow-defs/name.yaml仍可用但正在被淘汰。随后用/gsd workflow validate name校验、/gsd workflow name或run name [kv]运行。特性一context_from— 步骤间上下文链context_from的语义很直接当某一步执行时把其值中列出的、先前步骤产出的产物文件作为上下文注入给该步的 Agent。它解决的是长流水线中最常见的上下文丢失问题——步骤 3 需要引用步骤 1 的结论却只看到步骤 2 的输出。完整示例研究-分析-综合流水线下面的research-and-synthesize定义演示了单步引用与多步引用的两种用法来自 feature-patterns.mdversion: 1 name: research-and-synthesize steps: - id: gather name: Gather sources prompt: Find and summarize the top 5 sources on the topic. produces: - sources.md - id: analyze name: Analyze sources prompt: Analyze the gathered sources for key themes. requires: - gather context_from: - gather produces: - analysis.md - id: synthesize name: Write synthesis prompt: Synthesize the analysis into a coherent report. requires: - analyze context_from: - gather - analyze produces: - report.md工作机制与关键约束context_from: [gather]意味着执行analyze时引擎会把gather步骤的产物sources.md纳入上下文。可引用多个前置步骤context_from: [gather, analyze]synthesize步骤将同时获得sources.md与analysis.md。被引用的步骤必须已存在于工作流中——加载时会被当作 step ID 校验见下文的校验规则。最容易踩的坑context_from并不隐含依赖关系。它只注入上下文不保证顺序。如果该步必须等待被引用步骤完成必须同时把该 ID 写进requires或depends_on。也就是说context_from与requires各管一件事前者管能看到什么后者管何时能跑。这一接受但不处理的设计在源码中得到了印证StepDefinition.contextFrom的注释明确写着Step IDs whose artifacts to include as context且definition-loader.ts在加载时将其原样转换为contextFromdefinition-loader.ts而真正的依赖约束全部落在requires/depends_on上。模板 blog-post-pipeline.yaml 中的三段式线性链research → outline → draft正是这种requires context_from成对出现的标准写法每个下游步骤既requires上游又把上游加入context_from。特性二iterate— 扇出Fan-Out迭代iterate让一个步骤从产物文件中读一行、拆多个从而把一次执行扇出为多次子执行。它读取一个产物文件用正则匹配每个匹配生成一个子执行捕获组内容作为该子执行的迭代变量。完整示例逐文件代码评审version: 1 name: file-by-file-review steps: - id: inventory name: List files to review prompt: List all TypeScript files in src/ that need review, one per line. produces: - file-list.txt - id: review name: Review each file prompt: Review the file for code quality issues. requires: - inventory iterate: source: file-list.txt pattern: ^(.\\.ts)$ produces: - reviews/运行时引擎读取file-list.txt逐行应用^(.\.ts)$每匹配到一个.ts文件路径就创建一次独立的review子执行捕获组中的路径作为迭代变量注入该次执行的提示词上下文。code-audit.yaml模板code-audit.yaml是同一个模式在生产规模下的完整落地inventory 列出源码文件 → audit-file 以iterate逐文件扇出审计 → report 汇总全部审计结果。工作机制与 Pattern 要求source产物文件路径相对于 run 目录。不得包含..路径穿越会被加载器直接拒绝definition-loader.ts。pattern带全局标志global flag应用的正则字符串。必须至少包含一个捕获组(...)——引擎靠捕获组提取迭代变量。正则校验发生在定义加载期而非运行期非法正则或缺少捕获组会直接在validateDefinition中报错错误信息形如Step review iterate.pattern must contain at least one capture groupdefinition-loader.ts。Pattern 必须是合法的 JavaScript 正则且捕获组不能是 lookahead 之外的零宽断言。源码里的校验正是用new RegExp(pat)加/\((?!\?)/.test(pat)双重检查前者确认正则合法后者确认存在非(?:...)的普通捕获组definition-loader.ts。合法示例^(.)$、- (.\.ts)、\[(.?)\]。对应地(?:...)这类非捕获组不算数。值得注意的是每个子执行的迭代提示词也会经过参数替换管线substitutePromptString被导出专门供引擎处理位于 GRAPH.yaml 中定义 steps 列表之外的迭代实例提示词definition-loader.ts。特性三params— 参数化工作流params让同一份工作流定义在不同主题、项目或配置下反复复用而无需复制粘贴整个 YAML。定义顶层给出参数默认值step 的 prompt 里用{{ key }}占位运行时由 CLI 覆盖。完整示例可配置主题的博客流水线version: 1 name: blog-post description: Generate a blog post on a configurable topic. params: topic: AI in healthcare audience: technical professionals word_count: 1500 steps: - id: outline name: Create outline prompt: Create a detailed outline for a blog post about {{ topic }} targeting {{ audience }}. produces: - outline.md - id: draft name: Write draft prompt: Write a {{ word_count }}-word blog post about {{ topic }} for {{ audience }} based on the outline. requires: - outline context_from: - outline produces: - draft.md verify: policy: content-heuristic minSize: 500运行时可覆盖默认值/gsd workflow run blog-post topicRust performance未覆盖的audience与word_count沿用默认值。工作机制与约束params是顶层对象键值均为字符串Recordstring, string。加载器中即使收到非字符串值也会被String(v)统一转为字符串definition-loader.ts。任意 step 的 prompt 中出现的{{ key }}都会被替换为对应参数值。占位符的正则只匹配\w字母、数字、下划线即/\{\{(\w)\}\}/gdefinition-loader.ts。合并顺序定义params默认值← CLI 覆盖优先。substituteParams先做{...definition.params, ...overrides}合并后者的键覆盖前者definition-loader.ts。未解析占位符即报错替换完成后若仍存在{{ key }}会抛出Unresolved parameter(s) in step prompts: ...把所有缺失键名列出来definition-loader.ts。也就是说宁可运行失败也不让 Agent 带着残缺的提示词去执行。路径穿越防护参数值中不得出现..。合并后、替换前所有值都会被逐一检查含..的值直接抛错Parameter key contains disallowed .. (path traversal)definition-loader.ts。替换是纯函数substituteParams返回一个全新的WorkflowDefinition绝不修改传入的原始定义definition-loader.ts。三大特性的组合实战从模板到可运行定义高级特性不是孤立存在的真实工作流往往三者并用。以 blog-post-pipeline.yaml 为例params定义topic与audience默认值research → outline → draft 的线性链中下游步骤requires上游并用context_from链入上游产物每个步骤都挂了content-heuristic验证draft步骤要求minSize: 500。再看 code-audit.yamlinventory 产出文件清单audit-file 通过iterate逐文件扇出审计pattern: ^- (.\\.ts)$与 Markdown 列表项格式对应并对每个子执行用shell-commandtest -f audit-results.md验证产物存在最后的 report 步骤用prompt-verify让 LLM 判断汇总报告是否覆盖全部文件并按严重级别分组。运行与校验命令从命令处理源码workflow.ts可以看到workflow命令的完整子命令面/gsd workflow validate name— 校验定义 YAML。实现上直接调用validateDefinitionworkflow.ts合法输出✓ name is a valid workflow definition非法则逐条列出错误。/gsd workflow run name [kv]— 显式运行创建新的 run 目录参数以paramvalue形式传入并覆盖定义默认值workflow.ts。/gsd workflow name— 直接运行插件自动解析项目/全局/内置三个位置的插件。另有list、info、install source支持 URL/gist/gh:、uninstall、pause、resume等管理子命令。validateDefinition的全量收集错误、不短路设计值得一提一次调用返回{ valid, errors: string[] }把定义的所有问题一次性暴露出来便于调用方CLI、仪表盘或 Agent 自修复循环完整掌握失败原因definition-loader.ts。加载期校验规则全景高级特性之所以能写入即安全靠的是 definition-loader.ts 中validateDefinition的完整校验。全部错误被收集进string[]不短路规则如下version必须严格等于数字1字符串1会被拒绝。name必须是非空字符串。steps必须是非空对象数组。每个 step 必须有非空id、name、prompt。step ID 全局唯一重复即报Duplicate step id: ...。依赖必须引用已存在的 step ID悬空引用报requires unknown step。step 不能依赖自身。依赖图必须无环——加载器用三色 DFS 检测环并重构出环路径输出如Cycle detected: a → b → adefinition-loader.ts。produces路径与iterate.source不得包含..路径穿越防护。iterate.pattern必须是合法正则且含至少一个普通捕获组见特性二。verify对象若存在policy必须属于四种策略之一shell-command必须有非空commandprompt-verify必须有非空promptdefinition-loader.ts。未知的顶层或 step 字段被静默接受forward compatibility为未来特性预留空间definition-loader.ts。这四条与高级特性直接相关的防线——路径穿越防护、正则捕获组校验、参数值防护、未解析占位符报错——共同保证了context_from、iterate、params的组合不会把非法或危险的定义送进运行阶段。推荐的学习路径先读 yaml-schema-v1.md 掌握字段级规则用 workflow-definition.yaml 空白脚手架从零起步对照 blog-post-pipeline.yaml 学习paramscontext_from 验证的组合对照 code-audit.yaml 学习iterate扇出与多种验证策略编写过程中需要验证策略细节时查阅 verification-policies.md想理解引擎契约可以进一步阅读 workflow-engine.ts 中deriveState/resolveDispatch/reconcile三个核心接口方法。最终检验方式是落地运行写入定义 →/gsd workflow validate name校验 →/gsd workflow run name topicRust performance跑起来观察 run 目录下的产物与验证结果即可完整体验这三个高级特性带来的自动化收益。赞分享人工智能AI Agent代码智能体Agent 编排CLIAI 应用【免费下载链接】gsd-2A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture项目地址https://gitcode.com/gh_mirrors/gs/gsd-2点击查看免费下载相关推荐高级工作流模式参数化、条件执行与循环控制高级工作流模式参数化、条件执行与循环控制 本文深入探讨了Argo Workflows中的高级工作流编排功能包括参数传递机制、条件判断与when子句的使用、循云原生容器编排工作流自动化任务调度后端Go消息模式解析发布订阅与扇入扇出模式的高级应用Go消息模式解析发布订阅与扇入扇出模式的高级应用 Go语言的消息模式是构建高并发、分布式系统的关键技术特别是发布订阅、扇入和扇出模式。这些模式能有效解耦系统示例工程教程文档一键破解资源限制这个智能工具让你轻松获取中小学电子课本PDF一键破解资源限制这个智能工具让你轻松获取中小学电子课本PDF 你是否曾经为了获取国家中小学智慧教育平台上的电子课本而苦恼面对只能在网页上预览却无法直接下载的网页爬虫教育上一篇CANN ops-nn Elu 算子深度解析aclnn 两段式调用、参数约束与实现原理下一篇CANN Runtime 错误码 EE1002 深度解读流同步超时Stream Synchronize Timeout的成因、定位与处置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表