news 2026/9/10 20:48:27

用 Awesome Copilot 的 Release Notes Showcase 插件撰写可发布级 Release Notes:安装、数据模型与邮件导出全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Awesome Copilot 的 Release Notes Showcase 插件撰写可发布级 Release Notes:安装、数据模型与邮件导出全解析

用 Awesome Copilot 的 Release Notes Showcase 插件撰写可发布级 Release Notes:安装、数据模型与邮件导出全解析

【免费下载链接】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

在 GitHub Copilot 的扩展生态中,Awesome Copilot(仓库GitHub_Trending/aw/awesome-copilot)汇聚了大量社区贡献的 instructions、agents、skills 与配置。其中Release Notes Showcase是一个以 Copilot 扩展 Canvas(画布)形态交付的发布说明工作台:它从 Git 标签、提交历史和 GitHub Pull Request / Issue 数据中自动生成发布说明草稿,以可视化面板进行校对与精修,并一键导出为邮件 HTML / 纯文本。阅读完本文,你将掌握该插件的安装方式、完整的数据输入模型、发布草稿的生成链路,以及如何通过 Canvas 上的 Agent Action(export_emailget_release_snapshot)把发布内容接入自动化发布流程。

插件定位与安装

插件本身由两部分构成:位于 plugins/release-notes-showcase/plugin.json 的插件清单(com.github.awesome-copilot扩展点声明),以及位于 extensions/release-notes-showcase/ 的真实扩展实现。插件描述为:“Compose and refine launch-ready release notes with contributor callouts and export-friendly output.”——即面向发布时刻、自带贡献者致谢板块、输出便于导出分发。

在支持 Copilot 插件市场的环境中,安装命令为:

copilot plugin install release-notes-showcase@awesome-copilot

安装后,Copilot 会话即可识别release-notes-showcase这个 Canvas 并提供给 Agent 调用。插件清单中的关键词(changelogcontributor-calloutsemail-exportlaunch-summaryproduct-updatesrelease-notes)也反映了它的能力边界:变更日志、贡献者点名、邮件导出、发布摘要。

说明:扩展实现依赖 @github/copilot-sdk 中"@github/copilot-sdk": "1.0.1"),并基于 SDK 的 Canvas 机制注册,源码入口为 extensions/release-notes-showcase/extension.mjs:通过joinSession({ canvases: [releaseNotesShowcaseCanvas] })将画布挂载进会话。

画布与数据模型:一个可编程的 Release Notes 结构

Canvas 的注册位于 extensions/release-notes-showcase/releaseNotesShowcase.mjs,使用createCanvas({ id: "release-notes-showcase", ... })定义。其inputSchema(L15-L101)定义了整份发布说明的数据结构,这是 Agent 向画布注入内容时唯一被允许的字段集合(additionalProperties: false会拒绝未知字段):

字段类型说明
releaseNamestring发布名称,如仓库展示名
versionstring版本号,如v1.2.0vNext
releaseDatestring发布日期
taglinestring一句话卖点(邮件头部与画布英雄区展示)
summarystring发布摘要(同时作为默认 preheader)
emailSubjectstring邮件主题
emailPreheaderstring邮件预览文本
heroStatsarray顶部指标卡,元素{ label, value }均必填
sectionsarray发布章节,元素{ title, summary }必填,可选kindmetricbullets
contributorsarray贡献者名单,name必填,可选githubHandleavatarUrlprofileUrlareasummary
communityThanksarray社区致谢的 GitHub 用户名列表(字符串)
otherChangesarray其他零散变更,text必填,可选label
callToActionobjectCTA 按钮,labelurl均必填

其中sections.kind是一个受约束的枚举,只能取三个值,对应发布说明的三种内容基调:

kind: { type: "string", enum: ["feature", "improvement", "quality"] }
  • feature:新能力与面向用户的功能(画布中显示为蓝色渐变标记,标签 “🚀 Feature work”);
  • improvement:稳定性、性能与可靠性改进(紫色,标签 “✨ Improvement”);
  • quality:基础维护与代码质量收尾(橙色,标签 “🛡️ Quality”)。

这三种 kind 也直接决定了邮件模板中章节徽章(badge)与配色的选取(emailAccent,见 L2304-L2323)。

发布数据从哪来:Git 历史 + GitHub API 双重数据源

画布不会要求你手动录入所有内容。当它被打开时,会先解析当前会话所在的仓库上下文,再按“加载已发布 Tag”或“草拟未发布内容”两种模式生成草稿。整个数据装配逻辑集中在buildReleaseFromRepository(L572-L618)。

仓库上下文解析

resolveRepositoryContext(L151-L173)按优先级依次探测仓库根目录:会话工作目录 → 会话元数据(~/.copilot/session-state/<sessionId>/vscode.metadata.jsonworkspace.yaml中的cwd:)→process.cwd()→ 扩展自身目录;随后向上逐级查找含.git的目录(findRepositoryRoot,L175-L194)。拿到根目录后,通过git config --get remote.origin.url读取远端地址(L196-L206),并用正则解析出owner/repo形式的仓库 slug(parseRepositorySlug,L208-L224,同时支持 HTTPS 与 SSH 两种格式),仓库名经humanizeRepoName转成展示名。

两种草稿模式

  1. Tag 模式:读取按创建时间倒序的标签列表(git tag --sort=-creatordate,L295-L305),选定某个 Tag 后取其上一个 Tag 作为比较基线,用git log <prev>..<tag>拉取提交(L572-L595)。若没有上一个 Tag,则退化为该 Tag 自身的历史。
  2. Unreleased 模式:以最近 Tag 到HEAD<latest>..HEAD)的提交为主体(L597-L617),同时调用 GitHub REST API 拉取自最近 Tag 日期以来合并的 PR 与关闭的 Issue——两者分别命中GET /repos/{owner}/{repo}/pulls?state=closed&sort=updated&per_page=100GET /repos/{owner}/{repo}/issues?state=closed&since=<iso>&per_page=100(L527-L570)。请求会优先使用GITHUB_TOKEN或形如COPILOT_GH_ACCOUNT_github_2E_com_*的环境变量注入 Bearer 认证(getGitHubToken,L484-L494)。

提交摘要的读取上限为 250 条(git log --max-count=250 --pretty=format:%s%x1f%an,L312-L332),并用分隔符把主题与作者分开;随后cleanCommitSubject会剥掉 Conventional Commits 前缀(如feat(scope):)和结尾的 PR 编号(#123),得到干净的标题文本。

提交自动归类

每一条提交会经过classifyCommit(L341-L352)打上feature/improvement/quality标签:

  • 主题以featfeature开头,或包含addintroducesupportnewfeature
  • fixperfrefactor开头,或包含improvstabilreliaboptimimprovement
  • 其余全部归入quality

随后toReleaseStateFromCommits(L354-L482)把归好类的提交装配为结构化状态:每个分类生成一个章节(如 “Feature work shipped”“Improvements and fixes”“Quality and maintenance updates”),取前 6 条作为 bullets;合并的 PR 单独生成 “Merged pull requests” 章节;贡献者按提交次数降序取前 6 名生成contributors卡片;其余提交与关闭的 Issue 落到otherChanges。顶部指标heroStats默认汇总Commits / Merged PRs / Closed issues / Features四项数据。

画布交互:从草稿到定稿的可视化工作流

Canvas 打开后会在本机启动一个监听127.0.0.1随机端口的 HTTP 服务(startServer,L1104-L1166),并返回画布 URL。服务端暴露四个路由:

路由方法作用
/GET渲染画布主页面(renderHtml
/actions/export-emailPOSTformat返回邮件载荷
/actions/release-optionsGET返回仓库 slug、Tag 列表与最新 Tag
/actions/load-releasePOSTmode: tag \| unreleased重建草稿状态

画布页面本身(renderHtml)由几个区块构成:

  • Hero 区:发布名、版本徽章、tagline、summary、发布日期,以及一个 “Top hit” 头条(取首个章节标题);
  • Release dashboard:右侧指标卡墙,展示heroStats,配色取自一套圆角调色板;
  • Release source:Tag 下拉选择器与两个按钮——“Load selected release”(加载已发布 Tag)与“Draft unreleased”(草拟未发布内容);
  • Top hits:按 kind 着色的章节卡片网格,每条卡片展示徽章、指标与最多 2 条 bullets;
  • Also in this releaseotherChanges列表,带彩色标签;
  • Contributors:贡献者卡片(头像、GitHub 昵称、贡献领域与摘要),以及带头像的 Community thanks 徽章墙;
  • Email export:实时预览 Subject / Preheader / CTA,并提供 Copy / Download HTML 与纯文本按钮。

两个 Agent Action:把发布内容接进自动化流程

除了页面上的按钮,同一套能力还以 Copilot Agent Action 的形式暴露给模型(L626-L668),这意味着 Agent 可以在对话中直接调用它们,把发布说明送入后续的自动化工作流:

export_email

返回“可直接用于邮件发送”的载荷,输入formathtml/text/both(默认both,schema 见 L103-L112)。返回体包含subjectpreheaderfileNameBase(由slugify("${releaseName}-${version}-release-notes-email")生成,见 L857-L876),以及按需附带的html/text。若画布尚未打开,会抛出canvas_state_missing错误,提示先打开画布。

get_release_snapshot

返回一份精简快照:title{releaseName} {version})、summary、各章节的titlekind、以及贡献者姓名列表——适合 Agent 快速读取当前发布故事的摘要,用于会议总结、PR 描述或自动化报告中引用。

邮件模板的工程细节

buildEmailHtml(L878-L1056)生成一封邮件客户端友好的 HTML:顶部隐藏的 preheader、渐变头部、hero 指标四宫格、带徽章的章节列表、“Also in this release” 列表、“Contributors in the spotlight” 贡献者卡片与社区致谢链接、底部 CTA 圆角按钮;所有动态文本都经过escapeHtml(L2334-L2341)转义,防止注入。buildEmailText(L1058-L1102)则输出对应的纯文本版本,二者内容结构完全对齐。

源码结构与二次阅读指引

理解这个插件最直接的方式是按以下顺序阅读实现文件:

  1. extensions/release-notes-showcase/extension.mjs——扩展入口,joinSession注册 Canvas;
  2. extensions/release-notes-showcase/releaseNotesShowcase.mjs——核心实现,约 2300 行,包含数据 schema、Git/GitHub 数据装配、邮件生成与画布渲染四大部分;
  3. plugins/release-notes-showcase/plugin.json——插件清单,声明了名称、作者、关键词、logo 与扩展引用;
  4. plugins/release-notes-showcase/README.md——插件层面的安装与说明文档。

整体来看,Release Notes Showcase 的典型使用闭环是:打开画布 → 用 “Draft unreleased” 从仓库历史自动生成草稿 → 在画布上核对章节分类与贡献者名单 → 通过export_email或页面按钮导出 HTML/纯文本 → 将同一份载荷接入 Agent 驱动的发布邮件与更新公告流程。由于画布基于@github/copilot-sdkcreateCanvasAPI 构建,且数据模型完全结构化,它也可以作为参考模板,帮助你基于仓库历史打造自己的发布工作流扩展。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 20:48:18

Note: this error code is no longer emitted by the compiler.

Note: this error code is no longer emitted by the compiler. 【免费下载链接】rust Empowering everyone to build reliable and efficient software. 项目地址: https://gitcode.com/GitHub_Trending/ru/rust 这行注释是整个 rustc 错误码体系中"已停用错误码&q…

作者头像 李华
网站建设 2026/9/10 20:46:15

LSSVM-ABKDE多变量回归区间预测Matlab实现

1. 项目概述&#xff1a;LSSVM-ABKDE多变量回归区间预测在工程预测和数据分析领域&#xff0c;我们常常需要处理复杂的非线性关系&#xff0c;并评估预测结果的不确定性。传统的最小二乘支持向量机&#xff08;LSSVM&#xff09;虽然能提供点预测&#xff0c;但在置信区间估计方…

作者头像 李华
网站建设 2026/9/10 20:46:11

多传感器融合技术:从基础原理到现代应用

1. 多传感器融合技术演进概述十年前我第一次接触多传感器融合项目时&#xff0c;系统还停留在简单的数据叠加阶段。如今这项技术已经渗透到自动驾驶、工业检测、智能家居等各个领域&#xff0c;成为现代感知系统的核心技术支柱。作为从业者&#xff0c;我亲眼见证了从早期卡尔曼…

作者头像 李华
网站建设 2026/9/10 20:45:28

Flask企业物资管理系统设计与多角色权限实践

1. 项目概述&#xff1a;企业物资管理系统的多角色架构设计这个基于Python Flask框架开发的企业物资采购销售管理系统&#xff0c;本质上是一个典型的B2B供应链管理解决方案。我在过去三年里为六家制造业客户部署过类似系统&#xff0c;发现这类系统最核心的价值在于通过数字化…

作者头像 李华
网站建设 2026/9/10 20:44:10

CANN/GE模型描述获取API

aclmdlGetDescFromFile 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、Ten…

作者头像 李华