- Markdown 解析器:内联正则 → marked 库(完整 GFM 支持) - HTML 净化器:内联 DOM 遍历 → DOMPurify(业界标准) - crypto.ts:删除 sha256js/xorBytes 死代码回退路径 - 消除 5 个文件中 escapeHtml/formatSize 重复定义 - 版本号升级至 5.1.5
34 KiB
34 KiB
📋 更新日志
分支结构
桌面版主线(master):
metona-ollama-desktop-v3.2.6→metona-ollama-desktop-v3.3.4→metona-ollama-desktop-v4.0.0→metona-ollama-desktop-v5.0.0→metona-ollama-desktop-v5.0.1→metona-ollama-desktop-v5.1.0→metona-ollama-desktop-v5.1.1→metona-ollama-desktop-v5.1.2→metona-ollama-desktop-v5.1.3→metona-ollama-desktop-v5.1.4→metona-ollama-desktop-v5.1.5(当前发布分支)
Web 版历史已独立为 metona-ollama-web 仓库(v1.1.0 ~ v4.0.3)。
桌面版(Desktop)
Desktop v5.1.5 — 第三方库替换 & 代码精简
- ♻️ Markdown 解析器替换:内联实现 →
marked库- 移除
marked-config.ts中约 80 行正则解析器(仅支持基本 GFM) - 接入
marked库:完整 GFM 支持(表格、删除线、任务列表、自动链接等) - 渲染后自动经 DOMPurify 净化,双重安全
- 链接/图片安全检查保留(阻止 javascript: / vbscript: / file: 等危险协议)
- 移除
- ♻️ HTML 净化器替换:内联实现 →
DOMPurify- 移除
sanitizer.ts中约 70 行 DOM 遍历净化器 - 接入
DOMPurify(业界标准 HTML 净化库) - 保留原有的白名单标签/属性/URI 协议配置
- 移除不再需要的
SAFE_URI_SCHEMES导出
- 移除
- 🧹 精简 crypto.ts:删除死代码
- 移除
sha256js()纯 JS SHA-256 回退实现(~60 行) - 移除
xorBytes()异或加密回退(~10 行) - 移除
SECURE标志及所有分支判断 - Electron 环境下
crypto.subtle始终可用,回退代码从未执行 - 旧版 XOR 加密的 .metona 文件提供明确错误提示
- 移除
- 🧹 消除重复代码
escapeHtml()在 5 个文件中重复定义 → 统一从utils.ts导入formatSize()在workspace-panel.ts中重复定义 → 统一从utils.ts导入- 消除文件:
log-service.ts、prompt-modal.ts、tool-confirm-modal.ts、workspace-panel.ts
- 📝 版本号更新至 5.1.5(7 个文件同步更新)
Desktop v5.1.4 — 工具卡片迁移 & 空闲状态优化 & 工作流修复
- ♻️ 工具卡片从聊天区域迁移到工作空间面板
- 工作空间新增「🔧 工具」页签,专门展示工具调用卡片
- 工具执行时自动切换到工具页签
run_command执行时自动切换到终端页签- AI 回复消息不再显示工具卡片,保持聊天区域简洁
- 工具页签支持清空、自动滚动、状态统计(共 N 个 ✅N ❌N)
- ✨ 终端空闲状态优化
- 空闲时显示 ASCII 羊驼 Logo(珊瑚橙色调 + 呼吸光效动画)
- 展示当前工作空间目录信息
- 每 6 秒轮转一条使用小贴士(10 条随机,淡入淡出效果)
- ✨ 工具和文件页签空闲状态优化
- 工具页签:8 个分类图标网格(文件/命令/搜索/浏览器/Git/记忆/技能/代理)
- 文件页签:大文件夹图标 + 当前目录路径 + 引导文案
- ✨ 历史会话工具调用展示
- assistant 消息下方新增可折叠的工具调用摘要
- 默认收起,点击展开查看每个工具的参数和结果
- 🔧 自动记忆优化
- 禁止自动提取规则类型,规则只能用户手动添加
- 触发门槛提升:对话消息从 4/6 条提升到 10 条才触发
- 最大提取数从 5 条降到 3 条
- 提示词增加详细的"不要提取"负面清单
- 结果层双重过滤(即使模型返回 rule 也被拦截)
- 🔧 工具页签自动切换协调性修复
addToolCard消除双重渲染(switchToTab 内已含 renderPanel)- 终端忙碌时其他工具不再打断用户看命令输出
run_command结束后自动延迟切到工具页签updateToolCard只在当前是工具页签时才刷新
- 🔧 工作流完整性和协调性修复
- 新一轮对话自动清理上轮工具卡片和终端输出
- 中止 Agent Loop 时保留已执行的工具记录(不再丢失)
- 切换历史会话时清理工作空间状态
- handleRetry 保存 think 内容(之前丢失)
- 中止流程统一:agent-engine 抛出 AbortError 由消费方处理(消除重复消息风险)
- 📝 版本号更新至 5.1.4(7 个文件同步更新)
Desktop v5.1.3 — 代码质量 & 架构优化 & 记忆数据治理
- 🔧 修复 any 滥用(类型安全)
(window as any).metonaDesktop→window.metonaDesktop(已有类型声明)- IndexedDB 迁移代码
any[]→Record<string, unknown>[] - 回调函数
: any→ 具体类型ChatSession | null - 全局函数
(window as any).__toggleCron→WindowWithCron接口 - 消除 78 处 → 38 处(减少 51%)(保留 API 参数构造等合理场景)
- ♻️ 拆分 tool-handlers.ts(架构优化)
- 1308 行单文件 → 4 个模块:
tool-handlers-shared.ts:共享工具函数和类型tool-handlers-fs.ts:15 个文件系统操作(591 行)tool-handlers-system.ts:6 个系统网络操作(530 行)tool-handlers-git.ts:1 个 Git 操作(226 行)
- 原
tool-handlers.ts改为纯 re-export,ipc.ts 无需修改
- 1308 行单文件 → 4 个模块:
- ✨ 记忆数据治理(借鉴 Hermes Agent)
- 记忆过期衰减:90 天未使用的记忆自动降低 importance(rule 受保护)
- 清理评分新增 agePenalty:创建超 90 天扣分
- 向量存储错误日志增强:包含记忆 ID、内容摘要、嵌入模型、错误栈
- 去重增强:新增前缀匹配(前 50 字符相同视为重复)
- 📝 版本号更新至 5.1.3(7 个文件同步更新)
Desktop v5.1.2 — 预算警告 & Shadowing 防护 & 记忆容量管理
- ✨ 预算警告临时层(借鉴 Hermes Agent)
- Agent Loop 接近迭代上限时自动注入临时提示
- 剩余 ≤5 轮:WARNING 级别,提示模型准备收尾
- 剩余 ≤2 轮:CRITICAL 级别,要求模型立即给出最终答案
- 临时消息在 API 调用后自动清理,不影响对话历史
- ✨ MCP Shadowing 防护(借鉴 Hermes Agent)
- MCP 工具注册时自动检测与内置工具重名
- 重名工具自动跳过,日志输出警告信息
- 防止外部 MCP Server 覆盖内置工具导致行为异常或绕过安全检查
- ✨ 记忆容量限制(借鉴 Hermes Agent)
- memories 表上限 500 条,超限时自动清理
- 清理策略:按综合评分排序,清理后 20%
- 评分公式:importance × 2 + useCount × 3 + recencyBonus(7 天内使用过 +5)
- rule 类型记忆受保护,不会被自动清理
- 📝 版本号更新至 5.1.2(7 个文件同步更新)
Desktop v5.1.1 — 搜索引擎替换 & 超时移除 & 日志导出
- 🔧 搜索引擎:DuckDuckGo → Bing + 百度 + Google
- 移除 DuckDuckGo 搜索引擎(国内不可达,每次浪费 8 秒超时)
- 首选 Bing 搜索,百度作为备用,Google 作为兜底
- 新增
parseBaiduResults()和parseGoogleResults()解析函数 - 移除所有搜索引擎的超时限制
- 🔧 移除全部超时限制
- 移除 Agent Loop 全局 10 分钟总超时(
MAX_LOOP_TIME) - 移除流式响应 2 分钟超时(
STREAM_TIMEOUT) - 移除工具执行 30 秒超时(
TOOL_EXEC_TIMEOUT) - 移除 web_fetch 30 秒超时
- 移除 download_file 60 秒超时
- 现在所有操作无超时限制,宁可等待也不中断
- 移除 Agent Loop 全局 10 分钟总超时(
- 🔧 Agent 最大轮数改为 85 轮(默认)
- 从硬编码 15 轮改为从 state 读取,默认 85 轮
- 设置面板新增「Agent 最大轮数」配置项
- 启动时从数据库恢复设置值
- ✨ 执行日志导出
- 日志面板新增「📥 导出」按钮
- 导出为带时间戳的 TXT 文件
- 支持原生保存对话框(桌面端)和浏览器下载(回退)
- 🔧 改进 TOOL_USAGE_GUIDE
- 新增规则 13:严禁猜测或编造 URL 路径,所有 URL 必须从搜索结果获取
- 新增规则 14:不要忽视来自知乎、CSDN 等中文来源的搜索结果
- 修复工具去重缓存 key 逻辑,失败工具不再被误杀
- 🔧 esbuild 反引号兼容性修复
agent-engine.ts多余反引号导致 esbuild 模板字面量解析错误- 正则表达式中反引号改用
String.fromCharCode(96)拼接 memory-manager.ts、marked-config.ts中类似正则改用new RegExp()构造器- 关键教训:esbuild 0.21.5 对源码中反引号字符解析有兼容性问题
- 📝 版本号更新至 5.1.1(7 个文件同步更新)
Desktop v5.1.0 — Hermes 借鉴 & 记忆/Skill 系统增强
- ✨ 记忆 replace/remove 操作(借鉴 Hermes Agent)
- 新增
memory_replace工具:子串匹配 old_text,替换为 new_content - 新增
memory_remove工具:子串匹配 old_text,删除对应记忆 - 两种目标:memory(Agent 笔记)和 user(用户画像)
- 唯一匹配约束:匹配多条时返回错误,要求更精确的子串
- 新增
- ✨ Skill 渐进式加载(借鉴 Hermes Agent)
- 新增
skill_list工具(Level 0):返回技能名称、描述、成功率、工具链预览 - 新增
skill_view工具(Level 1):返回完整工具链、参数提示、使用统计 - Agent 先看列表,需要时再加载详情,节省 token
- 新增
- ✨ 记忆安全扫描
- 记忆写入前自动检查 prompt injection 模式(ignore previous / you are now a 等)
- 检测敏感信息(SSH 私钥、API Key、信用卡号)
- 检测不可见 Unicode 字符
- 拦截时返回明确错误信息
- 🔧 迭代预算可配置化
- Agent Loop 最大轮数从硬编码 15 改为 state 读取(
maxTurns,默认 15) - 用户可通过设置面板调整
- Agent Loop 最大轮数从硬编码 15 改为 state 读取(
- 🔧 工具结果截断按工具配置
- 新增
TOOL_MAX_RESULT_SIZE常量,每个工具独立配置最大返回字符数 - web_fetch: 20000, web_search: 3000, read_file: 15000, run_command: 10000 等
- 新增
- 🔧 更新 AGENT_SYSTEM_PROMPT
- 工具数量 34 → 38
- TOOL_USAGE_GUIDE 新增记忆管理和技能查看规则
- 📝 版本号更新至 5.1.0(7 个文件同步更新)
Desktop v5.0.1 — 搜索引擎优化 & Agent 去重修复
- 🔧 修复 DuckDuckGo 搜索超时过长
- 超时从 15 秒降至 8 秒(国内环境 DuckDuckGo 通常不可达,减少等待)
- 添加 Google 作为第三搜索引擎兜底(DuckDuckGo → Bing → Google)
- 新增
parseGoogleResults()解析函数 - 搜索 User-Agent 统一更新为 Chrome 131
- 🔧 修复 web_fetch 无法抓取部分网站
- User-Agent 从
MetonaOllama/1.0改为 Chrome 131 UA(部分网站屏蔽非浏览器 UA) - 超时从 15 秒增加至 30 秒(大页面加载更慢)
- 新增
Accept和Accept-Language请求头
- User-Agent 从
- 🔧 修复 Agent Loop 跨轮去重误杀失败工具的重试
- 原逻辑:连续两轮工具调用(工具名+参数)完全相同即终止
- 问题:上一轮
web_fetch超时失败,下一轮同样调用是合理重试,却被当作重复终止 - 修复:仅对成功的工具调用做去重,失败的允许重试
- 新增
prevLoopSuccessKeys替代prevLoopToolKeys
- 🔧 优化 TOOL_USAGE_GUIDE(新增 3 条规则)
- 新增规则 2:web_fetch 失败时直接用 web_search 摘要回答,不要反复重试同一 URL
- 新增规则 3:禁止抓取 SPA 页面(GitHub releases、npm 等),直接从搜索结果提取信息
- 新增规则 4:搜索查询要进化,不要重复相同的查询
- 🔧 更新 AGENT_SYSTEM_PROMPT
- 工具数量描述从 25 → 34
- 核心规则新增:web_search 结果中的 snippet 已包含关键信息,不要忽视
- 核心规则细化:同一 URL 连续失败 2 次后不要再尝试
- 多工具协同示例新增:web_fetch 失败时直接用搜索结果回答
- 📝 版本号更新至 5.0.1(7 个文件同步更新)
- 📦 构建产物
Metona Ollama Setup 5.0.1.exe(82MB)- Gitee Release v5.0.1-desktop(ID: 620560)
- Wine 9.0 已安装,npm 编译无错误,构建一次通过
Desktop v5.0.0 — 浏览器控制 & MCP & 技能系统 & 全面重构
- ✨ MCP (Model Context Protocol) 完整实现
- 主进程
mcp-manager.ts:JSON-RPC 2.0 over stdio 通信 - 支持
initialize握手、tools/list工具发现、tools/call工具执行 - 7 个 IPC 通道:startServer / stopServer / stopAll / callTool / getTools / getStatuses / refreshTools
- 渲染端
mcp-client.ts:配置管理 + 服务器生命周期 + 工具定义获取 + 工具执行 tool-registry.tsMCP 工具路由:mcp_{server}_{tool}前缀识别- 设置面板 MCP 服务器管理 UI(添加/启用/禁用/删除/状态显示)
- 启动时自动启动已启用的 MCP 服务器,退出时优雅清理
- 主进程
- ✨ 浏览器控制工具(8 个新工具)
browser_open/browser_screenshot/browser_evaluate/browser_extractbrowser_click/browser_type/browser_scroll/browser_close- AI 可交互式操作网页,支持截图、JS 执行、元素操作
- 主进程
browser.ts,隐藏 BrowserWindow 实现 - 全部 8 个函数新增 sendLog 执行日志
- ✨ Cron 定时任务系统
cron-manager.ts定时任务管理器- 支持一次性/周期性任务调度
- ✨ 技能自动生成系统
- 自动从成功工具调用链提取可复用技能
skills表持久化,支持关键词搜索和使用统计- 下次同类任务自动匹配并注入技能上下文
- ✨ 用户画像自动推断
- 从对话中自动检测用户技术栈(Python/TypeScript/Go/React 等 14 种)
- 用户画像注入 system prompt,Agent 行为更贴合用户习惯
- ✨ 人格模式
- 多种预设人格模板,独立 system prompt + 温度设置
- ✨ Heartbeat 主动检查
- 后台定时检查 Ollama 连接状态、磁盘空间等
- ✨ 子代理委派
spawn_task工具,主 Agent 可 spawn 独立子代理执行任务- 独立上下文,超时保护,结果回传主 Agent
- 🔧 工具并行执行优化
- 同一批次内独立工具并行执行,跨批次串行
- 依赖检测:web_fetch 自动等待 web_search 结果
- 🔧 长对话上下文管理
context-manager.ts接入 Agent Loop- 滑动窗口(20 条)+ 摘要压缩 + 按 num_ctx 裁剪
- Token 估算(中文 1.5 字/token,英文 4 字符/token)
- 🔧 记忆系统增强
- rule/preference 类型始终注入,不依赖关键词匹配
- buildMemoryContext 区分三类记忆措辞
- 🔧 全面编译修复
- 修复
useTools变量在声明前使用(TDZ 运行时 ReferenceError) - 修复
browser.tsloadURL 不支持的 timeout 参数 - 修复
ipc.tsbrowserScroll direction 类型断言
- 修复
- 🔧 CSS 变量补全
- 补充
--primary/--primary-bg/--bg-hover三个缺失变量
- 补充
- 🧹 全面代码清理(删除 400+ 行死代码)
- 删除
training-export.ts(训练数据导出,零引用) - 删除
document-processor.ts(RAG 遗留) - 清理 workspace.ts:
execWorkspaceCommand(重复实现)、isProcessAlive、getActiveProcessCount、terminateWorkspaceCommand - 清理 sqlite.ts:
deleteMessagesBySession、getSkill、closeDatabase - 清理 skill-manager.ts:
getAllSkillsForUI、deleteSkillById、clearAllSkills - 清理 memory-manager.ts:
getVectorSearchResults - 清理 tool-registry.ts:
isToolEnabled - 清理 cron-manager.ts:
clearAllTimers - 清理 workspace-panel.ts:
setOnToolTerminated、setWorkspaceDirPath - 清理 mcp-manager.ts:
isServerRunning - 移除 index.html 训练数据导出按钮及 settings-modal.ts 事件绑定
- 删除
- 📊 全链路执行日志
- browser.ts:全部 8 个函数新增 sendLog(打开/截图/JS/提取/点击/输入/滚动/关闭)
- mcp-manager.ts:callTool 新增工具调用/完成/失败日志
- 主进程日志覆盖:browser(20) + mcp(14) + tool-handlers(21) + workspace(11) + ipc(11)
- 📝 版本号更新至 5.0.0(7 个文件同步更新)
Desktop v4.0.0 — SQLite & ReAct Agent & 全新主题
- 📦 数据库迁移:IndexedDB → SQLite (sql.js WASM)
- 新增
src/main/db/sqlite.ts,使用 sql.js (WASM) 替代 IndexedDB - 零原生依赖,无需 electron-rebuild,消除 ABI 版本不匹配问题
- 6 张表:sessions、messages、tool_calls、memories(FTS5 全文搜索)、settings、traces
- WAL 模式 + NORMAL 同步,性能显著提升
- 支持全量导出/导入(JSON 格式)
- 新增
- 🔧 Agent Loop 升级为 ReAct 模式
- Thought → Action → Observation → Reflection 循环
- 任务复杂度评估(简单/中等/复杂)
- 执行轨迹记录(traces 表),Agent 可观测性
- 最大 15 轮循环,10 分钟总超时保护
- 🧠 记忆/会话管理工具
- 新增
memory_search、memory_add工具(AI 可主动管理记忆) - 新增
session_list、session_read工具(AI 可查阅历史会话) - 记忆支持 FTS5 全文搜索 + 向量语义搜索
- 上下文管理服务(
context-manager.ts)
- 新增
- 🎨 UI 主题改版:暗色 → 暖色调亮色
- 奶白背景
#FAF7F2+ 珊瑚橙主色#E8734A - 圆润柔和设计:圆角 8-20px,柔和阴影
- 紫色辅助色(Think/推理),金色标签(Token 统计)
- 终端区域保留暖棕深色
#2D2016保证代码可读性 - 字体升级:Inter + JetBrains Mono
- 窗口背景色、导出 HTML、theme-color 同步更新
- 奶白背景
- 🖥️ 工作空间改进
- IPC 通信优化,workspace 命令通过独立进程管理
- AI 工具命令实时输出推送到工作空间终端
- 📝 版本号更新至 4.0.0
Desktop v3.3.4 — Agent Loop 去重 & 记忆系统修复
- 🔧 修复 Agent Loop 工具调用重复问题
- 新增工具调用缓存机制(
toolResultCache),相同工具+参数不再重复执行 - 新增同轮内重复检测:同一轮 tool_calls 中的重复调用自动跳过
- 新增跨轮次重复检测:连续两轮工具调用完全相同则自动终止循环
- TOOLS_USAGE_GUIDE 新增第 8 条"严禁重复调用"规则
- 新增工具调用缓存机制(
- 🔧 修复 web_fetch 内容截断
- 默认
max_chars从 10000 改为 0(不截断,返回完整内容) - 仅当用户显式指定
max_chars时才截断
- 默认
- 🔧 修复记忆系统 rule/preference 不生效
searchMemoriesByKeyword:rule 和 preference 类型记忆始终注入,不再依赖关键词匹配- 仅 fact 类型保留关键词检索逻辑
buildMemoryContext区分三类记忆的 system prompt 措辞:规则→"必须无条件执行"、偏好→"请遵循"、事实→"供参考"
- 🔧 移除重复日志 — tool-registry.ts executeTool 中重复的 logToolStart 调用已移除
Desktop v3.3.3 — 工具面板修复 & 搜索增强
- 🔧 修复工具面板 badge 显示错误
- 除 run_command 外所有工具的 badge 从"需确认"改为"自动"(与代码实际行为一致)
- 根因:CONFIRM_TOOLS 数组仅包含 run_command,但 HTML 硬编码了 10 个工具为 confirm
- 🔧 修复 run_command 下拉框样式
- 未选中项白字白底不可见,根因:内联样式引用了未定义的 CSS 变量 --bg-tertiary
- 改用 --bg-card 并为 option 元素添加显式暗色背景
- 🎨 面板宽度优化
- 工具面板:720px → 900px
- 历史记录:680px → 800px
- 设置面板:480px → 640px
- 帮助面板:600px → 760px
- ✨ 增强联网搜索与网页抓取联动
- TOOL_USAGE_GUIDE 新增第 6 条:要求 AI 在 web_search 后必须用 web_fetch 抓取详情
- 新增第 7 条:明确 AI 在不确定、信息过时、需实时数据时应主动调用工具
- 典型场景→工具映射:查版本→web_search+web_fetch、查文件→read_file、查项目→git status
- ✨ web_search 默认结果数提升:5 → 15,给 AI 更多线索定位目标页面
Desktop v3.3.2 — 联网搜索 & 工具权限优化
- ✨ 新增 web_search 联网搜索工具(第 21 个工具)
- DuckDuckGo HTML 搜索优先,Bing 作为备用引擎
- 返回结构化结果:标题、URL、摘要
- 15 秒超时保护,最多 10 条结果
- 自动启用,无需用户确认(只读操作)
- 🔧 工具执行权限优化
- 除 run_command 外,所有 20 个工具改为自动执行无需确认
- run_command 新增三模式下拉框:自动/需确认/禁用
- 工具面板卡片 badge 实时联动模式状态
Desktop v3.3.1 — Bug 修复 & 图标统一
- 🔧 修复开启工具调用后图片无法传给 AI
agent-engine.ts:当用户仅上传图片无文字时,自动生成分析提示作为 content,确保图片数组正确注入 Ollama APIinput-area.ts:图片与文字合并为同一条消息,不再拆分为两条,修复 Agent Loop 构建历史时图片关联丢失
- 🔧 修复记忆系统弹框自动记忆开关点击无响应
memory-modal.ts:CSS 类名memory-toggle→toggle-label,启用完整滑块样式和:checked状态切换
- 🎨 统一应用图标为科技感羊驼
assets/icons/llama.png/llama.ico:替换为霓虹电路风格羊驼图标(深色背景 + 青色描边 + 电路纹理)
Desktop v3.3.0 — 文档同步 & 帮助面板修正
- 📝 文档全面更新
- README.md:Tool Calling 工具表从 7 个扩展至 20 个,新增 13 个工具说明
- README.md:移除已废弃的 RAG 知识库 section,更新为向量记忆说明
- README.md:项目结构同步实际文件(移除已删除的 rag.ts / kb-modal.ts / memory-panel.ts,新增 memory-modal.ts / tools-modal.ts / prompt-modal.ts / vector-memory.ts)
- README.md:架构图更新,移除 RAG 引用
- README.md:记忆提取触发条件从 ≥3 条修正为 ≥6 条
- README.md:记忆类型表移除「事件」类型(v3.0 后已归并为 fact)
- README.md:技术栈从「NSIS + Portable」修正为「NSIS 安装包」
- docs/DEVELOPMENT.md:子系统引用从 rag.ts 更新为 vector-memory.ts
- docs/DEVELOPMENT.md:移除工作空间面板拖拽调整宽度的描述
- 🔧 帮助面板修正
- 工作空间终端描述从「多终端 Tab」改为「单一终端进程」
- 移除工作空间面板拖拽调整宽度的描述(当前固定 480px)
Desktop v3.2.6 — 工作空间面板布局修复 & Token 统计样式优化
- 🔧 修复工作空间面板与主内容区错位
- workspace-panel 从
position: fixed改为 flex 子元素,与日志面板布局模式一致 - 移除
margin-right: 480pxhack 和--nav-heightCSS 变量,消除 JS/CSS 失步风险 - 移除
updateNavHeight()函数及 resize 监听,减少不必要的 DOM 计算
- workspace-panel 从
- 🎨 Token 统计颜色优化
- Header token 统计区:琥珀色 (#FFD580) 图标 + 数值,含淡色背景和细边框
- 消息内 token 数:琥珀色高亮,耗时用主题蓝色,三种信息一目了然
Desktop v3.2.5 — 工具路径修复 & 安全性增强 & 工作空间重构
- 🔧 修复工具相对路径解析错误
- 所有文件系统工具(
read_file/write_file/list_directory/search_files/create_directory/delete_file)的相对路径此前用path.resolve()解析到进程当前工作目录,导致 AI 创建的文件实际写到了错误位置 - 新增
resolvePath()辅助函数:相对路径统一基于getWorkspaceDir()(工作空间目录)解析,绝对路径保持不变
- 所有文件系统工具(
- ♻️ 工作空间改为单一终端
- 移除多 Tab 机制,工作空间面板简化为单个终端 + 文件浏览器
- 移除标签页栏、新建 Tab 按钮、Tab 切换逻辑
- 终端面板直接渲染
#ws-terminal,进程管理改用currentTermId单例模式 - 文件浏览器宽度固定 200px,终端区域自适应填充剩余空间
- 🔧 修复 token 统计图标显示问题
- Header 中 token 消耗图标从 Unicode 字符(🪙)改为纯 path SVG 内联
- 避免 text 元素在部分系统(如旧版 Windows)不显示的问题
- 🔧 修复图片/文件读取 Latin1 错误
atob()解码 Base64 时产生 Latin1 编码,导致中文文件名和中文内容乱码- 图片上传改用
readFileBase64IPC 读取,渲染端用Uint8Array+TextDecoder替代atob() - 文件读取同样改用 base64 通道,避免 Latin1 编码丢失
- 🔧 修复工作空间面板定位
- 面板顶部对齐修正(从 90px 调整为 92px,匹配 header 高度)
- 修复中文乱码:Windows cmd 代码页切换
chcp 65001+ 环境变量LANG/LC_ALL设为 UTF-8 - 修复快捷键冲突和帮助文档内容更新
- 📦 构建产物
Metona Ollama Setup 3.2.5.exe(78MB)- Gitee Release v3.2.5-desktop(ID: 601311)
Desktop v3.2.4 — AI 命令执行走工作空间终端 & Bug 修复
- 🔧 AI 命令执行走工作空间终端
run_command工具不再在主进程内部执行,改为通过工作空间终端实时执行并显示- stdout/stderr 实时推送到工作空间终端面板,流式展示
- 用户可通过停止按钮终止卡住的命令,结果自动回传 AI
- 新增
cmd:output/cmd:done/cmd:killIPC 通道
- 🖥️ 工作空间面板优化
- 去掉用户手动命令输入,所有命令由 AI 执行
- 终端底部状态提示(等待/执行中)
- 修复面板顶部对齐(90px → 92px)
- 🔧 设置面板修复
- 修改 Ollama 服务地址后同步更新顶部导航连接状态和模型列表
- 📦 构建产物
Metona Ollama Setup 3.2.4.exe- Gitee Release v3.2.4-desktop
Desktop v3.2.3 — 工作空间面板常驻显示 & Bug 修复
- 🖥️ 工作空间面板改为常驻显示
- 类似执行日志面板,固定显示不可关闭,移除关闭按钮和 header 中的切换按钮
- 固定宽度 480px,移除拖拽调整宽度功能(
wsResizer及setupResizer()全部删除) main-wrap始终带with-workspaceclass,面板初始化即可见(panelVisible = true)- 删除
togglePanel()函数及相关事件绑定
- 🔧 Bug 修复
- 修复
tool-registry.ts使用logInfo但未导入导致run_command工具调用报 "logInfo is not defined" 异常
- 修复
- 📦 构建产物
Metona Ollama Setup 3.2.3.exe(78MB)- Gitee Release v3.2.3-desktop(ID: 601248)
Desktop v3.2.2 — 工作空间深度集成 & 构建修复
- 🔧 工作空间与 AI Tool Calling 深度集成
- 工作空间命令行新增「执行」按钮,AI 建议的
run_command工具调用可在工作空间终端中可视化执行 - 工具调用结果实时流式输出到工作空间终端面板,支持长时间运行命令
- 完善 IPC 通信链路:
preload.ts新增 workspace API 桥接、ipc.ts新增对应 handler
- 工作空间命令行新增「执行」按钮,AI 建议的
- 📦 构建流程修复与优化
- 修复
npm install时 Electron "socket hang up" 问题(需设置ELECTRON_MIRROR) - 修复 electron-builder 构建时 winCodeSign 从 GitHub 下载 EOF 错误(使用 ghfast.top 代理)
- 修复
restore-build-cache.sh因 npmmirror 缺包导致全部缓存跳过的问题 - 新增手动缓存下载方案:逐项下载 winCodeSign/NSIS/NSIS Resources 的完整命令
docs/BUILD.md故障排查表新增 3 条条目,附完整手动缓存命令
- 修复
- 📝 文档更新
- 更新 README.md 最新版本说明和构建分支引用
- 更新 docs/CHANGELOG.md 版本分支结构
- 更新 docs/BUILD.md 构建日志(v3.2.2 记录 5 个问题及处理步骤)
Desktop v3.2.1 — 日志统一 & 构建优化
- ♻️ 主进程日志接入执行日志面板
- 清除
ipc.ts4 处console.log/error,新增sendLog()函数通过 IPC 推送到渲染进程 - 清除
workspace.ts1 处console.log,统一走sendLog() preload.ts新增onMainLog监听通道main.ts监听main:log事件转发到addLog(),全项目零console.log
- 清除
- 📦 移除便携版
package.json移除portable构建目标、dist:portable脚本和portable配置块- Gitee 清理 v1.0.0 ~ v3.1.1 旧版本便携版附件,释放仓库配额
- 🗑️ 删除
docs/V3-TOOL-CALLING.md - 📝 更新 README.md(下载说明、常用命令、项目结构)和 docs/BUILD.md
Desktop v3.2.0 — 工作空间面板 & 构建优化
- 🖥️ 工作空间面板
- 右侧面板:命令行 Tab + 文件浏览器 Tab,宽度可拖拽调整
- 终端界面:实时流式输出、ANSI 颜色支持、多终端 Tab、无超时限制
- 文件浏览器:目录树、文件预览(带行号)、上级目录导航
- IPC 双向通信:
on/send模式实现流式推送,独立于 Agent Loop 超时体系 - 设置面板新增工作空间目录配置(默认
userData/workspace) - 窗口关闭时自动 SIGTERM 所有子进程,防止进程泄漏
- ♻️ 结构化日志系统
- 渲染进程 58 处
console.log/warn/error全部迁移至log-service.ts - 135 处结构化日志点覆盖全链路:初始化、连接、模型加载、工具调用、RAG 检索、记忆提取、流式响应、Agent Loop
- 日志级别分级(init/success/info/warn/error/debug),便于过滤排查
- 渲染进程 58 处
- 🖥️ 文件对话框全面原生化
- 图片上传 →
bridge.dialog.openFile()(原生文件选择器 + 图片类型过滤) - 文件上传 →
bridge.dialog.openFile()(50+ 种文本/代码格式过滤) - 知识库文档上传 →
bridge.dialog.openFile()(文档格式过滤) - 会话导入 →
bridge.dialog.openFile()(.metona 格式过滤) - 会话导出 →
bridge.dialog.saveFile()(替代浏览器 blob 下载) - 聊天导出(Markdown/HTML/TXT) →
bridge.dialog.saveFile()(替代浏览器 blob 下载)
- 图片上传 →
- 🪙 Token 消耗统计
- Header 新增 🪙 图标 + 当前会话总 token 消耗实时显示
updateTotalTokens()在每轮对话完成后自动更新- Agent Loop 和普通聊天均支持统计
- 🧹 代码清理
- 移除浏览器专用工具函数:
fileToBase64()、fileToText()、downloadFile() - 所有文件 I/O 统一走 Electron IPC 桥接(
bridge.fs.readFile/bridge.fs.writeFile) - 清理废弃的
DesktopBridge接口,统一使用MetonaDesktopAPI - 移除
types.d.ts中废弃的DesktopBridge类型和__metonaBridge全局声明 fs.writeFile新增encoding参数支持(UTF-8 / base64)- 会话导出(.metona 加密备份)改用 base64 编码写入二进制文件
- 移除浏览器专用工具函数:
- 🔧 编译修复
- 修复
vector-store.ts中colId变量重复声明导致编译失败 - 修复
importSessions中result变量重复声明导致编译失败 - 修复 token 统计在
eval_count=0时仍显示的显示问题
- 修复
- 📦 构建工具
- 新增
build-release.sh— 一键构建脚本(自动安装 Wine + npm 依赖 + electron-builder) - 新增
restore-build-cache.sh— 构建资源本地缓存恢复(Electron 二进制等 145MB 资源) - 更新
docs/BUILD.md— 新增快速构建 3 步指南、构建资源管理说明 .gitignore排除 build-resources 目录(本地缓存不进仓库)
- 新增
- 📦 构建优化
- 移除便携版构建目标,后续仅提供 NSIS 安装包
- 清理
package.json中 portable 相关配置 - 更新
docs/BUILD.md构建指南
Desktop v3.0.0 — Tool Calling & Agent 记忆
v3.0.0-patch2 — 稳定性修复
- 🔧 Tool Calling IPC 卡死修复
executeTool()新增 25 秒 IPC 硬超时,防止主进程无响应时无限挂起agent-engine.ts内.catch捕获异常,防止 reject 逃逸- 主进程
tool:execute外层 try-catch,确保始终返回响应 - 全链路 console.log 便于 DevTools 排查
- 🔧 Electron contextIsolation 兼容
- 新增
prompt-modal.ts自定义弹窗组件(替代原生window.prompt()/window.confirm()) - 替换 memory-panel / kb-modal / settings-modal / history-modal 中全部 7 处原生调用
- 新增
- 🔧 日志面板改造
- 默认常驻显示,移除关闭/清空/切换按钮
- 新增 earlyBuffer 缓冲机制,initLogPanel 前的日志不再丢失
- initLogPanel() 移至 init() 最先执行
- 确认为纯运行时日志,不持久化
- 🔧 启动稳定性
- init() 中防御性重置 IS_STREAMING / IS_HISTORY_VIEW / toolCallingEnabled 等状态
- catch 路径也重置关键状态并初始化日志面板
- 🔧 新建会话修复 — 新建会话时强制中断正在进行的生成,恢复发送按钮
- 📝 对齐 Ollama 官方 Tool Calling JavaScript 文档
v3.0.0 — Tool Calling & Agent 记忆
- 🔧 Tool Calling — AI 本地文件操作系统
- 7 个工具:
read_file/write_file/list_directory/search_files/create_directory/delete_file/run_command - Agent Loop 引擎:流式多轮工具调用循环,支持并行调用(最大 10 轮)
- 安全模型:路径白名单/黑名单、命令过滤、用户确认对话框
- 工具调用可视化卡片(5 种状态:pending → running → success/error/denied)
- 7 个工具:
- 🧠 Agent 记忆系统
- 自动从对话中提取关键信息(事实/偏好/规则/事件)
- 关键词 + 标签 + 重要性加权检索,自动注入上下文
- IndexedDB 持久化,跨会话积累
- 可视化记忆管理面板(搜索/筛选/编辑/删除)
- 对话 ≥3 条消息后自动触发记忆提取
- ⚡ 全功能协调运作 — 记忆检索 → RAG 检索 → Tool Calling 三层协作
- 🔧 Agent 预设系统移除,由记忆系统替代
- 📝 Tool Calling 技术开发文档(75KB)
- 📝 Wine 安装步骤和构建日志
Desktop v2.0.0 — TypeScript 重写
- ⚡ TypeScript + Vite + Electron 全面重构
- 🏗️ 构建系统完善,模块化拆分
- 🖥️ 纯桌面版,专注 Electron 体验
- 📝 Windows 安装包构建指南
Desktop v1.1.0 — UI 重塑
- 🎨 Windows 11 Fluent Design 暗色主题 — Mica 毛玻璃材质
- 📐 知识库/历史弹框优化
- ✨ Think 按钮光效增强
- 🔧 修复知识库/历史弹框宽度、图片按钮禁用标识、Think hover 光效
- 📝 Windows 安装包构建指南,记录踩坑经验
Desktop v1.0.0 — 桌面客户端诞生
- 🖥️ Electron Windows 桌面客户端首版
- 📦 NSIS 安装包 + 绿色便携版
- 🔧 隐藏窗口菜单栏