thzxx
|
4f5f570ac8
|
fix: 修复多轮对话400/Provider通知反复弹出/浏览器环境隔离三大缺陷
1. 多轮对话第二次发消息 AI 不响应 (CRITICAL)
handlers.ts: 保存 tool 结果消息到数据库,DeepSeek API 要求 assistant 有 tool_calls 时后续必须有对应 tool 结果消息
openai-format.ts: assistant 有 tool_calls 时 content 设为 null (API 规范,空字符串会导致 400)
agent-store.ts: 前端加载历史时过滤 tool 消息,避免冗余卡片
2. Provider 切换通知每次发消息都弹出
main.ts: reloadAdapter 添加配置签名比较 (lastConfigSig),配置未变化时幂等返回 true,不再重建 adapter 或发 toast
3. 浏览器工具无环境隔离
browser-window-manager.ts: 独立 partition 隔离 Cookie/存储; 恢复 webSecurity,CORS 通过 webRequest 处理; setWindowOpenHandler 拦截 window.open; 并发互斥锁串行化 open 调用; destroy() 改用 win.destroy() + clearStorageData 清理残留
|
2026-07-12 21:21:55 +08:00 |
|
thzxx
|
97a3d3d53b
|
fix: 全面修复审计问题并优化系统提示词
**崩溃/挂死修复 (5):**
- 统一 TrayManager.isQuitting 变量,修复 Cmd+Q 无法退出
- useAgentStream 闭包过期快照 → 每次 getState()
- Agnes chatStream 添加 AbortSignal.timeout
- SSE JSON.parse 添加 try-catch 保护
- Orchestrator setTools 污染 → save/restore 模式
**功能修复 (14):**
- 上下文压缩实现 (每5轮 COMPRESSING 状态)
- 修复 requestId 硬编码空串
- ConfigService.set() 保留已有 category
- MemoryManager 新增 working 类型搜索
- PromptInjectionDefender 补全 sanitize()
- Ollama: 补全 dynamicReminders + reasoningContent
- openai-format: 所有 assistant 消息保留 reasoningContent
- SSE: finish_reason 时提前 flush tool_calls
- DeepSeek thinking effort 映射注释
- Ollama done_reason load→stop
- RateLimitHook >= 边界修复
- WorkspaceService isValid 首次启动修复
- sessions:archive IPC handler
- 托盘/窗口图标路径生产环境修复
**系统提示词优化:**
- SOUL.md 存在时不显示兜底身份,原文放最前
- 兜底身份改为中文 (MetonaAI 自身描述)
- 用户文本在前,附件内容在后
**文件上传:**
- 非图片文件不再 base64 编码,保留 JSON 结构
- 用户文本优先于文件内容
**UI 修复:**
- 首页 Logo 路径修复 (public/ + 相对路径)
- TokenUsage contextWindow 动态计算 (Provider 感知)
- 切换 Provider 同步 contextWindow
- 托盘图标始终显示 Logo (状态由右键菜单展示)
|
2026-06-30 23:17:38 +08:00 |
|
thzxx
|
7f975de20e
|
fix: 从共享工具中移除图片处理,DeepSeek 不应接收图片
问题:shared/openai-format.ts 对所有 OpenAI 兼容 Adapter 统一处理
多模态图片 → content 数组。但 DeepSeek 不支持多模态,不应发送图片。
修复:
- shared/openai-format.ts: 移除图片处理逻辑(由各 Provider 自行决定)
- AgnesAdapter.toNativeRequest: 添加多模态图片转换(OpenAI content 数组)
- DeepSeekAdapter: 不处理图片(DeepSeek 不支持多模态)
- OllamaAdapter: 已有独立的图片处理(images: [base64] 数组)
各 Provider 多模态支持:
DeepSeek ❌ 不支持 → 不发送 images 字段
Agnes AI ✅ 支持 → OpenAI content 数组 [{type:image_url}]
Ollama ✅ 支持 → images: [base64]
|
2026-06-27 21:43:53 +08:00 |
|
thzxx
|
bd6856c7e4
|
refactor: 解耦 Provider Adapter 继承关系
问题:AgnesAdapter extends DeepSeekAdapter 在架构上不合理。
DeepSeek、Agnes AI、Ollama 是三个完全不同的 API,不应有继承关系。
重构:
BaseAdapter
├── DeepSeekAdapter (独立)
├── AgnesAdapter (独立)
└── OllamaAdapter (独立)
变更:
- 新增 shared/openai-format.ts — 提取 OpenAI 兼容消息/工具格式构建
- 新增 shared/sse-stream.ts — 提取 SSE 流式解析逻辑
- DeepSeekAdapter 重写为独立继承 BaseAdapter,使用共享工具
- AgnesAdapter 重写为独立继承 BaseAdapter,使用共享工具
- OllamaAdapter 无需变更(原本就独立继承)
- adapters/index.ts 清理导出,移除隐式耦合
|
2026-06-27 21:41:43 +08:00 |
|