资讯动态

Repo Actions Hub:在 GitHub Copilot Canvas 中浏览工作流、审查运行并手动触发 GitHub Actions

发布时间:2026/9/11 13:43:33 来源:尧图企业网站定制
Repo Actions Hub在 GitHub Copilot Canvas 中浏览工作流、审查运行并手动触发 GitHub Actions【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilotRepo Actions Hub 是 awesome-copilot 仓库中提供的一个 GitHub Copilot 扩展Canvas 画布应用它把当前仓库的 GitHub Actions 工作流、最近运行记录、工作流详情与手动触发能力集中到一个可视化画布中。读完本文你将掌握该扩展的安装方式、画布界面布局、四个核心 Agent 动作的参数语义以及其底层如何借助ghCLI 与本地 HTTP/SSE 服务完成数据加载与workflow_dispatch触发。扩展定位一个面向 GitHub Actions 的 Copilot 画布Repo Actions Hub 的核心定位可以从其插件描述中直接读出——从 Copilot 画布中浏览仓库 GitHub Actions 工作流、检查最近运行并触发手动workflow_dispatch运行见 plugins/repo-actions-hub/plugin.json。它并不是一个新的 CI/CD 平台而是把 GitHub 已经存在的能力gh workflow、gh run系列命令封装成 Copilot 生态中可交互的图形界面浏览列出仓库内全部工作流名称、YAML 路径、启停状态审查查看最近运行、工作流细节、单次运行的 Job 与 Step 状态触发对声明了workflow_dispatch的工作流手动发起运行可指定 ref 与输入参数。它由 extensions/repo-actions-hub/extension.mjs 一个单文件实现依赖github/copilot-sdk提供的joinSession、createCanvas、CanvasError等 API见 package.json。安装与加载README 提供了两种安装途径。方式一让 Copilot 安装扩展。在 Copilot 对话中请求安装已提交的扩展目录extensions/repo-actions-hubCopilot 会将该目录纳入扩展体系。方式二手动复制目录到指定作用域。将extensions/repo-actions-hub整个文件夹复制到以下任一位置作用域目标路径说明用户级~/.copilot/extensions/repo-actions-hub/对当前用户的所有项目生效项目级.github/extensions/repo-actions-hub/仅对当前仓库生效安装后在应用中重新加载扩展即可打开名为repo-actions-hub的画布。另外本仓库还同时发布为可安装插件若使用 plugins/repo-actions-hub/README.md 中描述的插件机制可执行copilot plugin install repo-actions-hubawesome-copilot画布界面Actions 与 Recent runs 双面板画布前端由 extension.mjs 中的renderHtml函数内嵌的 HTML/CSS/JS 构成整体是一个自适应亮暗主题的界面核心布局为左Actions、右Recent runs的双列网格窄屏≤1100px下自动折叠为标签页切换。顶部工具栏包含仓库信息与摘要卡片显示nameWithOwner、默认分支、更新时间并以三张卡片汇总Workflows工作流总数、Running or queued运行中/排队数、Recent failures近期失败数。其中运行中/排队按status ! completed统计近期失败按conclusion非success/neutral/skipped统计见summarize与renderRepo实现。Actions 面板逐条列出工作流每条展示工作流名称与 YAML 路径如.github/workflows/ci.yml启停状态标签active等该工作流最近一次运行的概要状态、运行编号、触发事件、分支、时间操作按钮Details打开详情模态框、Run打开运行对话框。Recent runs 面板列出最近运行记录每条展示工作流名、运行号、触发事件、分支、状态标签并提供See run在本画布内查看 Job/Step 详情与Open on GitHub跳转 GitHub 原始页面两个入口。模态框工作流详情与运行详情点击 Details 或 See run 会弹出模态框dialog支持两类视图工作流详情工作流名称与路径、是否支持workflow_dispatch显示 workflow_dispatch enabled 或 workflow_dispatch not declared、声明的输入参数列表名称、描述、类型、是否必填、默认值、该工作流在数据集内的最近运行最多 10 条、完整工作流 YAML可滚动代码块并可直接发起运行或打开 GitHub 上对应 YAML 文件运行详情运行状态与结论、Attempt 次数、创建/更新时间、提交 SHA 前 12 位、Run ID以及 Jobs 与 Steps 的树形列表——每个 Job/Step 显示名称、编号、起止时间与状态标签并附 Open job on GitHub 跳转。状态标签的着色规则体现了对 GitHub 结论集的完整映射运行中非completed为蓝色 running 态success为绿色failure、timed_out、startup_failure为红色action_required、cancelled、stale为黄色 warning 态其余结论走中性色见renderStatusPill。Agent 动作详解画布通过createCanvas注册了四个可被 Copilot Agent 调用的动作见 extension.mjs 中actions数组定义。下表汇总了其名称、参数与语义动作参数说明get_state无返回当前画布仓库的工作流与最近运行状态已有缓存则直接返回否则触发加载refresh无强制重新从 GitHub Actions 拉取工作流与最近运行并广播最新状态get_workflow_detailsworkflowId字符串或整数必填检查一个工作流报告其是否支持workflow_dispatch及声明的输入参数并附带 YAML 与最近运行run_workflowworkflowId必填、ref?、inputs?为工作流触发一次workflow_dispatch运行其中workflowId支持三种标识工作流文件名、工作流名称或工作流数据库 ID——查找时按id、name、path依次匹配见getWorkflowDetails的state.workflows.find逻辑。run_workflow的输入模型运行动作的完整 JSON Schema 定义在RUN_WORKFLOW_INPUT_SCHEMA中{ workflowId: { oneOf: [{ type: string }, { type: integer }] }, ref: { type: string, description: Optional branch or tag ref to dispatch. }, inputs: { type: object, description: Optional workflow_dispatch inputs., additionalProperties: { oneOf: [{ type: string }, { type: number }, { type: boolean }] } }, required: [workflowId] }触发前的关键校验逻辑见triggerWorkflow先通过getWorkflowDetails解析目标工作流若工作流的on:中未声明workflow_dispatch抛出workflow_dispatch_unsupported错误拒绝执行ref缺省时回落到仓库默认分支来自gh repo view --json defaultBranchRef缺省再回退为maininputs经过sanitizeInputs清洗——仅保留字符串、数字、布尔类型的键值对丢弃空键与非法类型随后逐项以-f keyvalue形式传给gh workflow run触发成功后记录一条 ephemeral 会话日志并自动refreshInstance让画布状态即时更新。画布打开参数repo、workflowLimit、runLimit打开画布时支持三个可选输入OPEN_INPUT_SCHEMA用于控制数据加载范围参数类型/约束默认值说明repostring当前工作区仓库可选的owner/repo覆盖例如github/awesome-copilot不传时从会话工作目录解析workflowLimitinteger1–200100最多加载的工作流数量runLimitinteger1–10025最多加载的最近运行数量这些值在normalizeOpenInput中归一化——非法值会回退到默认值随后传入listWorkflows/listRuns作为gh ... -L limit的分页上限。工作流列表加载后会按名称排序并为每个工作流关联最新一次运行latestRunsByWorkflowId取每个workflowDatabaseId的首条运行便于在列表中直接看到状态。源码级实现原理数据层全部经由ghCLI画布不直接调用 GitHub REST API而是统一通过runGh函数以child_process.spawn方式执行gh命令环境变量中设置GH_PAGERcat避免分页干扰。核心调用链如下能力命令关键 JSON 字段仓库解析gh repo view [owner/repo] --json nameWithOwner,defaultBranchRef,url默认分支、仓库 URL工作流列表gh workflow list --all --json id,name,path,state -L limitid、路径、启停状态运行列表gh run list --all --json ... -L limitdatabaseId、status、conclusion、event、headBranch、workflowDatabaseId等工作流 YAMLgh workflow view id --yaml --ref 默认分支原始 YAML 文本运行详情gh run view id --json ...含jobsJob/Step 树手动触发gh workflow run id --ref ref [-f keyvalue]触发结果所有命令都带-R repo.nameWithOwner与工作目录非零退出码会以 stderr 内容构造错误抛出见runGh的 close 回调。workflow_dispatch声明解析getWorkflowDetails拿到工作流 YAML 后交由parseWorkflowDispatch做一次轻量级的 YAML 扫描而不是引入 YAML 依赖。其解析策略见 extension.mjs 中parseWorkflowDispatch与辅助函数为定位顶层on:块若其内联值如on: [push, workflow_dispatch]包含workflow_dispatch直接判定支持且无输入否则查找on:下的workflow_dispatch子块若再找到inputs子块则以缩进inputsIndent 2识别每个输入键并逐个解析description、required、default、type以及options列表解析结果以{ supported, inputs }返回直接驱动运行对话框的表单渲染——type: choice或有options的输入渲染为下拉框其余渲染为文本框。从源码结构看该解析器只关心workflow_dispatch相关片段即使 YAML 中存在其他事件push、pull_request 等也不受影响这使它在画布内可以极轻量地完成是否可手动触发、需要哪些输入的判断。服务层本地 HTTP SSE 实时推送每次打开画布startServer会在本机127.0.0.1随机端口启动一个 Node HTTP 服务createServer并返回http://127.0.0.1:port/供画布 iframe 加载。该服务暴露以下端点见handleRequest方法与路径用途GET /返回画布 HTML 页面GET /api/state?refresh1读取当前状态refresh1时强制刷新POST /api/refresh重新拉取工作流与运行GET /api/workflow?id工作流详情含 dispatch 支持与 YAMLGET /api/run-details?id运行详情含 jobsPOST /api/run触发workflow_dispatchJSON bodyworkflowId/ref/inputsGET /eventsServer-Sent Events 长连接广播state事件SSE 机制broadcast/sendEvent使得后端refreshInstance一旦更新状态所有已连接的画布页面会立即收到state事件并自动重绘前端同时保留了手动Refresh按钮请求/api/state?refresh1作为兜底。运行触发完成后后端会再次refreshInstance让新触发的运行直接出现在列表中。生命周期与会话绑定joinSession通过onSessionStart、onUserPromptSubmitted、onPreToolUse三个钩子持续捕获会话的workingDirectory作为gh命令的工作目录与仓库解析依据onClose时关闭所有 SSE 客户端并关闭本地服务器。画布实例按instanceId存于instanceEntriesMap动作处理器通过requireInstance找到对应实例若画布未打开会抛出canvas_instance_missing错误。前置条件与注意事项环境依赖需要本机安装并登录 GitHub CLIgh且登录账号对目标仓库具备相应权限——读取工作流/运行需要读取权限触发workflow_dispatch需要对该仓库的 Actions 写权限。仓库上下文不显式传repo参数时画布从当前会话的工作目录解析仓库若会话尚未绑定任何仓库工作目录resolveRepoContext会抛出workspace_unavailable。不可手动触发的工作流未声明workflow_dispatch的工作流无论通过 UI 还是run_workflow动作都会被拦截workflow_dispatch_unsupported画布中其 Run 按钮也会被禁用并提示原因。数据范围工作流与运行列表受workflowLimit/runLimit限制且工作流详情的最近运行最多展示 10 条这些限制由 GitHub 分页与画布配置共同决定不是全量历史数据。插件元数据市场与网站侧的编目信息由 plugins/repo-actions-hub/plugin.json 承载其中声明了copilot plugin install repo-actions-hubawesome-copilot的安装方式、作者信息与扩展目录映射。相关文件索引文件作用extensions/repo-actions-hub/README.md扩展的安装与 Agent 动作说明本文档extensions/repo-actions-hub/extension.mjs画布服务器、数据加载、模态详情 UI 与运行触发完整实现extensions/repo-actions-hub/copilot-extension.jsonCopilot 扩展名称与版本元数据extensions/repo-actions-hub/package.json扩展编目与打包元数据入口extension.mjs、依赖github/copilot-sdkextensions/repo-actions-hub/assets/preview.png扩展目录展示用预览图plugins/repo-actions-hub/plugin.json扩展市场与官网使用的插件元数据plugins/repo-actions-hub/README.md插件安装说明copilot plugin install方式如需进一步了解扩展与插件的生态规则可继续阅读 docs/README.plugins.md 与 docs/README.agents.md若想基于 SDK 构建自己的画布扩展仓库的 cookbook/copilot-sdk 目录提供了多语言示例可供参考。【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价