thzxx 15b4895351 fix: replace 'as any' with proper type assertion for git tool args
The git tool handler in ipc.ts was using 'args as any' to bypass type
checking. Replaced with the explicit typed params interface matching
handleGit's signature to maintain type safety.
2026-04-24 13:56:30 +08:00
2026-04-03 02:40:56 +00:00

Metona Ollama Desktop

本地 Ollama AI 桌面客户端 — TypeScript + Electron

简介

Metona Ollama Desktop 是一个基于 Ollama 的本地 AI 桌面客户端,支持 Tool Calling、记忆系统、浏览器控制、MCP 协议等能力。数据不离开本机,零配置启动。

特性

  • 🤖 ReAct Agent Loop — Thought → Action → Observation → Reflection 循环,默认最大 85 轮
  • 🔧 38 个内置工具 — 文件系统/命令执行/联网搜索/浏览器/Git/记忆/技能/会话/子代理
  • 🧠 智能记忆系统 — 三类记忆(fact/preference/rule+ FTS5 全文搜索 + 向量语义搜索 + 安全扫描
  • 🌐 MCP 协议 — JSON-RPC 2.0 over stdio,动态工具发现与执行,Shadowing 防护
  • 🔍 三引擎联网搜索 — Bing + 百度 + Google
  • 🖥️ 工作空间面板 — 终端(实时流式输出)+ 文件浏览器一体化
  • 🎨 暖色调 UI — 奶白 #FAF7F2 + 珊瑚橙 #E8734A,长时间使用不疲劳

工具列表

分类 数量 工具
文件系统 17 read_file, write_file, list_directory, search_files, create_directory, delete_file, move_file, copy_file, append_file, edit_file, get_file_info, tree, download_file, diff_files, replace_in_files, read_multiple_files, compress
命令执行 1 run_command(实时流式输出,工作空间终端集成)
联网搜索 2 web_searchBing + 百度 + Google 三引擎), web_fetch
浏览器控制 8 browser_open, browser_screenshot, browser_evaluate, browser_extract, browser_click, browser_type, browser_scroll, browser_close
Git 1 gitinit/clone/add/commit/push/pull/diff/log/status/branch/checkout/merge/stash/reset/tag/remote
记忆管理 4 memory_search, memory_add, memory_replace, memory_remove
技能系统 2 skill_list, skill_view(渐进式加载)
会话管理 2 session_list, session_read
子代理 1 spawn_task(独立上下文 + 超时保护)

架构

用户消息 → Agent LoopReAct
              ↓
         记忆检索(FTS5 + 向量搜索)→ 上下文注入
              ↓
         Ollama API(流式响应)
              ↓
         工具调用(38 内置 + MCP 动态)
              ↓
         观察结果 → 反思 → 循环/最终回答

数据层

  • SQLite (sql.js WASM)7 张表(sessions, messages, tool_calls, memories, settings, traces, skills
  • FTS5 全文搜索memories 表支持全文检索
  • WAL 模式 + NORMAL 同步:零原生依赖,无需 electron-rebuild

记忆系统

  • 三类记忆fact(事实)、preference(偏好)、rule(规则,始终注入)
  • 安全扫描:写入前检测 prompt injection、敏感信息泄露、不可见 Unicode 字符
  • 容量管理:上限 500 条,超限自动清理低价值条目(rule 类型受保护)
  • 过期衰减:90 天未使用的记忆自动降低 importance

技术栈

层级 技术
语言 TypeScript (strict mode)
桌面框架 Electron 33+
构建 Vite(渲染进程)+ tsc(主进程)
数据库 sql.js (WASM) + FTS5
第三方库 markedMarkdown, DOMPurifyHTML 净化)
打包 electron-builder (NSIS)

快速开始

git clone https://gitee.com/thzxx/metona-ollama-desktop.git
cd metona-ollama-desktop
git checkout desktop-v1-stable-release
npm config set registry https://registry.npmmirror.com
npm install
npm start

构建 Windows 安装包

# 环境:Ubuntu 24.04 + Node.js v22 + Wine 9.0+
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist

产出:release/Metona Ollama Setup v1-stable-release.exe82MB

项目结构

src/
├── main/                         # Electron 主进程
│   ├── main.ts                   # 入口、窗口管理
│   ├── preload.ts                # contextBridge API53 个 invoke + 2 个 send
│   ├── ipc.ts                    # IPC 处理器
│   ├── browser.ts                # 浏览器控制(8 个工具)
│   ├── mcp-manager.ts            # MCP 协议管理(JSON-RPC 2.0 over stdio
│   ├── tool-handlers-fs.ts       # 文件系统工具(15 个)
│   ├── tool-handlers-system.ts   # 系统网络工具(6 个)
│   ├── tool-handlers-git.ts      # Git 工具
│   ├── tool-handlers-shared.ts   # 共享工具函数
│   ├── tool-security.ts          # 路径/命令安全检查
│   └── db/sqlite.ts              # SQLite 数据库层(7 张表 + FTS5
├── renderer/                     # 渲染进程
│   ├── main.ts                   # 入口、全局初始化
│   ├── services/
│   │   ├── agent-engine.ts       # ReAct Agent Loop 引擎
│   │   ├── tool-registry.ts      # 工具注册与调度(38 个内置 + MCP 动态)
│   │   ├── memory-manager.ts     # 记忆管理核心
│   │   ├── vector-memory.ts      # 记忆向量索引(IVF)
│   │   ├── vector-store.ts       # 向量存储
│   │   ├── context-manager.ts    # 上下文窗口管理
│   │   ├── skill-manager.ts      # 技能自动生成
│   │   ├── sub-agent.ts          # 子代理委派
│   │   ├── mcp-client.ts         # MCP 渲染端客户端
│   │   ├── log-service.ts        # 结构化日志
│   │   └── crypto.ts             # AES-256-GCM 加密
│   ├── components/               # UI 组件(14 个)
│   ├── utils/
│   │   ├── utils.ts              # 工具函数
│   │   ├── sanitizer.ts          # HTML 净化器
│   │   └── marked-config.ts      # Markdown 渲染
│   ├── state/state.ts            # 响应式状态管理
│   ├── db/chat-db.ts             # SQLite 渲染端接口
│   ├── styles/style.css          # 暖色调亮色主题
│   └── index.html                # 入口 HTML
└── vendor/                       # 第三方库(marked, DOMPurify

许可证

MIT

S
Description
Ollama GUI desktop client
Readme MIT
5.3 MiB
v0.16.12
Latest
2026-07-20 14:01:07 +08:00
Languages
TypeScript 86.1%
CSS 7.8%
HTML 6.1%