feat: v0.8.2 安全纵深补全 · 协议保真 · 断链修复 — 图片SSRF/根MEMORY.md保护根治 · Anthropic thinking回传+pause_turn续传 · 2523 用例全量回归 + E2E 扩充
CI / 类型检查 + Lint + 单元测试 (push) Failing after 9m45s
CI / 全量测试 (Electron ABI) (push) Failing after 6m28s
CI / 产物编译验证 (push) Successful in 11m18s

This commit is contained in:
2026-09-08 14:30:27 +08:00
parent 69776e447f
commit 4cd6e997b5
86 changed files with 4303 additions and 956 deletions
+8 -4
View File
@@ -546,7 +546,10 @@ async function initialize(): Promise<void> {
// 配置了 memory.embeddingModel(如 nomic-embed-text)时启用;否则 embedder 返回
// nullMemoryManager 全量回退纯 TF-IDF 检索(历史行为兼容)。
// adapter 经闭包动态读取 —— 故障转移/热重载后无需重新装配。
// v0.8.2 P3-1: 注入 modelName 指纹 —— 用户更换 embedding 模型后旧向量按
// 模型不匹配处理(检索时惰性重算自愈),不再产生跨模型噪声分数。
memoryManager.setEmbedder({
modelName: (configService.get<string>('memory.embeddingModel') ?? '').trim() || undefined,
embed: async (text) => {
const adapter = agentEngineManager.getAdapter();
if (!(adapter instanceof OllamaAdapter)) return null;
@@ -1052,10 +1055,11 @@ if (!gotSingleInstanceLock) {
log.error('[Startup] Initialization failed:', err);
try {
dialog.showErrorBox(
'MetonaAI Desktop 启动失败',
`初始化过程中发生错误,应用即将退出。\n\n${(err as Error)?.message ?? String(err)}\n\n` +
'可能原因:工作空间目录不可写、数据库文件损坏。\n' +
'可尝试在设置中切换工作空间路径后重新启动。',
// v0.8.2 P2-5: 启动失败对话框文案出层(ui.locale 已随配置初始化)
mt('app.dialog.startupFailed.title'),
mt('app.dialog.startupFailed.body', {
message: (err as Error)?.message ?? String(err),
}),
);
} catch {
// showErrorBox 失败(极端环境)时仅保留日志