gh-aw Dispatch 模式教程:安全触发跨仓库执行的完整方法 📅 发布时间:2026/9/16 12:00:58 👁 浏览次数: gh-aw Dispatch 模式教程安全触发跨仓库执行的完整方法【免费下载链接】gh-awGitHub Agentic Workflows项目地址: https://gitcode.com/GitHub_Trending/gha/gh-awgh-aw是 GitHub Agentic Workflows 开源项目让 AI 代理以声明式工作流的形式在 GitHub Actions 中安全运行。本教程完整讲解Dispatch 模式如何通过workflow_dispatch手动触发工作流并传入自定义参数以及如何用dispatch-repository安全地触发跨仓库执行——从安装、配置到三层安全机制新手也能一次看懂。一、什么是 Dispatch 模式Dispatch 模式是一种按需手动触发的工作流设计模式工作流不依赖定时任务或代码事件而是由人在需要时通过GitHub Actions 界面或gh aw CLI手动启动并可传入自定义输入如目标环境、研究主题、仓库名。典型使用场景 研究类任务按需让 AI 代理分析指定主题 CI 触发手动启动构建、部署或验证流程 开发调试测试阶段反复触发工作流验证逻辑 跨仓库编排在一个仓库中安全地唤醒另一个仓库的工作流DispatchOps 模式的核心思想是写操作全部交给安全输出官方文档可见 dispatch-ops.md。二、快速安装 Dispatch 工作流首先需要安装 gh-aw CLI。推荐方式是通过 git clone 获取项目后本地构建git clone https://gitcode.com/GitHub_Trending/gha/gh-aw然后用gh aw add命令将工作流添加到目标仓库或在 GitHub 仓库的 Actions 页面上手动创建 workflow 文件三、带自定义输入手动运行工作流在on:中声明workflow_dispatch触发器并定义输入参数运行者每次触发时即可填入不同值on: workflow_dispatch: inputs: topic: description: 研究主题 required: true type: string depth: type: choice options: [brief, detailed] default: brief支持string、number、boolean、choice四种输入类型完整语法见 triggers.md。从 GitHub 界面运行进入 Actions 标签页 → 选择工作流 → 点击Run workflow→ 填写输入 → 确认。从 CLI 运行更适合自动化脚本gh aw run research --raw-field topic量子计算 --raw-field depthdetailed gh aw run research --wait # 等待运行完成 gh aw run research --ref my-branch # 指定分支运行工作流内部通过${{ github.event.inputs.topic }}引用输入值配合条件模板可以动态改变 AI 代理的行为。四、跨仓库执行dispatch-repository 触发器这是 Dispatch 模式的进阶玩法。gh-aw 提供dispatch-repository安全输出类型它会在外部仓库触发repository_dispatch事件让本仓库的 AI 代理安全地唤醒另一个仓库的工作流。⚠️ 注意dispatch-repository目前是实验性功能编译时会提示Using experimental feature: dispatch-repository。同仓库触发请使用dispatch-workflow见下方对比。配置核心字段每个dispatch-repository下的键定义一个暴露给 AI 代理的具名工具safe-outputs: dispatch-repository: trigger_ci: description: 在另一个仓库中触发 CI workflow: ci.yml # 转发到 client_payload.workflow 用于路由 event_type: ci_trigger # 发送的事件类型 repository: ${{ inputs.target_repo }} # 支持 Actions 表达式 inputs: environment: type: choice options: [staging, production] default: staging max: 1 # 单次运行最多触发次数关键字段说明字段必填说明workflow✅转发给接收方用于路由的工作流标识event_type✅repository_dispatch事件的类型repository/allowed_repositories二选一固定目标仓库或允许 AI 代理从白名单中动态选择inputs可选结构化输入 schema随事件转发max可选每次运行允许的最大触发次数默认 1触发方式对比对比项dispatch-workflowdispatch-repository作用范围仅限同仓库跨仓库机制运行时workflow_dispatchAPIrepository_dispatch事件验证编译期校验工作流存在运行时白名单校验目标仓库五、三层安全机制跨仓库执行为什么可靠gh-aw 对 Dispatch 执行做了系统性防护这也是它区别于裸调 API的关键编译期验证— 同仓库触发时编译器会校验目标工作流文件是否存在.md/.yml/.lock.yml、是否声明了对应触发器、是否自我引用配置错误在编译阶段就被拦截。运行时白名单SEC-005—dispatch-repository触发前处理器会校验目标仓库是否匹配配置的repository或allowed_repositories不在白名单内的目标直接拒绝。Staged 预览模式— 支持staged: true先预览将要触发的内容而不实际发出适合首次配置时的安全演练。此外dispatch-workflow还内置了速率限制连续触发之间自动间隔 5 秒保护 GitHub API 配额。跨仓库读取数据时还可以用tools.github.allowed-repos把代理的读取范围限定在特定仓库防止越权访问详见 cross-repository.md。六、实战示例从中心仓库触发其他仓库的 CI想象一个多仓库组织中心仓库负责编排组件仓库各自有独立 CI。在中心仓库的 Dispatch 工作流中声明safe-outputs: dispatch-repository: notify_service: workflow: ci.yml event_type: ci_trigger allowed_repositories: - org/service-a - org/service-b inputs: message: type: string运行时 AI 代理会从白名单中选择目标仓库携带workflow、event_type和结构化inputs发出事件接收方仓库中监听该event_type的工作流随即被唤醒。若只需固定触发单一仓库把allowed_repositories换成repository: org/service-a更简单。七、新手常见问题Q1workflow_dispatch和repository_dispatch有什么区别前者是在本仓库手动运行某个工作流UI 或 API 触发后者是向仓库广播一个自定义事件由监听该事件的工作流自行响应天然适合跨仓库编排。Q2AI 代理能任意触发仓库吗不能。目标仓库必须命中编译时声明的repository或allowed_repositories白名单否则运行时校验会直接拒绝。Q3跨仓库读取私有仓库数据怎么办在tools.github中配置github-tokenPAT 或 GitHub App即可扩展代理的跨仓库读取能力同时用allowed-repos收紧范围。总结gh-aw 的 Dispatch 模式把手动触发和跨仓库编排变成了声明式、可审计、有白名单的安全操作✅workflow_dispatch 自定义输入按需运行参数化行为✅dispatch-repository白名单内的跨仓库事件触发✅ 编译期验证 运行时校验 staged 预览三层防线保障安全建议从同仓库的workflow_dispatch入门跑通手动触发 → 传参 → 观察输出的完整闭环后再尝试dispatch-repository跨仓库编排。更多配置细节可查阅 safe-outputs.md 与 cross-repository.md。【免费下载链接】gh-awGitHub Agentic Workflows项目地址: https://gitcode.com/GitHub_Trending/gha/gh-aw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考