[Unreleased]
2026-09-06 16:27:52作者:宗隆裙
[Unreleased]
<一段有力的开场段:这个 release 的主题是什么、为什么重要。 必须锚定到已交付的具体变更,禁止空泛吹捧。>
<一段关于重大技术转向的段落(如适用)。>
<Feature/Theme Group>
- 带具体细节的条目
- 有 PR 时引用 PR(如 [#123],链接参考定义在文件底部)
- ...
Bug Fixes
- ...
对照仓库中真实的历史章节,这个骨架是被严格执行的:
- **开场叙事段**:`## [0.5.0]` 以 "**The Capture release.** Voicebox stops being just a voice-cloning studio and becomes a full AI voice studio." 开篇——一句话点题,随后直接落到"按住全局热键说话、松手文本落入焦点输入框"等具体功能;
- **主题分组**:同一版本下按 `### Dictation`、`### Personality`、`### Agents`、`### Refinement`、`### Stories` 等业务主题分组,而不是按 commit 顺序罗列;
- **PR 可追溯**:修复类条目普遍标注 PR/Issue 编号,如 0.4.5 章节中的 "(#530, fixes #526)"。
### 风格指南(Style Guidelines)
Skill 原文列出的六条风格规则,逐条值得展开:
| 规则 | 含义与仓库实证 |
| --- | --- |
| **Factual and specific(事实、具体)** | 每个论断都能追溯到真实 commit 或 PR。例如 0.4.3 章节对 DMG 公证的修复精确到 "the release workflow now submits each DMG to notarytool, staples the ticket, verifies with spctl",这是从 commit/PR 实现细节提炼的,而非泛泛的"修复了公证问题"。 |
| **Narrative over list(叙事优先于列表)** | 先写讲故事的问题引入段落,再用 bullet 支撑。0.5.0 用两段话讲清"从克隆工具到声音工作室"的定位变化,才进入功能列表。 |
| **Group by theme, not by commit(按主题分组,不按 commit)** | 分组标题是描述性业务名("Frozen-Binary Reliability"、"Voice Profile UX"),而非 commit hash 或模块路径。 |
| **Reference PRs where they exist, but don't fabricate them(有 PR 就引用,绝不编造)** | 与"禁止编造"的全局事实约束一致;草稿阶段拿不准编号时宁可不写。 |
| **Skip trivial chores(跳过琐碎事务)** | 错别字修复、CI 微调等,除非它们构成整个 release 的主体,否则不写入。 |
| **Match the voice of existing releases(对齐既有语气)** | Skill 明确要求参考 [CHANGELOG.md](https://gitcode.com/GitHub_Trending/voicebox1/voicebox/blob/51f49dea198384b4eb6087b72c17057c6eb1c1cd/CHANGELOG.md?utm_source=gitcode_repo_files) 中的 v0.2.1 和 v0.2.3 条目作为语气基准——前者是"引擎总览 + 表格"式的里程碑叙事,后者是"it works in dev but not in prod"式的幽默自嘲开场。两者展示了该项目 changelog 允许的语气光谱:技术里程碑可以宏大叙事,hotfix 可以用口语化标题。 |
## 五、边界情况:没有变更时怎么办
Skill 专门规定了空场景的处理:
> If `git log "$LAST_TAG"..HEAD` is empty, leave the `[Unreleased]` section empty (just the heading) and tell the user there's nothing to draft.
即:如果最近 tag 以来没有任何 commit,就**保留空章节(只有标题)**并明确告知用户"没有可起草的内容",而不是用历史内容填充或跳过更新。这与第 3 步的"章节必须存在"不变式一致——`[Unreleased]` 永远在,但内容可以为空。
## 六、仓库佐证:草稿如何流入定稿、CI 与 UI
草稿 skill 不是孤立存在的,仓库中的三个环节印证了它的上下游:
### 6.1 下游定稿:release-bump skill
[.agents/skills/release-bump/SKILL.md](https://gitcode.com/GitHub_Trending/voicebox1/voicebox/blob/51f49dea198384b4eb6087b72c17057c6eb1c1cd/.agents/skills/release-bump/SKILL.md?utm_source=gitcode_repo_files) 在 Prerequisites 中写明:"[Unreleased] section should already contain the release narrative. If it's empty or stale, run the draft-release-notes skill first."(若草稿为空或过期,先跑 draft-release-notes)。其定稿流程为:
1. 校验工作树干净(除 `CHANGELOG.md` 外不应有未提交变更);
2. 读取 `.bumpversion.cfg` 中 `current_version`(当前仓库为 `0.5.0`),确定 patch/minor/major;
3. 把 `[Unreleased]` 正文"盖章"为 `## [X.Y.Z] - YYYY-MM-DD`,并更新文件底部的 compare 链接参考;
4. `git add CHANGELOG.md` 后运行 `bumpversion --allow-dirty <level>`,由 [.bumpversion.cfg](https://gitcode.com/GitHub_Trending/voicebox1/voicebox/blob/51f49dea198384b4eb6087b72c17057c6eb1c1cd/.bumpversion.cfg?utm_source=gitcode_repo_files) 驱动同时更新 9 个版本载体文件(两个 `package.json` 家族共 5 处、`tauri.conf.json`、`Cargo.toml`、`backend/__init__.py` 等),创建 `Bump version: X.Y.Z → A.B.C` 提交并打 tag `vA.B.C`。
`.bumpversion.cfg` 的内容与 skill 描述完全吻合:`commit = True`、`tag = True`、`tag_name = v{new_version}`,且列出的每个 `bumpversion:file` 条目都对应定稿 commit 中应出现的文件。
### 6.2 CI 自动消费:tag 推送后提取 CHANGELOG 作为 Release 正文
[.github/workflows/release.yml](https://gitcode.com/GitHub_Trending/voicebox1/voicebox/blob/51f49dea198384b4eb6087b72c17057c6eb1c1cd/.github/workflows/release.yml?utm_source=gitcode_repo_files#L178-L198) 中有一个 "Extract release notes from CHANGELOG.md" 步骤,用 sed 按章节边界精确截取对应版本区间:
```bash
NOTES=$(sed -n "/^## \[${VERSION}\]/,/^## \[/{/^## \[${VERSION}\]/d;/^## \[/d;p;}" CHANGELOG.md)
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0627
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
最新内容推荐
Penpot CHANGES.md 深度解读:从 2.0 到 2.18 的设计能力演进与自托管运维迁移指南OpenTelemetry Go SDK 版本发布全流程:以 Moby 仓库中 vendored 的 otel 模块为例从 CHANGES.md 解读 @penpot/library:Penpot 编程式构建 .penpot 文件库的 API 演进与实战指南last30days-skill 版本演进全解:从 CHANGELOG 读懂多源研究引擎的五年架构变迁get-shit-done 的 Changeset-fragment 工作流:用 per-PR 碎片从根本上消灭 CHANGELOG 合并冲突MemPalace Hook Write Routing:钩子触发写入的守护进程路由策略与 fail-closed 保障Bitcoin Core 内嵌 libsecp256k1 的版本演进全解析:基于 CHANGELOG 的模块、ABI 与构建系统变迁Kubernetes 中的安全路径解析:filepath-securejoin 依赖从 v0.1.0 到 v0.7.0 的演进全解读Twenty SDK 2.8 版本变更精读:enqueueJobs 批量入队、依赖归类调整与运行时注入机制get-shit-done 贡献指南:Issue-First 流程、Changeset 机制与 node:test 测试纪律
项目优选
收起
deepin linux kernel
C
33
18
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.13 K
2.75 K
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
暂无描述
Markdown
897
5.8 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
529
593
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
915
1.83 K
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.58 K
1.01 K
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.35 K
1.46 K
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.01 K
515
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
388