关于 MELRA
MELRA 是面向 Agent 构建者的本地执行运行时,治理经其路由的工具调用。它按策略授权、核验声明的证据,并为结果保留脱敏收据;不确定的变更进入恢复流程而不会重放。
主要功能
- 01按策略检查并授权操作
- 02高风险变更需审批
- 03依据声明的证据核验结果
- 04变更至多派发一次
- 05保留哈希链式脱敏收据
适用场景
- 01限制 Agent 可执行的文件和命令操作
- 02审批高风险变更后再执行
- 03通过证据确认命令或文件操作结果
- 04崩溃后核对未决变更并审计记录
MCP 相关
MELRA 通过 MCP 提供执行工具,供 MCP 客户端调用。可使用 CLI 配置多种 MCP 客户端,也可由 SDK 启动或连接运行时。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
11收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
MELRA
Modular Execution Layer for Reliable Autonomy
AI Agent 决定要做什么。MELRA 管控工具调用的授权、验证与恢复方式。
一款开源的本地执行运行时,用于处理经由 MELRA 路由的 Agent 工具调用。 它会根据策略检查每次调用,在需要时请求批准,验证声明的 证据,并记录从执行到结果的脱敏回执。对于每项任务,MELRA 最多只会分发一次变更操作;结果不确定时,会暂存以供协调, 而不是重新执行。外部效果能否恰好执行一次,仍取决于服务提供方。通过 其他工具发出的调用不受 MELRA 控制。
兼容
26 秒演示 · 快速开始 · 工作原理 · 查看运行内容 · 文档 · 参与贡献 · 讨论 · Product Hunt 发布
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 会根据证据或服务提供方的结果确定其状态;无法确定的操作会进入 |
🧾 发生了什么?MELRA 执行并产生结果的每项操作都会留下经过脱敏、以哈希链接的凭据,让你能够审计执行了什么、是谁发起的,以及为何获准执行。 |
对于通过 MELRA 路由的工具调用,无论使用哪种受支持的 Agent,MELRA 都会集中回答这些问题。对于这些调用,它位于你的 Agent 之下,就像操作系统位于应用之下:
**大模型负责推理。运行框架负责管理循环。MELRA 管控经由它路由的调用的效果生命周期。**更换模型或 Agent 时,MELRA 的策略、审批、凭据、历史记录和操作凭据仍可保留。
适用于你的 Agent
MELRA 使用 Model Context Protocol,因此任何 MCP
客户端都可以使用它。对于以下客户端,melra setup --client <name> 会按客户端自身的格式和位置写入配置,而 melra doctor 会告知每个客户端是否已指向 MELRA:
| Agent | --client | 写入的配置 |
|---|---|---|
claude-code | <project>/.mcp.json | |
claude-desktop | claude_desktop_config.json | |
codex | ~/.codex/config.toml | |
cursor | ~/.cursor/mcp.json | |
| 🟦 VS Code(Copilot Agent 模式) | vscode | <project>/.vscode/mcp.json |
gemini | ~/.gemini/settings.json | |
windsurf | ~/.codeium/windsurf/mcp_config.json | |
zed | Zed settings.json(保留注释) | |
| 🧩 Cline | cline | Cline 的 cline_mcp_settings.json |
| ⬛ OpenCode | opencode | ~/.config/opencode/opencode.json |
| 👻 Kiro | kiro | ~/.kiro/settings/mcp.json |
| 🪿 Goose | goose | ~/.config/goose/config.yaml |
| ▶️ Continue | continue | <project>/.continue/mcpServers/melra.yaml |
| ⚡ Amp | amp | ~/.config/amp/settings.json |
| 🦞 OpenClaw | openclaw | ~/.openclaw/openclaw.json(mcp.servers) |
| ⚕️ Hermes Agent(Nous Research) | hermes | ~/.hermes/config.yaml(mcp_servers) |
copilot | ~/.copilot/mcp-config.json | |
| 🐉 Qwen Code | qwen | ~/.qwen/settings.json |
| 🅰️ Auggie(Augment) | auggie | ~/.augment/settings.json |
warp | ~/.warp/.mcp.json | |
junie | ~/.junie/mcp/mcp.json | |
| 🤖 Factory Droid | droid | ~/.factory/mcp.json |
| 🌙 Kimi Code | kimi | ~/.kimi-code/mcp.json |
| 🪁 Kilo Code | kilo | ~/.config/kilo/kilo.jsonc(保留注释) |
| 🧪 LM Studio | lmstudio | ~/.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 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 处理的每个操作及其策略决策;对于每个运行并产生结果的操作,还可以查看其证据和回执。这里的任何内容都无法批准或启动工作,也不会显示批准语句。
|
在终端中
|
在浏览器中:
概览、可搜索的任务列表,以及带实时事件流的持久工作流。 它适配手机屏幕宽度,支持浅色和深色模式,并通过严格的 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 执行框架 | 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/8 | 100% 按预期恢复,0 次重复执行,0 次错误报告成功,100% 事件一致性 |
| 🛡️ | GovBench(自编) | 312/312 安全性,50/50 实用性 | 通过真实运行时执行的 362 个无模型案例:遏制、审批完整性、验证真实性、恰好一次、脱敏,以及对合法工作的误报。首次运行发现了两个实际错误(293/307),均已修复;治理每项操作增加约 0.5–1.4 ms 延迟 |
| 🧠 | LoCoMo 检索 | 0.7597 coverage@20 | 1,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
两个 SDK 都可以启动本地服务,也可以通过 HTTP 或 Unix 套接字连接到正在运行的服务。 令牌始终需要显式传入;除非选择启用,否则不允许通过纯 HTTP 连接远程主机。 |
CLI 一览
|
仓库结构
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 |
| 贡献指南 | 了解流水线如何协同工作,以及每项更改会涉及哪些文件 |
- 阅读 CONTRIBUTING.md 和行为准则。
- 根据 DCO 签署提交(
git commit -s)。 - 发起拉取请求前运行
pnpm check;它还会检查链接、环境变量表和 CHANGELOG 格式。 - 通过私密漏洞报告报告漏洞, 切勿在公开问题中报告。
许可证
软件和文档根据 Apache License 2.0 授权。官方徽标和主视觉插图根据 CC BY-ND 4.0 授权。第三方基准测试数据集保留其 各自的许可证,且不包含在此代码库中。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。