版本管理规范

版本 v2.1 · 2026-07-07 · 保留版本机制 · Git上传 · 会话日志 · 备份恢复

1. 一 · 备份机制

一 · 备份机制 · 二 · 版本编号规则

一 · 备份机制

自动备份触发条件

以下任一条件满足时,AI 必须在操作前执行备份:

  1. 本次指令涉及写入/修改 ≥5 个文件
  2. 修改 核心文件(index.html / protagonists.html / characters.html / 规范类页面 / style.css / toolbar 结构)
  3. 会话结束前 做最终备份

备份命令(CMD,可靠执行)

cmd /c "robocopy d:\u7f51\u6587\u5267\u672c\bloodbound d:\u7f51\u6587\u5267\u672c\bloodbound-backups\bak_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2% /E /XD .git node_modules .codebuddy bloodbound-backups"

备份仓库结构

d:\网文剧本\bloodbound-backups\
├── bak_20260627_0928\    ← 时间戳命名
├── bak_20260627_1500\    ← 每次备份独立目录
└── ...                   ← 建议保留最近 20 个版本

备份使用 robocopy 镜像模式,每次全量复制,确保完整性。单次备份约 1.6 MB,20 个版本约 32 MB。

二 · 版本编号规则
版本号含义示例场景
v1.0首次完整创建survival.html 从零构建
vX.1小幅修订(修正错误、增补1-2段)修正译名、补充一个关系条目
vX.2中等修订(新增1个完整小节)角色卡新增三观板块
vX.5中度重构(CSS 重构、样式系统升级)style.css 统计卡片新增
v2.0结构性改写(新增章节、逻辑重排)AI规范从v3.0→v4.0(预检+成本表+自检)
v3.0重大重构(合并/拆分文件、架构调整)通讯规范+角色习惯合并为通讯规范说明v3.0

首页资料版本号

首页 Hero 区域的「资料版本」标签跟随 设定与规范体系 的整体版本。当 ≥3 个规范文件发生 vX.2 以上变更时,整体版本号递增。

当前: 资料版本 v4.2(对应 CodeBuddy 深度定制版本)

2. 三 · 保存与写入流程
三 · 保存与写入流程
操作验证
1备份:执行 robocopy 全量备份确认目标目录存在且文件数 >= 源目录
2写入:workspace 临时文件 → del + copy 到 canvas确认目标文件大小 > 0 字节
3同步:canvas → bloodbound(CodeBuddy版本)\canvas确认两份文件大小一致
4预览:preview_url 打开验证渲染页面正常显示,无404/乱码/白屏
5清理:删除 workspace 临时文件.html/.ps1 临时文件已清除
6记录:更新首页版本记录表文件、版本号、更新内容三列完整
3. 四 · 恢复流程
四 · 恢复流程

路径一:自动脚本恢复(推荐)

项目已配备 rollback.py 自动恢复脚本,位于 canvas/ 目录。

命令作用
python rollback.py列出所有可用备份及时间戳
python rollback.py --latest从最近一次备份恢复(自动创建安全备份)
python rollback.py --backup bak_20260707_1430从指定备份恢复
python rollback.py --dry-run --latest预览模式,列出将被恢复的文件但不执行

恢复前脚本会自动创建 bak_safety_时间戳 安全备份,确保恢复操作本身不会导致数据丢失。

路径二:手动 robocopy 恢复

  1. 检查 d:\网文剧本\bloodbound(CodeBuddy版本)\canvas\ — 同步副本是否完好
  2. 检查 d:\网文剧本\bloodbound-backups\ — 最新备份目录
  3. 如有 references/*.md 源文件 → 可重新生成 HTML
  4. 从备份恢复:cmd /c robocopy 备份目录 canvas /E

路径三:Git 版本回退

当本地备份不可用时,可从 Git 仓库恢复到指定提交状态。

命令作用
git log --oneline -20查看最近 20 次提交,找到目标版本
git show 提交哈希:canvas/文件名 > 临时文件提取特定提交中的单个文件
git checkout 提交哈希 -- canvas/恢复整个 canvas 目录到指定提交

Git 回退前务必先备份当前文件。使用 python backup.py 创建安全快照后再操作。

恢复优先级

优先级来源工具说明
1rollback.py 自动恢复python rollback.py --latest最安全,自动创建安全备份
2bloodbound(CodeBuddy版本)robocopy同步副本,通常与主目录一致
3bloodbound-backupsrobocopy / rollback.py最新时间戳目录
4Git 仓库git checkout线上副本,按提交历史恢复
5references/*.md手动重建可重新生成 HTML 的源文件

备份完整性验证

恢复前建议先验证备份完整性:

命令作用
python backup.py --verify验证最新备份的文件数是否与源目录一致
python backup.py --list列出所有备份及其文件数
4. 五 · 版本记录维护
五 · 版本记录维护

首页「版本记录」表需在每次重大变更后更新。更新规则:

  • 文件列:以 code 格式标注文件名
  • 版本列:当前版本号(如 v4.2)
  • 更新内容列:一句话概括变更,≤30 字
  • 仅记录 vX.1 以上变更。纯修正(排版调整、标点修复)不单列
  • 新文件首次写入 == v1.0
5. 七 · 会话日志维护 — session-log.json
七 · 会话日志维护 — session-log.json

每一次会话结束前,AI 必须将本次工作内容记录到 session-log.json。是保存与审计的强制环节。

7.1 日志字段规范

字段格式说明示例
dateMM-DD会话日期,不写年份"06-27"
timeHH:MM会话开始时间(可选,同日多条必填)"13:38"
source英文全称软件来源:CodeBuddy / DeepSeek Web / Claude / GPT / Cursor"CodeBuddy"
model具体版本号模型版本,不可省略"DeepSeek-V4" / "Claude-4"
work≤25字一句话概括工作内容,精炼不罗列"主角图谱重写+星座生肖+性格优缺点"
tokens数字,单位万本次消耗的 token 估算值3.2

7.2 记录规则

#规则
1新条目插在数组最前面 — 首页按编写顺序渲染,无需再次排序
2同日多条合并 — 同一日内的多次对话合并为一条,work 字段用分号分隔
3每次写入后检查 JSON 合法性 — 逗号、引号、数组括号不可缺失
4备份前追加 — 执行备份命令前,确保本次会话内容已写入日志

7.3 示例条目

{"date":"06-27","time":"13:38","source":"CodeBuddy","model":"DeepSeek-V4","work":"主角图谱重写+星座生肖+性格优缺点","tokens":3.2}

与首页「会话日志」表联动。日志 JSON 的新增顺序 = 首页表格的渲染顺序(最新在上)。

6. 八 · "保留版本"标签 — 机制说明
八 · "保留版本"标签 — 机制说明

首页 Hero 区的「✦ 保留版本」标签是一个肉眼可见的备份状态指示器,告诉你当前版本是否已被备份保护。

8.1 它是什么

状态首页显示含义
已备份✦ 保留版本当前所有文件已通过 robocopy 完整复制到 bloodbound-backups\bak_时间戳\。如果后续修改出错,可以从这个备份恢复
未备份标签不出现当前修改尚未备份,一旦文件被覆盖或丢失,无法恢复

8.2 什么时候出现

#触发条件
1执行了 robocopy 全量备份 → 标签写入首页 HTML
2备份目标路径确认文件数 ≥ 源目录文件数 → 标签保留
3本次会话结束前执行最终备份 → 标签伴随最新备份时间戳

8.3 它不是什么

本地备份标签。Git 上传是另一条通道(见第九节)。两者的关系:本地备份 = 你的安全网;Git 上传 = 线上的副本。两个都做才算"完全保留"。

8.4 与版本号的关系

版本号(如 v5.0)是"内容到了什么阶段"。保留版本标签是"这个阶段有没有被存下来"。同一版本号可能在备份前和备份后都出现,区别在于有没有 ✦。

7. 九 · Git 上传机制 — ↑ Git 按钮
九 · Git 上传机制 — ↑ Git 按钮

首页「↑ Git」按钮将当前所有文件推送到 Gitee 远程仓库。是备份之后必须走的一步,确保线上与本地一致。

9.1 按钮状态流转

阶段按钮显示说明
待命↑ Git空闲,可点击
上传中⏳ 上传中服务器正在执行 git 操作,按钮锁定、禁止再次点击
成功✓ 已推送绿色背景,3 秒后自动恢复为 ↑ Git
失败✗ 错误信息红色背景,弹窗提示具体失败原因

9.2 服务端执行流程(serve.py)

操作作用
1获取锁防止并发上传。若已被占用则返回 HTTP 423,前端显示"上传进行中"
2写入 VERSION 戳在 canvas 根目录生成/更新 VERSION 文件,含版本号+推送时间+文件数+仓库地址
3git pull先拉取远程最新,避免冲突
4git add -A暂存所有变更
5git commit提交信息格式:Canvas Update | MM-DD HH:MM
6git push origin master推送到 https://gitee.com/beijing-zangdai_0/the-book-of-blood-covenant
7释放锁无论成功或失败,锁都会在 finally 中释放

9.3 VERSION 文件 — 上传验证戳

用途:每次上传时自动更新,包含推送时间和文件统计。打开 Gitee 仓库 → 查看根目录 VERSION 文件 → 对比推送时间与你的本地操作时间 → 若一致=上传成功,若不一致=上传未生效。

血契之书 · 版本戳
───────────────
版本号   : v5.1
推送时间 : 2026-06-27 14:50:30
HTML页   : 37+ 份
仓库地址 : https://gitee.com/beijing-zangdai_0/the-book-of-blood-covenant
───────────────
若线上此文件时间戳与你本机不同 → 上传未生效

9.4 与本地备份的关系

维度本地备份(robocopy)Git上传(↑ Git)
位置bloodbound-backups\bak_时间戳\gitee.com/beijing-zangdai_0/...
触发方式AI 检测到备份条件时自动执行人工点击 ↑ Git 按钮
恢复方式robocopy 从备份目录回拷git clone / git pull
首页指示器✦ 保留版本VERSION 文件时间戳
目的防止本地误改无法恢复线上副本 + 外链展示

推荐顺序:修改 → 本地备份(✦ 保留版本出现)→ 点击 ↑ Git 上传 → 打开 Gitee 仓库验证 VERSION 时间戳。

8. 六 · 交叉引用
六 · 交叉引用
  • — §零 步骤6(调用前备份)、§九 第11条(退出前备份)
  • — §一 文件体系总览
  • canvas/backup.py — 自动备份脚本(见第四节·路径一)
  • canvas/rollback.py — 自动恢复脚本(见第四节·路径一)
  • canvas/update-version.js — 版本号自动更新工具
  • serve.py — 本地开发服务器,含 Git Push 端点(见第九节)
  • VERSION — 版本戳文件,每次上传时自动更新(见第九节)
  • .git/hooks/pre-commit — 提交前自动检查(破折号/双井号/文件大小/版本戳)