Commit Graph

2 Commits

Author SHA1 Message Date
55906b8b7e chore(deploy): 补强部署后验证
原来只说「等 20s 看 /kernel 状态」,等于没验。进程活着 ≠ agent 起来了。
现在逐项核对,每项对应一个真实故障模式:

- 60s 内未见 'kernel ready' ⇒ 判失败并给出回滚命令 + journalctl 尾部
- 注册工具条目数(生产应 18 个左右)⇒ 少了说明插件加载异常
- 'LLM API unreachable' 次数 > 3 ⇒ 内核在 rollback 循环
  (生产设了 max_retries=100000,不可达会一直重试)
- ONNX provider 相关日志 ⇒ 缺失时应是明确错误+降级,不静默假装启用
2026-09-27 19:12:12 +08:00
9b6d946344 chore(deploy): 加生产部署方案脚本(check/backup/deploy/rollback 四段)
## 为什么需要

生产二进制是 **`-tags=onnxruntime`** 构建(86.5MB,.rodata 62.5MB),
而普通 `go build` 只有 37MB —— 差的是 ONNX Runtime 绑定。
`deploy/packaging/package-linux.sh:139` 会显式拒绝非 onnxruntime 构建:

    if ! go version -m "$homed_bin" | grep -Eq 'build[[:space:]]+-tags=.*onnxruntime'; then
        echo "ERROR: homed 不是 onnxruntime 构建,拒绝打 server/full 包" >&2

也就是说:**用错构建方式部署,依存句法分析与多模态向量化会静默失效**。
这个坑我自己踩过一次(拿普通构建去比体积,才发现的),所以脚本第一步
就卡这个判据。

## 四个动作

- `check`    只读检查:服务状态、onnxruntime 标签、libonnxruntime.so、
              模型资产、适配器清单。**不改任何东西**,可随时跑
- `backup`   备份二进制 + 适配器 + unit 文件,并**生成 ROLLBACK.sh**
- `deploy`   check → 人工确认(输入 yes)→ 备份 → install -m 0755 原子替换
              → 重启 → 8 秒后验活;失败时打印回滚命令与 journalctl
- `rollback` 用最近一次备份回滚

## 刻意不做自动回滚

回滚要不要做、什么时候做,是人的判断。脚本只负责把状态保全好,
让回滚成为一条**可执行**的命令,而不是一个自动决策。

## 部署不会碰的东西(已在 check 里显式打印)

- **适配器文件**:`d3eaff4` 的新逻辑在「无历史清单」时不动任何已存在的文件,
  所以生产的 10 个 .lua 保持原样(含那个已含 stream_index 的 openai.lua)
- **数据目录**:51G 的 models/ 与配置都不动,部署只换二进制
2026-09-27 19:11:41 +08:00