Repository navigation
Undefined v3.15.0
v3.15.0 按功能拆分 Embedding 配置与稳定性修复
本版本将嵌入模型配置按功能拆分,知识库、认知记忆与表情包可以共用默认模型或各自覆写连接、维度与指令;同时修复侧写并发合并丢失更新、Agent 技能无法加载、热更新静默失效、SIGTERM 停机缺失等多处影响长期运行的问题。
变更内容
[models.embedding]保留为全局默认模型与默认参数,新增[models.embedding.features.<name>](knowledge/cognitive/memes)按功能覆写:use_default整体继承默认表,也可按字段覆写连接信息、context_window_tokens、queue_interval_seconds、dimensions、query_instruction/document_instruction,request_params与默认表按键合并。WebUI 配置表单同步支持覆写段编辑,use_proxy的三态语义(继承 / 启用 / 禁用)改为下拉选择。- 生效配置相同的功能复用同一个 Embedder 与发车队列,重排器全局共享,避免重复加载与重复排队。
- 修复嵌入指令前缀被剥离的问题:query / document instruction 与文本直接拼接,
"passage: "这类带尾随空格的前缀现在原样保留。 - 修复认知侧写并发合并丢失更新:同一实体的「读取 → LLM 改写 → 写入」整段互斥,后一个合并基于前一个已落盘的结果继续,不再互相覆盖。
ProfileStorage新增版本读取与恢复,恢复前自动把当前内容另存为新快照(恢复操作本身可回退);新增scripts/restore_profile.py提供 list / show / restore 与--dry-run,侧写回滚不再依赖手工复制文件。 - 史官 worker 新增并发上限
[cognitive.historian].max_concurrency(默认 4),以信号量与在途计数双重约束,不再无上限并发。 - 修复随包 Agent 的 handler 无法加载:handler 模块改按真实包路径导入,
code_delivery_agent等使用相对导入的 Agent 恢复可用;注册阶段即预导入全部 handler,失败项记录load_error并从 schema 中排除,主 AI 不再看到不可用的技能。 - 配置热更新失败不再静默:更新改为步骤表逐项执行,单步异常不中断其余步骤,失败项与「未完全生效」汇总以 error 级日志输出;异步热更新任务与配置回调的异常均会被记录。嵌入 / 重排模型配置变更加入需重启提示,避免热重载静默无效。
- 新增 SIGTERM 优雅停机:容器 / systemd / supervisor 停止时不再被直接终止并跳过落盘清理,SIGTERM 与 SIGINT 收敛到同一停机事件,取消连接任务并等待收敛;停机完成后恢复系统原有信号处理器。
- 修复消息队列重试上限口径分叉:coordinator 与 QueueManager 各用一套重试上限,热更新后两者可分叉,导致等待方在仍会重试时被误判为失败、或重试已耗尽后干等到 480 秒超时;现统一由
resolve_effective_retry_count计算并与等待超时预算同口径。 scripts/reembed_cognitive.py支持维度变化迁移:检测到新旧向量维度不同时把新向量全部写入临时 collection,校验记录数后删除原库并原子换名,原库在迁移完成前保持不动,中途被杀可自动清理或从临时库恢复,记录不丢;--dry-run不做任何写入。- 依赖与配置清理:crawl4ai 与 langchain-community 改为必需依赖,删除「未安装则降级」的静默回退(crawl4ai 环境异常时启动降级为网页获取不可用并以 error 日志提示修复,不再让 Bot 启动崩溃);移除零引用的死配置
cognitive.historian.rewrite_max_retry、无调用方的SecurityService.check_rate_limit/record_rate_limit(限流由 rate_limiter 承担)与死依赖 imgkit、croniter。 - CI 补齐治理:工作流收敛只读权限、并发取消与任务超时,前端行为测试真实执行而非静默跳过,新增 Python 3.11 / 3.13 兼容矩阵,测试开启 65% 覆盖率门禁。