docs: 更新 README.md 添加工作空间面板文档
- 新增工作空间功能特性章节(命令行 Tab + 文件 Tab) - 更新架构图:v3.0 → v3.2,加入 workspace 子系统 - 更新项目结构:新增 workspace.ts、workspace-panel.ts - 更新设置表:新增工作空间目录配置 - 更新安全章节:新增工作空间安全说明 - 更新桌面原生特性表 - 更新日志:v3.2.0 工作空间面板
This commit is contained in:
@@ -39,6 +39,35 @@ AI 可以在对话中主动调用本地工具来完成任务,所有操作在
|
||||
|
||||
> ⚠️ 需要模型支持 Tool Calling(推荐 Qwen3、Llama 3.1+、Mistral)
|
||||
|
||||
### 🖥️ 工作空间 — 终端 & 文件浏览器(v3.2 新增)
|
||||
右侧可折叠面板,提供终端命令行和文件浏览器两个 Tab:
|
||||
|
||||
**命令行 Tab**:
|
||||
- 终端界面,实时流式显示命令输出(支持 ANSI 颜色)
|
||||
- 支持长时间运行命令(如 `ollama pull`),**无超时限制**
|
||||
- 多终端 Tab,每个 Tab 独立进程,可随时停止
|
||||
- `ollama pull` 等进度条实时展示(`\r` 覆盖处理)
|
||||
|
||||
**文件 Tab**:
|
||||
- 浏览工作空间目录,目录树展示
|
||||
- 点击文件预览内容(带行号)
|
||||
- 支持上级目录导航、刷新
|
||||
|
||||
**工作原理**:
|
||||
```
|
||||
用户/AI 建议命令 → 工作空间执行按钮 → 主进程 spawn 子进程
|
||||
│
|
||||
┌─────────────────────┘
|
||||
▼
|
||||
IPC 双向通信(on/send 模式,无超时)
|
||||
│
|
||||
stdout/stderr 实时推送 → 渲染进程终端面板
|
||||
│
|
||||
进程退出 → 通知渲染进程显示退出状态
|
||||
```
|
||||
|
||||
> ⚠️ 与 Tool Calling 的区别:Tool Calling 走 Agent Loop(有超时),工作空间走独立进程(无超时),由用户主动触发。
|
||||
|
||||
### 🧠 Agent 记忆系统(v3.0 新增)
|
||||
AI 会自动从对话中学习并记住关键信息,跨会话持续积累,无需手动配置:
|
||||
|
||||
@@ -83,6 +112,7 @@ AI 会自动从对话中学习并记住关键信息,跨会话持续积累,
|
||||
|------|------|
|
||||
| Fluent Design 主题 | Windows 11 暗色风格,Mica 毛玻璃材质 |
|
||||
| 执行日志面板 | 左侧面板实时显示应用运行日志(初始化、连接、模型加载、工具调用等),纯运行时不持久化,常驻显示不可关闭 |
|
||||
| 工作空间面板 | 右侧面板:终端命令行(实时流式输出)+ 文件浏览器,宽度可拖拽调整 |
|
||||
| Token 消耗统计 | Header 实时显示当前会话总 token 消耗 |
|
||||
| 系统托盘 | 最小化到托盘,双击恢复,右键菜单 |
|
||||
| 原生菜单 | 文件 / 编辑 / 视图 / 窗口 / 帮助完整菜单 |
|
||||
@@ -96,7 +126,7 @@ AI 会自动从对话中学习并记住关键信息,跨会话持续积累,
|
||||
|
||||
## 🏗️ 架构
|
||||
|
||||
v3.0 三大子系统协调运作:
|
||||
v3.2 四大子系统协调运作:
|
||||
|
||||
```
|
||||
用户输入消息
|
||||
@@ -113,38 +143,43 @@ v3.0 三大子系统协调运作:
|
||||
│
|
||||
▼
|
||||
保存会话 → 自动提取记忆(≥6 条消息时触发)
|
||||
|
||||
④ 工作空间(独立通道)
|
||||
用户手动/AI 建议命令 → spawn 子进程 → IPC 流式推送 → 终端面板实时展示
|
||||
```
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Electron 应用 │
|
||||
│ ┌───────────────────────────────────────────────────┐ │
|
||||
│ │ 渲染进程 (Renderer) │ │
|
||||
│ │ │ │
|
||||
│ │ ┌─────────────┐ ┌──────────────┐ ┌─────────┐ │ │
|
||||
│ │ │ chat-area │ │ input-area │ │ memory │ │ │
|
||||
│ │ │ 消息渲染 │ │ 消息发送 │ │ panel │ │ │
|
||||
│ │ │ 工具卡片 │ │ 记忆检索 │ │ 记忆管理 │ │ │
|
||||
│ │ └──────┬──────┘ └──────┬───────┘ └────┬────┘ │ │
|
||||
│ │ │ │ │ │ │
|
||||
│ │ ┌──────┴───────────────┴───────────────┴──────┐ │ │
|
||||
│ │ │ 核心服务层 │ │ │
|
||||
│ │ │ agent-engine memory-manager rag │ │ │
|
||||
│ │ │ 工具调用循环 记忆管理 知识检索 │ │ │
|
||||
│ │ │ tool-registry vector-store doc-proc │ │ │
|
||||
│ │ └──────────────────────┬──────────────────────┘ │ │
|
||||
│ │ │ │ │
|
||||
│ │ ┌──────────────────────┴──────────────────────┐ │ │
|
||||
│ │ │ ollama.ts (API) chat-db.ts (存储) │ │ │
|
||||
│ │ └──────────────────────┬──────────────────────┘ │ │
|
||||
│ └─────────────────────────┼─────────────────────────┘ │
|
||||
│ │ IPC │
|
||||
│ ┌─────────────────────────┴─────────────────────────┐ │
|
||||
│ │ 主进程 (Main) │ │
|
||||
│ │ main.ts menu.ts tray.ts ipc.ts preload.ts │ │
|
||||
│ │ tool-handlers.ts tool-security.ts │ │
|
||||
│ └───────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ Electron 应用 │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ 渲染进程 (Renderer) │ │
|
||||
│ │ │ │
|
||||
│ │ ┌─────────────┐ ┌──────────────┐ ┌────────────────────┐ │ │
|
||||
│ │ │ chat-area │ │ input-area │ │ workspace-panel │ │ │
|
||||
│ │ │ 消息渲染 │ │ 消息发送 │ │ 💻 命令行 Tab │ │ │
|
||||
│ │ │ 工具卡片 │ │ 记忆检索 │ │ 📁 文件 Tab │ │ │
|
||||
│ │ └──────┬──────┘ └──────┬───────┘ └─────────┬──────────┘ │ │
|
||||
│ │ │ │ │ │ │
|
||||
│ │ ┌──────┴───────────────┴─────────────────────┴──────────┐ │ │
|
||||
│ │ │ 核心服务层 │ │ │
|
||||
│ │ │ agent-engine memory-manager rag workspace-panel │ │ │
|
||||
│ │ │ tool-registry vector-store doc-proc │ │ │
|
||||
│ │ └──────────────────────────┬────────────────────────────┘ │ │
|
||||
│ │ │ │ │
|
||||
│ │ ┌──────────────────────────┴────────────────────────────┐ │ │
|
||||
│ │ │ ollama.ts (API) chat-db.ts (存储) │ │ │
|
||||
│ │ └──────────────────────────┬────────────────────────────┘ │ │
|
||||
│ └─────────────────────────────┼──────────────────────────────┘ │
|
||||
│ │ IPC │
|
||||
│ ┌─────────────────────────────┴──────────────────────────────┐ │
|
||||
│ │ 主进程 (Main) │ │
|
||||
│ │ main.ts menu.ts tray.ts ipc.ts preload.ts │ │
|
||||
│ │ tool-handlers.ts tool-security.ts workspace.ts │ │
|
||||
│ │ ┌──────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ workspace.ts: spawn 进程管理 · 流式输出 · 安全检查 │ │ │
|
||||
│ │ └──────────────────────────────────────────────────────┘ │ │
|
||||
│ └────────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
@@ -217,18 +252,19 @@ npm run dist:portable # 仅便携版
|
||||
metona-ollama-desktop/
|
||||
├── src/
|
||||
│ ├── main/ # Electron 主进程
|
||||
│ │ ├── main.ts # 应用入口、窗口管理
|
||||
│ │ ├── preload.ts # contextBridge 安全暴露
|
||||
│ │ ├── main.ts # 应用入口、窗口管理、workspace 初始化
|
||||
│ │ ├── preload.ts # contextBridge 安全暴露(含 workspace API)
|
||||
│ │ ├── menu.ts # 原生菜单
|
||||
│ │ ├── tray.ts # 系统托盘
|
||||
│ │ ├── ipc.ts # IPC(含 Tool Calling)
|
||||
│ │ ├── ipc.ts # IPC(Tool Calling + Workspace 流式通信)
|
||||
│ │ ├── utils.ts # 工具函数
|
||||
│ │ ├── tool-handlers.ts # 🔧 7 个工具实现
|
||||
│ │ └── tool-security.ts # 🔧 路径/命令安全检查
|
||||
│ │ ├── tool-security.ts # 🔧 路径/命令安全检查
|
||||
│ │ └── workspace.ts # 🖥️ spawn 进程管理、流式输出
|
||||
│ └── renderer/ # 渲染进程
|
||||
│ ├── index.html # 入口 HTML
|
||||
│ ├── index.html # 入口 HTML(含工作空间面板)
|
||||
│ ├── main.ts # 入口(全系统初始化)
|
||||
│ ├── types.d.ts # 完整类型定义
|
||||
│ ├── types.d.ts # 完整类型定义(含 Workspace 类型)
|
||||
│ ├── api/
|
||||
│ │ └── ollama.ts # Ollama REST API
|
||||
│ ├── db/
|
||||
@@ -239,13 +275,13 @@ metona-ollama-desktop/
|
||||
│ │ ├── chat-area.ts # 消息渲染、工具调用卡片
|
||||
│ │ ├── input-area.ts # 消息发送、记忆检索、自动提取
|
||||
│ │ ├── memory-panel.ts # 🧠 记忆管理面板
|
||||
│ │ ├── workspace-panel.ts # 🖥️ 工作空间面板(终端+文件)
|
||||
│ │ ├── tool-confirm-modal.ts # 🔧 工具确认对话框
|
||||
│ │ ├── kb-modal.ts # RAG 知识库管理
|
||||
│ │ ├── settings-modal.ts # 设置面板
|
||||
│ │ ├── settings-modal.ts # 设置面板(含工作空间目录)
|
||||
│ │ ├── history-modal.ts # 历史记录
|
||||
│ │ ├── header.ts # 顶部导航
|
||||
│ │ ├── model-bar.ts # 模型选择栏
|
||||
│ │ ├── preset-bar.ts # Agent 预设栏(兼容)
|
||||
│ │ ├── toast.ts # 通知
|
||||
│ │ └── lightbox.ts # 图片预览
|
||||
│ ├── services/
|
||||
@@ -262,7 +298,7 @@ metona-ollama-desktop/
|
||||
│ │ ├── sanitizer.ts # HTML 净化器
|
||||
│ │ └── marked-config.ts # Markdown 渲染
|
||||
│ └── styles/
|
||||
│ └── style.css # Fluent Design 样式
|
||||
│ └── style.css # Fluent Design 样式(含工作空间面板)
|
||||
├── assets/icons/ # 图标资源
|
||||
├── docs/
|
||||
│ ├── BUILD.md # 构建指南
|
||||
@@ -300,6 +336,7 @@ metona-ollama-desktop/
|
||||
| 工具调用 | 关闭 | AI 主动调用本地工具 |
|
||||
| 命令执行 | 关闭 | Shell 命令执行(高风险) |
|
||||
| Agent 记忆 | 开启 | 自动学习+跨会话记忆 |
|
||||
| 工作空间目录 | `userData/workspace` | 命令行默认执行目录 |
|
||||
|
||||
---
|
||||
|
||||
@@ -331,6 +368,13 @@ metona-ollama-desktop/
|
||||
- **用户确认**:写入/删除/命令执行必须用户确认
|
||||
- **安全提示词注入**:自动向 system prompt 追加工具使用安全规则
|
||||
|
||||
### 工作空间安全
|
||||
- **IPC 双向通信**:`on/send` 模式,不走 `invoke/handle`,无超时但有独立进程管理
|
||||
- **命令安全检查**:复用 Tool Calling 的命令黑名单和路径检查
|
||||
- **目录限制**:文件浏览器仅允许在工作空间目录内浏览
|
||||
- **进程生命周期**:窗口关闭时自动 `SIGTERM` 所有子进程,防止进程泄漏
|
||||
- **用户控制**:命令由用户手动执行或确认,AI 仅建议不直接执行
|
||||
|
||||
### 记忆系统安全
|
||||
- 记忆提取仅基于对话内容,不读取文件系统
|
||||
- 记忆存储在本地 IndexedDB,不上传到任何服务器
|
||||
@@ -345,7 +389,16 @@ metona-ollama-desktop/
|
||||
|
||||
### 最新版本
|
||||
|
||||
**v3.2.0** — 代码质量 & 桌面原生化
|
||||
**v3.2.0** — 工作空间面板
|
||||
- 🖥️ 右侧可折叠工作空间面板:命令行 Tab + 文件浏览器 Tab
|
||||
- 💻 终端界面:实时流式输出、ANSI 颜色支持、多终端 Tab、无超时限制
|
||||
- 📁 文件浏览器:目录树、文件预览(带行号)、上级导航
|
||||
- 🔌 IPC 双向通信:`on/send` 模式实现流式推送,独立于 Agent Loop 超时体系
|
||||
- ⚙️ 设置面板新增工作空间目录配置(默认 `userData/workspace`)
|
||||
- 🔒 工作空间安全:复用命令/路径黑名单,窗口关闭自动清理子进程
|
||||
- 📦 启动时自动创建工作空间目录
|
||||
|
||||
**v3.1.1** — 代码质量 & 桌面原生化
|
||||
- ♻️ 渲染进程 58 处 console.log 全部迁移至结构化 log-service
|
||||
- 🖥️ 所有文件对话框(上传/保存/导入)改用 Electron 原生对话框
|
||||
- 🪙 Header 新增当前会话总 token 消耗统计
|
||||
|
||||
Reference in New Issue
Block a user