Commit Graph
102 Commits
Author SHA1 Message Date
Metona Dev 8ffba1a857 fix: 全面审查修复 - 日志/死代码/工具卡片/技能描述
- sqlite.ts: 移除 console.warn,改用状态变量跟踪 FTS5 可用性
- tool-handlers.ts: download_file/append_file/edit_file 补充 sendLog 执行日志
- chat-area.ts: 工具卡片补齐 29 个工具的图标/名称/参数/结果渲染
- main.ts: 移除未使用的 stopAllMCPServers 导入
- skill-manager.ts: 修复 /** 注释语法错误,补充 browser*/spawn_task 工具描述
2026-04-18 10:47:38 +08:00
Metona Dev a6d38ed9cb fix: 工具面板/帮助面板同步更新 + 图片上传限制
- 工具面板: 20→29个工具,补齐 web_search/memory_*/session_*/spawn_task/browser_*
- 帮助面板: 工具数量21→29,新增人格模式/MCP/Cron/Heartbeat说明,补充/retry等命令
- 图片上传: preload透传完整options,ipc尊重multiple参数,图片选择器限制单文件
2026-04-18 10:42:58 +08:00
thzxx 22a33ae241 feat: 实现 MCP (Model Context Protocol) 完整功能
主进程:
- 新增 mcp-manager.ts: JSON-RPC 2.0 over stdio 通信
  - 服务器生命周期管理 (spawn/initialize/handshake/stop)
  - tools/list 动态工具发现
  - tools/call 工具执行 (30 秒超时)
  - 消息分帧 (newline-delimited JSON)
  - 优雅清理 (pending 请求超时 + SIGTERM)

IPC 通道 (7 个):
- mcp:startServer / mcp:stopServer / mcp:stopAll
- mcp:callTool / mcp:getTools / mcp:getStatuses / mcp:refreshTools

渲染端:
- mcp-client.ts 完整重写: 配置管理 + 服务器生命周期 + 工具定义获取 + 工具执行
- tool-registry.ts: MCP 工具路由 (mcp_ 前缀识别 → executeMCPTool)
- settings-modal.ts: MCP 服务器管理 UI (添加/启用/禁用/删除/状态显示)
- main.ts: 启动时自动启动已启用的 MCP 服务器

数据流:
settings.mcp_servers → startAllMCPServers → initialize → tools/list → getMCPToolDefinitions → Agent Loop → mcp_ 工具调用 → callTool → JSON-RPC → MCP Server
2026-04-18 10:14:33 +08:00
thzxx d2468cd6fc refactor: 全面清理死代码 — 删除 348 行无用代码
删除文件:
- training-export.ts: 训练数据导出(零引用,UI 已移除)

删除函数:
- workspace.ts: isProcessAlive, getActiveProcessCount, execWorkspaceCommand, terminateWorkspaceCommand
- sqlite.ts: deleteMessagesBySession, getSkill, closeDatabase
- tool-registry.ts: isToolEnabled
- cron-manager.ts: clearAllTimers
- workspace-panel.ts: setOnToolTerminated, setWorkspaceDirPath

删除 UI:
- index.html: 训练数据导出按钮及说明
- settings-modal.ts: 训练数据导出事件绑定
2026-04-18 10:08:01 +08:00
thzxx 889d34b484 feat: v5.0 全面进化 — 浏览器控制 + 训练数据导出 + Cron 定时任务
新增功能:

1. 🌐 浏览器控制(8 个工具)
   - 主进程 browser.ts: 基于隐藏 BrowserWindow 的浏览器引擎
   - browser_open: 加载 URL,返回标题和最终 URL
   - browser_screenshot: 页面截图(base64 PNG)
   - browser_evaluate: 执行任意 JS,支持 DOM 操作
   - browser_extract: 提取页面文本 + 链接(最多 50 条)
   - browser_click: CSS 选择器点击
   - browser_type: 输入框文本输入
   - browser_scroll: 上下滚动/顶部/底部
   - browser_close: 关闭浏览器释放资源
   - 应用退出时自动清理 (before-quit)
   - 工具总数:34 个

2. 📚 训练数据导出
   - training-export.ts: 从 traces + messages 提取 SFT 格式训练数据
   - 输出 JSONL 格式(instruction/input/output/tools/observations/metadata)
   - 设置面板一键导出,Electron 原生文件对话框选择保存位置

3.  Cron 定时任务
   - cron-manager.ts: one-shot(指定时间)+ recurring(周期性)
   - 任务配置持久化到 settings
   - 设置面板添加/删除/启用/禁用
   - 任务触发时自动填入聊天输入框 + toast 通知
   - 应用启动时自动恢复所有已启用任务

新增文件:browser.ts, cron-manager.ts, training-export.ts
修改文件:ipc.ts, main.ts, settings-modal.ts, index.html, main.ts(渲染), tool-registry.ts
2026-04-18 09:29:29 +08:00
thzxx 374d86086e feat: v4.3 生态扩展 — 诊断系统 + Heartbeat + 子代理 + MCP
新增功能:

1. 🩺 一键诊断系统
   - 设置面板添加「一键诊断」按钮
   - 检查项:Ollama 连接、模型可用性、模型能力(Tools/Vision/Think)、
     SQLite 数据库、技能系统、应用版本信息
   - 实时渲染诊断结果,/⚠️/ 状态标识

2. 💓 Heartbeat 后台检查
   - 设置面板添加开关 + 间隔选择(10分/30分/1小时/2小时)
   - 定时检查 Ollama 连接,异常时系统通知
   - 配置持久化到 settings,启动时自动恢复
   - startHeartbeat/stopHeartbeat/restoreHeartbeat 三件套

3. 🤖 子代理委派(spawn_task)
   - 新增 spawn_task 工具(26 个工具)
   - 子 Agent 独立运行(独立消息上下文,5 轮上限,2 分钟超时)
   - 不支持工具调用,专注于文本推理任务
   - 主 Agent 可传入附加上下文
   - 结果返回主 Agent Loop

4. 🔌 MCP Client 框架
   - mcp-client.ts: MCP 服务器配置管理(增删改查、启用禁用)
   - 配置存储在 settings.mcp_servers
   - 工具注册框架就绪,待主进程 MCP bridge 实现协议通信

新增文件:mcp-client.ts, sub-agent.ts
修改文件:settings-modal.ts, index.html, main.ts, tool-registry.ts
2026-04-18 09:25:40 +08:00
thzxx f1625b4353 feat: v4.2 智能进化 — 技能自动生成 + 用户画像 + 人格模板
新增功能:

1. 技能自动生成系统 (Skill Loop)
   - 新增 skills 表:id/name/description/trigger_keywords/tool_chain/success_count/fail_count
   - skill-manager.ts: 从成功工具调用链自动提取可复用技能
   - 关键词匹配 + 成功率加权的技能检索
   - 匹配到的技能自动注入 system prompt(含工具链步骤和成功率)
   - Agent Loop 结束后自动提取,开始前自动匹配注入
   - DB/IPC/Preload 全链路支持

2. 用户画像模型
   - 自动从对话中推断技术栈(14 种技术关键词检测)
   - 画像存储在 settings.user_profile
   - 自动注入 system prompt(技术栈/角色/风格)
   - 随使用不断积累完善

3. 人格模板切换(6 种预设)
   - 🤖 通用助手(默认,温度跟随设置)
   - 💻 编程助手(温度 0.3,注重代码质量)
   - ✍️ 写作助手(温度 0.8,注重文采流畅)
   - 📊 数据分析(温度 0.2,注重精确逻辑)
   - 🌐 翻译助手(温度 0.4,注重信达雅)
   - 🔍 代码审查(温度 0.3,注重安全性能)
   - 设置面板 3×2 网格按钮,点击切换 + 自动调整温度

修改文件:9 个已有 + 1 个新建(skill-manager.ts)
2026-04-18 09:22:25 +08:00
thzxx d8f89ad097 feat: v4.1 会话增强 — /retry /undo /compress + 工具并行执行
新增功能:
- /retry:重试上一轮对话,删除最后的 AI 回复并重新触发 Agent Loop
- /undo:撤销最后的用户+AI 消息对
- /compress:用 LLM 摘要压缩中间对话,保留首尾上下文
- 工具并行执行:同一批次内互相独立的工具用 Promise.all 并行执行

技术细节:
- input-area.ts: 命令检测在 sendMessage() 入口处,/retry 支持普通聊天和 Agent Loop 两种模式
- chat-area.ts: 新增 clearMessagesDOM() 用于 undo/compress 后强制重建 DOM
- agent-engine.ts: 工具调用分批算法 — 根据 TOOLS_WITH_DATA_DEPS 集合检测依赖关系,
  独立工具同批并行,有依赖的工具跨批串行
2026-04-18 09:15:10 +08:00
thzxx 5ea958e5c1 style: UI 主题改版 — 暗色→暖色调亮色主题
- 奶白背景 (#FAF7F2) + 珊瑚橙主色 (#E8734A)
- 圆润柔和设计: radius 8-20px, 柔和阴影
- 紫色辅助色 (Think/推理), 金色标签 (Token)
- 终端区域保留深色 (#2D2016 暖棕) 保证可读性
- 窗口背景色、导出 HTML、theme-color 同步更新
- 字体升级: Inter + JetBrains Mono
2026-04-17 13:52:55 +08:00
thzxx 26cbac71fe feat: v4.0.0 大版本升级 - SQLite3 + ReAct Agent
- P0: 存储层 IndexedDB → SQLite3 (better-sqlite3),7张表 + FTS5全文搜索
- P1: Agent Engine 升级为 ReAct 模式(思考→行动→观察→反思)
- P2: 新增 4 个工具(memory_search, memory_add, session_list, session_read)
- P3: 上下文管理器(滑动窗口 + 摘要压缩 + 记忆注入)
- P4: UI 改版(ReAct 执行面板样式 + 思考过程卡片)
- P5: IndexedDB → SQLite 数据迁移支持
- MAX_LOOPS 10→15, MAX_LOOP_TIME 5min→10min, 错误自动重试 2 次
2026-04-17 12:35:42 +08:00
thzxx c62fd4c7fd feat: run_command 改为下拉框设置自动/需确认/禁用三种模式
- 替换原有开关为下拉选择框(selectRunCommandMode)
- 新增 setRunCommandMode() 动态控制确认行为
- 需确认模式:弹窗确认后执行
- 自动模式:直接执行,无需确认
- 禁用模式:工具不可用
- 新增 .tool-card-badge.disabled 样式
- 状态从 runCommandEnabled(bool) 迁移为 runCommandMode(string)
2026-04-16 19:39:11 +08:00
Metona Dev b6c51393f8 fix: 修复图片传输 + 记忆开关 + 统一图标
1. fix: 开启工具调用后图片无法传给AI
   - agent-engine.ts: images 为空文字时自动生成分析提示
   - input-area.ts: 图片+文字合并为单条消息,避免历史消息中图片丢失

2. fix: 记忆弹框自动记忆开关点击无响应
   - memory-modal.ts: CSS 类名 memory-toggle → toggle-label,启用完整滑块样式

3. chore: 统一应用图标为科技感羊驼
   - llama.png / llama.ico: 霓虹电路风格羊驼图标
2026-04-16 13:50:29 +08:00
OpenClaw Agent 8901f841da refactor: 设置面板移除工具相关,全部移入工具面板
- 设置面板不再包含 Tool Calling 和命令执行配置
- 工具面板新增 Tool Calling 主开关
- Tool Calling 和 run_command 状态完全由工具面板管理
- 清理 settings-modal.ts 中的工具相关代码
2026-04-16 09:46:18 +08:00
OpenClaw Agent 5a3b88f232 feat: 工具列表独立为工具面板模态框
- Header 新增 🔧 工具按钮,点击打开工具面板
- 新增 tools-modal.ts 组件
- 工具面板以卡片网格展示全部 12 个工具
- 每个工具显示名称、描述、自动/需确认标签
- run_command 开关内嵌在工具卡片中
- 设置面板简化为「查看全部工具」按钮
- 设置面板保留 run_command 开关同步
2026-04-16 09:42:26 +08:00
OpenClaw Agent 21990adf09 fix: 导入功能绑定嵌入模型,仅向量记忆启用时可用
- 导入按钮默认禁用,需配置嵌入模型后才可点击
- 模态框打开时根据向量记忆状态自动启用/禁用导入按钮
- 导入时双重校验:按钮状态 + 函数入口检查
- 导入的每条记忆自动通过 addMemory 向量化存储
2026-04-16 09:34:05 +08:00
OpenClaw Agent 5825ae7742 feat: 记忆模态框支持导入 Markdown 文档
- 工具栏新增「导入」按钮,仅限 .md 文件
- 按 ## 二级标题自动分块解析为记忆条目
- 从标题自动推断记忆类型(事实/偏好/规则)
- 支持从标题提取重要性标记(importance:N)
- 回退策略:无标题分块时按段落拆分
2026-04-16 09:29:59 +08:00
OpenClaw Agent 8ec34106cd feat: 将记忆系统和知识库合并改造为长效向量记忆系统
- 移除知识库(KB/RAG)功能,删除 kb-modal.ts、rag.ts、memory-panel.ts
- 新增 vector-memory.ts:记忆向量存储与检索引擎
- 新增 memory-modal.ts:大模态框布局的记忆管理面板
- 简化记忆分类为3类:fact(事实)、preference(偏好)、rule(规则)
- 嵌入模型配置移至设置面板
- 无嵌入模型时自动降级为关键词搜索模式
- 向量搜索支持语义相似度检索
- 嵌入模型变化时自动重新索引所有记忆
2026-04-16 09:27:05 +08:00
thzxx 466df86fe4 feat: 移除系统提示词功能,由记忆系统替代
- 移除设置面板中的系统提示词开关和文本框
- 移除 input-area 和 agent-engine 中的系统提示词注入逻辑
- 移除 state/KEYS 中 SYSTEM_PROMPT 和 SYSTEM_PROMPT_ENABLED
- 移除 types.d.ts 中对应的 StateKey 类型
- 更新 README.md 设置表和帮助文档
- 记忆系统已完全覆盖系统提示词的功能,且更智能:自动提取、跨会话持久化、按相关性动态注入
2026-04-15 19:53:54 +08:00
thzxx b05a4785cc style: token 统计图标、数值、消息 token 信息加颜色
- header token 统计:琥珀色 (#FFD580),含背景色和边框
- 消息内 token 数:琥珀色 (.stat-tokens)
- 消息内耗时:主题蓝色 (.stat-duration)
- SVG token 图标同步上色,移除 opacity 透明度
2026-04-15 10:29:50 +08:00
thzxx 21d774fab4 fix: 图片/文件读取改用 base64,修复 atob Latin1 错误
- 主进程新增 fs:readFileBase64 IPC,读 Buffer 直接返回 base64
- 图片读取从 atob 转换改为直接使用 readFileBase64
- .metona 备份导入同理修复
- 根因:fs:readFile 用 utf-8 编码读取二进制文件,UTF-8 多字节序列超出 Latin1 范围导致 atob 失败
2026-04-08 16:46:22 +08:00
thzxx 43f45cc09c refactor: 工作空间改为单一终端,移除多 Tab 机制
- 移除新建终端按钮和 Tab 栏,只保留唯一默认终端
- AI 命令始终发往唯一终端,避免多终端时目标不确定
- 删除 createTerminalSession/closeTerminalTab/renderTerminalTabs 等多 Tab 相关代码
2026-04-08 16:35:54 +08:00
thzxx 01b1b0e9c5 fix: 设置面板修改地址后同步更新顶部导航连接状态 2026-04-08 13:22:39 +08:00
thzxx 0431ed56c0 refactor: 命令执行走工作空间终端,AI 不再直接执行
流程改为:AI 提出命令 → 用户确认 → 工作空间终端执行(实时显示)→ 结果反馈 AI → AI 回复

- handleRunCommand 直接 spawn 子进程,stdout/stderr 实时通过 cmd:output 推送
- 进程结束后通过 cmd:done 通知渲染进程
- 停止按钮通过 cmd:kill 终止进程
- 清理 workspace.ts 中不再需要的 execWorkspaceCommand 工具集成代码
- 去掉 workspace:execTool/killTool,改为 cmd:output/cmd:done/cmd:kill
2026-04-08 13:12:18 +08:00
thzxx d5e5f5f58a feat: AI 命令执行实时流式推送到工作空间终端
- execWorkspaceCommand 新增 onOutput 回调,stdout/stderr 实时推送
- ipc.ts workspace:execTool 实时转发输出 + 发送 toolDone 完成通知
- 渲染进程 appendToolStreamOutput 流式显示,handleToolDone 显示退出状态
- 去掉 tool-handlers.ts 中的一次性完整输出推送
- 完整流程:用户确认 → 实时输出 → 完成通知 → AI 回复结果
2026-04-08 13:06:57 +08:00
thzxx d150b53116 refactor: 工作空间去掉手动命令输入,终止时自动反馈 AI
- 移除工作空间终端的命令输入框和执行按钮
- 用户只能通过终止按钮中断卡住的 AI 命令
- 终止后自动通过 killTool IPC 终止进程,结果自动回传 AI
- 新增 workspace:killTool IPC 和 terminateCurrentToolCommand
- 新增终端底部状态提示(等待/执行中)
- 修复工作空间面板顶部对齐(90px → 92px)
2026-04-08 12:57:48 +08:00
thzxx d5f4112d97 fix: AI Tool Calling run_command 输出同步到工作空间终端面板
- handleRunCommand 改用 execWorkspaceCommand 替代 Node exec()
- 执行完成后通过 workspace:toolOutput IPC 事件推送命令和输出
- 渲染进程监听 onToolOutput,在活跃终端显示 AI 命令及结果
- 清理 tool-handlers.ts 中不再需要的 child_process 导入
2026-04-08 12:47:28 +08:00
thzxx f9eca2e524 v3.2.3: 工作空间面板改为常驻显示,固定宽度480px,不可关闭不可拖拽 2026-04-08 12:22:37 +08:00
thzxx d9e9416d35 feat: 工作空间与 AI Tool Calling 深度集成
核心变更:
- 新增 execWorkspaceCommand() 无超时进程执行(workspace.ts)
- 新增 workspace:execTool IPC 通道(无超时,5MB 输出上限)
- run_command 工具改用 workspace IPC,移除 30s 超时限制
- run_command 默认启用(需用户确认),AI 上下文注入工作空间目录
- Agent Loop 工具执行:run_command 无超时,其他工具保持 30s
- Agent 系统提示词新增工作空间规则(userTerminated/truncated 反馈)

UI 修复:
- Header z-index 提升至 50,Model Bar 提升至 40,Input Area 提升至 30
- 工作空间面板 top 调整为 90px(header + model-bar),不再遮挡菜单
- Input Area 增加 position: relative 确保 z-index 生效

其他:
- 新增 docs/DEVELOPMENT.md 开发规范文档
- 设置面板 run_command 开关文案优化,默认值改为 true
2026-04-07 22:24:58 +08:00
thzxx 5d0fff7f01 fix: 工作空间执行日志接入 + AI 工具提示词补充 run_command 指引 2026-04-07 20:13:48 +08:00
thzxx 46c9595f26 fix: 修复工作空间面板协调性问题
- 头部 Tab 改用 ws-header-tab class,与终端 Tab 的 ws-tab 解除冲突
- 终端 Tab bar 补充完整基础样式(background、border、cursor、transition)
- 补充 .ws-file-toolbar 的 min-height 和按钮 flex-shrink
- 移除未使用的 WorkspaceFileEntry、logWarn import
- resizer 添加 title 提示
2026-04-07 18:35:26 +08:00
thzxx 0e1f216aa4 feat: 添加工作空间面板 - 右侧终端/文件浏览器
- 新增主进程 workspace.ts:spawn 进程管理,流式输出,安全检查
- IPC 双向通信:workspace:exec(on/send 模式,无超时限制)
- preload 暴露 workspace API
- 渲染进程 workspace-panel.ts:多终端 Tab、ANSI 颜色渲染、文件浏览器
- 设置面板添加工作空间目录配置
- 启动时自动创建 workspace 目录
- 窗口关闭时自动清理所有子进程
- 帮助文档更新
2026-04-07 18:30:45 +08:00
thzxx 06e1900435 fix: Agent Loop 注入工具路径上下文引导,避免连续操作时路径丢失 2026-04-07 11:05:52 +08:00
thzxx 4dcbb4f1e9 fix: 修复 importSessions 中 result 变量重复声明导致编译失败 2026-04-07 02:10:01 +08:00
thzxx 79e4cac19b feat: header 增加当前会话总 token 消耗统计
- 新增 totalTokens 元素(帮助按钮右侧,🪙 图标 + 数字)
- chat-area.ts 新增 updateTotalTokens() 函数
- 四个触发点:新消息完成、新建会话、加载历史、应用初始化
- 数字自动格式化(toLocaleString)
2026-04-07 02:00:27 +08:00
thzxx a80baf363c fix: 修复 AI 回复 token 统计信息显示
- 直接 API 路径:增强 finalStats 捕获,从任意包含统计的 chunk 兜底收集
- Agent Loop 路径:新增 total_duration / eval_count 统计回传
- chat-area.ts: 修复 falsy 判断(eval_count=0 也应显示)
- agent-engine.ts: onDone 回调新增 stats 参数
2026-04-07 01:56:17 +08:00
thzxx 9735a1ed38 feat: 全面补充执行日志(135处)
补日志的模块:
- vector-store.ts: 0→7(init/create/delete/add/search 全覆盖)
- rag.ts: 3→7(initVectorStore/embedBatch/removeDoc/retrieveContext)
- chat-area.ts: 2→5(3个导出函数加日志)
- history-modal.ts: 4→5(打开历史记录)
- kb-modal.ts: 7→8(打开知识库管理)
- header.ts: 5→7(运行中模型状态)
2026-04-07 01:47:02 +08:00
thzxx 60152fb443 refactor: 清理渲染进程全部 58 处 console.log/warn/error
- 所有错误日志统一走 logService(logError/logWarn/logInfo)
- 无 logService 的地方补上对应调用
- 纯调试 trace 直接删除(桌面应用看不到 console)
- ollama.ts 流式解析错误改为静默跳过(非关键)
- 执行日志面板信息量不变
2026-04-07 01:42:56 +08:00
thzxx f174e7d737 fix: 聊天导出改用原生保存对话框,清理 downloadFile
- exportAsMarkdown/Html/Txt 全部改用 dialog.saveFile + fs.writeFile
- 删除 utils.ts 中的 downloadFile 函数(不再使用)
- 两处 a.download 保留为 fallback(bridge 不可用时降级)
2026-04-07 01:36:19 +08:00
thzxx 02d5ff19c7 feat: 文件对话框全部改用 Electron 原生对话框
- input-area.ts: 图片/文件上传改用 dialog.showOpenDialog(通过 IPC)
- settings-modal.ts: 导入改用原生打开对话框,导出改用原生保存对话框
- kb-modal.ts: 知识库文档上传改用原生打开对话框
- ipc.ts/preload.ts/types.d.ts: writeFile 增加 encoding 参数支持二进制写入
- index.html: 移除 4 个无用的 <input type="file"> 元素
- 清理死代码: fileToBase64, fileToText, isMetonaFile
2026-04-07 01:33:51 +08:00
thzxx 58ef272061 fix: 修复桌面集成失效 + 清理死代码
- main.ts: window.__metonaBridge → window.metonaDesktop(与 preload.ts 对齐)
- 删除 DesktopBridge 接口和 __metonaBridge 类型(从未使用)
- 删除 extractDocument(定义了但无调用)
- 删除 logIPC(导出了但零引用)
- 删除 getMessagesContainer(导出了但无调用)
- SAFE_DATA_TYPES 去掉多余的 export
- vite.config.ts 移除未使用的 server 配置
2026-04-07 01:28:07 +08:00
thzxx 9d9feb40a3 fix: 修复工具确认后执行卡死问题
问题:用户点击确认执行工具(如删除文件)后,页面一直处于'正在思考'loading状态,工具未被执行。
原因:tool-confirm-modal.ts 中 cleanup() 先将 resolveConfirm 设为 null,导致后续 resolveConfirm?.(true) 无法 resolve Promise,await callbacks.onConfirmTool(call) 永远挂起。
修复:在调用 cleanup() 前先保存 resolveConfirm 引用,cleanup 后再调用保存的引用来 resolve Promise。
2026-04-06 21:30:00 +08:00
Metona Dev c516755a5c fix: 修复三个启动相关 Bug
Bug 1: prompt()/confirm() 在 Electron contextIsolation 下不可用
- 新增 prompt-modal.ts 自定义弹窗组件
- 替换 memory-panel.ts、kb-modal.ts、settings-modal.ts、history-modal.ts 中所有 prompt()/confirm() 调用

Bug 2: 日志面板重启后无日志
- log-service.ts 新增 earlyBuffer 缓冲 initLogPanel() 之前的日志
- initLogPanel() 初始化时 flush earlyBuffer 到 DOM
- main.ts 中 initLogPanel() 移至最先初始化

Bug 3: 首次启动输入框可能被禁用
- main.ts init() 中防御性重置 IS_STREAMING/IS_HISTORY_VIEW/toolCallingEnabled 等状态
- catch 块也重置关键状态并初始化日志面板
2026-04-06 20:11:41 +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
thzxx 18a24a2a59 refactor: remove Agent preset system, fix run_command enable bug
- Delete preset-manager.ts and preset-bar.ts
- Clean up all preset references from main.ts, types.d.ts, state.ts
- Remove preset modal HTML and CSS, rename temp-slider/modal-actions classes
- Fix run_command tool not being enabled (missing setToolEnabled call)
2026-04-06 15:44:27 +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