- Introduced Atomic Message Grouping to prevent tool-calling corruption (Issue #56) - Implemented Tail Boundary Alignment for deterministic context truncation - Added per-chat asynchronous session locking to prevent duplicate background tasks - Enhanced summarization traceability with message IDs and names - Synchronized version and changelog across all documentation files - Optimized release-prep skill to remove redundant H1 titles Closes #56
2.2 KiB
2.2 KiB
🔄 快速参考:部署更新机制 (Quick Reference)
最简短的答案
✅ 再次部署会自动更新。
工作原理 (30 秒理解)
每次运行部署脚本:
1. 优先尝试 UPDATE(如果插件已存在)→ 更新成功
2. 失败时自动 CREATE(第一次部署时)→ 创建成功
结果:
✅ 不管第几次部署,脚本都能正确处理
✅ 无需手动判断创建还是更新
✅ 立即生效,无需重启
三个场景
| 场景 | 发生什么 | 结果 |
|---|---|---|
| 第1次部署 | UPDATE 失败 → CREATE 成功 | ✅ 插件被创建 |
| 修改代码后再次部署 | UPDATE 直接成功 | ✅ 插件立即更新 |
| 未修改,重复部署 | UPDATE 成功 (无任何变化) | ✅ 无效果 (安全) |
开发流程
# 1. 第一次部署
python deploy_async_context_compression.py
# 结果: ✅ Created
# 2. 修改代码
vim ../plugins/filters/async-context-compression/async_context_compression.py
# 编辑...
# 3. 再次部署 (自动更新)
python deploy_async_context_compression.py
# 结果: ✅ Updated
# 4. 继续修改,重复部署
# ... 可以无限重复 ...
关键点
✅ 自动化 — 不用管是更新还是创建
✅ 快速 — 每次部署 5 秒
✅ 安全 — 用户配置不会被覆盖
✅ 即时 — 无需重启 OpenWebUI
✅ 版本管理 — 自动从代码提取版本号
版本号怎么管理?
修改代码中的版本号:
# async_context_compression.py
"""
version: 1.3.0 → 1.3.1 (修复 Bug)
version: 1.3.0 → 1.4.0 (新功能)
version: 1.3.0 → 2.0.0 (重大更新)
"""
然后部署,脚本会自动读取新版本号并更新。
常见问题速答
Q: 用户的配置会被覆盖吗?
A: ❌ 不会,Valves 配置保持不变
Q: 需要重启 OpenWebUI 吗?
A: ❌ 不需要,立即生效
Q: 更新失败了会怎样?
A: ✅ 安全,保持原有插件不变
Q: 可以无限制地重复部署吗?
A: ✅ 可以,完全幂等
一行总结
首次部署创建插件,之后每次部署自动更新,5 秒即时反馈,无需重启。
📖 详细文档:scripts/UPDATE_MECHANISM.md