← Discover MCPs and Agents
M
AgentAI & MLGitHub

Metis

一个会读写代码、操控终端与网页的桌面 AI 智能体(Electron + Python)。A desktop AI agent that reads your code, runs your terminal, and drives the web.

Links

README

From the repo.

Metis Chat、Cowork、Code 与 Design

Metis

把模型接入项目、代码、终端、浏览器与 Windows 桌面,让任务从一句话走到可验证的结果。

Electron 41 React 19 TypeScript 6 Python 3.11 Flask SSE

下载 Metis 26.7.27 查看 Release Notes

Windows 10 / 11 · 64 位 · DeepSeek / OpenAI-compatible API
English · 由 linyeping 打造 · 产品方向与部分设计思路致谢 Serein


四种工作面

Chat、Cowork、Code 与 Design 针对不同任务组织界面和工具,同时共享模型配置、项目上下文、权限策略、连接器与任务通知。

Metis Chat、Cowork、Code 与 Design 实机界面

工作面适合处理核心体验
Chat问答、分析、文件理解、轻量执行快速对话、附件上下文、模型切换、工具调用与独立 Side Chat
Cowork调研、整理、计划驱动的多步骤任务计划、子任务、后台运行、研究记录、工具活动和结果汇总
Code仓库修改、调试、测试、构建与交付项目上下文、Worktree、终端、文件、Diff、网页预览和验证证据
Design网页、原型、演示文稿、图片与交互内容项目化 Studio、素材、设计系统、实时预览、评论、版本与导出

模式之间的会话和草稿相互隔离。切换工作面不会让其它模式的请求、输入或运行状态覆盖当前任务。


一条完整的任务链路

Metis 不把“模型回复”当作任务终点。一个任务可以在同一窗口内完成:

  1. 建立上下文:选择目录或仓库,添加文件与图片,恢复历史会话,读取项目状态。
  2. 确定执行方式:直接执行、先给计划、使用 Worktree,或进入 WSL / HCS 隔离环境。
  3. 持续运行:调用代码、终端、浏览器、桌面、检索、Skills、Connectors 与 MCP 工具。
  4. 检查改动:在文件卡和多文件 Diff 中逐项审阅,按文件回退不需要的改动。
  5. 验证结果:运行测试和构建,打开本地网页,检查 Windows 应用,保存截图、日志与视觉证据。
  6. 交付与恢复:后台任务、checkpoint、上下文压缩和会话恢复保持长任务连续,最终集中呈现产物与证据。
Metis Code、Browser、Desktop、Design、Skills 与 Isolated VM 能力

工程工作台

Code 与 Cowork 不只有聊天区。右侧工作台由可组合的工作卡组成,可按任务显示、关闭、调整尺寸并保留布局。

工作卡能力
Files浏览工作区文件,预览文本、图片、PDF 与常见文档
Diff汇总多文件改动,逐文件切换,显示增删行并执行单文件回退
Terminal交互式 PTY,支持多终端、重命名、重启、清屏、尺寸调整与 shell 配置
Web多标签网页预览、前进后退、刷新、缩放、弹窗接管与本地 HTML 预览
Activity查看 run、子任务、工具调用、状态、耗时、摘要和错误
Plan展示任务步骤、当前进度和阶段性结果
Tool检查单次工具调用的输入、输出、错误与产物
Research汇总检索来源、研究过程和结论
Session查看当前会话、工作区、分支、执行边界和恢复信息

预览与验证

  • 写入本地 HTML 或检测到开发服务器后,可自动打开网页预览。
  • Preview Browser 支持观察、点击、输入、滚动和断言,用真实页面结果验证任务。
  • 预览诊断会记录当前 URL、加载状态和近期活动;视觉检查可保存截图证据。
  • 文件改动会自动生成 Diff,并把写入、编辑、删除映射到对应文件。

并发任务与会话

  • 不同会话可以独立运行,离开当前页面后任务继续在后台执行。
  • 活动中心统一显示运行中、等待、成功、失败和需要关注的任务。
  • 会话支持恢复、重命名、标记未读、归档和删除。
  • 忙碌会话有明确状态保护,避免重复提交覆盖正在执行的 run。
  • 独立 Side Chat 拥有自己的会话、历史和上下文,不干扰主任务。
  • 上下文额度、自动压缩、手动 compact 与 handoff 让长对话保持可继续性。

Metis Design

Metis Design 是面向真实交付的项目工作面。在同一个 Studio 中完成需求描述、素材整理、生成、预览、评论、迭代和导出。

能力说明
项目与标签创建、打开和恢复设计项目;使用浏览器式工作区标签并通过 New tab 开启新工作面
对话式 Studio左侧与 Agent 协作,右侧查看作品;消息、文件、页面和预览保持在同一项目上下文
素材与附件管理项目文件、图片、文本与引用素材,并按可见顺序加入生成上下文
设计系统创建和复用颜色、字体、组件与品牌规则,在不同作品中保持一致性
真实预览运行网页、桌面/移动端原型、演示文稿、图片和交互内容,而不是只显示静态草图
视觉评论针对页面、幻灯片或具体区域添加评论,把标注直接带入下一轮修改
版本与恢复保存项目状态、查看迭代结果并恢复到需要的版本
导出与交付根据作品类型导出 HTML、PDF、PPTX、图片、Markdown 与项目包,并显示完整进度和结果

Design 使用 Metis 当前的模型配置与 API 凭据,并共享主题、语言、任务通知和桌面宠物状态。顶部返回按钮可以随时回到 Metis 主工作台。


模型、上下文与命令中心

模型服务

  • 支持 DeepSeek 与 OpenAI-compatible API,可配置自定义 Base URL、API Key 和模型名。
  • 从当前 API 读取可用模型目录,在 Composer 或模型面板快速切换。
  • 展示上下文窗口、模型类型、提供方信息与可用用量数据。
  • Windows 下 API Key 保存在当前用户的 Credential Manager 中,不写入明文配置、聊天记录、日志或模型上下文。
  • Design 与其它工作面使用同一套模型配置,无需维护第二套账号或凭据。

命令中心

命令中心把全局搜索、系统状态、后台 run 和模型服务放在同一入口:

  • 搜索会话、项目和命令,并直接跳转到对应工作面。
  • 检查后端、模型、运行时和连接器状态。
  • 查看后台 run,恢复仍在执行或已经完成的任务。
  • 快速进入模型、权限、终端、运行时与其它设置页面。

Skills、Connectors 与 MCP

扩展方式用途
Skills把稳定的操作步骤、工具选择、校验方式和领域知识封装成可复用工作流
Connectors连接 GitHub、Slack、Notion、Google Calendar、Google Drive、Gmail、PostgreSQL 与本机文件
MCP添加外部 MCP Server,把团队或个人工具接入 Agent 工具列表
Slash commands在 Composer 中快速选择常用模式、工具和工作流

连接器中心展示能力说明、来源、授权方式、可用工具和连接状态。OAuth Token 由桌面主进程管理,不进入模型上下文。

GitHub    Slack    Notion    Google Calendar    Google Drive    Gmail    PostgreSQL    Local Filesystem


权限与执行环境

权限中心

  • 按工具、路径和动作设置 ask、允许或拒绝规则。
  • 搜索和筛选现有规则,手动添加工具规则与授权目录。
  • 批量选择、删除、导入、导出并清理冲突规则。
  • 工具调用保留状态、摘要和结果,便于审计与问题排查。
  • 涉及删除、上传、授权、外部提交或敏感数据时保持显式确认边界。

执行边界

环境适用场景
本机工作区需要直接操作当前目录的日常任务
Git Worktree希望隔离代码改动、并行处理分支或降低对主工作区的影响
WSL依赖 Linux shell、工具链或运行环境的项目
HCS VM需要更强隔离、持久会话数据盘和受控 guest 工具链的任务

Runtime Manager 提供系统基础能力、运行组件、隔离执行、镜像/资产状态、健康检查、修复命令和诊断包。HCS readiness 会绑定 kernel、initrd、rootfs 与 session-data template 指纹,资产变化后重新验证。


26.7.27 版本重点

  • 新增 Thinking Orbs:根据真实运行事件区分理解任务、检索资料、执行工具与组织回答。
  • 运行状态进入当前 AI 回复,与本轮工具活动保持在同一条时间线中,不再占用输入框上方空间。
  • 状态提示改为面向任务的自然文案,并保留轮次、步骤与耗时信息。
  • 20px 内联动画对齐 Thinking Orbs 原始 64px 演示节奏,兼顾清晰度与长任务观看体验。
  • 准备、重试和重连统一使用 Orb;真正失败时直接显示错误标志,不再闪烁心电图图标。
  • 排队消息与后台子智能体继续保留在输入区附近,区分当前回复状态和跨任务状态。

本机架构

Metis 本机架构:Chat、Cowork、Code、Design、Python Agent、安全执行与模型 API
层职责
Electron Desktop窗口、托盘、系统通知、OAuth、原生预览、PTY、后端与 Design runtime 生命周期
React Workbench四种工作面、会话、Composer、命令中心、工作卡、设置与状态管理
Python AgentFlask + SSE、agent loop、模型路由、工具注册、Skills、checkpoint、连接器和浏览器/桌面自动化
Execution Runtime本机、Worktree、WSL、HCS VM、运行时资产、诊断和安全边界
Metis Design Runtime项目、会话、素材、设计系统、实时预览、评论、版本与导出渲染

[!NOTE] Renderer 与本机后端通过 HTTP / SSE 通信。API Key 与 OAuth Token 不经过 Metis 中转服务,也不会写入日志或模型上下文。


下载与首次启动

下载 Metis 26.7.27 for Windows
Windows 10 / 11 · x64 · NSIS 安装程序

1 · 下载

从 Latest Release 获取 Metis-Setup-26.7.27.exe。
2 · 安装

运行安装程序,选择安装目录并完成桌面快捷方式创建。
3 · 配置模型

在设置中选择提供方,填写 API Key,并测试连接或读取模型目录。
4 · 开始任务

选择 Chat、Cowork、Code 或 Design;需要时再连接 Skills、MCP 与 Connectors。

运行要求

项目当前支持
系统Windows 10 / 11 64 位,x64 处理器
模型提供方DeepSeek、OpenAI、Kimi、智谱 GLM、百炼 / Qwen、豆包、Anthropic、Gemini、Ollama,以及自定义 OpenAI-compatible API
网络模型 API、OAuth / Connectors、外部 MCP、网页访问和按需下载隔离运行时资产时需要联网
本机依赖安装版本已经包含 Electron、Python backend、Windows runtime service 与 Metis Design runtime;使用者不需要安装 Node.js 或 Python
隔离运行时Worktree 直接使用当前 Git;WSL / HCS VM 需要系统具备相应能力,较大的运行时资产按需准备
自动更新安装版本从 GitHub Releases 检查并下载更新,在应用退出或确认重启后完成安装

[!IMPORTANT] 当前安装包尚未代码签名,Windows SmartScreen 可能显示风险提示。请确认下载地址属于 github.com/linyeping/Metis 后再运行。Computer Use 会控制鼠标和键盘,涉及外部提交、上传、删除或敏感信息时应先检查权限提示。


源码开发

python -m pip install -e backend/

cd desktop
npm ci
npm run dev

开发模式会启动 Vite renderer、Electron desktop shell 和由 Electron launcher 管理的本机 Python backend。Metis Design 位于仓库的 open-design/ 工作区,并使用同一套桌面开发流程。

CLI 与 TUI

Metis 提供交互式终端工作台和面向脚本/CI 的一次性命令行入口。两者复用同一套模型解析、agent loop、工具、权限规则与 metis.agent_event.v1 事件契约。

在真实 TTY 中直接运行 metis 会进入多轮 TUI;传入初始任务可以立即开始,-p 或管道输入则保持 headless 行为:

metis
metis "检查当前仓库并提出修复建议"
"检查当前仓库并给出结论" | metis -p --output-format stream-json --no-desktop

TUI 当前提供流式回答、工具活动、计划摘要、终端权限确认、会话续接和工作区切换。输入 /help 查看已实现命令;/sessions、/resume、/continue、/new、/workspace、/status、/clear 与 /exit 都有对应闭环。非 TTY、-p 和 JSON/JSONL 输出不会启动 TUI。

# 源码运行
"检查当前仓库并给出结论" | python -m backend -p `
  --workspace . `
  --permission-mode plan `
  --output-format stream-json `
  --no-desktop

# 构建不依赖系统 Python / Node.js 的单文件 CLI
cd desktop
npm run build-cli

CLI 支持 text、单个结果对象 json 和逐事件 stream-json。非交互任务遇到需要确认的工具动作时不会挂起:它会输出脱敏错误并以退出码 2 结束。构建产物为 desktop/release/metis.exe;完整参数见 metis --help。

独立 CLI 会读取 ~/.metis/config.json、~/.metis/settings.json 和工作区 .metis/settings.json 的模型设置。在 Windows 上,桌面端和 CLI 通过当前用户的 Windows Credential Manager 共用 API Key,配置文件不保存明文;旧版 Electron safeStorage 和明文配置会在桌面启动后自动迁移。CI 等临时环境仍可通过 METIS_LLM_API_KEY 注入,且环境变量优先于系统凭据。

CLI 任务会写入与桌面端相同的会话库,因此可以列出、续接和导出,不会生成一套彼此不可见的“CLI 历史”:

metis sessions list
metis sessions show <session-id> --output-format json
metis --resume <session-id-or-prefix> "继续检查未完成项"
metis --continue "接着最近的会话"
metis sessions export <session-id> --format markdown --output session.md

JSON 列表、详情和导出分别使用 metis.cli_sessions.v1、metis.cli_session.v1 与 metis.session_export.v1;JSON 导出可以直接复制到另一台机器留档,Markdown 导出适合人工阅读。

桌面应用正在运行时,CLI 还可以把任务交给当前桌面 runtime;agent loop、模型配置、工具状态和权限确认都由桌面实例负责,输出仍保持相同的 text / json / stream-json 契约:

metis --attach "检查当前项目"
metis --attach --resume <session-id-or-prefix> "继续"
metis --attach --continue "接着最近的会话"

attached run 遇到权限请求时会等待用户在 Metis 桌面端允许或拒绝,而不是像独立 headless run 那样以退出码 2 立即结束。CLI 不扫描本机端口;正式桌面 backend 在 %LOCALAPPDATA%\Metis\runtime 下使用当前用户 ACL 发布随机令牌和数据目录指针,并在连接时校验 PID、实例 ID、attach 协议与事件 schema。这样即使安装数据目录经过自定义,CLI 仍能找到同一会话库;开发版使用独立发现记录,不覆盖正式版。--attach 使用桌面的运行配置,因此不接受模型、权限、policy、工具开关或最大轮次覆盖参数。

CLI 还提供默认只读的环境诊断与独立的沙箱检查/修复入口:

metis doctor --output-format json
metis doctor --deep
metis sandbox status --deep
metis sandbox repair
metis sandbox repair --allow-download

doctor 检查配置、共享凭据是否存在、会话库完整性、workspace 权限、桌面工具、MCP、HCS/VM 服务版本与协议,但不会输出 API Key,也不会修改文件或系统状态。只有显式执行 sandbox repair 才会触发幂等修复;下载 runtime pack 还需要额外传入 --allow-download。

Python SDK

SDK 是 headless runtime 的进程内形态,直接复用同一 agent loop 和 metis.agent_event.v1,不会启动子进程或反解析 CLI 文本:

from metis import Agent

result = Agent(permission_mode="ask").run_to_completion(
    "检查当前项目",
    workspace=".",
    on_event=lambda event: print(event.kind),
)
print(result.final_text)

Agent.run() 可逐事件迭代,并在 permission_request 后用 generator .send(True/False) 做单次决策;没有显式 callback 或 .send(True) 时默认拒绝。SDK 与桌面/CLI 共用凭据和会话库,提前停止迭代时应调用 stream.close() 以立即恢复工作目录与临时环境。安装、类型和完整示例见 Python SDK 文档。

常用验证命令

cd desktop

# TypeScript
npm run typecheck

# React / store / runtime 单测
npm run test

# Electron、安全与产品契约测试
npm run test:contracts

# 发布前固定回归
npm run test:fixed-regression

# Design runtime 生命周期检查
npm run test:design-runtime-lifecycle

# 后端全量测试
cd ..
python -m pytest backend/tests/ -q

构建 Windows 安装包

cd desktop
npm run dist:win

dist:win 会依次执行:

  1. 发布前固定回归测试。
  2. 使用 PyInstaller 构建 Python backend。
  3. 构建 Windows runtime service。
  4. 组装 Metis Design runtime 与导出组件。
  5. 构建 React / Vite renderer。
  6. 使用 electron-builder 生成 NSIS 安装包与 blockmap。

构建产物位于 desktop/release/。


仓库导航

Miro/
├── .github/workflows/       # CI、运行时构建与发布工作流
├── backend/
│   ├── cli/                 # Headless/attach CLI、会话、诊断、输出与权限契约
│   ├── core/                # 配置、常量与共享基础能力
│   ├── bridges/             # 事件、供应商与工具协议桥接
│   ├── runtime/             # agent loop、模型路由、run、checkpoint 与执行环境
│   ├── tools/               # 代码、浏览器、桌面、检索与文档工具
│   ├── web/                 # Flask API、SSE、CLI attach 与 Preview Browser bridge
│   └── tests/               # 后端单元、集成、安全与运行时测试
├── desktop/
│   ├── electron/            # 窗口、托盘、PTY、OAuth、预览与 runtime 生命周期
│   ├── src/                 # React 工作台、状态、设置、i18n 与桌面组件
│   ├── scripts/             # 构建、契约、回归、冒烟与生命周期测试
│   └── resources/           # 图标、后端、service 与 Design 的打包资源
├── open-design/
│   ├── apps/web/            # Metis Design 项目入口与 Studio
│   ├── apps/daemon/         # 项目、会话、Agent、预览与导出服务
│   ├── packages/            # Design 共享组件、协议与运行库
│   ├── skills/              # Design 工作流与创作能力
│   └── tools/               # 开发、测试和跨平台打包工具
├── CONTRIBUTING.md          # 贡献与开发约定
└── README.md / README.en.md

日常桌面开发主要集中在 backend/ 与 desktop/;Design 相关改动集中在 open-design/,最终由 desktop/scripts/prepare-design-runtime.mjs 组装进桌面发布产物。


隐私与安全

Metis 不要求平台账号。模型服务、连接器和外部工具由用户自行配置,应用不会把这些请求转发到 Metis 中转服务。

数据或动作本机处理方式
项目与会话写入统一数据目录;默认优先使用安装目录下的 data/,不可写时回退到 %LOCALAPPDATA%/Metis/data
数据目录可通过安装目录的 data-root.json 或 METIS_DATA_ROOT 调整;METIS_HOME 单独覆盖后端工作目录
模型 API KeyWindows 下保存到当前用户的 Credential Manager(target:Metis/LLM/API-Key),桌面与 CLI 读取同一凭据;旧版 safeStorage / 明文配置会迁移后清除
OAuth 与连接器凭据按服务分别加密保存,只在对应连接器或本机运行时需要时解密使用
Design 数据采集Metis 受管配置关闭 metrics、content 与 artifact manifest telemetry
工具动作权限请求、允许/拒绝结果、运行状态和诊断信息保持可回看

联网边界

  • 调用用户配置的模型 API。
  • 连接用户主动启用的 OAuth 服务、Connectors 与外部 MCP Server。
  • 下载用户选择的隔离运行时资产或访问任务要求的网页。
  • API Key、OAuth Token 和连接器 Token 不加入模型上下文;敏感字段不应出现在诊断包和应用日志中。

操作与隔离

  • Browser 与 Computer Use 区分读取信息和向外部发送、提交或上传数据。
  • 删除、授权、上传、外部提交和敏感数据传输等动作需要经过对应权限边界。
  • 权限中心支持按工具、路径和动作管理规则,并提供搜索、批量处理、导入导出和冲突清理。
  • 任务可选择本机工作区、Git Worktree、WSL 或 HCS VM;隔离越强,准备成本和环境限制也越高。

许可证

PolyForm Noncommercial 1.0.0 © 2026 linyeping

源码可见,个人 / 非商用免费(学习、研究、个人项目、非营利组织)。

任何商业用途或商业二次开发,须事先获得作者书面授权(付费)。


由 linyeping 打造 · 产品方向与部分设计思路致谢:Serein

且将新火试新茶,诗酒趁年华。

Collected info

  • ★ 6 stars
  • Language: TypeScript
  • Source updated: 9/23/2026