Metis CLI 是 Metis 的 headless 发行入口。CLI 源码与 agent runtime 继续在 Metis 主仓库共同维护;本仓库保存安装文档、稳定命令契约和经过 Windows CI 验证的单文件发行包,避免复制两套 backend。
- 从 Latest Release 下载
metis.exe和metis.exe.sha256。 - 校验文件:
$expected = ((Get-Content .\metis.exe.sha256) -split '\s+')[0]
$actual = (Get-FileHash .\metis.exe -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $expected) { throw "SHA256 mismatch" }- 把
metis.exe放到固定目录并将该目录加入用户 PATH,例如%LOCALAPPDATA%\Programs\Metis CLI。 - 运行
metis --version和metis --help。
metis.exe 是 Windows x64 单文件程序,运行时不要求系统安装 Python 或 Node.js。当前发行包尚未代码签名,Windows SmartScreen 可能显示风险提示。
自动化环境建议使用环境变量注入凭据:
$env:METIS_LLM_BACKEND = "openai"
$env:METIS_LLM_BASE_URL = "https://api.example.com/v1"
$env:METIS_LLM_MODEL = "your-model"
$env:METIS_LLM_API_KEY = "your-api-key"CLI 也读取 ~/.metis/config.json、~/.metis/settings.json 和 <workspace>/.metis/settings.json 的非敏感设置。在 Windows 上,桌面版与 CLI 共享当前用户的 Credential Manager 凭据 Metis/LLM/API-Key:在桌面设置中保存一次 API Key,终端即可使用,不会把密钥复制到项目文件或模型上下文。环境变量和显式配置仍具有更高优先级。
在真实终端中直接运行 metis 会进入多轮 TUI;位置参数可作为进入 TUI 后立即执行的第一条任务。加上 --attach 时,TUI 会复用正在运行的 Metis 桌面 runtime、模型配置和权限确认界面:
metis
metis "先检查当前仓库,再等我继续提问"
metis --attachTUI 会流式显示回复、工具活动和 todo/计划摘要。本地 embedded 模式在终端内确认敏感工具动作,attached 模式则等待桌面端允许或拒绝。内置命令包括 /help、/sessions、/resume、/continue、/new、/workspace、/status、/clear 和 /exit。
脚本、CI 或只需单次结果时使用 -p;stdin、json 和 stream-json 也始终走非交互契约:
# 单次文本结果
metis "检查当前仓库并给出结论" -p --workspace . --permission-mode plan
# stdin + JSONL,适合 CI
"运行测试并汇总失败" | metis -p `
--workspace . `
--output-format stream-json `
--permission-mode ask `
--no-desktop
# 单个机器可读结果
metis "总结改动" -p --output-format json --no-desktop --no-mcp每次运行都会写入桌面版共用的 ~/.metis/session-state.db。因此可以在终端查看、导出或继续来自 Chat、Cowork、Code 和 CLI 的同一批会话:
metis sessions list
metis sessions show <id-or-prefix> --output-format json
metis sessions export <id-or-prefix> --format markdown --output session.md
metis --resume <id-or-prefix> "继续这个任务"
metis resume <id-or-prefix> "继续这个任务"
metis --continue "继续最近会话"会话 ID 支持完整值或唯一前缀。续接时默认回到会话原工作区;显式传入 --workspace 可覆盖它。
桌面版正在运行时,可以把任务交给当前桌面 runtime,并直接使用桌面的模型配置、工具状态、热会话与权限确认界面:
metis --attach "检查当前项目"
metis --attach --resume <id-or-prefix> "继续"
metis --attach --continue "继续最近会话"attached run 遇到权限请求时会等待桌面端允许或拒绝,不会按独立 headless 模式立即退出 2。CLI 不扫描端口;它通过当前用户 ACL 保护的随机令牌发现桌面实例,并校验 PID、实例 ID、协议和事件 schema。--attach 使用桌面 runtime 配置,因此不能同时覆盖模型、权限、policy、工具开关或最大轮次。
环境与沙箱诊断也由同一 EXE 提供:
metis doctor --output-format json
metis doctor --deep
metis sandbox status --output-format json
metis sandbox repair输出格式:
text:面向人类的回复与工具摘要。json:结束时输出一个metis.cli_result.v1对象。stream-json:每行一个既有metis.agent_event.v1事件。
非交互任务遇到需要确认的工具动作时不会挂起:CLI 输出脱敏错误并以退出码 2 结束。完整参数与退出码见命令契约。
linyeping/Metis 的 Windows CI 构建并验证 metis.exe,包括:
- stdin、
text/json/stream-json与 JSONL schema。 - 参数及权限退出码回归。
- 共享系统凭据以及 sessions、resume、continue、export 回归。
- packaged attach/resume、桌面数据目录发现、过期实例与令牌泄漏回归。
- interactive TUI 多轮会话、slash commands、工具活动和权限决策回归。
- 从源码树外运行,且 probe PATH 中不存在 Python/Node.js。
- PE 图标、体积、AST 编辑工具链和 SHA256。
本仓库的接收工作流只镜像 Metis main 上成功的 CLI Windows artifact,再次校验 checksum 后创建或更新 Release。
PolyForm Noncommercial 1.0.0 © 2026 linyeping。个人与非商用免费;商业用途须获得书面授权。