ワンクリックで
branch-tidy
开发分支提交重组——分析、分组、walkthrough 确认、reset-soft 重提交、验证无内容丢失。不修改代码。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
开发分支提交重组——分析、分组、walkthrough 确认、reset-soft 重提交、验证无内容丢失。不修改代码。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
使用 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 实现环境隔离。
生成 DicePP 群分发整合离线包。Linux 整合包包含 NapCat (Docker 模板 + NapCat.Shell.zip),Windows 整合包包含 LLOneBot 桌面包。当用户要求制作、更新或检查整合离线包,或提到 full offline bundle、群文件整合包时使用。
| name | branch-tidy |
| description | 开发分支提交重组——分析、分组、walkthrough 确认、reset-soft 重提交、验证无内容丢失。不修改代码。 |
将零散的开发草稿提交重新组织为干净、可读的历史,每个 commit 独立可理解、可编译、可测试。只重组 commit 边界和 message,不修改代码内容。完成后可用 /branch-polish 清理代码遗留项。
/branch-tidy # 当前分支
/branch-tidy <branch> # 指定目标分支
确认工作区干净:git status --short 必须无输出。有未提交改动则停止。
确认 worktree 隔离:git worktree list 检查是否已在 worktree 中。不在 → 调 EnterWorktree 创建。
确认目标分支:必须是 feature 分支(feature/ 前缀),非 master/main。
建 backup 分支:git branch feature/xxx-backup,若已存在则追加 -backup-2、-backup-3。
列出提交:git log --oneline master..HEAD
逐 commit 精读:对每个 commit 必须完整阅读 git show <hash>(不得只看 --stat),理解实际改了什么逻辑、与前后 commit 的关系、是否被后续推翻。超过 15 个 commit 可分批,但不得跳过任何一个。
规划分组:
squash:
docs/dev/backlog.md 的 chore 全合成一个独立保留:
refactor(core))拆分——原始 commit 混了多个不相关改动时必须拆分,不得因"原来就在一个 commit 里"而保留混合状态。触发信号:message 用"与""和""同时""顺便"连接多主题、改了分属不同模块的文件、diff 内存在逻辑上无关联的改动块。此规则优先于迭代 squash。
何时停手——以下任一触发说明 group 太大,必须进一步拆:
重排时处理依赖:如需调整 commit 顺序(如把独立重构移到最前),先诊断目标 commit 依赖的文件是否在目标位置已存在。若不存在:
分组验真:方案完成后启动 subagent 做对抗性验真——独立阅读全部 commit diff,挑战归组合理性、遗漏拆分、遗漏 commit、边界规则触发。主 agent 逐条审查反馈后更新方案,争议项在 walkthrough 中标注。
逐组展示,每次只展示一组,等待用户回复。
【X / N】<组标题>
涉及提交:
squash: 1452487 feat(dev): 新增 dicepp-shell serve...
squash: 739a705 fix(dev): lease 改 os.link... ← 废弃方案,最终改 filelock
keep: 4ce2829 fix(dev): lease 改用 filelock... ← 最终方案
squash: 8288e3b test(dev): lease 并发测试...
→ 新 commit type/scope: feat(dev)
→ 新 commit message:
feat(dev): 新增 dicepp-shell serve 常驻 HTTP runtime 与 session lease 文件锁
- serve 子命令启动常驻 HTTP server,send 子命令收发指令
- session lease 基于 filelock OS 级文件锁,消除并发双 lease 竞态
→ 涉及文件: shell/main.py, shell/server.py, shell/session.py, ...
→ 拆分需求: 无
---
有问题可以提问、调整分组、重写 message,或回复"继续"。
标注规范:
squash: — squash 进本组;keep: — 独立保留(说明原因)← 废弃方案 — 被后续推翻的尝试;← 需拆分:A 归本组,B 归第 Y 组交互:"继续"→ 下一组;"这个拆开"/"xxx 独立保留"→ 调整后重新展示;修改 message → 重写后重新展示;"停"→ 深入解释。
最终确认:展示完整分组摘要(各组标题 + message 首行),等待确认。
动态获取 hash:引用 commit 时必须从当前 HEAD 动态读取:
git log --oneline --format='%H' master..HEAD
不得使用阶段二记录的 hash——cherry-pick/rebase 会改变 hash 值,过期 hash 导致错误。
reset 到 merge-base:git reset --soft $(git merge-base HEAD master)
逐组提交:每组 git reset HEAD 清空暂存区,git add 只暂存本组文件。
拆分一个 commit 到多个组时,用非交互方式提取目标文件的指定 diff:
git diff <source-commit> -- <target-files> | git apply --cached
这替代了 git add -p(交互式,不可自动化)。确认提取范围正确后 git commit,剩余改动留在工作区归入后续组。
若使用 fixup + autosquash 合并时遇到冲突:逐个冲突块判断哪一侧是最终想保留的状态,不预设 --theirs 或 --ours。无法判断时 git rebase --abort 后调整策略,不要强行解决。
验证无内容丢失:git diff feature/xxx-backup 必须无输出。若有差异回退到 backup 排查。
通过后报告:
提交重组完成。
原分支: feature/xxx (N 个提交)
整理后: M 个提交
git diff feature/xxx-backup 无差异 ✓
确认无误后可删除 backup:git branch -D feature/xxx-backup