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
b2951d8cd0
docs: 添加 OpenClaw & Hermes Agent 对比分析及 Metona 改进路线图
2026-04-18 09:10:06 +08:00
thzxx
137b8d86ef
fix: 彻底修复工具调用链断裂问题
...
问题根因:
1. 工具结果直接 JSON.stringify 生成臃肿 JSON(含 results 数组、formatted 长字符串等),
干扰模型理解,导致模型拿到搜索结果后不知道该继续调用 web_fetch
2. 模型返回空内容时,Agent Loop 直接终止,丢失了已有的工具调用上下文
3. 系统提示词对工具链式调用的约束力不足
修复方案:
- 新增 formatToolResultForModel():按工具类型精简结果,web_search 只保留 top 5,
web_fetch 截断 15K,移除冗余元数据字段
- 重写 AGENT_SYSTEM_PROMPT:明确要求工具链式调用(search→fetch→answer),
列出常见链式模式,强调「说了就要做」
- 重写 TOOL_USAGE_GUIDE:强化 web_search→web_fetch 强制链式规则
- 空响应处理:模型返回空内容时移除空消息、添加引导性提示、继续循环而非中断
- 记忆提取移到 Agent Loop 结束后,避免中途干扰
2026-04-18 08:40:52 +08:00
thzxx
93d7555a6f
fix: 去掉 ReAct 格式 prompt,恢复模型自然使用 API tool_calls
...
根因:REACT_SYSTEM_PROMPT 要求模型用 Thought/Action/Action Input
格式回复,导致模型用文本写工具调用而不是走 Ollama API 的
tool_calls 字段。v3.3.4 之前没有 ReAct prompt 时模型能正常调用。
改为简洁的 AGENT_SYSTEM_PROMPT,只描述工作方式和注意事项,
不规定输出格式,让模型自然使用 API function calling。
文本解析兜底保留作为安全网。
2026-04-18 08:24:02 +08:00
thzxx
4e158e8783
fix: 修复文本解析兜底正则不匹配模型实际输出格式
...
模型实际输出格式:
Action: write_file
Action Input: {"path": "测试.md", "content": ""}
原正则用 [\r\n]+ 强制要求换行,且 Action: 后的冒号和
Action Input: 的冒号处理冲突导致匹配失败。
改为 [\r\n\s]* 灵活匹配空白/换行。
2026-04-18 08:21:08 +08:00
thzxx
445695c6e1
feat: Agent Engine 文本解析兜底 — 支持不支持 function calling 的模型
...
当模型没有通过 Ollama API 的 tool_calls 字段返回工具调用,
而是在回复文本中写出 Action/Action Input 时(如 gemma4 系列),
自动从文本中提取工具调用,确保 ReAct Loop 正常执行。
支持的文本格式:
- **Action:** tool_name **Action Input:** {json}
- Action: tool_name Action Input: {json}
- 工具名白名单校验 + JSON 解析容错(单引号、尾逗号等)
2026-04-18 08:15:56 +08:00
thzxx
95153e9171
fix: 修复打包后应用无法启动(sql.js WASM 不含 FTS5 模块)
...
根因分析:
- sql.js 默认 WASM 构建不包含 FTS5 全文搜索扩展
- initDatabase() 中 CREATE VIRTUAL TABLE USING fts5 直接抛异常
- app.whenReady() 链没有 .catch(),错误被静默吞掉
- 结果:进程启动但窗口永远不显示(用户看到双击没反应)
修复内容:
1. main.ts: 添加 app.whenReady().catch() 错误处理,失败时弹出错误对话框
2. main.ts: 添加全局 uncaughtException/unhandledRejection 处理,写入 startup-error.log
3. sqlite.ts: FTS5 虚拟表创建改为可选,缺失时自动降级为 LIKE 搜索
4. sqlite.ts: 所有 FTS5 同步操作(save/delete/clear)加 _hasFTS5 守卫
2026-04-18 07:42:54 +08:00
thzxx
d98f1ff754
fix: 修复打包后 sql.js 未包含在 app.asar 导致启动报错
...
electron-builder 的 files 配置中 !node_modules/**/* 排除了所有
node_modules,但 sql.js 作为运行时依赖必须被打包。在排除规则前
显式包含 node_modules/sql.js/**/* 即可。
2026-04-17 17:44:41 +08:00
thzxx
ea55264b5a
fix: 修复 TypeScript 编译错误(sql.js 类型声明 + Row 转换)
2026-04-17 17:27:13 +08:00
thzxx
5fb36a93e6
docs: 根据 v3.3.4 实际代码更新 README 和开发规范
...
- README.md: Agent Loop 说明补充去重机制
- README.md: 记忆类型表增加检索方式列(规则/偏好始终注入)
- README.md: 记忆工作流程更新(规则/偏好始终注入 + 事实关键词检索)
- README.md: web_fetch 补充默认返回完整内容说明
- docs/DEVELOPMENT.md: Tool Calling 流程补充去重机制
- docs/DEVELOPMENT.md: 联网搜索联动补充 web_fetch 不截断说明
2026-04-17 10:44:56 +08:00
thzxx
1771b1e326
bump: 版本号更新至 3.3.4
...
- package.json: 3.3.3 → 3.3.4
- src/renderer/index.html: 版本显示 v3.3.4
- README.md: badge、下载链接、构建分支引用
- docs/CHANGELOG.md: 版本链 + v3.3.4 更新日志
- docs/BUILD.md: 构建分支引用 + v3.3.4 构建日志
- docs/DEVELOPMENT.md: 版本号
2026-04-17 10:38:21 +08:00
thzxx
bc0025161e
fix: 修复记忆系统rule/preference不生效的问题
...
- searchMemoriesByKeyword: rule和preference类型始终注入,不再依赖关键词匹配
- 只有fact类型保留关键词匹配逻辑
- buildMemoryContext: 区分三类记忆的system prompt措辞
- rule: 【必须严格遵守的规则】无条件执行
- preference: 【用户偏好】请遵循
- fact: 【参考信息】无关可忽略
2026-04-17 10:33:44 +08:00
thzxx
5ee23387c0
fix: 修复Agent Loop工具调用重复问题,移除web_fetch截断
...
- 新增工具调用缓存机制,避免重复调用相同工具+参数
- 新增同轮内重复检测和跨轮次重复检测,连续两轮相同调用自动终止循环
- TOOLS_USAGE_GUIDE 新增第8条严禁重复调用规则
- web_fetch 默认不截断(max_chars=0),返回完整内容
- 移除 tool-registry.ts executeTool 中重复的 logToolStart 调用
2026-04-17 10:28:12 +08:00
thzxx
b2c3e6eb84
docs: 同步更新 README/DEVELOPMENT/BUILD 文档与实际代码一致
2026-04-16 20:02:35 +08:00
thzxx
a18b04a890
chore: 版本号更新至 3.3.2
2026-04-16 19:50:44 +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
thzxx
fe0daf7075
chore: 除 run_command 外所有工具改为自动执行无需确认
2026-04-16 19:32:03 +08:00
thzxx
5de4cfbabb
feat: 添加 web_search 联网搜索工具 (21个工具)
...
- 新增 web_search 工具:AI 可主动联网搜索获取实时信息
- 搜索引擎:DuckDuckGo 优先,Bing 作为备用
- 返回结构化结果:标题、URL、摘要
- 自动启用,无需用户确认(只读操作)
- 更新 README 工具列表和计数
2026-04-16 19:29:15 +08:00
thzxx
a67995166c
merge: develop into master
2026-04-08 13:34:20 +08:00
thzxx
03a396c730
fix: handleRunCommand 补全执行日志(安全检查、执行开始、完成、异常、终止)
2026-04-08 13:33:50 +08:00
thzxx
b087761d65
docs: 更新 DEVELOPMENT.md 5.3 工作空间与 AI 集成流程
2026-04-08 13:32:03 +08:00
thzxx
4c0f91dd41
docs: 开发规范合并到 DEVELOPMENT.md,删除多余的 CONVENTIONS.md
...
- DEVELOPMENT.md 新增版本号更新文件清单
- DEVELOPMENT.md 新增更新日志规范(只写 CHANGELOG.md)
- DEVELOPMENT.md 新增分支提交规则(不多分支推送)
- 删除重复的 docs/CONVENTIONS.md
2026-04-08 13:30:43 +08:00
thzxx
c8e14b8478
docs: 新增 docs/CONVENTIONS.md 开发规范
2026-04-08 13:27:51 +08:00
thzxx
060a5cc8d4
docs: README.md 移除历史版本记录,更新日志统一到 docs/CHANGELOG.md
2026-04-08 13:27:11 +08:00
thzxx
f0bad05494
chore: 版本号更新至 3.2.4
...
- package.json version 3.2.4
- README.md 版本徽章、下载说明、构建分支
- docs/CHANGELOG.md 新增 v3.2.4 版本说明,版本链补全 v3.2.3
- docs/BUILD.md 新增 v3.2.4 构建日志,构建分支引用
- src/renderer/index.html 应用标题版本号
2026-04-08 13:26:14 +08:00
thzxx
01b1b0e9c5
fix: 设置面板修改地址后同步更新顶部导航连接状态
2026-04-08 13:22:39 +08:00
thzxx
83fe7ba4ce
fix: 清理 TOOL_USAGE_GUIDE 中引用已删除字段的规则
2026-04-08 13:16:34 +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
f9ad682f01
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:36 +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
5800aaedd2
docs: 更新 BUILD.md,修正仓库地址并添加 v3.2.3 构建日志
2026-04-08 12:40:43 +08:00
thzxx
75a45de5f2
docs: 更新 BUILD.md,修正仓库地址并添加 v3.2.3 构建日志
2026-04-08 12:40:35 +08:00
thzxx
b9710b71e1
docs: 更新 README 和 CHANGELOG,添加 v3.2.3 版本说明
2026-04-08 12:33:22 +08:00
thzxx
e663878da0
fix: 修复 tool-registry.ts 缺少 logInfo 导入导致 run_command 工具调用异常
2026-04-08 12:26:43 +08:00
thzxx
f9eca2e524
v3.2.3: 工作空间面板改为常驻显示,固定宽度480px,不可关闭不可拖拽
2026-04-08 12:22:37 +08:00
thzxx
6a74b8b0d2
docs: 更新 README 和 CHANGELOG,添加 v3.2.2 版本说明
2026-04-08 12:14:50 +08:00
thzxx
38f12ab1d8
docs: 更新构建指南,补充 v3.2.2 构建问题排查与手动缓存方案
2026-04-08 12:11:50 +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
9f01138062
feat: 构建资源本地缓存 + restore-build-cache.sh + 更新 BUILD.md
...
- restore-build-cache.sh: 自动从 build-resources/ 或镜像恢复缓存
- build-resources/ 已在 .gitignore(不进 git,145MB)
- BUILD.md: 重写为快速构建 3 步指南
2026-04-07 02:20:41 +08:00
thzxx
8f77bcfb1a
fix: build-resources 从 git 移除(145MB 本地资源不进仓库)
2026-04-07 02:18:57 +08:00
thzxx
4ccd53e087
fix: 修复 vector-store.ts colId 变量重复声明
2026-04-07 02:10:20 +08:00
thzxx
4dcbb4f1e9
fix: 修复 importSessions 中 result 变量重复声明导致编译失败
2026-04-07 02:10:01 +08:00
thzxx
0a476365b2
chore: 版本号升级 3.0.0 → 3.1.0
2026-04-07 02:02:19 +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
e1e67dd285
docs: 更新帮助弹框 — 新增 Tool Calling 和 Agent 记忆系统说明,移除已废弃的 Agent 预设
2026-04-07 00:01:14 +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
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
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
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
thzxx
2fa274e1b1
docs: README.md 全面重写
...
- 新增 Ollama API 调用清单(接口/方法/调用位置/用途)
- 新增流式聊天 NDJSON 数据格式说明
- 新增聊天请求参数完整示例
- 新增强制停止机制流程图
- 更新版本号至 v2.0.0
- 功能特性改为表格
- 设置项关联 API 参数
2026-04-03 13:21:34 +08:00
thzxx
194b402623
fix: 模型栏图标改为方块/列表,避免与 Think 灯泡重复
2026-04-03 13:17:59 +08:00
thzxx
66acfb7f3e
ui: 模型选择栏布局重设计
...
- 新增渐变图标指示器
- select 更大圆角 + 更粗边框 + hover/focus 渐变高亮
- 能力标签改为独立彩色 pill(Think 紫色、Vision 青色)
- 箭头图标改为青色
- model-bar.js 适配新 badge 元素
2026-04-03 13:10:00 +08:00
thzxx
7f842fc02e
ui: 导航按钮和 Think 按钮统一渐变风格
...
所有按钮统一为青紫渐变 + 发光风格:
- 导航按钮: 渐变背景、白色图标、hover 放大 + 光晕
- Think 按钮选中态: 渐变背景、白色图标,与发送按钮一致
- Think 按钮未选中: 玻璃态,hover 紫色放大
- 尺寸统一 40-42px,与发送按钮对齐
2026-04-03 13:05:25 +08:00
thzxx
2e1b0ad066
ui: 导航按钮和 Think 按钮视觉增强
...
导航按钮 (.icon-btn):
- 增加玻璃背景 + 边框,不再透明
- hover 时青色高亮 + 发光 + 上浮
- 图标 18px → 20px
Think 按钮:
- 尺寸 38px → 40px,默认色 text-muted → text-secondary
- hover 时紫色发光 + 上浮
- 选中态渐变背景 + 更强光晕
2026-04-03 13:00:20 +08:00
thzxx
be4e7bf101
fix: 移除 safeMarkdown 中的 sanitize 调用,修复消息渲染问题
...
- safeMarkdown 不再调 sanitize,直接用 marked 输出
- marked 产出的 HTML 已经足够安全(代码块、列表等)
- sanitizer.js 保留供 marked-config.js 链接安全检查使用
- 修复 catch 块中改用 assistantContent 而非 DOM textContent
2026-04-03 12:54:17 +08:00
thzxx
17a818c3da
fix: 停止时消息内容显示 undefined — 彻底修复
...
根本原因:catch 块从 DOM 读 textContent 存在时序问题,改为直接用
assistantContent 变量(已在 try 外声明),完全绕过 DOM 读取。
改动:
- catch 块:不再读 contentDiv.textContent,直接用 assistantContent
- appendMessageDOM:空内容不调 safeMarkdown 避免生成空 <p>
- 通用错误处理同样改用 assistantContent
2026-04-03 12:46:30 +08:00
thzxx
eb04a6baa8
fix: 历史记录分页 — 会话丢失导致数据不完整
...
问题根因:
1. startNewSession() 未保存当前会话 → 点「新建会话」时旧会话丢失
2. 用户消息发送后未立即保存 → 刷新/关闭页面丢失对话
3. 通用错误处理中 saveCurrentSession() 缺少 await
修复:
- startNewSession: 新建前先保存当前会话(有消息时)
- sendMessage: 发送用户消息后立即 saveCurrentSession
- catch 块中 saveCurrentSession 补上 await
2026-04-03 12:39:59 +08:00
thzxx
27317f4d32
fix: 停止时消息内容变 undefined — 变量作用域问题
...
assistantContent/thinkContent/modelName 声明在 try 块内,
catch 中访问不到导致全部为 undefined。
将声明提到 try 外部,catch 正常访问已生成内容。
2026-04-03 12:33:02 +08:00
thzxx
f80dd7f390
feat: 强制停止AI回复 - 真正中止Ollama接口请求
...
- ollama-api.js: chatStream 新增 AbortController 参数,同时中止 fetch 和 reader
- input-area.js: 发送按钮流式时变为停止按钮(红色方块),点击立即 abort
- abort 时保留已生成内容,标记 [已停止]
- 停止按钮带脉冲动画,视觉反馈明确
- 真正的接口级别终止:fetch abort + reader.cancel 双重保险
2026-04-03 12:31:04 +08:00
thzxx
6088ea4629
feat: 重新设计模型选择栏与 Think 模式
...
模型选择栏:
- 去掉原生 select 样式,自定义 appearance:none + 箭头图标
- 模型列表显示参数大小 (如 qwen2.5 · 7B)
- 选中模型后展示能力标签 (🧠 Think / 👁️ Vision)
Think 模式:
- 从模型栏移至输入区域,紧邻发送按钮
- 使用灯泡图标按钮替代原来的 toggle 开关
- 默认 disabled,切换模型时调用 /api/show 检测 capabilities
- capabilities 包含 'thinking' 时才启用,否则禁用并灰显
- 模型能力结果缓存,避免重复请求
2026-04-03 11:46:29 +08:00
thzxx
41b512c779
chore: 项目文件归类整理
...
- assets/icons/ → 图标资源 (llama.ico, llama.png)
- css/ → 样式文件 (style.css)
- js/ → 所有业务代码
- js/lib/ → 第三方库 (marked.esm.js)
- js/components/ → UI 组件
修正所有 import 路径、HTML 引用、SW 缓存列表
2026-04-03 11:40:01 +08:00
thzxx
38edaee0f0
refactor: 模块化架构重构
...
将单文件巨型 IIFE (1608行) 拆分为 14 个 ES Module:
核心层:
- js/state.js - 轻量级响应式状态管理 (发布-订阅)
- js/utils.js - 通用工具函数
- js/sanitizer.js - HTML XSS 净化器
- js/marked-config.js - Markdown 渲染器配置
组件层:
- js/components/chat-area.js - 消息渲染/流式更新/导出
- js/components/input-area.js - 文本输入/图片上传/发送
- js/components/history-modal.js - 历史记录面板/搜索/分页
- js/components/settings-modal.js - 设置面板/数据管理
- js/components/header.js - 顶部导航/连接状态
- js/components/model-bar.js - 模型选择栏
- js/components/toast.js - Toast 通知
- js/components/lightbox.js - 图片预览
入口层:
- js/app.js - 主入口/初始化协调
index.html: 1608行 → 204行纯模板
2026-04-03 11:34:24 +08:00