mcpField
M
MELRA

MELRA

本地服务
xagilab.comAI 与智能体12今天更新

关于 MELRA

MELRA 是面向 Agent 构建者的本地执行运行时,治理经其路由的工具调用。它按策略授权、核验声明的证据,并为结果保留脱敏收据;不确定的变更进入恢复流程而不会重放。

主要功能

  1. 01按策略检查并授权操作
  2. 02高风险变更需审批
  3. 03依据声明的证据核验结果
  4. 04变更至多派发一次
  5. 05保留哈希链式脱敏收据

适用场景

  1. 01限制 Agent 可执行的文件和命令操作
  2. 02审批高风险变更后再执行
  3. 03通过证据确认命令或文件操作结果
  4. 04崩溃后核对未决变更并审计记录

MCP 相关

MELRA 通过 MCP 提供执行工具,供 MCP 客户端调用。可使用 CLI 配置多种 MCP 客户端,也可由 SDK 启动或连接运行时。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"xagi-lab-melra": {
"command": "npx",
"args": [
"-y",
"@melra/cli"
]
}
}
}
启动命令npx -y @melra/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@melra/cli0.3.0-alpha.14

工具

11

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

MELRA 徽标

MELRA

Modular Execution Layer for Reliable Autonomy

AI Agent 决定要做什么。MELRA 管控工具调用的授权、验证与恢复方式。

一款开源的本地执行运行时,用于处理经由 MELRA 路由的 Agent 工具调用。 它会根据策略检查每次调用,在需要时请求批准,验证声明的 证据,并记录从执行到结果的脱敏回执。对于每项任务,MELRA 最多只会分发一次变更操作;结果不确定时,会暂存以供协调, 而不是重新执行。外部效果能否恰好执行一次,仍取决于服务提供方。通过 其他工具发出的调用不受 MELRA 控制。


CI 状态 CodeQL 状态 依赖项审计状态 容器构建状态

最新版本 npm 上的 @melra/cli MELRA 已收录于官方 MCP Registry 已编入 TensorBlock MCP Index 已收录于 mcpservers.org 已收录于 mcp.site MELRA 已收录于 Smithery Apache-2.0 许可证 55 个确定性评估场景全部通过 遥测已关闭 macOS Linux Windows Node.js 22.13 或更高版本,或 23.4 或更高版本 Python 3.11 至 3.14 经过安全加固的 Docker 镜像



兼容   Claude Code Claude Desktop OpenAI Codex Cursor VS Code Gemini CLI Zed Windsurf OpenClaw Hermes Agent GitHub Copilot CLI 以及任何 MCP 客户端



26 秒演示  ·  快速开始  ·  工作原理  ·  查看运行内容  ·  文档  ·  参与贡献  ·  讨论  ·  Product Hunt 发布


MELRA 受治理的执行流程

26 秒演示

https://github.com/user-attachments/assets/e5cf895d-7ea6-4797-a1ef-e69cc5860d3f


警告

MELRA 是 alpha 软件。 本地运行时已通过端到端测试,但 API 可能会在 1.0 之前发生变化。请使用隔离的工作区,严格限制域名和命令允许列表, 并在批准每项请求前仔细阅读。


快速开始

你需要 Node.js 22.13 或更高版本,或 23.4 或更高版本。在 Agent 要工作的项目中,只需一条命令即可完成所有设置:

cd ~/project
npx @melra/cli@alpha setup

该目录将成为 Agent 的工作区,也是其文件和命令操作的边界。setup 会显示该目录;如果要将你的主目录、包含主目录的目录或 / 设为工作区,则会先征求你的同意;设置 MELRA_WORKSPACE 可选择其他目录。

在终端中,setup 是一个简短的向导。它会写入安全的本地策略,查找你机器上的 Agent 应用,询问你要让哪个应用使用 MELRA,并将 MELRA 写入该应用自己的配置文件,同时保留其中的其他内容(并先保存一个 .bak 文件):

Which MCP client should use MELRA?

  1)   Claude Code                      detected: 'claude' on PATH
  2)   Cursor                           detected: config file found
  3)   Gemini CLI                       detected: config folder found
  ...

Choose 1-26 [1]: 1
Write it into ~/project/.mcp.json? [Y/n]

  ✓  Workspace    ~/project
  ✓  Policy       ~/.melra/policy.json
  ✓  Claude Code  ~/project/.mcp.json

Next: Start claude in this workspace and approve the 'melra' server when it asks; 'claude mcp list' then shows it connected.

然后重启你的 Agent 应用(Claude Code 会要求你批准一次项目服务),并让它做点什么,例如 “使用 melra 向我展示系统信息”。就这么简单。

更喜欢使用标志、容器或从源代码构建?
方式命令
一个客户端,不询问npx @melra/cli@alpha setup --client cursor --write
打印配置而不写入npx @melra/cli@alpha setup --client codex
全局安装npm install -g @melra/cli@alpha && melra setup
容器(无需 Node)docker run --rm ghcr.io/xagi-lab/melra:alpha doctor
预构建发行版从 发行版 下载,对照 SHA256SUMS 验证,然后运行 node melra/dist/bin.js doctor
从源代码构建git clone https://github.com/XAGI-Lab/melra.git && cd melra && corepack enable && pnpm install --frozen-lockfile && pnpm build && pnpm melra setup
单文件,无需 Node (实验性)在检出目录中运行:pnpm build:sea,然后运行 ./dist-sea/melra setup;参见单个可执行文件
检查已安装的内容npm audit signatures 可验证注册表签名;npm 来源证明会将每个包关联到其 GitHub Actions 构建(参见 npm 包)

所有命令在终端中都会输出易读内容;通过管道传输或使用 --json 时则会输出纯 JSON,因此脚本可以继续正常运行。MELRA 首次启动时会以私有权限创建 <MELRA_HOME>/payload.key;请将它与 SQLite 文件一同备份,因为丢失该文件会导致已持久化的负载无法读取。有关所有安装方式、环境变量和加固版 Docker 调用方式,请参见安装说明。

注意

本项目仅通过 @melra/ npm 作用域(@melra/cli 是命令行工具)以及其发行版发布,Python SDK 的 wheel 也在其中。不带作用域的 npm 包 melra 或 PyPI 包 melra 并非本项目的包。请从该作用域、本仓库或发行版安装。

如果 MELRA 对你有帮助,请为仓库加星,让其他 Agent 构建者也能找到它。正在 Cursor 或其他客户端中试用?请在 issue #184 中分享客户端及其版本、你的操作系统和 MELRA 版本(npx @melra/cli@alpha version);部分测试结果也很有用。


什么是 MELRA?

AI Agent 不再只是对话。它们会代表你编辑文件、运行命令、浏览网站并调用 API。这带来了四个问题,而大多数 Agent 对这些问题的回答各不相同,甚至完全没有回答:

🛡️ 是否允许?

MELRA 收到的每项操作都会依据你的策略进行检查,并在实际执行时再次检查。高风险变更会等待你的明确批准。

✅ 是否真的成功了?

“没有报错”并不等于成功。只有在你声明的证据成立时,操作才算成功:文件存在、退出代码为 0、页面显示了应有的内容。

### 🔁 如果发生崩溃怎么办?

MELRA 分发的每项变更操作都会在执行前记录,且最多执行一次。发生崩溃后,MELRA 会根据证据或服务提供方的结果确定其状态;无法确定的操作会进入 recovery_required 状态,不会重放。

🧾 发生了什么?

MELRA 执行并产生结果的每项操作都会留下经过脱敏、以哈希链接的凭据,让你能够审计执行了什么、是谁发起的,以及为何获准执行。

对于通过 MELRA 路由的工具调用,无论使用哪种受支持的 Agent,MELRA 都会集中回答这些问题。对于这些调用,它位于你的 Agent 之下,就像操作系统位于应用之下:

MELRA 所处的位置:模型负责推理,Agent 负责运行循环,MELRA 管控经由它路由的工具调用,效果适配器则在你的系统上执行操作。其他 Agent 工具仍不受 MELRA 管控。

**大模型负责推理。运行框架负责管理循环。MELRA 管控经由它路由的调用的效果生命周期。**更换模型或 Agent 时,MELRA 的策略、审批、凭据、历史记录和操作凭据仍可保留。


适用于你的 Agent

MELRA 使用 Model Context Protocol,因此任何 MCP 客户端都可以使用它。对于以下客户端,melra setup --client <name> 会按客户端自身的格式和位置写入配置,而 melra doctor 会告知每个客户端是否已指向 MELRA:

Agent--client写入的配置
README 配图 Claude Codeclaude-code<project>/.mcp.json
README 配图 Claude Desktopclaude-desktopclaude_desktop_config.json
README 配图 OpenAI Codex CLIcodex~/.codex/config.toml
README 配图 Cursorcursor~/.cursor/mcp.json
🟦 VS Code(Copilot Agent 模式)vscode<project>/.vscode/mcp.json
README 配图 Gemini CLIgemini~/.gemini/settings.json
README 配图 Windsurfwindsurf~/.codeium/windsurf/mcp_config.json
README 配图 ZedzedZed settings.json(保留注释)
🧩 ClineclineCline 的 cline_mcp_settings.json
⬛ OpenCodeopencode~/.config/opencode/opencode.json
👻 Kirokiro~/.kiro/settings/mcp.json
🪿 Goosegoose~/.config/goose/config.yaml
▶️ Continuecontinue<project>/.continue/mcpServers/melra.yaml
⚡ Ampamp~/.config/amp/settings.json
🦞 OpenClawopenclaw~/.openclaw/openclaw.json(mcp.servers)
⚕️ Hermes Agent(Nous Research)hermes~/.hermes/config.yaml(mcp_servers)
README 配图 GitHub Copilot CLIcopilot~/.copilot/mcp-config.json
🐉 Qwen Codeqwen~/.qwen/settings.json
🅰️ Auggie(Augment)auggie~/.augment/settings.json
README 配图 Warpwarp~/.warp/.mcp.json
README 配图 Junie(JetBrains)junie~/.junie/mcp/mcp.json
🤖 Factory Droiddroid~/.factory/mcp.json
🌙 Kimi Codekimi~/.kimi-code/mcp.json
🪁 Kilo Codekilo~/.config/kilo/kilo.jsonc(保留注释)
🧪 LM Studiolmstudio~/.lmstudio/mcp.json
🔌 其他客户端generic输出标准的 mcpServers 块

正在构建自己的 Agent?请使用 TypeScript SDK 或 Python SDK。两者都可以启动 MELRA,也可以通过回环 HTTP 或私有 Unix 套接字连接到已运行的 MELRA。有关 Agent 框架,请参阅 框架示例:LangChain / LangGraph、 OpenAI Agents SDK、Vercel AI SDK,以及官方 MCP SDK。

说明

只有在指定客户端中通过发现、规划、审批、执行、取消和回执检索测试的 已发布软件包(而非源码检出版本),才会将对应的命名客户端标记为已验证。各客户端的状态见 COMPATIBILITY.md。


工作原理

效果是 Agent 通过 MELRA 路由的一项有界操作:file.write、 terminal.run、browser.click、http.request 等。MELRA 会分九个阶段处理每项路由 的效果,这些阶段分布在计划步骤和执行步骤中(对于单个任务,先执行 melra_plan, 再执行 melra_execute),因此规划时不会运行任何操作:

九个阶段:melra_plan 进行类型判定、分类、授权、发出审批挑战并记录任务;melra_execute 再次检查策略、进行去重、在预算范围内运行、验证证据并写入回执。

以下是在开发者模式下,一个变更从头到尾的完整流程。在 强制模式下,挑战不包含短语:你在对话之外通过 melra approve <task-id> 批准,Agent 的 melra_execute 不会发送任何审批内容。

sequenceDiagram
    autonumber
    participant A as Your agent
    participant M as MELRA
    participant You
    participant W as Your system
    A->>M: melra_plan: write notes.md, evidence "file contains 'done'"
    M->>M: type, classify, check policy, record
    M-->>A: awaiting_approval + challenge "APPROVE 3f9c…"
    A->>You: May I write notes.md?
    You-->>A: yes
    A->>M: melra_execute with the exact phrase
    M->>M: policy again, not already done?
    M->>W: write the file (under a budget)
    M->>W: read it back, independently
    M-->>A: verified_success + receipt

最终状态的含义以及 Agent 接下来应采取的操作:

状态含义下一步
🟢 verified_success操作已运行,且所有声明的检查均已通过完成
🟡 partial操作已运行,但证据未能成立,或 semantic 问题的回答为否查看证据后再决定;回答为否的变更会保留原状,因此要修复它需要制定新计划
🔴 policy_blocked操作运行前已遭拒绝阅读原因;相同请求仍会再次遭拒
🔵 awaiting_approval一项变更正在等待你的批准开发者模式:在制定该计划的 Agent 中批准。强制模式:使用 melra approve <task-id>
⏳ waiting_user操作已运行,且 MELRA 能执行的所有检查均已通过;一个 semantic 问题正等待外部答复由制定该计划的主体之外的主体通过 melra_task_judge 作答;在强制模式下,由操作员使用 melra judge <task-id> 作答。若未作答,任务到期时将以关闭状态结案
🟣 recovery_required一项变更可能已发生,也可能没有发生;或者变更已发生,但其 semantic 问题未得到答复,或回答为 cannot_tell先检查实际情况;切勿盲目重试
⚪ failed · cancelled · budget_exhausted操作未完成可以安全地重新制定计划
显示 Agent 实际发送的请求

Agent 会将“运行检查”解析为一项有界操作,以及能够证明操作成功的证据:

{
  "goal": "Run the repository checks",
  "operation": { "kind": "terminal", "action": "run", "command": "pnpm", "args": ["check"] },
  "requiredEvidence": [{ "type": "exit_code", "value": 0 }]
}

只有当进程以 0 退出时,任务才会达到 verified_success。进程运行后以 1 退出,表示操作已完成,但证据未通过,因此会报告为 partial。MELRA 绝不会收到诸如*“修复生产服务器”*这样的目标:这需要判断,而判断属于模型。一个能够解释句子的内核,其保证就会依赖模型。

Agent 连接时,MELRA 还会向它发送一份关于此循环的简短指南(即 MCP 服务的 instructions),让模型知道要声明证据、读取状态,并且绝不盲目重试结果未知的操作,而无需任何人对其进行提示词工程。


查看它的运行情况

你可以通过终端或浏览器查看 MELRA 处理的每个操作及其策略决策;对于每个运行并产生结果的操作,还可以查看其证据和回执。这里的任何内容都无法批准或启动工作,也不会显示批准语句。

在终端中

$ melra status
MELRA 0.3.0-alpha.19  developer mode
  Tasks       3 total: 1 awaiting_approval,
              1 policy_blocked, 1 verified_success
  Waiting     1 waiting for approval
  HTTP        127.0.0.1:7457 not running

$ melra tasks
ID        STATUS             OPERATION     UPDATED
64199678  awaiting_approval  file.write    0s ago
ca4aec7a  policy_blocked     terminal.run  1s ago
a1285e0f  verified_success   system.info   1s ago

$ melra watch          # live, until Ctrl-C
6:07:21 PM  task 882cf55c  verified_success
6:07:22 PM  task f813364c  awaiting_approval

melra doctor 会检查 Node、SQLite、浏览器和策略,并报告哪些 Agent 应用已指向 MELRA,以及用于修复问题的一条命令。

在浏览器中: melra serve --http --open

MELRA 控制台的“任务”视图:可筛选的任务列表,带有状态徽章,并显示一个任务的策略决策、证据和证书。

概览、可搜索的任务列表,以及带实时事件流的持久工作流。 它适配手机屏幕宽度,支持浅色和深色模式,并通过严格的 Content-Security-Policy 提供服务。


默认安全

默认值
🏠仅限本地。 仅支持 stdio、经令牌保护的环回 HTTP,或只有你的操作系统用户才能打开的 0600 权限 Unix 套接字。无需账户,也不使用托管服务。
📴遥测已关闭。
✍️更改需要满足两项条件: 声明证据 并且 获得精确、会过期且限定任务范围的批准:开发者模式下需提供短语,强制模式下需由操作员执行 melra approve。
📁路径限制在工作区内, 包括终端工作目录;拒绝通过符号链接逃逸。
🚫禁止使用 Shell、sudo/su 和任意桌面按键名称。 终端命令必须按名称列入允许列表。
🌐浏览器和 HTTP 适配器会自行阻止私有、链路本地和云元数据地址, 在 DNS 解析后、查询任何允许列表前执行此检查;强制模式下也会阻止环回地址,除非策略明确开放。
⚠️网页内容会标记为不可信, 且绝不能更改策略。
🔑存储任何内容前都会对机密信息脱敏, Agent 获得的是能力,而不是你的原始凭据。
⏱️每次调用都有预算和取消信号限制; 浏览器卡住时会明确报错,而不是一直挂起。
不安全本地模式与两种部署模式

使用 melra serve --unsafe-local(或设置 MELRA_UNHINGED=1)即可一次性关闭上表中的所有防护:无策略、无审批、无证据要求、无工作区限制,也不检查目标地址。Agent 将获得与你的操作系统用户完全相同的访问范围。该模式会在标准错误输出、melra doctor 和 melra_capabilities 中明确提示,执行记录仍会记载运行了什么。参见 不安全本地模式。

默认安装的一个实际不足是,MELRA 只管控 被要求执行 的操作。如果 Agent 同时拥有 MELRA 终端和原生终端,内核就形同虚设。通过 MELRA_MODE 指明你所处的情况:

模式含义
developer(默认)MELRA 管控被要求执行的操作;Agent 可能还有其他途径,而你接受这一点。这也是 MELRA 能在三十秒内上手的原因。
enforced你确认不存在其他途径:Agent 处于沙箱中,不持有任何特权机密,且只能通过这里访问这些系统。

MELRA 无法在自身进程内验证这一声明,也不会假装可以;隔离是操作系统的职责。强制模式会关闭 MELRA 控制的所有入口:完全拒绝 --unsafe-local,不在环回地址之外绑定任何接口(允许使用权限为 0600 的 Unix 套接字),不允许客户端自行注册,并在每份执行记录中标明 mode。关于操作系统层面的配置, examples/deploy 提供了经过加固的 Docker 运行配置和 systemd 单元,两者均已通过 CI 检查;melra doctor 会报告实际生效的限制。参见 部署模式、 威胁模型 和安全策略。


为什么选择 MELRA

大模型决定做什么。执行框架运行循环,让它实现目标。仍然需要有机制判断产生的效果是否获准,避免重放结果不确定的变更,证明发生了什么,并在中途崩溃后恢复。如今,这套机制在每个 Agent 执行框架中都要重新构建,而且会随执行框架一起消失。MELRA 将这套机制拆分出来,使其独立于 Agent。

🚫 典型的工具服务器✅ MELRA
  • 工具调用立即执行
  • 成功 = 未抛出异常
  • 策略(若有)只检查一次
  • 变更看起来与读取相同
  • 信任输出
  • 没有持久记录
  • 规则只存在于一个 Agent 中
  • 计划和执行是分开的调用
  • 成功 = 已声明的证据通过验证
  • 执行时再次检查策略
  • 变更需要证据和明确的批准
  • 明确将页面内容视为不可信
  • 脱敏回执 + SHA-256 执行证书
  • 规则不会随使用它们的 Agent 一起消失

与最常被混淆的另外两个层相比:

Agent 执行框架MCP 服务MELRA
模型循环与推理✓✗✗
工具✓✓通过适配器
独立于 Agent 的策略通常 ✗可能核心功能
持久化效果状态有时很少核心功能
重启后保持幂等性不一很少核心功能
无需重放的崩溃恢复不一很少核心功能
独立验证不常见可能核心功能
证据回执不常见可能核心功能
可跨 Agent 使用✗✓✓
凭据隔离不一不一核心功能
严格的能力边界不一通常 ✗部分已交付

许多 MCP 服务可以做到这些;这并不是说它们都做不到。不同之处在于,在 MELRA 中,这些是执行契约的一部分,而不是每个工具可选的功能。该边界部分已交付:MELRA_MODE=enforced 会关闭 MELRA 所控制的所有入口,但要通过操作人员构建的 OS 隔离,才能阻止执行框架绕过内核访问文件系统;可运行的强化部署方案仍在规划中(#52)。

功能归属判断。 如果请求来自普通的确定性软件,某项功能仍然有意义,那么它就属于 MELRA:授权、幂等性、凭据隔离、恢复、验证、效果历史记录。提示词优化、大模型记忆、模型选择、规划器和 Agent 个性则属于上层的执行框架。这就是为什么 MELRA 的执行路径中从不调用模型。


它能做什么

效果适配器

内核是契约;这些是随附的实现。每个实现都会经过相同的策略、审批、预算、验证、回执和证书流程;跳过该流程的适配器就不算适配器。

适配器实现内容
🗂️文件限定在根目录内进行读取、哈希计算、原子写入、移动、创建目录和删除,并防止通过符号链接逃逸
💻终端不经 shell 启动前台和受监管的后台进程,支持允许列表、特征、超时、交互式输入、取消和脱敏
🌐浏览器隔离的 Playwright 会话、语义 DOM 目标、有界的产物、网络和弹窗策略、选择加入的配置文件、基于条件的稳定判定;并为每次浏览器调用设定时限,确保页面卡住时能明确报错
🖥️计算机在 macOS、Windows 和受支持的 Linux/X11 环境中进行能力发现、无障碍树和 OCR 检查,以及受管控的屏幕截图、指针、拖动、键盘和滚动操作
📡HTTP将 GET/HEAD 作为读取操作,将所有其他方法作为须经审批的至多一次变更操作;并固定到目标检查解析出的地址,凭据由内核注入,而非交由调用方
🧠运行记忆内核服务,而非适配器:使用受范围限制的 SQLite 存储 MELRA 对自身效果的了解,并支持混合排序、时效性、过期、取代、溯源和脱敏

数据库、云和 SaaS 适配器已完成设计,并列入路线图,目前尚未随附。关于用户的语义记忆(偏好、对话历史)属于 harness,而非这里。

精简而有意为之的工具接口

适配器前有 12 个工具,还有一个持久化工作流控制器。CLI、两个 SDK、环回 HTTP 和 Unix 套接字都可访问相同的 12 项操作;此列表定义的是内核契约,而非 MCP 专属 API。

工具用途
melra_capabilities发现操作、平台支持、限制和策略状态
melra_plan验证、持久化并进行策略检查,确保操作有明确界限
melra_execute执行已批准的计划并验证声明的结果
melra_task_status读取持久化任务状态
melra_task_cancel协作式取消待处理或正在运行的工作
melra_receipt获取脱敏后的证据和执行证书
melra_task_judge回答等待中的任务所提出的 semantic 问题:yes、no 或 cannot_tell;且绝不以规划该任务的主体身份作答
melra_workflow_plan验证、预检、加密并持久化有明确界限的工作流
melra_workflow_advance执行一个已就绪的调度波次
melra_workflow_status读取持久化的工作流投影
melra_workflow_cancel协作式取消尚未终止的工作流任务
melra_workflow_control暂停、恢复或挂起运行,同时保留其进度

判定结果会按声明记录评判者,证书也会将其与回执中声明的主体 executedBy 一并记录。通过 MCP 时,即使评判者是 human:,也只是 harness 的声明;只有通过操作界面执行 melra judge 得出的 cli: 评判者才不属于此类声明。

更喜欢使用模型已熟悉的工具名称?设置 MELRA_HARNESS_TOOLS=1,即可在这些工具旁再显示 13 个工具(read_file、write_file、run_command、browser_click、approve 等)。它们并非另一条执行路径:每个工具都会创建普通任务并运行相同的流程。参见普通工具名称。

持久化、可安全重启的工作流

工作流由 operation、approval、condition、parallel、bounded_loop、 checkpoint、compensation、human_input 和 delegation 节点组成,每项操作 仍会通过任务流水线。以下每次 CLI 调用都会启动一个新进程,因此无需守护进程即可 测试重启持久化:

melra workflow plan --definition examples/workflows/restart-safe.json   # save the id
melra workflow advance <workflow-id>
melra workflow advance <workflow-id>          # exits 3 with the write's approval challenge
# developer mode echoes the phrase; enforced mode runs `melra approve <task-id>` instead
melra workflow advance <workflow-id> --approval '<approval-id>:<exact phrase>'
melra workflow advance <workflow-id>
planned            stateVersion=2
running            stateVersion=4   inspect=verified_complete
awaiting_approval  stateVersion=6   phrase="APPROVE <digest prefix>"   (developer mode)
running            stateVersion=8   write=verified_complete
verified_complete  stateVersion=11  checkpoint=verified_complete

在任意一行之后停止进程,下一条命令都会从同一个 MELRA_HOME 恢复。中断的读取可能会重试;中断的变更绝不会被悄然 重复执行。系统会通过重新观察来处理这些变更,否则会将其置于 recovery_required 状态。

workflow advance 和 resume 在运行正常时退出代码为 0,等待审批时为 3,等待 --input 时为 4,运行失败、以 partially_complete 或 cancelled 结束,或需要恢复时为 2。workflow plan、pause 和 suspend 在规划或暂停 运行时退出代码为 0;拒绝暂停或挂起已完成、已取消或已失败的运行。workflow inspect 在任何状态下都退出代码为 0。workflow cancel 在将运行置于 cancelled 状态时 退出代码为 0,未能置于该状态时退出代码为 1,例如运行已完成。错误退出代码为 1。

此版本包含的全部内容
在 0.3.0-alpha.11 和 0.3.0-alpha.12 中发布证据
跨九种节点类型、可安全重启的有界工作流在 E2E 测试中,停止、替换并恢复真实 MCP 进程
加密保存精确的任务、工作流和结果载荷使用 AES-256-GCM 存储,并对 SQLite/WAL 和公开投影进行明文泄漏检查
无需静默重放变更即可恢复8/8 个确定性恢复场景,零重复,零误报成功
回环 HTTP、权限为 0600 的 Unix 套接字、事件流和只读控制台与 stdio 使用相同运行时;每条路由都需要令牌;JSON API 对任何非 GET 请求均返回 405
客户端验证自身身份,并在每份回执中标明名称通过审批到令牌的 OAuth 2.1 注册流程
两种部署模式在 MELRA_MODE=enforced 下拒绝 --unsafe-local 和非回环绑定
将 HTTP 和 API 调用作为一等操作未收到回复的变更会被报告为未知,而非失败
Agent 获得能力,而非凭据内核持有密钥,并按主机和能力限定其作用范围;授权包含大小限制和有效期
证据说明其可信依据每项证据都标注 execution / state / independent / semantic 强度
独立通道验证http_resource_matches 通过 POST 执行,并通过独立的 GET 验证
自定义证据类型已注册的验证器会回答 { "type": "custom" } 证据;规划会拒绝未注册的证据类型,且自定义证据的强度始终最低
为 26 款 Agent 应用提供设置melra setup 会按各应用自身的格式写入配置;Claude Code、OpenCode 和 Hermes Agent 已在真实 Mac 上连接打包后的发行版
可检查的操作系统隔离melra doctor 会报告能力、no_new_privs、seccomp 和只读根目录;CI 会在强化版 Docker 和 systemd 配置下运行它
自编治理基准测试GovBench:通过真实运行时测试 362 个案例,安全性 312/312,实用性 50/50

请参阅完整的 变更日志。


证据与基准测试

数据来自已提交的脚本和 JSON 文件,并注明了数据集哈希和声明范围。这些是组件测量结果,并不表示 MELRA 是“最佳”,也不表示不同基准之间可以比较。

内容结果含义
✅安全与执行评测55/55确定性策略、能力授权、凭据范围、路径遍历、终端、记忆、计算机、HTTP、取消和验证场景
🔁持久化核心评测8/8100% 按预期恢复,0 次重复执行,0 次错误报告成功,100% 事件一致性
🛡️GovBench(自编)312/312 安全性,50/50 实用性通过真实运行时执行的 362 个无模型案例:遏制、审批完整性、验证真实性、恰好一次、脱敏,以及对合法工作的误报。首次运行发现了两个实际错误(293/307),均已修复;治理每项操作增加约 0.5–1.4 ms 延迟
🧠LoCoMo 检索0.7597 coverage@201,982 个包含证据的问题;不调用模型、嵌入或网络;于 2026-10-14 重新运行,所有指标均一致
🧠合成回忆100/100 Recall@1基于 1,000 条记录的植入事实回归测试
🌐静态页面稳定时间183.7 ms p50,对比 301.3 ms等待时间减少 39%,正确读取仍为 10/10
🌐慢速渲染稳定时间10/10,对比 0/10 正确基于条件的等待可以读取最终 DOM;固定等待 300 ms 则会过早读取
💻终端30/30 已验证无 Shell 进程启动;在受测机器上的 p50 为 48.1 ms
🖥️计算机控制平面30/30 探测适配器发现的 p50 为 0.032 ms;这不是桌面任务成功率

原始文件:核心微基准测试、 LoCoMo 和 GovBench。

仓库还包含一个预注册的浏览器 Agent 测试框架(MiniWoB-125 和 WebArena-Verified Hard-30 注册子集),其任务 ID、上游修订版本和数据集哈希均已冻结。目前尚未公布其得分:只有通过发布门槛并完成固定分母的完整运行后,才会公布。MELRA 尚未提交 OSWorld、WebArena 或 LongMemEval 的官方评测。

复现得分
# the full validation gate
pnpm check && pnpm evals && pnpm e2e && pnpm pack:check && pnpm security:audit
pnpm --filter @melra/evals evaluate:durable-core -- --publishable

# memory, browser, terminal and computer microbenchmarks
pnpm benchmark:core

# governance benchmark: 362 model-free cases, loopback fixtures only
pnpm benchmark:govbench

# LoCoMo (dataset not vendored: CC BY-NC 4.0)
git clone https://github.com/snap-research/locomo.git /tmp/locomo
pnpm benchmark:locomo -- --dataset /tmp/locomo/data/locomo10.json \
  --output docs/research/results/locomo-retrieval.json

# browser-agent harness contract checks (no model, no network)
pnpm benchmark:browser:check
pnpm benchmark:browser:verify-upstream

# hardened container and a real MCP smoke test
docker build -t melra:local . && docker run --rm melra:local doctor && pnpm docker:smoke

MiniWoB 套件还需要固定版本的 MiniWoB++ 资源和 Agent 配置; 参见研究索引和 方法。运行输出(HAR、截图、视频、 转录记录)已被 git 忽略,绝不可提交。


面向开发者

SDK

包
README 配图 TypeScript@melra/sdk
README 配图 Pythonmelra(带类型,3.11–3.14)
📜 JSON 合约@melra/protocol, @melra/receipt-schema

两个 SDK 都可以启动本地服务,也可以通过 HTTP 或 Unix 套接字连接到正在运行的服务。 令牌始终需要显式传入;除非选择启用,否则不允许通过纯 HTTP 连接远程主机。

CLI 一览

目标命令
引导式设置melra setup
检查此计算机melra doctor
提供服务(stdio / HTTP / 套接字)melra serve · --http --open · --socket <path>
查看活动melra tasks · watch · status
运行一项任务melra run --request task.json
批准 Agent 规划的任务melra approve <task-id> · 在浏览器中使用:melra console
回答任务的语义问题melra judge <task-id> --judgement <id> --verdict yes|no|cannot_tell
检查回执melra inspect <task-id>
测试策略melra policy test --request task.json
检查一致性melra conformance
仓库结构
apps/cli/                   CLI and stdio entrypoint

kernel services
packages/protocol/          strict task, workflow, event and operation schemas
packages/runtime-core/      task/workflow lifecycle, events, recovery
packages/policy-core/       local policy and scoped approvals
packages/storage-sqlite/    transactional tasks, workflows, events, evidence
packages/verifier-core/     deterministic evidence predicates
packages/receipt-schema/    receipts and execution certificates
packages/memory/            operational memory: scoped retrieval and lifecycle
packages/server/            runtime composition, MCP, loopback HTTP and Unix socket

reference effect adapters
packages/file-runtime/      confined filesystem operations
packages/terminal-runtime/  shell-free process supervision
packages/browser-runtime/   isolated browser automation and stable-DOM wait
packages/computer-runtime/  governed local computer-use adapters
packages/http-runtime/      governed HTTP and API calls

clients and evidence
packages/sdk-ts/            TypeScript client SDK
sdk-py/                     Python client SDK
benchmarks/browser-agent/   pre-registered browser-agent evaluation harness
evals/                      safety and durable crash-recovery evaluations
scripts/                    benchmark and release checks
docs/research/              methods, findings and raw results
examples/                   runnable task examples

MELRA 由能力驱动,不受语言限制:当测量结果表明确有益处,且通过相同的一致性测试套件时,可以添加 Rust、Go、Swift、C# 或其他语言。

可运行的示例涵盖只读系统任务、经过验证的文件写入、终端检查、浏览器检查、限定范围的记忆、计算机能力发现、受治理的 API 调用、独立验证以及可安全重启的工作流。


文档

📦 安装与客户端设置🧭 能力与限制🏛️ 架构
🔬 研究与基准测试🔗 兼容性✅ 验证证据
🛡️ 威胁模型🎖️ 一致性等级🗺️ 路线图
📝 变更日志🤝 贡献指南🔐 安全策略

贡献

欢迎提交代码、适配器、客户端集成、基准测试工具、验证谓词、文档和威胁分析。

从这里开始内容
适合新手的问题范围明确,并在问题中列出了需要修改的文件
需要帮助工作量较大,但定义明确
开放的设计提案在实现之前,对开放问题发表评论;参见语义验证 #54
贡献指南了解流水线如何协同工作,以及每项更改会涉及哪些文件
  1. 阅读 CONTRIBUTING.md 和行为准则。
  2. 根据 DCO 签署提交(git commit -s)。
  3. 发起拉取请求前运行 pnpm check;它还会检查链接、环境变量表和 CHANGELOG 格式。
  4. 通过私密漏洞报告报告漏洞, 切勿在公开问题中报告。

许可证

软件和文档根据 Apache License 2.0 授权。官方徽标和主视觉插图根据 CC BY-ND 4.0 授权。第三方基准测试数据集保留其 各自的许可证,且不包含在此代码库中。


由 XAGI Labs 开放协作开发。

MELRA 品牌素材 © XAGI Labs Private Limited,采用 CC BY-ND 4.0 授权。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。