CountBot 更新指南:源码覆盖、GitHub 命令升级与桌面版更新
引言
CountBot 更新时,程序文件本身并不重要,真正需要保护的是你的运行数据:
- 数据库文件(
data/countbot.db):包含所有配置、会话历史 - 工作空间目录(
workspace/):包含技能、记忆、临时文件
默认情况下,数据库位于运行目录下的 data/countbot.db,工作空间位于 workspace/。如果你修改过工作空间路径,更新前应备份实际生效的目录。
本文会按三种最常见的方式,详细说明 CountBot 的更新流程:
- 下载源码后覆盖更新
- 使用 GitHub 命令更新
- 下载桌面版包进行更新
更新前必须先做的事
无论采用哪一种更新方式,第一步都应该先停止当前正在运行的 CountBot。
原因很简单:
- SQLite 在多实例并发写入时容易出现锁库
- 正在运行时覆盖文件,可能导致更新不完整
- 配置、日志、临时文件可能还在写入中
常见停止方式如下:
- 源码运行:在启动终端中按
Ctrl+C - 桌面版:先完全退出桌面程序
systemd部署:执行sudo systemctl stop CountBot
最小备份范围
如果你只做最小化备份,至少应保留下面两项:
workspace/data/countbot.db
如果你希望回滚更稳妥,建议直接完整备份下面这些目录:
workspace/data/- 可选:你 自己额外维护的部署脚本或自定义配置文件
macOS / Linux 备份示例
mkdir -p backup
cp -a workspace "backup/workspace_$(date +%F_%H%M%S)"
cp data/countbot.db "backup/countbot_$(date +%F_%H%M%S).db"
如果你想完整备份 data/:
mkdir -p backup
cp -a data "backup/data_$(date +%F_%H%M%S)"
cp -a workspace "backup/workspace_$(date +%F_%H%M%S)"
Windows PowerShell 备份示例
New-Item -ItemType Directory -Force .\backup | Out-Null
Copy-Item .\workspace .\backup\workspace -Recurse -Force
Copy-Item .\data\countbot.db .\backup\countbot.db -Force
如果你的工作空间已经改到其他目录,例如 D:\CountBotWorkspace,那就应该备份那个实际目录,而不是当前目录下的 workspace/。
方式一:下载源码后覆盖更新
这种方式适合没有用 Git 管理仓库、或者习惯直接下载 ZIP 压缩包更新的用户。
很多用户会习惯把新版本压缩包直接解压到旧目录上方原地覆盖,但这其实不是最稳妥的做法。更推荐的方式是:
- 先把新版本解压到一个新目录
- 再把旧版本中的数据目录迁移过去
- 验证成功后再清理旧目录
这样做的优点是回滚简单,旧版本也不会被立即破坏。
推荐流程
- 停止当前 CountBot。
- 备份
workspace/和data/countbot.db。 - 从 GitHub 或 Gitee 下载新的 CountBot 源码压缩包。
- 解压到一个新的目录,例如
CountBot_new/。 - 将旧目录中的
data/和workspace/复制到新目录。 - 进入新目录,重新安装依赖。
- 启动新版本并验证功能。
- 验证通过后,再决定是否删除旧版本目录。
示例命令
cd CountBot_new
pip install -r requirements.txt
python start_app.py
如果你平时是源码桌面模式运行:
python start_desktop.py
这一方式的关键注意点
- 不建议直接"全目录无差别覆盖"
data/和workspace/不应被新版本空目录覆盖掉- 如果你有自己的本地修改,最好不要依赖手工覆盖来保留它们
- 如果更新后前端打不开,可能需要重新构建前端
在需要重新构建前端时,可执行:
cd frontend
npm install
npm run build
cd ..
这一步通常只在前端构建产物缺失、损坏,或者你拿到的是纯源码目录时需要。前提是本机已安装 Node.js 18+。
方式二:使用 GitHub 命令更新
这种方式适合你最初就是通过 git clone 拉取 CountBot 仓库的场景。相比手工覆盖,它的优势是版本来源清晰,回滚也更容易。
先检查当前仓库状态
git status
git remote -v
如果工作区是干净的,可以直接执行:
git fetch --all --tags
git pull origin main
pip install -r requirements.txt
python start_app.py
如果你的默认分支不是 main,请替换成实际分支名。
如果本地做过修改,先暂存再更新
git stash push -u -m "before-countbot-upgrade"
git fetch --all --tags
git pull --rebase origin main
pip install -r requirements.txt
如果你还需要恢复自己的修改:
git stash pop
如果出现冲突,就先处理冲突,再继续启动程序。
升级到指定版本标签
如果你不想跟随主分支最新提交,而是固定升级到某个已发布版本标签,可以执行:
git fetch --tags
git checkout v0.6.0
pip install -r requirements.txt
如果你不希望进入 detached HEAD,也可以先新建分支后再切换到目标标签。
Git 更新方式的注意点
- 更新前依然要先备份
workspace/和data/countbot.db - 如果本地改动较多,直接
git pull很容易产生冲突 - 如果依赖版本发生变化,
pip install -r requirements.txt不要跳过 - 如果前端页面异常,可以补一次
frontend构建
方式三:下载桌面版更新
如果你使用的是 CountBot 桌面版,那么升级逻辑和源码版其实没有本质区别。
CountBot 的桌面版并不是另一套单独维护的后端,而是仍然使用同一套数据库、同一套工作空间和同一套后端逻辑,只是换成了桌面窗口来承载前端界面。因此,桌面版升级最核心的事情仍然是:
- 保留
data/ - 保留
workspace/ - 替换程序本体
推荐流程
- 完全退出旧版桌面程序。
- 备份旧版本目录里的
data/和workspace/。 - 从 Releases 页面下载新的桌面版安装包或压缩包。
- 将新版本解 压到新的目录。
- 把旧版本中的
data/和workspace/复制到新目录。 - 启动新版本并检查历史数据是否仍然存在。
为什么不推荐原地覆盖
原地覆盖的问题在于,一旦新版本有问题,旧版文件也已经被你覆盖掉了,回滚会很麻烦。
更稳妥的做法始终是:
- 旧目录保留
- 新目录单独部署
- 数据目录迁移
- 验证通过后再清理旧版本
桌面版常见问题
- Windows 缺少 WebView2 时,桌面窗口可能无法打开
- Linux 可能需要安装
libwebkit2gtk - 如果你并不是使用打包版,而是通过
python start_desktop.py运行,那本质上仍属于源码更新范畴
更新完成后的检查清单
升级完成后,不要只看"程序能不能启动",还应做一次最基本的业务验证。
建议至少检查下面这些内容:
- 页面是否能正常打开
- 历史会话是否仍然存在