Metona Ollama Desktop

Metona Ollama Desktop

🤖 本地 AI 桌é¢å®¢æˆ·ç«?· Local AI Desktop Client

中文 English

version electron typescript license platform

所æœ?AI 推ç†åœ¨æœ¬åœ°å®Œæˆï¼Œæ•°æ®ä¸ç¦»å¼€æœ¬æœºã€?/em>
All AI inference runs locally �data never leaves your machine.


🇨🇳 中文

�特�

功能 说明
🤖 ReAct Agent Loop 始终开å¯çš„å”¯ä¸€å¯¹è¯æ¨¡å¼ã€? çŠ¶æ€æœºï¼ˆINIT→THINKING→PARSING→EXECUTING→OBSERVING→REFLECTING→COMPRESSING→TERMINATED),最å¤?85 轮(å¯é…置),智能é‡è¯•(永久错误立å³è¿”回ã€çž¬æ€é”™è¯¯æŒ‡æ•°é€€é¿ï¼‰ï¼Œå·¥å…·åŽ»é‡ï¼Œæ™ºèƒ½è·¯å¾„ä¾èµ–ä¸²è¡ŒåŒ–ï¼Œçœ‹é—¨ç‹—è¶…æ—¶ä¿æŠ?
🛡ï¸? *æç¤ºè¯åŠ å›? å‚è€ƒæ•°æ®æ ‡è®°ï¼ˆ<<<REFERENCE_DATA_START>>>ï¼? 工具结果仅为数æ®éžæŒ‡ä»¤çš„安全规则注入
📋 Plan Mode 开关切æ¢ï¼ŒAI é¦–å…ˆç”Ÿæˆæ‰§è¡Œè®¡åˆ’(Markdown æ¸²æŸ“ç¡®è®¤å¼¹çª—ï¼‰ï¼Œæ‰¹å‡†åŽæŒ‰æ­¥éª¤è¿½è¸ªæ‰§è¡Œï¼Œplan_track 工具标记完æˆçжæ€ï¼Œ**æ”¯æŒæ–­ç‚¹ç»­ä¼ **(中止åŽå¯æ¢å¤æœªå®Œæˆè®¡åˆ’ï¼?
🔧 *32 个内置工å…? 文件系统ï¼?3个) · 命令执行 · è”网æœç´¢ · æµè§ˆå™¨æŽ§åˆ¶ï¼ˆ9个) · Git · 记忆 · ä¼šè¯ Â· å­ä»£ç?· 系统工具 · Plan Mode 追踪
🧠 智能记忆系统 三类记忆(fact / preference / rule),存储于工作空é—?MEMORY.md 文件,å—è·¯å¾„ä¿æŠ¤ä»?memory 工具å¯è®¿é—®ï¼Œå†™å…¥å‰å®‰å…¨æ‰«æï¼Œå®¹é‡ 500 æ¡ï¼Œå¯¹è¯ç»“æŸè‡ªåЍæå–ï¼Œä¸¥æ ¼æ ¼å¼æ ¡éª?
📋 *自定义文ä»? SOUL.md(人格,ä¸å¯åŽ‹ç¼©ï¼? AGENT.md(行为准则,内置 fallbackï¼? USER.md(用户画åƒï¼Œä»…工作空间读å–,ä¸å­˜åœ¨åˆ™ä¸æ³¨å…¥ï¼‰
🌠MCP å议扩展 JSON-RPC 2.0 over stdio,动æ€å·¥å…·å‘现,Shadowing 防护
🔠*è”网æœç´¢ï¼ˆåŒæ¨¡å¼ï¼? SearXNG å…ƒæœç´¢å¼•æ“?JSON APIï¼?0+引擎èšåˆï¼? 四引æ“?HTML è§£æžï¼ˆBing+百度+æœç‹—+360ï¼‰ï¼ŒåŒæ¨¡å¼å¯åˆ‡æ¢ï¼›web_fetch 支æŒå爬+UA切æ¢+æµè§ˆå™¨å›žé€€
🌠*æµè§ˆå™¨æŽ§åˆ? 打开网页 · 截图 · 执行 JS · æå–内容 · 点击 · 输入 · 滚动 · 关闭
🖥ï¸? å·¥ä½œç©ºé—´é¢æ¿ ç»ˆç«¯ï¼ˆå¢žé‡æµå¼è¾“出)+ 文件æµè§ˆå™¨ï¼Œå‘½ä»¤å®‰å…¨æ£€æŸ?
🔢 *上下文长度手动控åˆ? è®¾ç½®é¢æ¿ä¸‹æ‹‰é€‰æ‹©ï¼?28K / 256K / 512K / 1M),默认 128Kï¼Œæ¨¡åž‹æ æ˜¾ç¤ºå½“å‰é…置值,下拉框中显示æ¯ä¸ªæ¨¡åž‹è‡ªèº«çš„上下文长度
🗜ï¸? *智能上下文管ç? æ»‘åŠ¨çª—å£ + Token 自动校准 + 消æ¯é‡è¦æ€§è¯„åˆ?+ LLM 结构åŒ?JSON 压缩,智能触å‘(120 æ¡å¢žé‡åŽ‹ç¼?+ 300 æ¡ç¡¬ä¸Šé™ï¼?
â±ï¸ æ™ºèƒ½è¶…æ—¶ä¿æŠ¤ Agent Loop 看门狗(å¯é…,默è®?30minï¼? æµå¼æ€»è¶…时(å¯é…,默è®?300sï¼? 工具 HTTP/MCP è¶…æ—¶å¯é…
🪠Hook 系统 4 阶段生命周期钩å­ï¼ˆpre_tool / post_tool / post_iteration / pre_completionï¼‰ï¼Œå†…ç½®å®‰å…¨æ£€æŸ¥ã€æ–‡ä»¶åŽ»é‡ã€è‡ªåŠ¨è®¡åˆ’è¿½è¸ªã€å˜æ›´å®¡è®¡ã€ç»“果校éª?
👥 *å­ä»£ç†å§”æ´? spawn_task 工具,独立上下文 + è¶…æ—¶ä¿æŠ¤
📈 *Token 仪表ç›? 全局 + 会è¯ç»Ÿè®¡ï¼Œæ¶ˆè€—趋势柱状图ï¼? 秒刷新,输入/输出分色
📋 *系统æç¤ºè¯å¡ç‰? æ¯æ¡ AI 回å¤é¡¶éƒ¨æŠ˜å å¡ç‰‡ï¼Œç‚¹å‡»æŸ¥çœ‹å®žé™…å‘é€ç»™æ¨¡åž‹çš„完整上下文
🎨 暖色è°?UI 奶白 #FAF7F2 + çŠç‘šæ©?#E8734A,长时间使用ä¸ç–²åŠ³ï¼Œæµå¼æ¸²æŸ“优化
🔔 系统托盘 原生托盘集æˆ
🔠AES-256-GCM æ•°æ®åŠ å¯†æ”¯æŒ
🧪 *å¯è§‚测æ€? 执行轨迹缓冲批é‡å†™å…¥ SQLite + Agent Metrics JSON/Prometheus åŒæ ¼å¼å¯¼å‡?

🔧 工具清å

📠文件系统�3 个)
工具 功能
read_file è¯»å–æ–‡ä»¶ï¼ˆæ–‡æœ?binaryï¼?000行默认)
write_file 写入/追加文件(支æŒbase64二进制)
list_directory 列出目录内容
search_files æœç´¢æ–‡ä»¶ï¼ˆæ­£åˆ?通é…符)
create_directory 创建目录
delete_file 删除文件/目录(返回大å°ï¼‰
move_file 移动/é‡å‘½åæ–‡ä»?
copy_file å¤åˆ¶æ–‡ä»¶
edit_file ç¼–è¾‘æ–‡ä»¶ï¼ˆæ”¯æŒæ­£åˆ™æ›¿æ¢ï¼‰
tree 目录树结构(默认5层深度)
download_file 下载文件
read_multiple_files 批é‡è¯»å–ï¼?0文件/10KBï¼?
compress 压缩文件/目录
�命令执行� 个)
工具 功能
run_command 执行 shell 命令,实时æµå¼è¾“出,支æŒè‡ªåЍ/需确认/ç¦ç”¨ä¸‰ç§æ¨¡å¼
🔠è”网æœç´¢ï¼? 个)
工具 功能
web_search SearXNG JSON API / 四引擎并行,默认 30 æ¡ç»“æž?
web_fetch 网页内容抓å–,自动é‡è¯•(指数退é¿ï¼‰ï¼Œç§»åŠ¨ç«¯UA切æ¢ï¼ŒSPA页é¢è‡ªåЍå‡çº§åˆ°æµè§ˆå™¨æ¸²æŸ“
🌠æµè§ˆå™¨æŽ§åˆ¶ï¼ˆ9 个)
工具 功能
browser_open 打开网页
browser_screenshot 页颿ˆªå›¾
browser_evaluate 执行 JavaScript
browser_extract æå–页é¢å†…容
browser_click 点击元素
browser_type 输入文本
browser_scroll 页颿»šåЍ
browser_wait 等待元素/延时
browser_close 关闭æµè§ˆå™?
📦 Gitï¼? 个,17 个å­å‘½ä»¤ï¼?/strong>
å­å‘½ä»? 功能
init clone add commit push pull 基础æ“作
diff log status branch checkout 查看与切æ?
merge stash reset tag remote 高级æ“作
🧠 记忆管ç†ï¼? 个)
工具 功能
memory 统一记忆管ç†ï¼? ä¸?action:search æœç´¢ / add 添加 / replace æ›¿æ¢ / remove 删除 / read_all 读å–全部)。工作空é—?MEMORY.md å—è·¯å¾„ä¿æŠ¤ï¼Œä»…æ­¤å·¥å…·å¯è®¿é—?
📊 ä¼šè¯ / å­ä»£ç†ï¼ˆ3 个)
工具 功能
session_list 列出历å²ä¼šè¯
session_read 读å–会è¯å†…容
spawn_task 委派å­ä»£ç†ï¼ˆç‹¬ç«‹ä¸Šä¸‹æ–?+ è¶…æ—¶ä¿æŠ¤ï¼?
🕠系统工具� 个)
工具 功能
calculator 安全数学计算ï¼? - * / ** % (),递归下é™è§£æžå™¨ï¼‰
📋 Plan Modeï¼? 个,ä»?Plan æ¨¡å¼æ¿€æ´»ï¼‰
工具 功能
plan_track Plan æ¨¡å¼æ‰§è¡Œè¿›åº¦è¿½è¸ªï¼Œæ ‡è®°æ­¥éª¤å®Œæˆï¼Œè‡ªåŠ¨ç»Ÿè®¡å‰©ä½™

ðŸ—ï¸?æž¶æž„

ç”¨æˆ·æ¶ˆæ¯ â†?扫æå·¥ä½œç©ºé—´ SOUL.md(ä¸å¯åŽ‹ç¼©å±‚ï¼‰â†’ AGENT.md â†?USER.md(工作空间,ä¸å­˜åœ¨åˆ™è·³è¿‡ï¼?
              �
         记忆检ç´?(MEMORY.md å…³é”®è¯æœç´? â†?上下文注å…?
              �
         Agent Engine (8 çŠ¶æ€æœº ReAct Loop, â‰?5 è½? 智能é‡è¯•, 路径ä¾èµ–串行åŒ? 看门ç‹?分级超时)
              �
         æç¤ºè¯åŠ å›ºï¼ˆå‚è€ƒæ•°æ®æ ‡è®?+ 工具结果安全规则ï¼?
              �
         Ollama API (æµå¼å“应,num_ctx 用户å¯é… 128K/256K/512K/1M)
              �
         Tool Registry (32 内置 + MCP 动�+ Plan Mode plan_track)
              �
         Hook 系统 (pre/post tool/iteration/completion) â†?观察结果 â†?忀?â†?循环 / 最终回ç­?

🧩 UI 组件(原�DOM�

main.ts (å…¥å£)
  ├── header.ts              # 顶部导航�
  ├── model-bar.ts           # 模型选择�
  ├── chat-area.ts           # èŠå¤©æ¶ˆæ¯åŒºåŸŸ
  ├── input-area.ts          # 输入�+ 文件上传 + Plan Mode 开�
  ├── workspace-panel.ts     # 终端 + 文件æµè§ˆå™?+ 工具å¡ç‰‡
  ├── settings-modal.ts      # è®¾ç½®é¢æ¿ï¼ˆå«çœ‹é—¨ç‹—è¶…æ—¶é…置)
  ├── history-modal.ts       # 会è¯åކå²
  ├── memory-modal.ts        # 记忆管ç†
  ├── tools-modal.ts         # 工具列表
  ├── token-dashboard.ts     # Token 消耗仪表盘
  ├── tool-confirm-modal.ts  # 工具执行确认
  ├── prompt-modal.ts        # 系统æç¤ºè¯æŸ¥çœ?+ Plan 确认弹窗
  ├── toast.ts               # Toast 通知
  └── lightbox.ts            # 图片ç¯ç®±

🗄ï¸?æ•°æ®åº?

SQLite (sql.js WASM)ï¼? 张表,WAL 模å¼ï¼?

� 用�
sessions 会è¯ï¼ˆparent_id 父å­å…³ç³»ï¼?
messages 消æ¯ï¼ˆå¤–键级è”删除)
tool_calls 工具调用记录
settings 设置(JSON åºåˆ—化)
traces ReAct 执行轨迹

🔒 安全机制

层级 措施
📠文件系统 checkPathAllowed() â€?路径黑åå•(33 个系ç»?æ•æ„Ÿç›®å½•ï¼Œå« Linux + Windowsï¼?
âš?命令执行 checkCommandAllowed() â€?命令黑åå•(30 æ¡å±é™©å‘½ä»¤ï¼Œå?POSIX + Windowsï¼? ä¸‰ç§æ¨¡å¼
🖥ï¸?å‰ç«¯æ¸²æŸ“ HTML 净化器(白å啿 ‡ç­¾ + URI å议检查)
🔒 Electron contextIsolation: true + IPC 白åå?+ IPC fs 路径验è¯
🔠数æ®åР坆 AES-256-GCM
🧠 记忆安全 写入å‰?Prompt Injection / æ•æ„Ÿä¿¡æ¯æ£€æµ‹ï¼Œå¤šå±‚级去é‡è¿‡æ»?
🌠MCP 安全 Shadowing 防护 + åŒä¸‹åˆ’线分隔防歧ä¹?
🌠网络安全 web_fetch æµå¼ä½“积é™åˆ¶ï¼?0MBï¼? æ—?content-length 时防 OOM
âš?进程安全 Windows taskkill 强制终止 + 工作空间路径大å°å†™ä¸æ•感校验

🚀 快速开�

git clone https://gitee.com/thzxx/metona-ollama-desktop.git
cd metona-ollama-desktop
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 v0.16.18.exe

🛠�常用命令

npm start              # 构建并è¿è¡?
npm run dev:renderer   # Vite watch(渲染进程)
npm run dev:main       # tsc watch(主进程�
npm run build          # 完整构建
npm run dist           # 构建 Windows 安装�

💻 ç³»ç»Ÿè¦æ±‚

  • 🖥ï¸?Windows 10/11ï¼?4 ä½ï¼‰
  • 🤖 Ollama 本地è¿è¡Œä¸­ï¼ˆé»˜è®¤ http://localhost:11434ï¼?
  • 💾 建议 8GB+ 内存

📄 许å¯è¯?

MIT


🇬🇧 English

�Features

Feature Description
🤖 ReAct Agent Loop Always-on, only chat mode. 8-state machine, up to 85 iterations (configurable), smart retry (permanent errors return immediately, transient errors use exponential backoff), tool dedup, path-aware dependency serialization, watchdog + tiered timeout protection
🛡� Prompt Hardening Reference data markers (<<<REFERENCE_DATA_START>>>) + tool results are data-not-instructions safety rules
📋 Plan Mode Toggle switch. AI first generates an execution plan (Markdown-rendered confirmation dialog), then tracks step-by-step execution, supports resume (interrupted plans restore on next session)
🔧 32 Built-in Tools File system · Command · Web search · Browser · Git · Memory · Sessions · Sub-agent · System · Plan Mode tracking
🧠 Smart Memory System Three types (fact / preference / rule), stored in workspace MEMORY.md file, path-protected �only the memory tool can access it, pre-write security scan, 500 capacity, auto-extract on conversation end, strict format validation
📋 Custom Files SOUL.md (persona, never compressed) + AGENT.md (behavior rules, built-in fallback) + USER.md (user profile, workspace only, skipped if absent)
🌠MCP Protocol Extension JSON-RPC 2.0 over stdio, dynamic tool discovery, Shadowing protection
🔠Web Search (dual-mode) SearXNG meta-search JSON API (70+ engines) / quad-engine HTML parsing (Bing+Baidu+Sogou+360), switchable; web_fetch with auto-retry+mobile UA+SPA browser fallback
🌠Browser Control Open pages · Screenshot · JS execution · Content extraction · Click · Type · Scroll · Close
🖥� Workspace Panel Terminal (incremental streaming) + file browser, command security checks
🔢 Manual Context Length Settings dropdown (128K / 256K / 512K / 1M), default 128K. Model bar shows configured value, dropdown shows per-model context length
🗜� Smart Context Manager Sliding window + Token auto-calibration + message importance scoring + LLM structured JSON compression, smart triggers (120 msg incremental + 300 msg hard limit)
â±ï¸ Smart Timeout Protection Agent Loop watchdog (configurable, default 30min) + stream total timeout (configurable, default 300s) + configurable HTTP/MCP timeouts
🪠Hook System 4-phase lifecycle hooks (pre_tool / post_tool / post_iteration / pre_completion), built-in security check, file dedup, auto plan tracking, change audit, result validation
👥 Sub-agent Delegation spawn_task tool, isolated context + timeout protection
📈 Token Dashboard Global + session stats, consumption trend bar chart, 2s refresh, input/output color-coded
📋 System Prompt Card Collapsible card atop each AI reply �click to inspect the full context sent to the model
🎨 Warm-tone UI Cream #FAF7F2 + coral #E8734A, fatigue-free for extended use, streaming render optimized
🔔 System Tray Native tray integration
🔠AES-256-GCM Data encryption support
🧪 Observability Buffered trace persistence to SQLite + Agent Metrics JSON/Prometheus dual-format export

🔧 Tool List

📠File System (13)
Tool Function
read_file Read file (text/binary, 2000 lines default)
write_file Write/append file (base64 binary support)
list_directory List directory contents
search_files Search files (regex/wildcard)
create_directory Create directory
delete_file Delete file/dir (returns size)
move_file Move/rename file
copy_file Copy file
edit_file Edit file (regex support)
tree Directory tree (default 5 levels)
download_file Download file
read_multiple_files Batch read (50 files/10KB)
compress Compress file/directory
âš?Command Execution (1)
Tool Function
run_command Execute shell command, real-time streaming, auto/confirm/disabled modes
🔠Web Search (2)
Tool Function
web_search SearXNG JSON API / quad-engine parallel, 30 results default
web_fetch Fetch web page content, auto-retry with backoff, mobile UA toggle, SPA auto-upgrade to browser rendering
🌠Browser Control (9)
Tool Function
browser_open Open web page
browser_screenshot Page screenshot
browser_evaluate Execute JavaScript
browser_extract Extract page content
browser_click Click element
browser_type Type text
browser_scroll Scroll page
browser_close Close browser
📦 Git (1 tool, 17 subcommands)
Subcommands Function
init clone add commit push pull Basic operations
diff log status branch checkout View & switch
merge stash reset tag remote Advanced operations
🧠 Memory Management (1)
Tool Function
memory Unified memory management (5 actions: search / add / replace / remove / read_all). Workspace MEMORY.md is path-protected, only this tool can access it
📊 Sessions / Sub-agent (3)
Tool Function
session_list List session history
session_read Read session content
spawn_task Delegate sub-agent (isolated context + timeout)
🕠System Tools (1)
Tool Function
calculator Safe math evaluation (+ - * / ** % (), recursive descent parser)
📋 Plan Mode (1, only active in Plan Mode)
Tool Function
plan_track Plan Mode execution progress tracking, mark steps complete, auto tally remaining

ðŸ—ï¸?Architecture

User message �workspace SOUL.md (never compressed) �AGENT.md �USER.md (workspace, skipped if absent)
              �
         Memory Retrieval (MEMORY.md keyword search) �Context Injection
              �
         Agent Engine (8-state ReAct Loop, �5 iter, smart retry, path-aware serialization, watchdog+tiered timeout)
              �
         Prompt Hardening (reference data markers + tool result safety rules)
              �
         Ollama API (Streaming Response, num_ctx user-configurable 128K/256K/512K/1M)
              �
         Tool Registry (32 Built-in + MCP Dynamic + Plan Mode plan_track)
              �
         Hook System (pre/post tool/iteration/completion) �Observation �Reflection �Loop / Final Answer

🧩 UI Components (Native DOM)

main.ts (Entry)
  ├── header.ts              # Top navigation bar
  ├── model-bar.ts           # Model selector
  ├── chat-area.ts           # Chat message area
  ├── input-area.ts          # Input box + file upload + Plan Mode toggle
  ├── workspace-panel.ts     # Terminal + file browser + tool cards
  ├── settings-modal.ts      # Settings panel (with watchdog timeout config)
  ├── history-modal.ts       # Session history
  ├── memory-modal.ts        # Memory management
  ├── tools-modal.ts         # Tool list
  ├── token-dashboard.ts     # Token consumption dashboard
  ├── tool-confirm-modal.ts  # Tool execution confirmation
  ├── prompt-modal.ts        # System prompt viewer + Plan confirm dialog
  ├── toast.ts               # Toast notifications
  └── lightbox.ts            # Image lightbox

🗄�Database

SQLite (sql.js WASM), 5 tables, WAL mode:

Table Purpose
sessions Sessions (parent_id hierarchy)
messages Messages (cascade delete)
tool_calls Tool call records
settings Settings (JSON serialization)
traces ReAct execution traces

🔒 Security

Layer Measure
📠File System checkPathAllowed() �path blacklist (33 system/sensitive dirs, Linux + Windows)
�Command Execution checkCommandAllowed() �command blacklist (30 dangerous commands, POSIX + Windows) + three modes
🖥�Frontend Rendering HTML sanitizer (whitelist tags + URI protocol check)
🔒 Electron contextIsolation: true + IPC whitelist + IPC fs path validation
🔠Data Encryption AES-256-GCM
🧠 Memory Security Pre-write prompt injection / sensitive info detection, multi-layer dedup filtering
🌠MCP Security Shadowing protection + double-underscore delimiter disambiguation
🌠Network Security web_fetch streaming size limit (10MB) + OOM prevention without content-length
âš?Process Security Windows taskkill forced termination + case-insensitive workspace path validation

🚀 Quick Start

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

📦 Build Windows Installer

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

Output: release/Metona Ollama Setup v0.16.18.exe

🛠�Common Commands

npm start              # Build and run
npm run dev:renderer   # Vite watch (renderer)
npm run dev:main       # tsc watch (main process)
npm run build          # Full build
npm run dist           # Build Windows installer

💻 System Requirements

  • 🖥ï¸?Windows 10/11 (64-bit)
  • 🤖 Ollama running locally (default http://localhost:11434)
  • 💾 8GB+ RAM recommended

📄 License

MIT


Made with â¤ï¸ by thzxx

S
Description
本地 AI 桌面客户端 — 基于 Ollama,支持 ReAct 智能体循环与多工具协作,数据不离开本机。
Readme MIT
5.9 MiB
v0.17.2
Latest
2026-09-08 16:36:30 +08:00
Languages
TypeScript 86.6%
CSS 7.7%
HTML 5.7%