thzxx
|
9e6fce2c3f
|
chore: bump version to 3.0.0
|
2026-04-06 15:31:28 +08:00 |
|
thzxx
|
eba5098728
|
docs: 重写 README.md 适配 Agent 记忆系统 + Tool Calling 双引擎架构
|
2026-04-06 13:48:22 +08:00 |
|
thzxx
|
dc43db7d9c
|
feat: Agent 记忆系统替代预设功能,全功能协调运作
核心改造:
- 取消 Agent 预设(保留兼容),新增 AI Agent 记忆系统
- 自动提取 → 存储 → 检索 → 注入上下文的完整记忆闭环
- 记忆类型:事实/偏好/规则/事件,支持重要性评分和标签
新增文件:
- services/memory-manager.ts: 记忆管理核心
- 关键词+标签+重要性加权检索
- 会话结束自动提取(LLM 驱动)
- 去重检测、使用频率追踪
- components/memory-panel.ts: 记忆管理面板 UI
修改文件:
- types.d.ts: 新增 MemoryEntry/MemorySearchResult 类型
- db/chat-db.ts: 升级 v2,新增 memories 存储
- input-area.ts: 对话流集成记忆检索+自动提取
- agent-engine.ts: Agent Loop 注入记忆上下文
- settings-modal.ts: 记忆开关设置
- main.ts: 记忆系统初始化
- index.html: 记忆设置面板 HTML
- style.css: 记忆面板完整样式
功能协调:
- 对话流: 记忆检索 → RAG 检索 → 系统提示词组合 → 流式对话
- Agent Loop: 记忆检索 → 系统提示词注入 → 工具调用循环
- 会话结束: 自动提取关键信息 → 存入记忆库
- 跨会话: 记忆持久化 IndexedDB,新对话自动召回相关记忆
|
2026-04-06 13:44:45 +08:00 |
|
thzxx
|
37e11502b8
|
docs: 重写 README.md 适配 v3.0 Tool Calling 架构
|
2026-04-06 13:33:21 +08:00 |
|
thzxx
|
e4e735b2ac
|
docs: 更新 BUILD.md 分支为 v3
|
2026-04-06 13:31:43 +08:00 |
|
thzxx
|
5bfb137a8a
|
feat: v3.0 Tool Calling — AI 本地文件操作系统
新增文件:
- src/main/tool-security.ts: 路径白名单/黑名单、命令安全检查
- src/main/tool-handlers.ts: 7个工具实现(read/write/list/search/create/delete/run)
- src/renderer/services/tool-registry.ts: 工具注册调度中心
- src/renderer/services/agent-engine.ts: Agent Loop 流式多轮工具调用引擎
- src/renderer/components/tool-confirm-modal.ts: 高风险操作确认对话框
修改文件:
- types.d.ts: 新增 ToolCall/ToolResult/ToolCallRecord 等类型
- ollama.ts: chatStream 支持 tools 参数
- ipc.ts: 新增 tool:execute/getConfig/setAllowedDirs IPC
- preload.ts: 暴露 tool API
- chat-area.ts: 渲染工具调用卡片
- input-area.ts: 集成 Agent Loop 引擎
- settings-modal.ts: 工具调用开关设置
- index.html: 工具调用设置面板 + 确认对话框 HTML
- style.css: 工具调用卡片、确认对话框样式
- main.ts: 初始化工具调用配置
|
2026-04-06 13:29:43 +08:00 |
|
thzxx
|
0a1397771e
|
docs: 添加 Windows 安装包构建指南(分支已更新为 v2)
|
2026-04-06 13:16:06 +08:00 |
|
thzxx
|
2119e51660
|
docs: 添加 v3.0 Tool Calling 技术开发文档(75KB 详细设计)
|
2026-04-06 03:47:15 +08:00 |
|
thzxx
|
d7543548d5
|
docs: 重写 README.md 适配 v2.0.0 TypeScript + Electron 架构
|
2026-04-06 03:24:52 +08:00 |
|
thzxx
|
0ec6e902de
|
feat: TypeScript + Electron v2.0.0 构建系统完善
- 添加 vite.config.ts 构建配置
- 添加 tsconfig.main.json(主进程单独编译)
- 修复主进程模块化(menu/tray 使用 setQuitting)
- 修复渲染进程导入路径
- 删除旧版 JS/Web 文件(js/、electron/、sw.js、manifest.json)
- 构建验证通过:NSIS 安装包 + 便携版
|
2026-04-06 03:21:05 +08:00 |
|
thzxx
|
7ca0e33d77
|
feat: TypeScript + Electron v2 重构 - 纯桌面版
- 全面迁移到 TypeScript,严格类型定义
- 放弃 Web 版,专注 Electron 桌面应用
- 主进程模块化:main.ts, preload.ts, menu.ts, tray.ts, ipc.ts, utils.ts
- 渲染进程完整迁移所有功能组件
- 删除 PWA 相关文件 (sw.js, manifest.json)
- 删除 Web 版降级逻辑
- 保留所有核心功能:流式对话、多模型、Think推理、多模态、RAG知识库、Agent预设、历史管理
- 保留 Windows 11 Fluent Design 暗色主题样式
|
2026-04-06 03:04:20 +08:00 |
|
Metona
|
0924497cd6
|
docs: 更新 README.md 适配 v1.1.0
|
2026-04-06 01:59:54 +08:00 |
|
Metona
|
92f6620693
|
docs: 添加 Windows 安装包构建指南,记录踩坑经验
|
2026-04-06 01:57:19 +08:00 |
|
Metona
|
2cd2b5144e
|
fix: Think 禁用态 hover 效果与图片按钮一致
|
2026-04-06 01:11:11 +08:00 |
|
Metona
|
4c1ce38cc0
|
fix: 修复知识库/历史弹框宽度、图片按钮禁用标识、Think 按钮 hover 光效
|
2026-04-06 01:09:30 +08:00 |
|
Metona Desktop
|
e769f4ec2a
|
fix: 更新版本号至 1.1.0
|
2026-04-05 23:24:55 +08:00 |
|
Metona Desktop
|
9542a224db
|
style: 重构 UI 为 Windows 11 Fluent Design
- 配色: Mica 材质暗色 (#202020),替代赛博朋克霓虹风
- 字体: Segoe UI Variable,WinUI 3 标准
- 圆角: 4px 控件 / 8px 卡片 / 12px 弹窗
- 按钮: WinUI Button 风格,移除渐变发光
- 开关: WinUI ToggleSwitch 风格
- 输入框: 聚焦时 border-focus 蓝色边框
- 弹窗: ContentDialog 风格,scale 入场动画
- 移除: 霓虹渐变、毛玻璃光效、脉冲动画
- 保持: 所有功能不变,纯样式重构
|
2026-04-05 23:16:29 +08:00 |
|
Metona Desktop
|
c0c97b47b1
|
fix: 隐藏窗口菜单栏
|
2026-04-05 23:09:56 +08:00 |
|
Metona Desktop
|
ec91912964
|
docs: 重写 README.md,覆盖 Web 版 + 桌面版
|
2026-04-05 22:58:46 +08:00 |
|
Metona Desktop
|
67381ba6c0
|
build: 添加 Windows 构建产物
- Metona Ollama Setup 1.0.0.exe (78MB) - NSIS 安装包
- MetonaOllama-Portable-1.0.0.exe (72MB) - 绿色便携版
- 均为 x64 架构,无需签名
|
2026-04-05 22:55:38 +08:00 |
|
Metona Desktop
|
63fa7e2846
|
feat: Electron Windows 桌面客户端 v1.0
- 新增 electron/main.js: 主进程(窗口管理、系统托盘、原生菜单、IPC)
- 新增 electron/preload.js: contextBridge 安全 API 暴露
- 新增 electron/desktop-bridge.js: 渲染进程桥接层 + Web 降级
- 新增 electron/desktop-integration.js: 菜单/托盘事件响应、原生文件对话框
- 更新 index.html: 集成桌面脚本
- 新增 package.json: Electron + electron-builder 配置
- 新增 DESKTOP_README.md: 桌面版开发文档
- 支持: NSIS 安装包 + 便携版、系统托盘、原生菜单、窗口记忆
- 安全: contextIsolation + IPC 白名单、单实例锁
|
2026-04-05 22:39:22 +08:00 |
|
thzxx
|
511f864221
|
Merge branch 'refactor/modular-architecture': v4.0.3 帮助弹框优化
|
2026-04-05 20:29:21 +08:00 |
|
thzxx
|
0fd12d4e7e
|
chore: 版本号升级至 v4.0.3,更新 README
|
2026-04-05 20:27:53 +08:00 |
|
thzxx
|
633ca5f8ea
|
feat: 帮助弹框新增 Agent 预设说明,完善设置描述
|
2026-04-05 20:26:56 +08:00 |
|
thzxx
|
b01a23668a
|
Merge branch 'master' into refactor/modular-architecture
|
2026-04-05 20:26:33 +08:00 |
|
thzxx
|
c7301902a7
|
Merge branch 'refactor/modular-architecture': Agent预设系统 v4.0.0~v4.0.2
|
2026-04-05 20:22:00 +08:00 |
|
thzxx
|
abebc56f82
|
chore: 版本号升级至 v4.0.2,更新 README
|
2026-04-05 20:16:41 +08:00 |
|
thzxx
|
27340d36b3
|
fix: 切换预设时 Think 按钮在模型不支持时不应显示激活态
|
2026-04-05 20:15:46 +08:00 |
|
thzxx
|
ac3d7a3685
|
docs: README 新增 Agent 预设系统详细说明
|
2026-04-05 20:10:54 +08:00 |
|
thzxx
|
039afa5f0b
|
chore: 版本号升级至 v4.0.1,更新 README
|
2026-04-05 20:08:51 +08:00 |
|
thzxx
|
8a8c5da968
|
feat: 设置面板新增温度(Temperature)滑块控制
- 设置面板新增温度滑块 (0~2, 步长0.1)
- 实时显示当前值,保存到 IndexedDB 持久化
- 切换预设时自动同步温度滑块 UI
- 应用启动时从 DB 恢复温度设置
|
2026-04-05 20:07:38 +08:00 |
|
thzxx
|
4b72a1fc5d
|
chore: 版本号升级至 v4.0.0,更新 README
|
2026-04-05 19:58:24 +08:00 |
|
thzxx
|
bc63ba9611
|
feat: Agent 预设系统 - 一键切换角色/工作模式
- 内置 6 个预设:默认、翻译官、代码审查、写作助手、数据分析师、学习导师
- 每个预设包含:系统提示词、温度、上下文长度、Think 开关
- 预设栏胶囊按钮,点击即切换,自动应用全部配置
- 支持创建/编辑/删除自定义预设,IndexedDB 持久化
- 切换预设时同步设置面板 UI + toast 提示
- 温度参数集成到聊天 API 调用
|
2026-04-05 19:55:45 +08:00 |
|
thzxx
|
2c475c0c8c
|
chore: 版本号升级至 v3.2.0,更新 README 更新日志
|
2026-04-05 01:59:40 +08:00 |
|
thzxx
|
be8ef7641e
|
style: 知识库弹框和帮助弹框视觉优化
- 知识库弹框: 加大至 900px/88vh,工具栏加边框背景,左侧分隔线
- 帮助弹框: 加大至 640px/88vh,各区块加左边线强调和背景
- 全局模态框: 更深毛玻璃、圆角 14px、入场缩放动画、头部渐变
- 快捷键表格: 带边框圆角、hover 高亮
- 文档/集合项: 更大 padding、hover 边框
|
2026-04-05 01:55:56 +08:00 |
|
thzxx
|
e97e2e4078
|
perf: IVF 倒排索引优化向量搜索 - K-Means 聚类 + nprobe 近邻检索
- N < 200 自动降级暴力搜索
- N ≥ 200 K-Means++ 聚类构建 IVF 索引
- nprobe=5 探测最近 5 个聚类,搜索量降 75%
- 索引持久化到 IndexedDB,数据变化自动重建
- 内存向量缓存 + Map O(1) 查找
|
2026-04-05 01:47:57 +08:00 |
|
thzxx
|
4c52650881
|
fix: setSelectedModel 触发 change 事件,恢复模型能力检测(Think/Vision)
|
2026-04-05 01:38:56 +08:00 |
|
thzxx
|
32e3bf848e
|
fix: RAG临时状态消息延迟到首个token到达时才清除,消除回复前的空白期
|
2026-04-05 01:32:08 +08:00 |
|
thzxx
|
b802c896cf
|
refactor: state 管理优化 - 结构化浅比较 + update/setIn/batch API
- state.js: 新增 shallowEqual、update()、setIn()、batch() 方法
- input-area.js: messages.push() 全部改为 state.update(),确保引用变化触发通知
- model-bar.js: 直接属性赋值改为 state.update(),修复 model 切换不触发变更检测
|
2026-04-05 01:27:24 +08:00 |
|
Metona
|
e519631bee
|
feat: 模型下拉框过滤嵌入模型,版本号升级至3.1.1
- loadModels 后台调用 /api/show 检测 capabilities
- 不支持 completion 的模型自动从下拉框移除
- 更新 README changelog
|
2026-04-05 01:10:12 +08:00 |
|
Metona
|
f1a1c15a27
|
chore: 版本号升级至 v3.1.0,更新README
- index.html / app.js 版本号改为 3.1.0
- README badge 更新
- 新增更新日志章节 (v3.0.0 ~ v3.1.0)
|
2026-04-05 00:58:44 +08:00 |
|
Metona
|
13291fba77
|
fix: 流结束后手动插入RAG来源到DOM,解决历史中不显示的问题
ragSources 在流结束后才添加到消息对象,但 assistant 消息 DOM 已由流式更新创建,
renderMessages 只追加新消息不会重新渲染已有元素。
直接在流结束后将 RAG 来源 HTML 插入到 msg-body 中。
|
2026-04-05 00:53:20 +08:00 |
|
Metona
|
192e070516
|
fix: RAG状态消息放AI回复下方,开始回复时清除,保留历史RAG来源展示
- appendAssistantPlaceholder 回到 RAG 检索之前(placeholder在上方)
- RAG 状态消息显示在 placeholder 下方
- 开始回复时清除临时状态消息
- 历史记录中通过 ragSources 展示知识库来源
|
2026-04-05 00:50:00 +08:00 |
|
Metona
|
a8aa00ce05
|
fix: RAG检索状态消息保留在AI回复上方,方便历史回顾
- 将 appendAssistantPlaceholder() 移到 RAG 检索之后
- 消息顺序:用户消息 → 检索状态 → AI回复
- 移除 rag-status 清除逻辑,检索状态永久保留
|
2026-04-05 00:46:13 +08:00 |
|
Metona
|
6b793f669b
|
fix: RAG检索状态消息在AI回复后自动清除
给 appendSystemMessage 增加可选 tempClass 参数,
所有 RAG 状态消息标记为 'rag-status' class,
流式结束后和报错时统一移除这些临时消息。
|
2026-04-05 00:44:12 +08:00 |
|
Metona
|
1e3f4d4ba5
|
fix: 彻底修复RAG下消息不显示 - 用模块变量替代CSS选择器
根本原因:所有CSS选择器方案都依赖DOM位置关系,
而 appendSystemMessage 在 placeholder 之后插入 div 会破坏这种关系。
解决方案:用模块变量 currentPlaceholder 直接持有 placeholder DOM 引用,
updateLastAssistantMessage 直接读取该引用,完全不依赖选择器。
- appendAssistantPlaceholder: 设置 currentPlaceholder = div
- updateLastAssistantMessage: 使用 currentPlaceholder,首次调用移除 loading
- clearMessages: 清除 currentPlaceholder
|
2026-04-05 00:38:35 +08:00 |
|
Metona
|
1de1084173
|
fix: 第一个chunk后loading class被移除导致后续内容更新全部跳过
updateLastAssistantMessage 的首次调用找到 .message.assistant.loading 后
立即 remove('loading'),导致后续 chunk 调用时选择器找不到元素,直接 return。
修复:
- 首次调用:找到 .loading,移除 loading 指示器,但保留 class 直到流结束
- 后续调用:.loading 选择器失败时回退到 .message.assistant:last-of-type
- loading class 在 sendMessage 的 try/finally 或 catch 中统一移除
|
2026-04-05 00:34:23 +08:00 |
|
Metona
|
86a2797d44
|
fix: 用 loading class 精确定位placeholder,修复RAG下loading不消失
上次用 :last-of-type 修复无效(:last-of-type 也是按元素类型div匹配,
系统消息也是div,一样命中不了placeholder)。
改用给 placeholder 加 .loading class 的方案:
- appendAssistantPlaceholder 添加 .loading class
- updateLastAssistantMessage 用 .message.assistant.loading 选择器
- 成功/失败后移除 .loading class
选择器不再依赖 DOM 位置,彻底不受 appendSystemMessage 影响。
|
2026-04-05 00:29:08 +08:00 |
|
Metona
|
f3589ae057
|
fix: RAG开启时AI回复后loading动画不消失的问题
根因:appendSystemMessage() 在 assistant placeholder 之后插入了一个无 .message class 的 div,
导致 CSS 选择器 .message.assistant:last-child 无法命中 placeholder(它不再是 :last-child)。
updateLastAssistantMessage() 返回 null,loading 动画永远不会被移除。
修复:将 3 处 :last-child 改为 :last-of-type,使选择器基于元素类型(div)而非精确的最后一个子节点匹配。
|
2026-04-05 00:22:24 +08:00 |
|
thzxx
|
8d4ab5c98c
|
chore: 版本号升级至 v3.0.2
|
2026-04-05 00:03:46 +08:00 |
|