Metona
|
47747bf913
|
style: 加宽工具面板、历史记录、设置面板
- 工具面板:720px → 900px
- 历史记录:680px → 800px
- 设置面板:默认 480px → 640px(新增专属样式)
|
2026-04-17 08:55:34 +08:00 |
|
Metona
|
76981e4206
|
fix: 工具面板 badge 显示与下拉框样式
1. 修复工具面板中除 run_command 外所有工具的 badge 错误显示为需确认,实际应为自动
- 根因:CONFIRM_TOOLS 数组仅包含 run_command,但 HTML 硬编码了多个工具为 confirm
- 涉及工具:write_file, create_directory, delete_file, move_file, copy_file, append_file, edit_file, download_file, replace_in_files, compress
2. 修复 run_command 执行模式下拉框未选中项白字白底不可见
- 根因:内联样式引用了未定义的 CSS 变量 --bg-tertiary,option 元素无暗色背景
- 改用 --bg-card 并为 option 元素添加显式暗色背景
|
2026-04-17 08:53:26 +08:00 |
|
Metona Fix
|
70fef8e969
|
debug: 添加详细调试日志定位工具调用卡死问题
在 agent-engine.ts 和 ollama.ts 的关键节点添加 console.log:
- 流式调用开始/结束/错误
- 工具调用列表和参数
- 确认框弹出和用户确认结果
- 工具执行开始/结果
- messages 数组长度变化
- 每个 Loop 迭代的完整状态
- Ollama API 请求/响应/流结束
|
2026-04-06 19:43:00 +08:00 |
|
Metona Fix
|
af70054875
|
feat: 全量日志接入 + 日志服务重构(非阻塞)
log-service 重构:
- DOM 渲染改用 requestAnimationFrame 批量队列
- 全程 try-catch,任何异常都不阻塞主流程
- 新增 logConnection/logModel/logSession/logMemory/logRAG/logSetting/logIPC/logInit 便捷方法
全量接入(12 个文件):
- header.ts: 连接状态变化(connected/disconnected/error)
- model-bar.ts: 模型列表加载、模型切换、能力检测结果
- settings-modal.ts: 所有设置变更(系统提示词/上下文/温度/工具调用/命令执行/记忆)、显存释放、导出/导入
- tool-confirm-modal.ts: 工具确认弹窗、确认/取消操作
- memory-manager.ts: 记忆初始化、新增/删除、自动提取
- tool-registry.ts: 工具执行异常
- rag.ts: 文档分块、向量检索
- kb-modal.ts: 知识库创建、文档上传、批量上传
- history-modal.ts: 会话加载、会话删除
- main.ts: 应用初始化各阶段、桌面集成、菜单/托盘操作、新建会话
- input-area.ts: 消息发送、流式完成/错误、文件/图片添加、Agent Loop 错误
|
2026-04-06 19:23:03 +08:00 |
|
Metona Fix
|
1033cefdfb
|
feat: 添加左侧实时执行日志面板
功能:
- 日志面板位于聊天区左侧,可折叠/展开
- 实时展示所有执行事件:
- 🤔 模型思考过程
- 📡 流式响应状态
- 🔧 工具调用(参数+结果)
- ⚠️ 错误和警告
- ℹ️ Agent Loop 迭代
- ✅ 操作完成
- 日志自动滚动、最大 500 条、可清空
- 等宽字体显示,按级别着色
- 头部新增日志开关按钮
|
2026-04-06 19:14:51 +08:00 |
|
Metona Fix
|
dd5e789e35
|
feat: 模型下拉框选项显示能力图标
每个模型选项文字后追加能力标记:
- 🧠 Think(支持思考推理)
- 👁️ Vision(支持图片理解)
- 🔧 Tools(支持工具调用)
示例:qwen3:8b · 5.2GB 🧠🔧
|
2026-04-06 19:05:33 +08:00 |
|
Metona Fix
|
0f25921fb9
|
fix: 修复工具调用确认后卡死问题
根本原因:
1. 模型能力检测缺少 tools 检查 — gemma4 等模型不支持 Tool Calling 但代码允许启用
2. 流式调用无超时保护 — 模型无限思考时无法自动恢复
3. AbortController 竞态 — 确认对话框后状态同步问题
修复内容:
- 模型能力检测增加 tools 字段检查,模型栏显示 🔧 Tools 标签
- Agent Loop 流式调用增加 2 分钟单次超时保护
- 开启 Tool Calling 时自动检测模型兼容性并警告
- 设置面板开启 Tool Calling 时检查并提示不兼容模型
- 输入区域 Agent Loop 分支增加模型支持检测和用户提示
|
2026-04-06 19:02:34 +08:00 |
|
Metona
|
43c827e9ff
|
fix: 修复工具调用确认后卡死问题
- 工具确认按钮添加 e.stopPropagation() 防止事件冒泡到 overlay
- 防止重复绑定 overlay click handler (initialized flag)
- 新确认打开时自动取消旧确认,防止竞态条件
- 工具执行添加 30 秒超时保护,防止 IPC 挂起
- Agent Loop 添加 5 分钟全局超时
- 每轮循环检查 abort 信号
- 工具执行失败时输出 console.error 便于调试
|
2026-04-06 18:15:18 +08:00 |
|
Metona
|
35a0c58bde
|
fix: 修复输入框交互问题
- #app添加position:relative确保absolute子元素定位正确
- 修复记忆面板与设置面板的重复ID(toggleMemoryEnabled)
- 输入区域添加z-index和pointer-events确保始终可交互
- 聊天输入框添加pointer-events:auto和user-select:text
|
2026-04-06 17:44:04 +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
|
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 |
|