2026-06-27 21:33:27 +08:00
2026-06-27 21:33:27 +08:00
2026-07-22 20:53:43 +08:00
2026-07-22 20:53:43 +08:00

MetonaAI Logo

MetonaAI Desktop

生产级通用 AI Agent 智能体桌面应用

Version License Electron React TypeScript MUI

Platform DeepSeek Agnes AI MiMo Ollama


Metona 是一款基于 Electron 的本地优先 AI Agent 桌面应用,内置 ReAct 状态机驱动的智能体循环引擎、30+ 内置工具三层记忆系统四层纵深安全防线完整可观测性链路。支持四种 LLM Provider,兼容 MCP 协议扩展,为开发者提供开箱即用的 AI 编程伙伴。


📑 目录


核心亮点

🧠 生产级 Agent 引擎

ReAct 八状态闭环、流式对话 (SSE/NDJSON)、Thinking 推理模式、死循环检测、上下文自动压缩、指数退避重试

🔧 30+ 内置工具

文件系统 · 代码搜索 · 网络搜索 · 浏览器自动化 · Git · Shell 命令 · HTTP 请求 · 记忆存储 · 任务管理

🔌 多 Provider 支持

DeepSeek V4 · Agnes AI 2.0 · Xiaomi MiMo 2.5 · Ollama 本地模型 — 一键切换,热重载适配器

🧩 三层记忆架构

情节记忆 (Episodic) + 语义记忆 (Semantic) + 工作记忆 (Working)TF-IDF 语义检索 + 时间衰减

🛡 四层纵深防御

路径边界校验 + Shell 沙箱 + 三级权限策略 + Prompt 注入检测 + 幻觉校验 — 层层设防

📡 MCP 协议兼容

支持 stdio / SSE 两种传输方式的 MCP Server,动态发现工具,无需重启应用

📊 全链路可观测

ReAct 迭代追踪 · JSONL 会话录制 · 链式哈希审计 · Token 用量统计 · SLO 健康监控

🎨 精致桌面体验

三栏 IDE 布局 · 系统托盘 · 全局快捷键 · 暗色/亮色主题 · 5 步引导向导 · 命令面板


🛠 技术栈

层级 技术 版本 用途
🖥 运行时 Electron 35 跨平台桌面框架
⚛️ 前端 React 19 UI 渲染引擎
🎨 组件库 Material UI (MUI) 9 统一 UI 组件体系
📘 类型 TypeScript 5.8 全量类型安全
🗄 数据库 better-sqlite3 11 本地 SQLite 持久化 (WAL 模式)
📦 状态管理 Zustand 5 轻量级响应式状态
🔧 构建 electron-vite + Vite 3 / 6 双端构建 (Main + Renderer)
🛰 MCP @modelcontextprotocol/sdk 1.12 外部工具协议集成
🎨 样式 Tailwind CSS 4 辅助原子化样式
📝 Markdown react-markdown + remark-gfm 10 / 4 富文本渲染
🔢 UUID nanoid 5 唯一 ID 生成
校验 Zod 3 运行时类型校验
💾 缓存 lru-cache 11 内存缓存
📋 日志 electron-log 5 分级结构化日志
⚙️ 配置 electron-store 10 键值对持久化配置

🚀 快速开始

环境要求

  • Node.js ≥ 18
  • npm ≥ 9
  • Windows / macOS / Linux

安装与运行

# 1. 克隆仓库
git clone https://github.com/your-org/metona-ai-desktop.git
cd metona-ai-desktop

# 2. 安装依赖
npm install

# 3. 配置 API Key
cp .env.example .env
# 编辑 .env,填入你的 LLM API Key

# 4. 启动开发模式
npm run dev

# 5. 构建生产包
npm run build

配置 LLM Provider

.env 中填入密钥,或在应用内通过 设置 → LLM 配置 可视化配置:

# DeepSeek API (https://platform.deepseek.com)
DEEPSEEK_API_KEY=sk-your-key-here
DEEPSEEK_BASE_URL=https://api.deepseek.com

# Agnes AI API (https://apihub.agnes-ai.com)
AGNES_API_KEY=your-key-here
AGNES_BASE_URL=https://apihub.agnes-ai.com/v1

# Xiaomi MiMo API (https://api.xiaomimimo.com)
MIMO_API_KEY=your-key-here
MIMO_BASE_URL=https://api.xiaomimimo.com/v1

# Ollama (本地运行, 无需 API Key)
OLLAMA_BASE_URL=http://localhost:11434

🧠 智能体引擎

ReAct 八状态闭环

Metona 的核心是一个 ReAct (Reasoning + Acting) 状态机驱动引擎,通过 8 个状态完成完整的推理-执行-观测-反思循环:

┌──────────────────────────────────────────────────────────┐
│                      用户消息输入                          │
└────────────────────────┬─────────────────────────────────┘
                         ▼
         ┌───────────────────────────────┐
         │        INIT(初始化)           │
         └───────────────┬───────────────┘
                         ▼
         ┌───────────────────────────────┐
         │      THINKING(思考推理)        │ ←──────────┐
         └───────────────┬───────────────┘              │
                         ▼                              │
         ┌───────────────────────────────┐              │
         │      PARSING(解析输出)         │              │
         └───────────────┬───────────────┘              │
                         ▼                              │
         ┌───────────────────────────────┐              │
         │    EXECUTING(执行工具调用)      │              │
         └───────────────┬───────────────┘              │
                         ▼                              │
         ┌───────────────────────────────┐              │
         │    OBSERVING(观测工具结果)      │              │
         └───────────────┬───────────────┘              │
                         ▼                              │
         ┌───────────────────────────────┐              │
         │    REFLECTING(反思与决策)       │──────────────┘
         └───────────────┬───────────────┘
                         ▼
         ┌───────────────────────────────┐
         │  COMPRESSING(上下文压缩 - 可选) │
         └───────────────┬───────────────┘
                         ▼
         ┌───────────────────────────────┐
         │     TERMINATED(任务完成)       │
         └───────────────────────────────┘

引擎关键特性

特性 说明
🔄 流式对话 SSE (DeepSeek/Agnes/MiMo) + NDJSON (Ollama) 双协议流式响应
💭 Thinking 模式 支持 deepseek-v4-pro / agnes-2.0-flash / qwen3 等推理模型的思维链展示
🔁 死循环检测 连续 3 轮相同工具调用签名自动终止
📦 上下文压缩 80% 阈值触发 LLM 摘要压缩,保留最近 10 条消息
🔄 错误重试 指数退避 (1s/2s/4s) + ±20% jitter,上限 30s
⏱️ 可配置迭代 最大迭代次数 (默认 20)、总超时 (默认 600s)、工具执行超时 (默认 120s)
🧵 子任务委派 TaskOrchestrator 支持最大 3 层深度的 SubAgent 编排

🔧 工具系统

工具分类总览

Metona 内置 30+ 工具,按安全风险分为五个等级:

SAFE (无需确认)          LOW (无需确认)         MEDIUM (可配自动)      HIGH (强制确认)       CRITICAL (双人复核)
    │                       │                      │                    │                    │
    ├─ read_file            ├─ web_search          ├─ write_file        ├─ delete_file       ├─ (预留)
    ├─ list_directory       ├─ web_fetch           ├─ file_editor       ├─ run_command
    ├─ search_files         ├─ http_request        ├─ memory_store      ├─ web_browser
    ├─ code_search          ├─ run_tests           ├─ delegate_task     ├─ git_commit
    ├─ diff_viewer          ├─ task_manager        ├─ file_move         └─ browser actions
    ├─ git_status           └─ think                                         (open/navigate)
    ├─ git_diff
    ├─ git_log
    ├─ lint_code
    ├─ project_info
    ├─ memory_search
    ├─ view_image
    └─ file_info

详细工具列表

📂 文件系统 (7 tools)

工具 风险 需确认 功能描述
read_file SAFE 读取文本文件,二进制检测,offset/limit 分页
write_file MEDIUM 原子写入 (tmp+rename),支持 overwrite/append 模式
list_directory SAFE 列出目录,depth (max 5)、glob 模式、include_hidden
search_files SAFE 按名称/内容模式搜索,支持 context_lines
delete_file HIGH 删除文件,禁止删除工作空间根目录和 MEMORY.md
file_move MEDIUM 移动/重命名文件,跨工作空间拒绝
file_info SAFE 获取文件元信息 (大小、修改时间、MIME 类型)

✏️ 编辑与搜索 (3 tools)

工具 风险 需确认 功能描述
file_editor MEDIUM 精准编辑:replace / insert / delete / regex / find_replace,支持 dry_run
code_search SAFE 基于 ripgrep 高速代码搜索,自动回退 JS fallback
diff_viewer SAFE LCS 算法生成 unified diff 格式差异

🌐 网络与浏览器 (4 tools)

工具 风险 需确认 功能描述
web_search LOW 双模式搜索 (SearXNG 元搜索 / 四引擎内置降级)
web_fetch LOW 三阶段回退获取 (HTTP → SPA 升级 → 浏览器渲染),10MB 限制
web_browser HIGH 统一浏览器工具:open / screenshot / evaluate / extract / click / type / scroll / wait / close
http_request LOW HTTP 请求,6 种 methodSSRF 防护 (DNS IP 校验)

🧠 记忆 (2 tools)

工具 风险 需确认 功能描述
memory_store MEDIUM 存储记忆到三层 (Episodic / Semantic / Working)
memory_search SAFE TF-IDF 语义检索记忆,时间衰减加权

💻 命令与开发 (5 tools)

工具 风险 需确认 功能描述
run_command HIGH Shell 命令执行,shell-quote 解析 + SandboxManager 28+ 模式扫描
lint_code SAFE TypeScript tsc 或 ESLint 检查
run_tests LOW 运行测试套件 (jest/vitest/mocha)filter 白名单防注入
project_info SAFE 项目结构分析,4 种 detail 级别
delegate_task MEDIUM 子任务委派给独立 SubAgent,最大深度 3 层

🔀 Git (4 tools)

工具 风险 需确认 功能描述
git_status SAFE 工作树状态,porcelain v1 格式解析
git_diff SAFE 差异输出,50KB 截断,5MB maxBuffer
git_log SAFE 提交历史,支持 --oneline / --stat 等格式
git_commit MEDIUM 暂存 + 提交,校验文件在工作空间内

📋 任务与辅助 (4 tools)

工具 风险 需确认 功能描述
task_manager LOW 持久化任务 CRUD,支持父子关系,写入后通知 UI 实时刷新
think SAFE 结构化思考空间,零副作用,纯推理
view_image SAFE 读取图片返回 base64,5MB 限制,支持 7 种格式
mcp:* 可变 可变 MCP 协议扩展工具,运行时动态发现加载

🔌 LLM 适配器

Metona 通过统一的 IMetonaProviderAdapter 接口抽象了所有 LLM Provider,支持热重载切换:

适配器 Provider 模型 上下文 流式格式 Thinking 多模态
DeepSeekAdapter deepseek deepseek-v4-pro / deepseek-v4-flash 1M tokens SSE thinking.type + reasoning_effort
AgnesAdapter agnes agnes-2.0-flash 1M tokens SSE chat_template_kwargs / Anthropic 兼容 是 (URL + Base64)
MimoAdapter mimo mimo-v2.5-pro / mimo-v2.5 1M tokens SSE thinking.type: enabled 是 (URL + Base64)
OllamaAdapter ollama qwen3 / gemma3 / deepseek-r1 等 可配 (num_ctx) NDJSON think 参数 是 (Base64)

适配器核心能力

  • 统一 IR 格式:所有 Provider 均转换为 MetonaRequest / MetonaResponse / MetonaStreamEvent 内部指令,上层代码零感知差异
  • 热重载切换:切换 Provider 时自动清空 API Key,配置签名比对,无需重启
  • 流式解析:共享 SSE 流解析器 (sse-stream.ts) + OpenAI 兼容格式构建器 (openai-format.ts)
  • API 健康检查healthCheck() 方法在各适配器中独立实现,支持状态监控

🧩 记忆系统

三层记忆架构

┌──────────────────────────────────────────────────────┐
│  L1: 工作记忆 (Working Memory)                        │
│  当前任务临时状态,精确键值查找,会话级别生命周期           │
├──────────────────────────────────────────────────────┤
│  L2: 情节记忆 (Episodic Memory)                        │
│  会话事件流、工具调用历史、用户交互记录                   │
│  检索方式: TF-IDF 语义检索 + 时间衰减 (30 天半衰期)      │
├──────────────────────────────────────────────────────┤
│  L3: 语义记忆 (Semantic Memory)                        │
│  知识事实、用户偏好、项目经验累积                        │
│  检索方式: 精确匹配 + 模糊匹配 + 重要性评分               │
└──────────────────────────────────────────────────────┘

记忆生命周期

新记忆写入 → 重要性评分 (0~1)
  ├── 高 (>0.8)  → 永久保存,核心知识
  ├── 中 (0.4~0.8) → 定期回顾,逐渐衰减
  └── 低 (<0.4)  → 短期保留,自然遗忘

会话结束 → MemoryConsolidator (LLM 驱动提取)
  → 写入 MEMORY.md (5 个允许的 section)
  → 同步写入 semantic_memories 表 (双轨同步)

磁盘文件 (工作空间内)

文件 用途 是否必需 保护机制
SOUL.md AI 角色定义 (灵魂),定义 Agent 的行为准则与个性 是 (自动创建) 不可通过工具删除
MEMORY.md 动态记忆存储,LLM 会话结束后自动追加 是 (仅根目录受保护) 仅根目录版本受保护

🛡 安全机制

四层纵深防御

┌─────────────────────────────────────────────────────────────────┐
│  第 1 层:路径安全                                                │
│  isPathWithinWorkspace() + realpathSync (符号链接逃逸检测)         │
│  + 根目录 MEMORY.md 保护 + 工作空间边界校验                        │
├─────────────────────────────────────────────────────────────────┤
│  第 2 层:命令安全                                                │
│  SandboxManager (28+ 正则模式扫描: child_process/eval/路径遍历/   │
│  反弹Shell/fork炸弹/编码执行/动态导入)                              │
│  + shell-quote 双层防御 + 受保护文件白名单检查                      │
├─────────────────────────────────────────────────────────────────┤
│  第 3 层:权限控制                                                │
│  PolicyEngine (35+ 默认策略)                                      │
│  READ / WRITE / EXTERNAL_ACTION 三级权限                          │
│  滑动窗口频率限制 (20 次/分钟)                                      │
│  ConfirmationHook: HIGH/CRITICAL 工具需用户确认                    │
│  会话内同类免确认 + 持久化自动执行 (Auto-Execute)                   │
├─────────────────────────────────────────────────────────────────┤
│  第 4 层:内容安全                                                │
│  PromptInjectionDefender:                                         │
│    40+ 正则模式 (指令覆写/分隔符注入/Base64编码/角色扮演攻击)       │
│    + 语义检测 (命令式动词密度/角色边界异常/嵌套分隔符)               │
│    + Unicode 归一化 (NFKC + 零宽字符移除 + 混合脚本检测)             │
│  OutputValidator:                                                 │
│    格式校验 + PII/API Key 泄漏检测 + 事实一致性校验 + 幻觉检测       │
└─────────────────────────────────────────────────────────────────┘

风险分级

风险等级 示例工具 确认要求 自动执行
🟢 SAFE read_file, list_directory, code_search, git_status 无需确认 默认允许
🔵 LOW web_search, web_fetch, http_request, task_manager 无需确认 默认允许
🟡 MEDIUM write_file, file_editor, memory_store, delegate_task 可配置自动 用户可选
🟠 HIGH delete_file, run_command, web_browser, git_commit 强制确认 不支持
🔴 CRITICAL (预留) 双人复核 不支持

🏗 项目架构

四层 Harness 架构

Metona 的 Agent 引擎采用分层架构,每层职责清晰:

┌──────────────────────────────────────────────────────────────────┐
│  L1 推理与编排层 (Reasoning & Orchestration)                       │
│  ┌─────────────────────┐  ┌──────────────────────────────────┐   │
│  │  AgentLoopEngine     │  │  TaskOrchestrator               │   │
│  │  ReAct 八状态机       │  │  子任务分解 · 并行执行 · 结果聚合  │   │
│  │  流式解析 · 死循环检测 │  │  SubAgent 最大深度 3 层          │   │
│  └─────────────────────┘  └──────────────────────────────────┘   │
│  类型: MetonaRequest / MetonaResponse / MetonaStreamEvent        │
├──────────────────────────────────────────────────────────────────┤
│  L2 上下文与记忆层 (Context & Memory)                              │
│  ┌─────────────────────┐  ┌──────────────┐  ┌───────────────┐   │
│  │  ContextBuilder      │  │ MemoryManager│  │ Consolidator  │   │
│  │  System Prompt 组装   │  │ TF-IDF 检索  │  │ LLM 记忆提取   │   │
│  │  SOUL + MEMORY + 安全 │  │ 三层记忆 CRUD │  │ MEMORY.md 写入 │   │
│  └─────────────────────┘  └──────────────┘  └───────────────┘   │
│  类型: MetonaContext / MetonaMemoryItem                          │
├──────────────────────────────────────────────────────────────────┤
│  L3 工具与安全执行层 (Tools & Security)                            │
│  ┌────────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────┐   │
│  │ ToolRegistry│ │ Sandbox  │ │PolicyEng │ │ InjectionDefender│   │
│  │ 30+ 工具注册│ │ 28+ 扫描 │ │ 35+ 策略 │ │ 40+ 正则 + 语义  │   │
│  │ MCP 适配    │ │ 路径校验 │ │ 频率限制 │ │ 输出校验         │   │
│  └────────────┘ └──────────┘ └──────────┘ └─────────────────┘   │
│  类型: MetonaToolDef / MetonaToolCall / MetonaToolResult         │
├──────────────────────────────────────────────────────────────────┤
│  L4 支撑与基础架构层 (Infrastructure)                              │
│  ┌────────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────┐   │
│  │ Config     │ │ Database │ │ Audit    │ │ Session Services │   │
│  │ 全局+工作空间│ │ SQLite   │ │ 链式哈希 │ │ 会话 · 录制 · MCP  │   │
│  │ 分层配置    │ │ WAL 9 表 │ │ INSERT   │ │ 托盘 · 更新 · 窗口│   │
│  └────────────┘ └──────────┘ └──────────┘ └─────────────────┘   │
└──────────────────────────────────────────────────────────────────┘

进程模型

进程 运行时 职责
Main Process Node.js Agent 引擎、工具调度、SQLite 数据库、MCP 管理、配置服务
Preload Script 沙箱 contextBridge 安全暴露 window.metona (15 个 API 命名空间)
Renderer Chromium React 19 + MUI 9 界面渲染,Zustand 状态管理

核心数据流

用户输入 → ChatInput → agent-store.sendMessage
  → IPC: agent:sendMessage → handlers.ts
    → reloadAdapter (配置签名比对,热重载)
    → 保存用户消息到 SQLite messages 表
    → 加载历史消息 + 注入相关记忆 (MemoryManager.search)
    → ContextBuilder.buildSystemPrompt (SOUL.md + MEMORY.md + 安全准则)
    → PromptInjectionDefender.detect (riskScore ≥ 7 阻断)
    → AgentLoopEngine.runStream
      → Adapter.sendStream (SSE / NDJSON 流式调用)
      → 流式事件 → webContents.send('agent:streamEvent')
      → 工具调用 → PreToolHooks (权限验证 + 频率限制 + 用户确认)
      → ToolRegistry.execute → PostToolHooks (审计记录 + 记忆触发)
      → 80% 阈值触发 Compressing (LLM 摘要压缩)
      → 死循环检测 (3 轮相同签名)
    → OutputValidator.validate (幻觉检测 + PII 检查)
    → 保存 assistant 消息 + tool 结果消息到 SQLite
    → MemoryConsolidator.consolidate (异步 LLM 提取记忆 → MEMORY.md)
    → AuditService.logSessionEnd (链式哈希审计)
  ← useAgentStream Hook 监听事件 → Zustand Store → React 重渲染

📊 可观测性

全链路追踪

  • TraceViewer:按 runId 分组可视化展示每轮 ReAct 迭代,包括思考过程、工具调用参数/结果/耗时、状态转换链
  • Token 用量面板:输入/输出 Token、当前上下文占用百分比 (按 60%/80% 阈值变色)、压缩节省的 Token

会话录制

  • 9 种事件类型session_start, user_message, assistant_message, tool_call, tool_result, state_change, context_compressed, error, session_end
  • 录制到 JSONL 文件,支持回放重放
  • 录制格式:每行一条结构化 JSON 事件

审计日志

  • 链式哈希防篡改:每条记录哈希 = SHA-256(prev_hash + 记录内容)INSERT-ONLY 触发器
  • 完整性校验verifyChain() 逐条验证哈希链
  • 导出:支持只读 JSONL (chmod 0o444)、CSV、归档 (90 天保留)

SLO 监控

指标 目标
Agent Loop 成功率 95%
P99 延迟 < 60s (95%)
工具调用成功率 98%
死循环发生率 < 0.1% (99.9%)
MCP Server 可用性 99%
应用崩溃率 < 0.1% (99.9%)

🎨 桌面体验

三栏 IDE 布局

┌──────────┬──────────────────────────────┬──────────────┐
│          │        Header 顶部栏          │              │
│ Sidebar  │  Provider · Model · 面板切换   │  DetailPanel │
│ 260px    ├──────────────────────────────┤   360px      │
│          │                              │              │
│ 会话列表  │       ChatPanel 聊天区域       │  Trace View  │
│ 搜索     │                              │  Memory      │
│ 工具管理  │   MessageList + ChatInput     │  Tasks       │
│          │                              │  Workspace   │
│          │                              │              │
├──────────┴──────────────────────────────┴──────────────┤
│              StatusBar · 状态 · Token · 版本            │
└────────────────────────────────────────────────────────┘

交互特性

特性 描述
🔔 系统托盘 4 状态指示 (idle / thinking / executing / error),最小化到托盘
⌨️ 全局快捷键 Cmd/Ctrl+Shift+M 唤起应用
🎹 应用内快捷键 (16 个) 会话管理 / 布局切换 / 主题切换 / 命令面板 / 详情面板
🌓 暗色/亮色主题 跟随系统自动切换 + 手动切换 (Ctrl+D 循环)
🧭 5 步引导向导 欢迎 → 配置 LLM → 自定义 Agent → 工作空间 → 开始使用
🔍 命令面板 Cmd/Ctrl+K 快速搜索会话与命令
🖼️ 附件支持 拖拽/粘贴图片与文件,自动压缩与注入上下文
📝 消息编辑 双击用户消息原地编辑 (Ctrl+Enter 重发)

多平台构建

平台 构建格式
🪟 Windows NSIS 安装包 (x64) + 便携版 (Portable, x64)
🍎 macOS DMG (x64 + arm64) + ZIP (Universal)
🐧 Linux AppImage (x64) + DEB (x64)

⚙️ 配置说明

环境变量 (.env)

# ===========================================
#           LLM API 密钥
# ===========================================

# DeepSeek (https://platform.deepseek.com)
DEEPSEEK_API_KEY=sk-your-key
DEEPSEEK_BASE_URL=https://api.deepseek.com

# Agnes AI (https://apihub.agnes-ai.com)
AGNES_API_KEY=your-key
AGNES_BASE_URL=https://apihub.agnes-ai.com/v1

# Xiaomi MiMo (https://api.xiaomimimo.com)
MIMO_API_KEY=your-key
MIMO_BASE_URL=https://api.xiaomimimo.com/v1

# Ollama (本地运行)
OLLAMA_BASE_URL=http://localhost:11434

# 应用标题
VITE_APP_TITLE=MetonaAI Desktop

应用配置 (app_config 表)

配置项 默认值 说明
llm.provider deepseek LLM Provider ID
llm.model deepseek-v4-pro 模型标识符
agent.maxIterations 20 ReAct 最大迭代轮次
agent.totalTimeoutMs 600000 Agent 总超时 (ms)
agent.toolTimeoutMs 120000 单个工具执行超时 (ms)
agent.thinkingEnabled true 启用 Thinking 推理模式
agent.thinkingEffort high 推理强度 (high / max)
agent.confirmationTimeoutMs 120000 确认弹窗超时 (30s ~ 600s)
deepseek.contextWindow 1000000 DeepSeek 上下文窗口
agnes.contextWindow 1000000 Agnes 上下文窗口
mimo.contextWindow 1000000 MiMo 上下文窗口
ollama.numCtx 4096 Ollama num_ctx 参数

SearXNG 元搜索引擎 (可选)

启用 SearXNG 替代内置四引擎搜索,支持 12 项细粒度配置:

  • 基础配置enabled / base_url / timeout / max_results
  • 搜索范围categories (general/news/scihub 等)、engines filter
  • 安全与隐私safe_search、language、认证方式 (Basic Auth / Token)
  • 连接测试:内置测试功能,点击即可验证

📁 项目结构

MetonaAI-Desktop/
├── 📂 electron/                         # Electron 主进程 (~60+ 文件)
│   ├── 📄 main.ts                        # 应用入口
│   ├── 📄 preload.ts                     # contextBridge 安全桥接 (15 个 API)
│   ├── 📂 ipc/
│   │   └── 📄 handlers.ts                # IPC 通道处理 (50+ 通道)
│   ├── 📂 services/                      # 业务服务层 (9 个 Service)
│   │   ├── 📄 audit.service.ts           #   审计日志 (链式哈希防篡改)
│   │   ├── 📄 config.service.ts          #   配置管理 (全局+工作空间分层)
│   │   ├── 📄 database.service.ts        #   SQLite 数据库 (WAL 模式, 9 张表)
│   │   ├── 📄 global-config.service.ts   #   机器级全局配置 (JSON 文件)
│   │   ├── 📄 mcp-manager.service.ts     #   MCP Server 生命周期管理
│   │   ├── 📄 session-recorder.service.ts#   会话 JSONL 录制
│   │   ├── 📄 session.service.ts         #   会话 CRUD
│   │   ├── 📄 tray-manager.service.ts    #   系统托盘 (4 状态)
│   │   ├── 📄 update.service.ts          #   自动更新
│   │   ├── 📄 window-manager.service.ts  #   窗口管理 + 全局快捷键
│   │   └── 📄 workspace.service.ts       #   工作空间 (SOUL.md + MEMORY.md)
│   ├── 📂 harness/                       # Agent 智能体核心引擎
│   │   ├── 📂 agent-loop/                #   ReAct 状态机
│   │   │   ├── 📄 engine.ts              #     循环引擎 (8 状态, 1293 行)
│   │   │   └── 📄 types.ts               #     状态枚举 · 终止原因 · 配置类型
│   │   ├── 📂 adapters/                  #   LLM Provider 适配器
│   │   │   ├── 📄 base-adapter.ts        #     抽象基类 (fetchWithTimeout)
│   │   │   ├── 📄 deepseek.adapter.ts    #     DeepSeek v4 (SSE, 1M ctx)
│   │   │   ├── 📄 agnes-ai.adapter.ts    #     Agnes AI 2.0 (SSE, 多模态)
│   │   │   ├── 📄 mimo.adapter.ts        #     MiMo 2.5 (SSE, 1M ctx)
│   │   │   ├── 📄 ollama.adapter.ts      #     Ollama (NDJSON, 600 行)
│   │   │   └── 📂 shared/               #     共享: OpenAI 格式 · SSE 解析
│   │   ├── 📂 tools/                     #   工具系统
│   │   │   ├── 📄 registry.ts            #     工具注册 · PolicyEngine · 超时管理
│   │   │   └── 📂 built-in/              #     30+ 内置工具实现
│   │   │       ├── 📄 filesystem.ts      #       文件系统 (7 tools)
│   │   │       ├── 📄 file-editor.ts     #       精准编辑
│   │   │       ├── 📄 file-guard.ts      #       路径安全共享工具
│   │   │       ├── 📄 code-search.ts     #       代码搜索 (ripgrep + JS fallback)
│   │   │       ├── 📄 diff-viewer.ts     #       差异查看 (LCS 算法)
│   │   │       ├── 📄 web-search.ts      #       网络搜索 (SearXNG + 四引擎)
│   │   │       ├── 📄 web-fetch.ts       #       网页抓取 (3 阶段回退)
│   │   │       ├── 📄 browser.ts         #       浏览器自动化 (9 actions)
│   │   │       ├── 📄 http-request.ts    #       HTTP 请求 (SSRF 防护)
│   │   │       ├── 📄 memory.ts          #       记忆存储/搜索
│   │   │       ├── 📄 command.ts         #       Shell 命令执行
│   │   │       ├── 📄 git.ts             #       Git 工具集 (4 tools)
│   │   │       ├── 📄 dev-tools.ts       #       开发工具 (3 tools)
│   │   │       ├── 📄 task-manager.ts    #       任务管理
│   │   │       ├── 📄 delegate-task.ts   #       子任务委派
│   │   │       ├── 📄 think.ts           #       思考工具
│   │   │       ├── 📄 view-image.ts      #       图片查看
│   │   │       └── 📄 network-utils.ts   #       网络共享工具
│   │   ├── 📂 types/                     #   Metona IR 类型定义
│   │   │   ├── 📄 metona-request.ts      #     请求类型
│   │   │   ├── 📄 metona-response.ts     #     响应/流事件类型 (19 错误码)
│   │   │   ├── 📄 metona-tool.ts         #     工具定义/执行上下文类型
│   │   │   ├── 📄 metona-context.ts      #     上下文/记忆类型
│   │   │   └── 📄 metona-adapter.ts      #     适配器接口
│   │   ├── 📂 sandbox/                   #   沙箱安全
│   │   │   ├── 📄 sandbox.ts             #     SandboxManager (28+ 模式)
│   │   │   └── 📄 permissions.ts         #     PolicyEngine (35+ 策略)
│   │   ├── 📂 security/                  #   安全防御
│   │   │   └── 📄 prompt-injection-defense.ts  # 三层注入检测 (40+ 正则)
│   │   ├── 📂 memory/                    #   记忆系统
│   │   │   ├── 📄 manager.ts             #     MemoryManager (TF-IDF, CJK 分词)
│   │   │   └── 📄 consolidator.ts        #     MemoryConsolidator (LLM 提取)
│   │   ├── 📂 orchestration/             #   编排
│   │   │   └── 📄 orchestrator.ts        #     TaskOrchestrator (深度限制 3)
│   │   ├── 📂 prompts/                   #   提示词构建
│   │   │   └── 📄 context-builder.ts     #     ContextBuilder (SOUL + MEMORY)
│   │   ├── 📂 hooks/                     #   钩子
│   │   │   ├── 📄 pre-tool.ts            #     前钩 (权限 + 频率)
│   │   │   ├── 📄 post-tool.ts           #     后钩 (审计 + 记忆)
│   │   │   └── 📄 confirmation-hook.ts   #     确认钩 (IPC 弹窗)
│   │   ├── 📂 verification/              #   验证
│   │   │   └── 📄 output-validator.ts    #     OutputValidator (幻觉检测)
│   │   └── 📂 utils/                     #   工具函数
│   │       └── 📄 token-estimator.ts     #     Token 估算 (CJK/ASCII)
│   └── 📂 utils/
│       └── 📄 slo.ts                     #   健康检查 · SLO 监控
├── 📂 src/                               # React 渲染进程 (~42 文件)
│   ├── 📄 main.tsx                       #   渲染进程入口
│   ├── 📄 App.tsx                        #   根组件 (三栏布局 + Store 连接)
│   ├── 📂 components/
│   │   ├── 📂 chat/                      #   聊天组件 (11 个)
│   │   │   ├── 📄 ChatPanel.tsx          #     聊天主面板
│   │   │   ├── 📄 MessageList.tsx        #     消息列表 (content-visibility 虚拟滚动)
│   │   │   ├── 📄 MessageItem.tsx        #     消息路由 (memo)
│   │   │   ├── 📄 AssistantMessage.tsx   #     Agent 回复 (Markdown + 代码高亮)
│   │   │   ├── 📄 UserMessage.tsx        #     用户消息 (附件 + 双击编辑)
│   │   │   ├── 📄 SystemMessage.tsx      #     系统通知
│   │   │   ├── 📄 ChatInput.tsx          #     输入框 (附件 + / 命令)
│   │   │   ├── 📄 ThoughtBlock.tsx       #     思考过程 (可折叠)
│   │   │   ├── 📄 ToolCallCard.tsx       #     工具调用卡片 (5 状态)
│   │   │   ├── 📄 ToolResultBlock.tsx    #     工具结果块
│   │   │   └── 📄 StreamingIndicator.tsx #     流式加载指示器
│   │   ├── 📂 layout/                    #   布局组件 (5 个)
│   │   │   ├── 📄 Header.tsx             #     顶部栏 (Provider · 面板切换)
│   │   │   ├── 📄 Sidebar.tsx            #     侧边栏 (会话列表 · 工具管理)
│   │   │   ├── 📄 DetailPanel.tsx        #     详情面板 (4 Tab)
│   │   │   ├── 📄 AgentMonitor.tsx       #     Agent 状态指示器
│   │   │   └── 📄 StatusBar.tsx          #     底部状态栏
│   │   ├── 📂 settings/
│   │   │   └── 📄 SettingsModal.tsx      #   设置弹窗 (8 标签页)
│   │   ├── 📂 memory/
│   │   │   └── 📄 MemoryViewer.tsx       #   记忆浏览器 (3 类型)
│   │   ├── 📂 tasks/
│   │   │   └── 📄 TaskList.tsx           #   任务列表
│   │   ├── 📂 trace/                     #   追踪组件 (3 个)
│   │   │   ├── 📄 TraceViewer.tsx        #     ReAct 迭代时间轴
│   │   │   ├── 📄 TraceStep.tsx          #     单步详情 (Thought + ToolCalls)
│   │   │   └── 📄 TokenUsage.tsx         #     Token 统计面板
│   │   ├── 📂 workspace/
│   │   │   └── 📄 WorkspaceViewer.tsx    #   工作空间浏览器
│   │   ├── 📂 onboarding/
│   │   │   └── 📄 OnboardingWizard.tsx   #   5 步引导向导
│   │   ├── 📂 common/
│   │   │   └── 📄 ErrorBoundary.tsx      #   错误边界
│   │   ├── 📄 CommandPalette.tsx         #   Cmd+K 命令面板
│   │   ├── 📄 ConfirmationDialog.tsx     #   工具确认弹窗 (批量审批)
│   │   ├── 📄 ContextMenu.tsx            #   右键菜单
│   │   └── 📄 ToastContainer.tsx         #   Toast 通知 (metona-toast v2)
│   ├── 📂 hooks/
│   │   ├── 📄 useAgentStream.ts          #   流式事件监听 (rAF 批处理)
│   │   ├── 📄 useKeyboardShortcuts.ts    #   键盘快捷键 (16 个)
│   │   └── 📄 useTheme.ts               #   主题管理
│   ├── 📂 stores/
│   │   ├── 📄 agent-store.ts             #   Agent 状态 (消息·流·Trace·Token)
│   │   ├── 📄 session-store.ts           #   会话列表 (搜索·置顶·归档)
│   │   └── 📄 ui-store.ts               #   UI 状态 (主题·面板·专注模式)
│   ├── 📂 lib/
│   │   ├── 📄 constants.ts              #   常量 (布局·颜色·快捷键)
│   │   ├── 📄 formatters.ts             #   格式化 (时间·Token·文件大小)
│   │   ├── 📄 theme.ts                  #   MUI 暗色/亮色主题
│   │   └── 📄 cn.ts                     #   className 合并
│   ├── 📂 styles/
│   │   └── 📄 globals.css               #   全局样式 (Tailwind + 动画 + Markdown)
│   └── 📂 types/
│       └── 📄 global.d.ts               #   window.metona API 类型声明
├── 📂 docs/                              # 设计文档 (~10K 行)
│   ├── 📄 Agentic-Loop详解.md             #   Agent Loop 理论 (637 行)
│   ├── 📄 Agent网络工具通用设计-v2.md       #   网络工具链设计 (953 行)
│   ├── 📄 MetonaAI-Desktop UI UX 设计集成方案.html    # UI/UX 设计 (741 行)
│   ├── 📄 MetonaAI-Desktop 内部API请求与响应标准.html  # Metona IR 标准 (1262 行)
│   ├── 📄 MetonaAI-Desktop 架构与交互设计.html         # 系统架构 (999 行)
│   └── 📄 生产级通用AI Agent智能体桌面应用:完整设计与构建指南.html  # 完整指南 (6616 行)
├── 📂 standard/                          # 开发规范
│   └── 📄 开发规范.md                      #   第一铁律 + 常用库清单
├── 📂 apis/                              # LLM API 文档
│   ├── 📄 deepseek-api-docs-20260518.html #   DeepSeek API (Chat + FIM + Balance)
│   ├── 📄 agnes-ai-api-docs-20260625.html #   Agnes AI API (1M ctx, 多模态)
│   ├── 📄 mimo-api-docs-20260715.html     #   MiMo API (Chat + TTS + Web Search)
│   └── 📄 ollama-api-docs-20260518.html   #   Ollama API (12 endpoints)
├── 📂 assets/                            # 应用图标 (构建资源)
│   ├── 🖼️ logo.ico                        #   Windows 图标 (264KB)
│   └── 🖼️ logo.png                        #   macOS/Linux 图标 (2MB)
├── 📂 public/
│   └── 🖼️ logo.png                        #   渲染进程 Logo
├── 📄 .env.example                        # 环境变量模板
├── 📄 electron-builder.yml               # 多平台构建配置
├── 📄 electron.vite.config.ts            # electron-vite 配置
├── 📄 vite.config.ts                     # Vite + Vitest 配置
├── 📄 tsconfig.json                      # TypeScript 根配置
├── 📄 tsconfig.node.json                 # Node 端 TS 配置
├── 📄 tsconfig.web.json                  # Web 端 TS 配置
├── 📄 package.json                       # 依赖与脚本
├── 📄 index.html                         # HTML 入口
└── 📄 LICENSE                            # MIT 许可证

📝 开发命令

# ─── 开发 ─────────────────────────────────
npm run dev                # 启动开发模式 (Electron + Vite 热重载)
npm run typecheck          # 全量 TypeScript 类型检查
npm run typecheck:node     # Node 端类型检查
npm run lint               # ESLint 代码检查
npm run lint:fix           # ESLint 自动修复
npm run format             # Prettier 格式化

# ─── 测试 ─────────────────────────────────
npm test                   # 运行单元测试 (Vitest)
npm run test:watch         # 测试监听模式
npm run test:e2e           # E2E 测试 (Playwright)

# ─── 构建 ─────────────────────────────────
npm run build              # 构建生产包 (Windows NSIS + 便携版)
npm run build:renderer     # 仅构建渲染进程
npm run build:electron     # 仅编译主进程 TypeScript
npm run preview            # 预览构建产物

数据库 Schema

表名 用途 关键特性
sessions 会话管理 title, created_at, updated_at, pinned, archived
messages 消息持久化 role, content, reasoning_content, tool_calls (JSON), token_usage
app_config 应用配置 键值对,5 大分类 (llm/agent/tools/security/logging)
audit_logs 审计日志 chain_hash (SHA-256), INSERT-ONLY 触发器
mcp_servers MCP Server 配置 name, transport (stdio/sse), command, args, env, url
episodic_memories 情节记忆 content, importance, access_count, last_accessed, created_at
semantic_memories 语义记忆 content, embedding (JSON), importance, decay_factor
working_memories 工作记忆 key-value, session_id, expires_at
tasks 持久化任务 title, description, status, priority, parent_id, session_id

📄 许可证

本项目基于 MIT License 开源。


Made with ❤️ by the Metona Team · 2026

S
Description
MetonaAI Desktop — 生产级通用 AI Agent 智能体桌面应用
Readme MIT
5.1 MiB
v0.3.19
Latest
2026-07-22 20:54:39 +08:00
Languages
TypeScript 79.9%
HTML 19.5%
CSS 0.6%