원클릭으로
version-release
在开发环境创建 DicePP 可部署版本。当用户要求发版、创建 release、上线前准备、递增版本、打 tag 或构建生产版本时使用;产出供生产 version-deploy 使用的 vX.Y.Z release。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
在开发环境创建 DicePP 可部署版本。当用户要求发版、创建 release、上线前准备、递增版本、打 tag 或构建生产版本时使用;产出供生产 version-deploy 使用的 vX.Y.Z release。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
使用 DicePP Shell 工具进行交互式机器人指令验收。涉及用户可见指令、骰子结果、会话状态、多步骤流程、私聊/群聊差异或需要确认机器人实际回复时使用;开发验证时可由 auto-test-run 配合调用。
运行 DicePP Persona 真实 LLM 功能回归,客观验收生活模拟、主动消息、私聊多轮、群聊上下文、持久化和 trace。仅在用户显式调用本技能或明确要求 Persona 真实 LLM 回归时使用;不得自动触发,也不得由 subagent 自行调用。
代码审视清理——扫描变更中的遗留调试代码、废弃注释、无 backlog 引用的 TODO 等,一次确认后批量修改,跑通全量测试。
用当前 dev 源码在 5090 端口起一个 Dashboard 实例(默认仅本地 127.0.0.1,--expose 才绑 0.0.0.0),联动 dicepp-shell serve 常驻 Bot Runtime,做 Dashboard 开发联调验收。需要可视化 Dashboard 状态、调试控制通道、验证 Bot↔Dashboard 通信、测试 Dashboard 面板与真实 Bot 生命周期联动,或要在不碰生产 docker 栈的前提下用 --expose 临时把 Dashboard 暴露给外网查看时使用。
从 master 创建新的 feature 分支,基于 git worktree 实现环境隔离。
开发分支提交重组——分析、分组、walkthrough 确认、reset-soft 重提交、验证无内容丢失。不修改代码。
SOC 직업 분류 기준
| name | version-release |
| description | 在开发环境创建 DicePP 可部署版本。当用户要求发版、创建 release、上线前准备、递增版本、打 tag 或构建生产版本时使用;产出供生产 version-deploy 使用的 vX.Y.Z release。 |
| license | MIT |
| metadata | {"author":"DicePP","version":"1.0"} |
在开发环境创建可部署的 DicePP 版本。该技能负责把代码状态固化为 vX.Y.Z release, 并产出生产部署所需的 release metadata。
master 的改动发布为新的 vX.Y.Z 版本。version-deploy。pyproject.toml 的 [project].version 是唯一手工维护的项目版本源。vX.Y.Z, 由 bump-my-version 根据新版本号创建。vX.Y.ZrcN 预发布 tag(如 v3.0.1rc1);RC 会创建 GitHub Prerelease 并推送同名镜像 tag,但不会更新 latest。uv.lock 必须与 pyproject.toml 的项目版本同步;tag 指向的 release commit 内不得出现 pyproject.toml 为新版本、uv.lock 仍记录旧 dicepp 版本的状态。DicePP-vX.Y.Z-linux-amd64-offline.zip,内含 Linux amd64 Docker 镜像、docker-compose.yml、包内 checksums.sha256 和常用文档,用于国内或离线环境通过 docker load 导入镜像。.bot / help / DiceHub 展示的运行版本应从已安装包版本派生, 不维护独立硬编码版本号。docs/releases/vX.Y.Z.md。GitHub Release body 以该文件为准;发布 workflow 不把该文件作为 release asset 上传。bump-my-version 已安装, 可通过 uv sync --group dev 安装。uv lock 可用且不会降级 lockfile 格式;如果本机 PATH 上的 uv 版本过旧或来自无关环境, 先更新或显式使用可保留当前 uv.lock revision 的 uv。master 的最新状态。每个 release 必须包含 docs/releases/vX.Y.Z.md。格式如下:
# vX.Y.Z
- 镜像: ghcr.io/pear-studio/nonebot-dicepp:vX.Y.Z
- Windows: DicePP-vX.Y.Z-win64.zip
- 数据变更: yes/no
- 配置变更: yes/no
## Added
- 新增的功能
## Changed
- 行为调整
## Fixed
- Bug 修复
## Deprecated
- 废弃或移除的内容
## Risk Notes
- 升级注意事项,如数据迁移步骤、配置变更细节、手动操作等
字段含义:
镜像: 生产部署使用的 GHCR 镜像 tag。数据变更: 是否影响 data/、数据库 schema、持久化数据结构或需要执行迁移脚本。配置变更: 是否影响运行环境变量、config/、配置 schema 或配置加载行为。Added / Changed / Fixed / Deprecated: 面向所有用户的 changelog。Risk Notes: 面向部署者的详细风险说明。如包含数据迁移,在此写明迁移脚本路径和执行方式。当任一风险字段无法确认时,version-deploy 按最坏情况处理:要求备份 + 用户明确确认。
docs/releases/vX.Y.Z.md 是用户和部署者会看到的公开 release notes,不是开发流水账。编写时必须先从 diff/commit 中提炼“用户可见变化”和“部署风险”,再决定是否写入。
必须写入:
默认不要写入:
例外:如果开发基础设施变化会直接改变用户获取产物或部署产物的方式,可以把“结果”写入 release notes,但不要写实现细节。例如:
Windows 发布包现在包含 Dashboard 可执行文件。新增 Windows Playwright smoke 测试。Dashboard 现在支持独立 Docker 镜像部署。新增 Dashboard 镜像控制通道 smoke test。Linux Dashboard 首次初始化需通过命令行设置管理员密码。测试通过 route mock 覆盖 setup 表单校验。测试、CI、技能或内部流程内容若需要记录,应写在发版完成后给维护者的对话汇报中,作为“验证与内部处理”小节;也可在必要时写入开发文档/backlog,但不要写入 release metadata。
检查工作区状态
运行:
git status --short
如果有任何输出, 拒绝执行 release, 列出未提交文件并要求用户先提交或清理。
记录当前分支
运行:
git branch --show-current
保存当前分支, 用于结束后切回。
切换并同步 master
如果当前分支不是 master, 切换到 master。
git checkout master
git fetch origin master --tags
git log HEAD..origin/master --oneline
如果本地 master 落后于远程, 执行:
git pull origin master
读取当前版本和可递增选项
优先运行:
uv run bump-my-version show-bump
或从 pyproject.toml 解析当前版本。
让用户选择递增级别
向用户展示并等待明确选择:
patch: bugfix / 小修补, 如 3.0.0 -> 3.0.1minor: 向下兼容的新功能, 如 3.0.0 -> 3.1.0major: 破坏性变更, 如 3.0.0 -> 4.0.0计算目标版本并准备 metadata
根据用户选择计算 new_version 和 v{new_version}。
在执行 bump 前创建或检查:
docs/releases/v{new_version}.md
要求用户确认 数据变更 和 配置变更。可通过 diff 辅助判断, 但不能把不确定风险默认为安全。
编写 metadata 前必须先列出本次 release 的用户可见主题,至少回答:
如果一项改动只能表述为“新增测试/CI/Skill/内部工具”,通常不要写入 Added / Changed / Fixed。把它保留给发版完成后的维护者汇报。
执行版本递增
运行:
uv run bump-my-version bump <patch|minor|major>
成功后确认:
pyproject.toml 已更新到新版本。uv.lock 已同步到同一版本。运行:
uv lock
然后确认 diff 至少包含 uv.lock 中 name = "dicepp" 对应的 version = "{new_version}",且没有不合理的大范围 lockfile 格式降级。如果本机 uv 会把 revision 写回旧值,先换用更新的 uv 再重新执行。uv lock 产生了变更, 必须让这些变更进入同一个 release commit。若 bump-my-version 已经因为 commit = true / tag = true 自动创建 commit 和 tag, 执行:
git add uv.lock
git commit --amend --no-edit
git tag -f v{new_version}
推送前再次确认 git show v{new_version}:uv.lock 中的 dicepp 版本等于 {new_version}。v{new_version}。推送 release commit 与 tag
运行:
git push origin master --tags
如果 push 失败, 汇报错误和本地 commit/tag 状态, 提醒用户处理;仍执行切回原分支。
push 成功后, GitHub Actions (release.yml) 将自动:
验证构建产物可用
等待 GitHub Actions 完成后, 确认:
gh release view v{new_version} 返回 release 信息。docker-compose.ymlDicePP-v{new_version}-win64.zipDicePP-v{new_version}-linux-amd64-offline.zipgit show v{new_version}:docs/linux.md 不报错。docker pull ghcr.io/pear-studio/nonebot-dicepp:v{new_version} 不报错。checksums.sha256 存在且可用于校验内部文件;GitHub Release asset digest 可作为外层 zip 的来源校验参考。切回原分支
如果发布前不在 master, 切回原分支。
生成发版摘要
汇报:
版本: X.Y.Z -> A.B.C
Tag: vA.B.C
Release metadata: docs/releases/vA.B.C.md
镜像: ghcr.io/pear-studio/nonebot-dicepp:vA.B.C
Windows EXE: DicePP-vA.B.C-win64.zip
Linux 离线包: DicePP-vA.B.C-linux-amd64-offline.zip
数据变更: yes/no
配置变更: yes/no
推送: 成功/失败
GitHub Actions: <run URL>
如果用户明确要求把当前 pyproject.toml 版本补建为发布基线, 不执行版本递增。执行以下步骤:
docs/releases/vX.Y.Z.md 已存在且内容完整。.bot 运行版本与包版本一致。.dockerignore 已准备好。git tag vX.Y.Z
git push origin master --tags
当用户要求先验证发版链路时, 优先使用 RC 预发布版本:
3.0.0 尚未正式发布, 测试版从 3.0.0rc1 开始;已有正式版后再使用下一个版本的 RC。pyproject.toml 版本更新为目标 RC 版本, 并准备对应的 docs/releases/vX.Y.ZrcN.md。uv lock, 并确认 uv.lock 中 dicepp 版本等于目标 RC 版本;把 pyproject.toml、uv.lock 和 docs/releases/vX.Y.ZrcN.md 提交到同一个 RC release commit。git tag vX.Y.ZrcN
git push origin master --tags
ghcr.io/pear-studio/nonebot-dicepp:vX.Y.ZrcN, 不更新 :latest。RC 测试通过后, 正式发布仍使用纯数字版本 vX.Y.Z。
docs/releases/vX.Y.Z.md。version-deploy。