Commit Graph
145 Commits
Author SHA1 Message Date
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 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 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 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 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 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 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 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
OpenClaw Agent 80158cb5bf feat: git 工具升级为全操作支持(16 个子操作)
git 工具支持的操作:
- status: 查看状态(分支/修改/暂存/未追踪/删除/重命名)
- log: 提交历史
- diff: 差异查看(支持 staged)
- add: 暂存文件
- commit: 提交
- push/pull: 推送/拉取
- branch: 列出/创建/删除分支
- checkout: 切换分支
- merge: 合并分支
- stash: 暂存更改
- remote: 查看/添加远程仓库
- clone: 克隆仓库
- init: 初始化仓库
- reset: 重置
- tag: 标签管理

全部自动执行,无需用户确认
2026-04-16 09:55:33 +08:00
OpenClaw Agent 396100335a feat: 工具扩展至 20 个,新增 8 个实用工具
新增工具:
- get_file_info: 获取文件详细元数据(自动)
- tree: 树形目录结构展示(自动)
- download_file: URL 下载文件到本地(需确认)
- diff_files: 两个文件对比差异(自动)
- replace_in_files: glob 批量查找替换(需确认)
- read_multiple_files: 批量读取多个文件(自动)
- git_status: Git 仓库状态查看(自动)
- compress: 创建/解压 zip/tar.gz(需确认)
2026-04-16 09:50:52 +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 4099b5180f feat: 工具调用扩展,新增 5 个实用工具(共 12 个)
新增工具:
- move_file: 移动/重命名文件(需确认)
- copy_file: 复制文件/目录(需确认)
- web_fetch: 抓取网页内容,自动提取文本(自动)
- append_file: 追加内容到文件末尾(需确认)
- edit_file: 文件内查找替换,支持全部替换(需确认)

同步更新:
- 主进程 IPC 分发
- 工具安全检查(路径白名单)
- 设置面板工具列表 UI
- 帮助文档工具说明
2026-04-16 09:38:52 +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 40b45db9c6 chore: 版本号更新至 3.2.6
- package.json version → 3.2.6
- index.html app-version → v3.2.6
- README badge、安装包名、git checkout 分支
- CHANGELOG 新增 v3.2.6 条目,更新标签链
- BUILD.md 新增 v3.2.6 构建日志,更新 checkout 命令
- DEVELOPMENT.md 补充 flex 子元素说明
2026-04-15 10:37:00 +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 d6373ffafe fix: 工作空间面板改为 flex 子元素,修复与主内容区错位
- workspace-panel 从 position:fixed 改为 flex 子元素,与日志面板布局模式一致
- 移除 margin-right:480px hack,工作空间自然占据宽度
- 移除 updateNavHeight() 和 --nav-height CSS 变量(不再需要)
- 移除 border-top(flex 布局下顶部自动对齐)
2026-04-15 10:17:04 +08:00
thzxx 80ea5df68d fix: token图标改用纯path SVG内联,避免text元素在部分系统不显示 2026-04-14 18:47:37 +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 8783cd9b59 fix: 工作空间面板定位、中文乱码、快捷键、帮助文档
- 工作空间面板 top 改用 CSS 变量 --nav-height,JS 动态计算 header+model-bar 实际高度
- Windows 下 spawn 子进程前加 chcp 65001 切换 UTF-8 代码页,修复中文乱码
- 补全 Ctrl+K(知识库)、Ctrl+M(记忆面板)快捷键,防止 Ctrl+M 默认行为冲突
- 帮助弹框内容全面更新,修正工作空间为常驻显示,补充 Ctrl+N、布局说明等
- Token 统计图标从 emoji 🪙 改为内联 SVG,兼容所有 Windows 字体
2026-04-08 16:29:22 +08:00
thzxx 68c5571dd8 chore: 版本号更新至 3.2.5
更新文件:package.json、index.html、README.md、docs/BUILD.md、docs/CHANGELOG.md
2026-04-08 14:24:43 +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