Commit Graph
247 Commits
Author SHA1 Message Date
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 4518929a4c fix: 修复 sql.js 未包含在 app.asar(files 排除顺序问题) 2026-04-17 20:44:21 +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 1b66ee5f19 docs: 更新 README 和 docs 中数据库描述为 sql.js (WASM) 2026-04-17 16:29:48 +08:00
thzxx 16266ebdde refactor: 数据库层从 better-sqlite3 迁移到 sql.js (WASM)
- 替换原生依赖 better-sqlite3 为纯 WASM 的 sql.js,消除 Electron ABI 版本不匹配问题
- 新增 sql.js 兼容层:runExec/queryOne/queryAll/runPragma/runTransaction
- initDatabase() 改为异步(WASM 加载需要)
- 每次写操作后自动 persist() 到磁盘
- electron-builder 配置:extraResources 打包 sql-wasm.wasm
- 移除 @electron/rebuild 依赖和 postinstall 脚本
- 设置 npmRebuild: false(不再需要原生模块重编译)
2026-04-17 16:26:53 +08:00
thzxx ba03b31677 feat: 重新设计应用图标,匹配暖色调珊瑚橙主题
- 羊驼面部更精致:比例优化、腮红渐变、瞳孔虹膜质感
- 新增 AI 星光元素(右耳上方),暗示 AI Tool Calling 能力
- 底部保留 </> 代码符号装饰
- 色彩严格匹配项目暖色调主题(#FAF7F2 背景 + #E8734A 珊瑚橙)
- 同步更新 llama.ico / llama.png / icon-new 全套图标
2026-04-17 15:13:59 +08:00
thzxx 69087f2854 fix: 添加 @electron/rebuild 解决 better-sqlite3 原生模块 ABI 不匹配问题
- 添加 @electron/rebuild 到 devDependencies
- 添加 postinstall 脚本自动为 Electron 重新编译原生模块
- electron-builder 配置添加 npmRebuild + buildDependenciesFromSource
2026-04-17 15:03:10 +08:00
Metona CI 3c65d69744 feat: 重新设计应用图标,匹配暖色调主题(奶白+珊瑚橙) 2026-04-17 14:54:21 +08:00
thzxx 24a5475a7f docs: 重构 README.md & 更新 docs 文件适配 v4.0.0
- README.md: 全面重写,反映实际项目状态(25工具、SQLite、ReAct、暖色主题)
- DEVELOPMENT.md: 更新技术栈(SQLite替代IndexedDB)、架构(ReAct)、工具数、UI规范
- CHANGELOG.md: v4.0.0条目补充UI主题改版说明
- BUILD.md: 新增v4.0.0构建日志
2026-04-17 13:59:44 +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 b4c7da87b7 chore: 版本号更新至 4.0.0 2026-04-17 13:44:41 +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 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
Metona d53fe047e5 docs: 更新 README.md 和 DEVELOPMENT.md 以反映 v3.3.3 实际变更
- README.md: Tool Calling 标题更新为「AI 自主工具调用(21 个工具)」
- DEVELOPMENT.md:
  - 5.2 Tool Calling 流程:标注 run_command 为唯一需确认工具
  - 新增 5.3 联网搜索与网页抓取联动说明
  - 原 5.3 工作空间重编号为 5.4
2026-04-17 09:15:45 +08:00
Metona c2e821f39a chore: 补充 docs 目录版本号更新
- docs/DEVELOPMENT.md: 3.3.2 → 3.3.3
- docs/BUILD.md: 构建分支名更新 + 新增 v3.3.3 构建日志
- docs/CHANGELOG.md: 版本链追加 v3.3.3 + 新增 v3.3.3 更新日志
2026-04-17 09:10:01 +08:00
Metona 9850bbf094 chore: 版本号 3.3.2 → 3.3.3 2026-04-17 09:05:38 +08:00
Metona dd7349338b feat: 增强 AI 主动调用工具的 prompt 指导
新增第 7 条「主动使用工具」规则:
- 明确告知 AI 在不确定、信息过时、需要实时数据时应主动调用工具
- 列举典型场景与对应工具的映射关系
- 强调宁可多调一次工具,也不要给出过时或编造的信息
2026-04-17 09:03:54 +08:00
Metona 0ea9c6fc9f feat: web_search 默认结果数 8 → 15 2026-04-17 09:02:08 +08:00
Metona fdb0e96561 feat: 增强联网搜索与网页抓取的联动
1. TOOL_USAGE_GUIDE 新增第 6 条:联网搜索联动规则
   - 要求 AI 在 web_search 后必须选择相关 URL 调用 web_fetch 抓取详情
   - 明确告知搜索摘要往往不完整,必须抓取原文才能给出准确答案
2. web_search 默认结果数从 5 提升到 8,给 AI 更多线索定位目标页面
2026-04-17 09:00:08 +08:00
Metona a2cff73fd7 style: 加宽帮助面板 600px → 760px 2026-04-17 08:57:03 +08:00
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
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
Metona Dev eb275516f3 docs: 根据项目实际同步 README.md 和 docs 2026-04-16 14:03:34 +08:00
Metona Dev 405040c1be chore: 版本号更新至 3.3.1 2026-04-16 13:54:16 +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
thzxx d810fb84c0 docs: 更新 README.md AI 聊天客户端 → AI Agent客户端 2026-04-16 10:53:00 +08:00
thzxx 2b8f53bc81 fix: resolve TS2339 error in ipc.ts - cast result.error to String 2026-04-16 10:46:56 +08:00
thzxx 25ffd22639 docs: 全面同步文档与实际代码
README.md:
- Tool Calling 工具表扩展至 20 个(原 7 个)
- 移除已废弃的 RAG 知识库 section,更新为向量记忆说明
- 项目结构同步实际文件(移除 rag.ts/kb-modal.ts/memory-panel.ts,新增 memory-modal.ts 等)
- 架构图更新,移除 RAG 引用
- 记忆提取触发条件 ≥3 → ≥6
- 记忆类型表移除「事件」类型
- 技术栈 NSIS+Portable → NSIS
- 工作空间面板描述修正(固定 480px,单一终端进程)

docs/DEVELOPMENT.md:
- 子系统引用 rag.ts → vector-memory.ts
- 移除拖拽调整宽度描述

docs/CHANGELOG.md:
- v3.3.0 条目补充完整变更说明
2026-04-16 10:37:43 +08:00
thzxx f58be52e98 fix: 修正帮助面板描述与实际功能不一致
- 工作空间终端从「多终端 Tab」改为「单一终端进程」
- 移除工作空间面板拖拽调整宽度的描述(当前固定 480px)
2026-04-16 10:28:58 +08:00
thzxx 9f0c5ae7b5 chore: 版本号更新至 3.3.0 2026-04-16 10:19:51 +08:00
OpenClaw Agent 7c22405386 feat: 全面补充工具执行日志
- IPC 分发层:所有工具执行后自动记录成功/失败日志
- 新增 summarizeResult 函数:为每个工具生成可读的结果摘要
- move_file/copy_file/web_fetch:新增操作前后的详细日志
- 日志面板实时显示:工具名 + 结果摘要 + 错误详情
示例:
  🔧 tool:execute move_file → 📦 move_file 完成
  🔧 web_fetch ✓ → 200 | 5432 chars
  🔧 edit_file ✗ → 未找到要替换的文本
2026-04-16 10:09:09 +08:00
OpenClaw Agent 5085f59e17 fix: 全面检查修复
- 修复 init() catch 路径缺少组件初始化(memory-modal、tools-modal、help-modal、tool-confirm、workspace)
- logRAG 日志标签从 'RAG:' 更新为 '向量:'
- 确认所有 KB/RAG/episode 引用已清除
- 确认 20 个工具定义/IPC分发/处理函数完全匹配
- 确认记忆系统3类型(fact/preference/rule)全链路一致
- 确认快捷键无冲突
2026-04-16 10:02:39 +08:00