hotplex-updatelisted
Install: claude install-skill hrygo/hotplex
# HotPlex 更新与服务重启工作流
## 重启指令选择
- **纯重启(不替换二进制)**:必须使用 `hotplex service restart` 原子指令
- **二进制替换场景**:需要手动 `stop → sleep 2 → cp → start`,因为服务管理器需要时间释放文件句柄
## 前置条件
- 已安装并配置 `hotplex` CLI、`make` 和 `go` 1.26+
- 已安装服务(`hotplex service install`,支持 user/system 级别)
- 对安装目录(默认 `~/.local/bin/`)的写入权��
## 工作流步骤
### 步骤 1:构建新二进制
```bash
make build
```
构建失败:检查编译错误、确认 Go 版本(1.26+)、检查缺少的依赖。
### 步骤 2:验证二进制时间戳
```bash
ls -lh ./bin/hotplex-$(go env GOOS)-$(go env GOARCH) ~/.local/bin/hotplex
```
确认新构建的时间戳比当前运行的版本更新。
### 步骤 3:停止服务并等待
```bash
hotplex service stop
sleep 2 # 重要:服务管理器需要 1-2 秒释放文件句柄
```
服务未运行是正常的(命令幂等)。停止失败:检查 `hotplex service status` 和 `hotplex service logs -n 20`。
### 步骤 4:替换二进制
```bash
cp -f ./bin/hotplex-$(go env GOOS)-$(go env GOARCH) ~/.local/bin/hotplex
```
"Text file busy" → 服务未完全停止,返回步骤 3 等待更长时间。"Permission denied" → 检查 `~/.local/bin/` 写入权限。
### 步骤 5:启动服务
```bash
hotplex service start
```
启动失败:检查 `hotplex service logs`(常见问题:端口 8888/9999 被占用、配置语法错误、运行时��误、缺少依赖)。严重问题考虑回滚。
### 步骤 6:验证服务状态
```bash
hotplex service status
```
确认状态为 `active`,PID 与更新前不同(证明确实重启了)。
### 步骤 7:验证服务健康
```bash
sleep 2 && hotplex service logs | tail -20
```
成功标志:Gateway banner 正确显示、无 panic/error、至少一个适配器连接成功、Gateway 在端口 8888 监听。
### 步骤 8:功能验证(可选)
对安全策略更新:测试 `/cd` 命令。对错误消息改进:测试触发场景。对新功能:按更新内容设计验证用例。
---
## 回滚程序
更新失败时快速恢复:
```bash
# 1. 停止服务
hotplex service stop
# 2. 恢复先前二进制(有备份时)
cp /tmp/hotplex.backup.<timestamp> ~/.local/bin/hotplex
# 或从 Git 历史重新构建
git log --oneline -5
git c