docs: 重构 README.md + 更新 CHANGELOG.md v5.0.0

README.md 重构:
- 工具数量 25 → 34 + MCP 动态工具,完整列出所有工具
- 新增 MCP 章节(协议说明、功能特性、使用方式)
- 新增技能自动生成、用户画像、人格模式章节
- 架构图更新 v4.0 → v5.0(五大子系统)
- 项目结构更新(新增 browser.ts/mcp-manager.ts/cron-manager.ts/skill-manager.ts/sub-agent.ts/mcp-client.ts,删除已移除的 document-processor.ts)
- 精简安全/构建/下载章节

CHANGELOG.md v5.0.0 完善:
- 新增 MCP 完整实现条目(主进程/IPC/渲染端/工具路由/UI/启动集成/清理)
- 新增上下文管理接入条目
- 新增编译修复条目(useTools TDZ / loadURL timeout / browserScroll 类型)
- 新增 CSS 变量补全条目
- 新增全面代码清理条目(400+ 行 / 12 类死代码)
- 新增全链路执行日志条目
This commit is contained in:
thzxx
2026-04-18 10:30:08 +08:00
parent 3a33ebf949
commit db16640385
2 changed files with 216 additions and 230 deletions
+167 -218
View File
@@ -22,55 +22,59 @@
- **多模态** — 图片上传,自动检测 Vision 模型能力 - **多模态** — 图片上传,自动检测 Vision 模型能力
- **文件分析** — 支持 50+ 种文本/代码格式,单文件 ≤500KB - **文件分析** — 支持 50+ 种文本/代码格式,单文件 ≤500KB
### 🔧 Tool Calling — 25 个工具(AI 自主工具调用) ### 🔧 Tool Calling — 34 个内置工具 + MCP 动态工具
AI 在对话中主动调用本地工具完成任务,所有操作在用户可视化监督下执行: AI 在对话中主动调用本地工具完成任务,所有操作在用户可视化监督下执行:
| 工具 | 说明 | 安全级别 | | 工具 | 说明 |
|------|------|----------| |------|------|
| 📄 `read_file` | 读取文件内容(≤1MB,支持行范围) | 自动 | | 📄 `read_file` | 读取文件内容(≤1MB,支持行范围) |
| ✏️ `write_file` | 写入文件(自动创建父目录) | 自动 | | ✏️ `write_file` | 写入文件(自动创建父目录) |
| 📁 `list_directory` | 列出目录(支持递归、隐藏文件) | 自动 | | 📁 `list_directory` | 列出目录(支持递归、隐藏文件) |
| 🔍 `search_files` | 按文件名/内容搜索(支持扩展名过滤) | 自动 | | 🔍 `search_files` | 按文件名/内容搜索(支持扩展名过滤) |
| 📂 `create_directory` | 创建目录(递归创建) | 自动 | | 📂 `create_directory` | 创建目录(递归创建) |
| 🗑️ `delete_file` | 删除文件/目录 | 自动 | | 🗑️ `delete_file` | 删除文件/目录 |
| 💻 `run_command` | 执行 Shell 命令(无超时,工作空间终端执行) | 自动/需确认/禁用 | | 💻 `run_command` | 执行 Shell 命令(无超时,自动/需确认/禁用 |
| 📦 `move_file` | 移动/重命名文件或目录 | 自动 | | 📦 `move_file` | 移动/重命名文件或目录 |
| 📋 `copy_file` | 复制文件或目录 | 自动 | | 📋 `copy_file` | 复制文件或目录 |
| 🌐 `web_fetch` | 抓取网页内容(HTTP/HTTPS,默认返回完整内容) | 自动 | | 🌐 `web_fetch` | 抓取网页内容(HTTP/HTTPS |
| 🔍 `web_search` | 联网搜索(DuckDuckGo/Bing,返回标题+链接+摘要) | 自动 | | 🔍 `web_search` | 联网搜索(DuckDuckGo/Bing |
| `append_file` | 追加内容到文件末尾 | 自动 | | `append_file` | 追加内容到文件末尾 |
| ✂️ `edit_file` | 查找替换文件中的文本 | 自动 | | ✂️ `edit_file` | 查找替换文件中的文本 |
| `get_file_info` | 获取文件/目录详细信息 | 自动 | | `get_file_info` | 获取文件/目录详细信息 |
| 🌳 `tree` | 以树形结构展示目录 | 自动 | | 🌳 `tree` | 以树形结构展示目录 |
| ⬇️ `download_file` | 从 URL 下载文件到本地 | 自动 | | ⬇️ `download_file` | 从 URL 下载文件到本地 |
| 🔀 `diff_files` | 对比两个文件差异(unified diff | 自动 | | 🔀 `diff_files` | 对比两个文件差异(unified diff |
| 🔄 `replace_in_files` | 按 glob 模式批量查找替换多个文件 | 自动 | | 🔄 `replace_in_files` | 按 glob 模式批量查找替换 |
| 📚 `read_multiple_files` | 批量读取多个文件内容 | 自动 | | 📚 `read_multiple_files` | 批量读取多个文件内容 |
| 🔖 `git` | Git 操作(status/log/diff/add/commit/push/pull/branch/checkout/merge/stash 等 16 个子操作) | 自动 | | 🔖 `git` | Git 操作(16 个子操作) |
| 🗜️ `compress` | 创建/解压归档(zip/tar.gz | 自动 | | 🗜️ `compress` | 创建/解压归档(zip/tar.gz |
| 🧠 `memory_search` | 搜索 Agent 记忆(语义/关键词) | 自动 | | 🧠 `memory_search` | 搜索 Agent 记忆 |
| 💾 `memory_add` | 添加新记忆条目 | 自动 | | 💾 `memory_add` | 添加新记忆条目 |
| 📋 `session_list` | 列出历史会话 | 自动 | | 📋 `session_list` | 列出历史会话 |
| 📖 `session_read` | 读取历史会话内容 | 自动 | | 📖 `session_read` | 读取历史会话内容 |
| 🤖 `spawn_task` | 子代理委派(独立执行子任务) |
| 🌐 `browser_open` | 打开 URL 加载网页 |
| 📸 `browser_screenshot` | 浏览器截图 |
| ⚡ `browser_evaluate` | 在浏览器中执行 JavaScript |
| 📰 `browser_extract` | 提取页面文本和链接 |
| 👆 `browser_click` | 点击页面元素 |
| ⌨️ `browser_type` | 在输入框中输入文本 |
| ↕️ `browser_scroll` | 滚动浏览器页面 |
| ❌ `browser_close` | 关闭浏览器 |
**MCP 工具**:通过 [Model Context Protocol](https://modelcontextprotocol.io) 连接外部工具服务,动态注册工具。在设置面板添加 MCP Server 即可。
**Agent LoopReAct 模式)**:用户请求 → Thought → Action → Observation → Reflection → 循环直到 Final Answer。支持流式 + 并行调用 + 最大 15 轮保护 + 10 分钟总超时。自动检测并跳过重复工具调用。 **Agent LoopReAct 模式)**:用户请求 → Thought → Action → Observation → Reflection → 循环直到 Final Answer。支持流式 + 并行调用 + 最大 15 轮保护 + 10 分钟总超时。自动检测并跳过重复工具调用。
> ⚠️ 需要模型支持 Tool Calling(推荐 Qwen3、Llama 3.1+、Mistral > ⚠️ 需要模型支持 Tool Calling(推荐 Qwen3、Llama 3.1+、Mistral
### 🖥️ 工作空间 — 终端 & 文件浏览器 ### 🔌 MCP (Model Context Protocol)
右侧常驻面板(480px),提供终端命令行和文件浏览器: - 通过 JSON-RPC 2.0 over stdio 与外部工具服务通信
- 支持 `initialize` 握手、`tools/list` 工具发现、`tools/call` 工具执行
**终端** - 30 秒超时保护,优雅清理(pending 请求 + SIGTERM
- 实时流式显示命令输出(支持 ANSI 颜色) - 工具自动注入 Agent Loop,命名格式 `mcp_{server}_{tool}`
- 支持长时间运行命令(如 `ollama pull`),**无超时限制** - 设置面板管理:添加/启用/禁用/删除服务器
- 单一终端进程,可随时停止
**文件浏览器**
- 浏览工作空间目录,目录树展示
- 点击文件预览内容(带行号)
> ⚠️ Tool Calling 走 Agent Loop(有超时),工作空间走独立进程(无超时),由用户主动触发。
### 🧠 Agent 记忆系统 ### 🧠 Agent 记忆系统
AI 自动从对话中学习并记住关键信息,跨会话持续积累: AI 自动从对话中学习并记住关键信息,跨会话持续积累:
@@ -82,42 +86,68 @@ AI 自动从对话中学习并记住关键信息,跨会话持续积累:
| 📏 规则 | 应遵守的规则 | 始终注入 | | 📏 规则 | 应遵守的规则 | 始终注入 |
**特性** **特性**
- 对话 ≥6 条消息后自动触发 LLM 提取 - 对话 ≥6 条消息后自动触发提取
- FTS5 全文搜索 + 向量语义搜索(需选择嵌入模型) - FTS5 全文搜索 + 向量语义搜索
- SQLite 持久化,跨会话保留 - SQLite 持久化,跨会话保留
- 可视化管理面板(搜索、筛选、编辑、删除) - 可视化管理面板(搜索、筛选、编辑、删除)
- 设置中一键开关
### 🧠 技能自动生成
- 自动从成功工具调用链提取可复用技能
- `skills` 表持久化,支持关键词搜索和使用统计
- 下次同类任务自动匹配并注入技能上下文
### 👤 用户画像
- 从对话中自动检测用户技术栈(Python/TypeScript/Go/React 等)
- 用户画像注入 system promptAgent 行为更贴合用户习惯
### 🎭 人格模式
- 多种预设人格模板,独立 system prompt + 温度设置
- 快速切换,适配不同任务场景
### 🖥️ 工作空间 — 终端 & 文件浏览器
右侧常驻面板(480px),提供终端命令行和文件浏览器:
**终端**
- 实时流式显示命令输出(支持 ANSI 颜色)
- 支持长时间运行命令,**无超时限制**
- 单一终端进程,可随时停止
**文件浏览器**
- 浏览工作空间目录,目录树展示
- 点击文件预览内容(带行号)
### ⏰ 定时任务 (Cron)
- 支持一次性/周期性定时任务
- 任务触发时自动填入聊天输入框
### 📦 数据 ### 📦 数据
- SQLite (sql.js WASM) 持久化,WAL 模式高性能 - SQLite (sql.js WASM) 持久化,WAL 模式高性能
- 6 张表:sessions、messages、tool_calls、memories、settings、traces - 7 张表:sessions、messages、tool_calls、memoriesFTS5、settings、traces、skills
- 导出格式:Markdown / HTML / TXT / JSON(全量备份/恢复) - 导出格式:Markdown / HTML / TXT / JSON(全量备份/恢复)
- 所有导入/导出均使用 Electron 原生文件对话框 - 所有导入/导出均使用 Electron 原生文件对话框
### 🖥️ 桌面原生 ### 🖥️ 桌面原生
| 特性 | 说明 | - 暖色调亮色主题(奶白背景 + 珊瑚橙主色)
|------|------| - 执行日志面板(左侧,实时显示运行日志)
| 暖色调亮色主题 | 奶白背景 + 珊瑚橙主色,圆润柔和 | - 工作空间面板(右侧,终端 + 文件浏览器,固定 480px)
| 执行日志面板 | 左侧面板实时显示应用运行日志 | - Token 消耗统计(Header 实时显示)
| 工作空间面板 | 右侧面板:终端 + 文件浏览器,固定 480px | - 系统托盘 / 原生菜单 / 原生文件对话框
| Token 消耗统计 | Header 实时显示当前会话总 token 消耗 | - 单实例锁 / 无 CORS 限制
| 系统托盘 | 最小化到托盘,双击恢复 |
| 原生菜单 | 文件 / 编辑 / 视图 / 窗口 / 帮助完整菜单 |
| 原生文件对话框 | 文件选择/保存全部使用 Electron 原生对话框 |
| 单实例锁 | 防止重复启动 |
| 无 CORS 限制 | 直连本地 Ollama,无需配置 OLLAMA_ORIGINS |
--- ---
## 🏗️ 架构 ## 🏗️ 架构
v4.0 大子系统协调运作: v5.0 大子系统协调运作:
``` ```
用户输入消息 用户输入消息
├─→ ① Agent 记忆检索(关键词 + 向量语义) → 注入 system prompt ├─→ ① Agent 记忆检索(关键词 + 向量语义) → 注入 system prompt
├─→ ② ReAct Agent Loop → Thought → Action → Observation → Reflection ├─→ ② ReAct Agent Loop → Thought → Action → Observation → Reflection
│ │
│ ├─→ 内置工具(34 个) → 主进程 tool-handlers
│ └─→ MCP 工具 → 主进程 mcp-manager → JSON-RPC → MCP Server
Ollama API(携带组合后的 system prompt + tools Ollama API(携带组合后的 system prompt + tools
@@ -126,48 +156,38 @@ v4.0 四大子系统协调运作:
流式响应 → 渲染到聊天区域(含工具调用卡片) 流式响应 → 渲染到聊天区域(含工具调用卡片)
保存会话 → SQLite → 自动提取记忆(≥6 条消息时触发) 保存会话 → SQLite → 自动提取记忆 / 技能
③ 工作空间(独立通道) ③ 工作空间(独立通道)
AI 建议命令 → 用户确认 → spawn 子进程 → IPC 流式推送 → 终端面板实时展示 AI 建议命令 → 用户确认 → spawn 子进程 → IPC 流式推送 → 终端面板
数据层(SQLite MCP(独立通道
sessions · messages · tool_calls · memories(FTS5) · settings · traces 启动时 spawn MCP Server → initialize 握手 → tools/list → 动态注册
⑤ 数据层(SQLite
sessions · messages · tool_calls · memories(FTS5) · settings · traces · skills
``` ```
``` ```
┌─────────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────────
│ Electron 应用 │ │ Electron 应用 │
│ ┌─────────────────────────────────────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────┐│
│ │ 渲染进程 (Renderer) │ │ │ 渲染进程 (Renderer) ││
│ │ │ │ chat-area · input-area · workspace-panel · settings-modal ││
│ │ ─────────────┐ ┌──────────────┐ ┌──────────────────── │ │ ─────────────────────────────────────────────────────────── ││
│ │ │ chat-area │ │ input-area │ │ workspace-panel │ │ │ │ agent-engine · tool-registry · memory-manager │
│ │ │ 消息渲染 │ │ 消息发送 │ │ 💻 终端 │ │ │ │ vector-memory · context-manager · skill-manager │
│ │ │ 工具卡片 │ │ 记忆检索 │ │ 📁 文件浏览器 │ │ sub-agent · cron-manager · mcp-client · log-service ││
│ └────────────┘ └──────┬───────┘ └───────────────────┘ │ └─────────────────────────────┬───────────────────────────────┘│
│ │ │ │ │ │ │
│ │ ┌──────┴───────────────┴─────────────────────┴──────────┐ │ │
│ │ │ 核心服务层 │ │ │
│ │ │ agent-engine memory-manager vector-memory │ │ │
│ │ │ tool-registry vector-store context-manager │ │ │
│ │ └──────────────────────────┬────────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌──────────────────────────┴────────────────────────────┐ │ │
│ │ │ ollama.ts (API) (SQLite via IPC) │ │ │
│ │ └──────────────────────────┬────────────────────────────┘ │ │
│ └─────────────────────────────┼──────────────────────────────┘ │
│ │ IPC │ │ │ IPC │
│ ┌─────────────────────────────┴──────────────────────────────┐ │ ┌─────────────────────────────┴────────────────────────────────┐│
│ │ 主进程 (Main) │ │ │ 主进程 (Main) ││
│ │ main.ts menu.ts tray.ts ipc.ts preload.ts │ │ main.ts · ipc.ts · preload.ts · menu.ts · tray.ts
│ │ tool-handlers.ts (25 工具) tool-security.ts workspace.ts│ │ │ tool-handlers.ts (25 工具) · tool-security.ts ││
│ │ ┌──────────────────────────────────────────────────────┐ │ │ workspace.ts · browser.ts · mcp-manager.ts ││
│ │ db/sqlite.ts: sql.js (WASM) · WAL · FTS5 │ │ │ db/sqlite.ts (sql.js WASM · WAL · FTS5) ││
│ │ workspace.ts: spawn 进程管理 · 流式输出 · 安全检查 │ │ └──────────────────────────────────────────────────────────────┘
│ │ └──────────────────────────────────────────────────────┘ │ │ └──────────────────────────────────────────────────────────────────┘
│ └────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
``` ```
--- ---
@@ -180,8 +200,6 @@ v4.0 四大子系统协调运作:
|------|------| |------|------|
| `Metona Ollama Setup 5.0.0.exe` | NSIS 安装包(可选目录、创建快捷方式) | | `Metona Ollama Setup 5.0.0.exe` | NSIS 安装包(可选目录、创建快捷方式) |
> ⚠️ v3.2.0 起不再提供便携版,仅保留 NSIS 安装包。
>
> ⚠️ 未签名版本,首次运行 Windows 可能弹出安全警告,点击「仍要运行」即可。 > ⚠️ 未签名版本,首次运行 Windows 可能弹出安全警告,点击「仍要运行」即可。
--- ---
@@ -200,26 +218,17 @@ git clone https://gitee.com/thzxx/metona-ollama-desktop.git
cd metona-ollama-desktop cd metona-ollama-desktop
git checkout metona-ollama-desktop-v5.0.0 git checkout metona-ollama-desktop-v5.0.0
# 安装依赖(国内使用 npmmirror 加速)
npm config set registry https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com
npm install npm install
# 恢复构建缓存(Electron 二进制等,首次从镜像下载) # 构建并运行
bash restore-build-cache.sh
# 构建 TypeScript
npm run build
# 开发运行
npm start npm start
# 构建 Windows 安装包 # 构建 Windows 安装包
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist
``` ```
> 💡 Linux 交叉编译需安装 Wine`apt install wine`详细构建指南见 [docs/BUILD.md](docs/BUILD.md) > 💡 详细构建指南见 [docs/BUILD.md](docs/BUILD.md)
>
> 💡 一键构建脚本:`bash build-release.sh`(自动安装 Wine + 依赖 + 构建)
### 常用命令 ### 常用命令
@@ -229,7 +238,6 @@ npm run build:main # 仅构建主进程(tsc)
npm run build # 构建全部 npm run build # 构建全部
npm start # 构建并运行 npm start # 构建并运行
npm run dist # 构建 Windows 安装包(NSIS npm run dist # 构建 Windows 安装包(NSIS
npm run dist:nsis # 仅 NSIS 安装包
``` ```
--- ---
@@ -237,137 +245,78 @@ npm run dist:nsis # 仅 NSIS 安装包
## 📁 项目结构 ## 📁 项目结构
``` ```
metona-ollama-desktop/ src/
├── src/ ├── main/ # Electron 主进程
│ ├── main/ # Electron 主进程 │ ├── main.ts # 应用入口、窗口管理
│ ├── main.ts # 应用入口、窗口管理、workspace 初始化 │ ├── preload.ts # contextBridge API 暴露
│ ├── preload.ts # contextBridge 安全暴露(含 workspace/DB API │ ├── ipc.ts # IPC 处理器
│ ├── menu.ts # 原生菜单 │ ├── tool-handlers.ts # 25 个内置工具实现
│ ├── tray.ts # 系统托盘 │ ├── tool-security.ts # 路径/命令安全检查
│ ├── ipc.ts # IPCTool Calling + Workspace + SQLite │ ├── workspace.ts # 子进程管理、流式输出
│ ├── utils.ts # 工具函数 │ ├── browser.ts # 浏览器控制(8 工具)
│ ├── tool-handlers.ts # 🔧 25 个工具实现 │ ├── mcp-manager.ts # MCP 协议通信(JSON-RPC 2.0
│ ├── tool-security.ts # 🔧 路径/命令安全检查 │ ├── menu.ts / tray.ts / utils.ts # 菜单/托盘/工具函数
│ ├── workspace.ts # 🖥️ spawn 进程管理、流式输出 └── db/sqlite.ts # SQLite (sql.js WASM, WAL, FTS5)
│ │ └── db/ └── renderer/ # 渲染进程
│ │ └── sqlite.ts # 📦 SQLite 数据库(sql.js WASM, WAL, FTS5 ├── main.ts # 入口、全局初始化
── renderer/ # 渲染进程 ── types.d.ts # 完整类型定义
├── index.html # 入口 HTML ├── api/ollama.ts # Ollama REST API 客户端
├── main.ts # 入口(全系统初始化) ├── components/ # 14 个 UI 组件
├── types.d.ts # 完整类型定义 ├── chat-area.ts # 消息渲染、工具卡片
├── api/ ├── input-area.ts # 消息发送、文件上传
── ollama.ts # Ollama REST API 客户端 ── workspace-panel.ts # 工作空间(终端+文件)
├── components/ ├── settings-modal.ts # 设置面板(含 MCP/Cron 管理)
│ ├── chat-area.ts # 消息渲染、工具调用卡片、导出 │ ├── memory-modal.ts # 记忆管理
│ ├── input-area.ts # 消息发送、记忆检索、自动提取 │ ├── tool-confirm-modal.ts # 工具确认
│ ├── workspace-panel.ts # 🖥️ 工作空间面板(终端+文件) │ ├── tools-modal.ts / history-modal.ts / header.ts / ...
── memory-modal.ts # 🧠 记忆管理面板 ── toast.ts / lightbox.ts / prompt-modal.ts
│ │ ├── tool-confirm-modal.ts # 🔧 工具确认对话框 ├── services/ # 核心服务
│ ├── tools-modal.ts # 🔧 工具列表面板 │ ├── agent-engine.ts # ReAct Agent Loop 引擎
│ ├── settings-modal.ts # 设置面板 │ ├── tool-registry.ts # 工具注册调度(含 MCP 路由)
│ ├── history-modal.ts # 历史记录 │ ├── memory-manager.ts # 记忆管理核心
│ ├── prompt-modal.ts # 自定义弹窗 │ ├── vector-memory.ts # 向量索引
│ ├── header.ts # 顶部导航 │ ├── vector-store.ts # 向量存储
│ ├── model-bar.ts # 模型选择栏 │ ├── context-manager.ts # 上下文窗口管理
│ ├── toast.ts # 通知 │ ├── skill-manager.ts # 技能自动生成
── lightbox.ts # 图片预览 ── sub-agent.ts # 子代理委派
├── services/ ├── cron-manager.ts # 定时任务
│ ├── agent-engine.ts # 🔧 ReAct Agent Loop 引擎 │ ├── mcp-client.ts # MCP 渲染端客户端
│ ├── tool-registry.ts # 🔧 工具注册调度(25 个工具) │ ├── log-service.ts # 结构化执行日志
── memory-manager.ts # 🧠 记忆管理核心 ── crypto.ts # AES-256-GCM 加密
│ │ ├── vector-memory.ts # 🧠 记忆向量索引(IVF) ├── utils/ # 工具函数
│ ├── vector-store.ts # 向量存储 + IVF 索引 │ ├── utils.ts / sanitizer.ts / marked-config.ts
│ ├── context-manager.ts # 上下文窗口管理 ├── state/state.ts # 响应式状态管理
│ │ ├── document-processor.ts # 文档分块 └── styles/style.css # 暖色调亮色主题
│ │ ├── log-service.ts # 结构化执行日志
│ │ └── crypto.ts # AES-256-GCM 加密
│ ├── utils/
│ │ ├── utils.ts # 工具函数
│ │ ├── sanitizer.ts # HTML 净化器
│ │ └── marked-config.ts # Markdown 渲染
│ ├── state/
│ │ └── state.ts # 响应式状态管理
│ └── styles/
│ └── style.css # 暖色调亮色主题样式
├── assets/icons/ # 图标资源
├── docs/
│ ├── BUILD.md # 构建指南
│ ├── CHANGELOG.md # 更新日志
│ └── DEVELOPMENT.md # 开发规范
├── vite.config.ts # Vite 配置
├── tsconfig.json / tsconfig.main.json # TypeScript 配置
├── package.json # 项目配置 + electron-builder
└── README.md
``` ```
--- ---
## 🔌 Ollama API 接口 ## 🔌 Ollama API 接口
| 接口 | 用途 | 调用位置 | | 接口 | 用途 |
|------|------|----------| |------|------|
| `GET /api/tags` | 已安装模型列表 | 模型选择栏 | | `GET /api/tags` | 已安装模型列表 |
| `GET /api/ps` | 运行中模型 | 设置面板 | | `GET /api/ps` | 运行中模型 |
| `GET /api/version` | Ollama 版本 | 连接检测 | | `GET /api/version` | Ollama 版本 |
| `POST /api/show` | 模型详情(能力检测) | Think/Vision 检测 | | `POST /api/show` | 模型详情(能力检测) |
| `POST /api/chat` | 流式聊天(支持 tools | 对话 / Agent Loop | | `POST /api/chat` | 流式聊天(支持 tools) |
| `POST /api/embed` | 生成嵌入向量 | 向量记忆 | | `POST /api/embed` | 生成嵌入向量 |
---
## ⚙️ 设置
| 设置 | 默认值 | 说明 |
|------|--------|------|
| Ollama 服务地址 | `http://127.0.0.1:11434` | 本地 Ollama 地址 |
| 上下文长度 | 24576 tokens | `num_ctx`,越大记忆越长 |
| 温度 | 0.7 | 0=精确,2=创意 |
| Think 模式 | 关闭 | 深度推理(需模型支持) |
| 工具调用 | 关闭 | AI 主动调用本地工具 |
| 命令执行 | 需确认 | Shell 命令执行模式:自动/需确认/禁用 |
| Agent 记忆 | 开启 | 自动学习+跨会话记忆 |
| 工作空间目录 | `userData/workspace` | 命令行默认执行目录 |
---
## 🛠️ 技术栈
- **TypeScript 5.7** — 严格类型,完整接口定义
- **Electron 33** — 桌面封装(Windows x64
- **Vite 5** — 渲染进程构建、HMR 热更新
- **sql.js 1.11** — SQLite WASM 实现(零原生依赖,无需编译)
- **Fetch + ReadableStream** — 流式 NDJSON 解析
- **CSS Variables** — 暖色调亮色主题
- **electron-builder** — NSIS 安装包
- **零外部依赖** — Markdown 解析器、SHA-256、HTML 净化器全部内联实现
--- ---
## 🔒 安全 ## 🔒 安全
### 应用安全
- 内置 HTML 净化器(白名单标签 + 属性过滤 + URI 协议检查)
- Markdown 链接仅允许 `http:` / `https:` / `mailto:` / `tel:`
- 阻止 `javascript:` / `vbscript:` / `data:` 协议注入
- contextIsolation + IPC 白名单 + 单实例锁
### Tool Calling 安全 ### Tool Calling 安全
- **路径黑名单**:自动屏蔽 `/etc`, `/sys`, `/proc`, `~/.ssh`, `~/.gnupg` - **路径黑名单**:自动屏蔽 `/etc`, `/sys`, `/proc`, `~/.ssh`, `~/.gnupg`
- **写操作白名单**:仅允许用户目录下的写入 - **写操作白名单**:仅允许用户目录下的写入
- **命令黑名单**`rm -rf /`, `mkfs`, `dd`, `shutdown`, 反弹 shell 检测等 - **命令黑名单**`rm -rf /`, `mkfs`, `dd`, `shutdown`, 反弹 shell 检测等
- **run_command 三模式**:自动执行 / 需确认 / 禁用,用户可随时切换 - **run_command 三模式**:自动执行 / 需确认 / 禁用
- **安全提示词注入**:自动向 system prompt 追加工具使用安全规则 - **安全提示词注入**:自动向 system prompt 追加工具使用安全规则
### 工作空间安全 ### 应用安全
- **IPC 双向通信**`on/send` 模式,不走 `invoke/handle`,无超时但有独立进程管理 - 内置 HTML 净化器(白名单标签 + 属性过滤 + URI 协议检查)
- **命令安全检查**:复用 Tool Calling 的命令黑名单和路径检查 - contextIsolation + IPC 白名单 + 单实例锁
- **目录限制**:文件浏览器仅允许在工作空间目录内浏览
- **进程生命周期**:窗口关闭时自动 `SIGTERM` 所有子进程
### 数据安全
- SQLite 本地存储,不上传任何服务器 - SQLite 本地存储,不上传任何服务器
- 记忆提取仅基于对话内容,不读取文件系统
- 用户可随时查看、编辑、删除任意记忆条目
--- ---
+47 -10
View File
@@ -11,35 +11,72 @@
## 桌面版(Desktop ## 桌面版(Desktop
### Desktop v5.0.0 — 浏览器控制 & Cron 定时任务 & 技能系统 ### Desktop v5.0.0 — 浏览器控制 & MCP & 技能系统 & 全面重构
-**MCP (Model Context Protocol) 完整实现**
- 主进程 `mcp-manager.ts`JSON-RPC 2.0 over stdio 通信
- 支持 `initialize` 握手、`tools/list` 工具发现、`tools/call` 工具执行
- 7 个 IPC 通道:startServer / stopServer / stopAll / callTool / getTools / getStatuses / refreshTools
- 渲染端 `mcp-client.ts`:配置管理 + 服务器生命周期 + 工具定义获取 + 工具执行
- `tool-registry.ts` MCP 工具路由:`mcp_{server}_{tool}` 前缀识别
- 设置面板 MCP 服务器管理 UI(添加/启用/禁用/删除/状态显示)
- 启动时自动启动已启用的 MCP 服务器,退出时优雅清理
-**浏览器控制工具**8 个新工具) -**浏览器控制工具**8 个新工具)
- `browser_open` / `browser_screenshot` / `browser_evaluate` / `browser_extract` - `browser_open` / `browser_screenshot` / `browser_evaluate` / `browser_extract`
- `browser_click` / `browser_type` / `browser_scroll` / `browser_close` - `browser_click` / `browser_type` / `browser_scroll` / `browser_close`
- AI 可交互式操作网页,支持截图、JS 执行、元素操作 - AI 可交互式操作网页,支持截图、JS 执行、元素操作
- 主进程 `browser.ts`,隐藏 BrowserWindow 实现
- 全部 8 个函数新增 sendLog 执行日志
-**Cron 定时任务系统** -**Cron 定时任务系统**
- `cron-manager.ts` 定时任务管理器 - `cron-manager.ts` 定时任务管理器
- 支持周期性任务调度,任务触发时自动填入聊天输入框 - 支持一次性/周期性任务调度
-**技能自动生成系统**v4.2 -**技能自动生成系统**
- 自动从成功工具调用链提取可复用技能 - 自动从成功工具调用链提取可复用技能
- `skills` 表持久化,支持关键词搜索和使用统计 - `skills` 表持久化,支持关键词搜索和使用统计
- 下次同类任务自动匹配并注入技能上下文 - 下次同类任务自动匹配并注入技能上下文
-**用户画像自动推断**v4.2 -**用户画像自动推断**
- 从对话中自动检测用户技术栈(Python/TypeScript/Go/React 等) - 从对话中自动检测用户技术栈(Python/TypeScript/Go/React 等 14 种
- 用户画像注入 system promptAgent 行为更贴合用户习惯 - 用户画像注入 system promptAgent 行为更贴合用户习惯
-**人格模式**v4.2 -**人格模式**
- 多种预设人格模板,独立 system prompt + 温度设置 - 多种预设人格模板,独立 system prompt + 温度设置
-**Heartbeat 主动检查**v4.3 -**Heartbeat 主动检查**
- 后台定时检查 Ollama 连接状态、磁盘空间等 - 后台定时检查 Ollama 连接状态、磁盘空间等
-**子代理委派**v4.3 -**子代理委派**
- `spawn_task` 工具,主 Agent 可 spawn 独立子代理执行任务 - `spawn_task` 工具,主 Agent 可 spawn 独立子代理执行任务
- 🔧 **工具并行执行优化**v4.1 - 独立上下文,超时保护,结果回传主 Agent
- 🔧 **工具并行执行优化**
- 同一批次内独立工具并行执行,跨批次串行 - 同一批次内独立工具并行执行,跨批次串行
- 依赖检测:web_fetch 自动等待 web_search 结果 - 依赖检测:web_fetch 自动等待 web_search 结果
- 🔧 **长对话上下文管理**
- `context-manager.ts` 接入 Agent Loop
- 滑动窗口(20 条)+ 摘要压缩 + 按 num_ctx 裁剪
- Token 估算(中文 1.5 字/token,英文 4 字符/token
- 🔧 **记忆系统增强** - 🔧 **记忆系统增强**
- rule/preference 类型始终注入,不依赖关键词匹配 - rule/preference 类型始终注入,不依赖关键词匹配
- buildMemoryContext 区分三类记忆措辞 - buildMemoryContext 区分三类记忆措辞
- 📝 **版本号更新至 5.0.0** - 🔧 **全面编译修复**
- 修复 `useTools` 变量在声明前使用(TDZ 运行时 ReferenceError
- 修复 `browser.ts` loadURL 不支持的 timeout 参数
- 修复 `ipc.ts` browserScroll direction 类型断言
- 🔧 **CSS 变量补全**
- 补充 `--primary` / `--primary-bg` / `--bg-hover` 三个缺失变量
- 🧹 **全面代码清理**(删除 400+ 行死代码)
- 删除 `training-export.ts`(训练数据导出,零引用)
- 删除 `document-processor.ts`RAG 遗留)
- 清理 workspace.ts`execWorkspaceCommand`(重复实现)、`isProcessAlive``getActiveProcessCount``terminateWorkspaceCommand`
- 清理 sqlite.ts`deleteMessagesBySession``getSkill``closeDatabase`
- 清理 skill-manager.ts`getAllSkillsForUI``deleteSkillById``clearAllSkills`
- 清理 memory-manager.ts`getVectorSearchResults`
- 清理 tool-registry.ts`isToolEnabled`
- 清理 cron-manager.ts`clearAllTimers`
- 清理 workspace-panel.ts`setOnToolTerminated``setWorkspaceDirPath`
- 清理 mcp-manager.ts`isServerRunning`
- 移除 index.html 训练数据导出按钮及 settings-modal.ts 事件绑定
- 📊 **全链路执行日志**
- browser.ts:全部 8 个函数新增 sendLog(打开/截图/JS/提取/点击/输入/滚动/关闭)
- mcp-manager.tscallTool 新增工具调用/完成/失败日志
- 主进程日志覆盖:browser(20) + mcp(14) + tool-handlers(21) + workspace(11) + ipc(11)
- 📝 **版本号更新至 5.0.0**7 个文件同步更新)
### Desktop v4.0.0 — SQLite & ReAct Agent & 全新主题 ### Desktop v4.0.0 — SQLite & ReAct Agent & 全新主题