@deeeed/metamask-harness

中文文档
0.96.11发布于 2026/11/10ES Module近 30 天下载 1.3万

一个CLI用于操作MetaMask扩展、移动和Core并产生可审查的食谱证据。 在检查出内运行;自动检测出产品、槽、端口和运行时路径.

中文使用文档
文档目录16 节
  1. 项目任务助手
  2. 每日发布
  3. 从零开始
  4. 安装
  5. 运行
  6. 扩展浏览器
  7. 远程特性旗
  8. 工作任务
  9. 发现和证明
  10. 团队图书馆
  11. 公布更改
  12. 审查更改
  13. 回收
  14. 参考文献
  15. 工作流程进入点和完成点
  16. 便携式运行时间证明

毫米- 强度

用于操作MetaMask扩展、移动和核心并生产的一个CLI 可审查的食谱证据。 在一次检查中运行; 产品,插槽,端口, 和运行时路径自动检测.

  • 行动: 一个打字操作.
  • 食谱 : 可重复使用、参数化的行动图和所谓的食谱.

通用图形引擎和证据计划 农场 软件包. mm-harness 拥有MetaMask运行时控制和域能.

项目任务助手

注册的项目可以使用 farmslot task init, (中文(简体) ), mark, (中文(简体) ), verify 财务报告和审定财务报表 closeout, (中文(简体) ), farmslot review checklist 财务报告和审定财务报表 domain,以及 farmslot recipe quality。 。 。 . MetaMask 供应商提供 diff 检查门、 学习目的地、 审查 规则、均等运行时间和选入建议。 选择任务中注册的项目 初始化;其工具和政策随任务而保留。 见 农场地命令参考。 。 。 .

每日发布

同样的食谱可以验证昨天的域名更改 或发布 后面那个 main编辑 mms-recipe-qa 技能冻结变化范围 标准; 团队库提供烟雾和可重复使用的旅行; 此 CLI 运行 并保留断言、追踪和捕捉.

使用安装的技能 references/domain-qa.md 用于窗口/范围输入和 报告政策。 范围选择和时间安排在控制之外。 发现 食谱通过 run --list 财务报告和审定财务报表 run <recipe> --describe,然后跟随 锁定版本 help --json 组成和漂移诊断。 调整a 试验释放的秘方,不改变释放或削弱释放 标准。 需要发展手段的内部行动不能 证明在未修改的释放文物上的行为.

从零开始

没有退房了吗? mm-harness setup-base 复制MetaMask产品重置为一 标准布局和运行每个 repo 的 依赖性安装 — 不安装此功能 启动所需的软件包 :

npx -p @deeeed/metamask-harness mm-harness setup-base

它产生,在 ~/dev/metamask 默认:

metamask-extension-1..N   metamask-mobile-1..N   core-1..N

在终端中不带旗帜运行, 它会询问您想要哪些工程以及有多少 副本。 传出全部跳过提示的旗帜——这就是脚本, CI,母工具应引用:

mm-harness setup-base --only core --counts core=1
mm-harness setup-base --dir ~/work/metamask --counts extension=3,mobile=1,core=2
mm-harness setup-base --only mobile --dry-run        # plan only, changes nothing

基准目录按优先级解决 : --dir,则 $MM_HARNESS_BASE_DIR, (中文(简体) ), 然后保存首选项,然后 ~/dev/metamask。成功运行会保存基础 使用目录和计数,所以以后通过它们——检查 --show-config,清除 --reset-config。重运行是安全的:已存在 克隆被取出,从不重置,也从不删除.

范围围栏. 它克隆并安装依赖性. 没有别的——没有平台 工具链,没有模拟器,没有 .env 文件,没有构建。 工作流程上载是一个 快速; 环境准备 mm-harness doctor,这正是它的位置 下个点数.

setup-base 是单曲上的普通命令 mm-harness 进入点。 其工作 留在一可读贝壳叶中 npx -p 提供同样的命令 在全局安装之前.

安装

npm install -g @deeeed/metamask-harness@latest
mm-harness --version
mm-harness doctor

doctor 只读. doctor --fix 修理自带运行时状态,但 不启动应用程序、创建证书或选择钱包固定.

mm-harness doctor --fix
mm-harness fixtures init --from /secure/path/wallet-fixture.json
# Disposable public testing only; never fund this wallet. It writes account
# hardhat0 (public key), which cannot trade on Hyperliquid testnet:
mm-harness fixtures init --dev
# For Perps orders, replace it with a funded fixture:
mm-harness fixtures init --from <funded-fixture> --force

使用 mm-harness update 用于更新已公布的安装。 新任务使用 farmslot task init 在写入任务标记之前保留其CLI、提供者和库输入。 运行 farmslot task verify <task-dir> 在恢复前检查这些投入。 全球升级保留了现有任务记录的工具和标记.

运行

# Extension
mm-harness launch
mm-harness launch --sidepanel

# Mobile
mm-harness launch ios
mm-harness launch android

# Any checkout
mm-harness status
mm-harness stop
mm-harness logs
mm-harness debug
mm-harness reload                 # Mobile Metro reload / Extension CDP refresh
mm-harness fixtures set

# Delete the current wallet, then reapply the canonical fixture from clean state.
mm-harness fixtures reset

延长 launch 保持它的增量监视器运行。 刷新活动 成功重建后的页面; 使用 launch --build 只为明确 类似生产型的LavaMoat重建.

macOS 在登录会话锁定时停止绘制可见窗口 。 在锁定的Mac上:

  • 标题扩展或网络应用( 结束) run编号 :call 拒绝使用 SESSION_LOCKED 在其运行时间检查中,在启动或驱动浏览器之前,而不是在截图和UI动作上拖延;
  • a headful web-dapp 启动,包括重用运行的浏览器,拒绝同样的方式.

扩展版没有无头模式,因此解锁Mac. 对于网页应用程序,解锁或重新启动其无头浏览器(mm-harness launch --adapter terminal --headless,或设置 TERMINAL_HEADLESS=1 发射前: TERMINAL_HEADLESS=1 当一个有头槽的浏览器仍在运行时,单靠自己是无用的. 咖啡因使Mac保持清醒,但没有解锁.

扩展浏览器

RECIPE_HARNESS_BROWSER 选择未打开的扩展主机浏览器 :

数值浏览器
auto (默认)退机的 Playwright Chrome 用于测试 当它开始和油漆在这个机器上, 否则谷歌 Chrome
cft测试颜色, 从未被探测过 : 汽车存在前的行为
chrome谷歌颜色
/abs/path那个可执行文件

RECIPE_HARNESS_CHROME_BIN=/path 仍然覆盖一切并用作 给出。 谷歌克罗姆忽略 --load-extension,所以绳子加载的建筑 超过Extensions.loadUnpacked,与 --enable-unsafe-extension-debugging(中文(简体) ) 输入插槽 并检查ID与显示的密钥。 其它 该配置文件中的用户扩展已禁用, 因为 --disable-extensions-except 用于测试的 Chrome; 扩展不能是企业政策指针 被禁用,所以发射会发出警告,并用运行证据记录它们.

单位 auto,带有新剖面探测器的发射 发射机的启动方式(头,通过macOS上的发射服务). 这个 判决在 ~/.cache/farmslot/browser-probe.json: 保存崩溃 直到 OS 构建或浏览器更改; 仅超时的探测器被重试 30分钟后 同时发射等待每个浏览器构建一个探测器 联合国 <cache>.<key>.locks/ 缓存旁边编号的门票目录; a 超过3分钟的持有者算不上已经走了 所以一个比它活得更久的探测器 与下一个重叠,在从一个使用一个 .lock 文件重复探测器是可能的。 车票从未被取出 绑:每个探测器增加两个小文件,一个坠毁的持有者未释放 罚单暂住(一旦其过程消失,票就不再被挡住). 为了收回 空格,在没有启动或医生运行时删除锁目录 : rm -r ~/.cache/farmslot/browser-probe.json.*.locks。 。 。 . 在冷藏地上 探测器可长达80秒 显示一个小型(约480x360)浏览器窗口; doctor --adapter extension 运行同样的探测器.

在Google Chrome由政策管理的Mac上, auto 使用克罗梅 未读取这些政策的测试, 因此无法打开强制扩展 窗口。 只读 MDM 管理的首选项 (单位:千美元)/Library/Managed Preferences/com.google.Chrome.plist 及其每个用户 抄录于 /Library/Managed Preferences/<user>/(没有) defaults 用户集 本身; 已安装的外延(ExtensionInstallForcelist, (中文(简体) ), ExtensionSettings)或被强制签入(BrowserSignin: 2, (中文(简体) ), ForceBrowserSignin计数为管理; 将策略存储为数据或日期 价值被视为不存在。 如果测试的克罗姆没有开始 在那里画画,发射结束 BROWSER_UNLAUNCHABLE 而不是说 回到管理中的克罗姆;出路是 RECIPE_HARNESS_BROWSER=chrome (接受强制延长可能开放) ,或者装入量较少的机器。 医生列出强制 扩展名 ids,其中包含可以读取的名称(最大努力,只读: 槽记录,或操作员自己的Chrome配置文件夹). 插槽配置文件 在管理的 Chrome 上创建它,并带有重设配置的警告.

然后保留浏览器类型,其配置是用它创建的,直到 重新设置配置文件( e)mm-harness fixtures set 或者说 fixtures reset:

  • 在 Chrome 测试上创建: 当前测试的测试选择 (Playwright的升级被跟踪并重新被复制);它移动到Google Chrome 只有那座建筑被证明会崩溃,就永远不回来;
  • 在 Google Chrome 或一个明确的路径上创建: 二进制; 如果删除, 发射失败,并说如何恢复而不是切换浏览器;
  • 创建于 RECIPE_HARNESS_CHROME_BIN,输入路径 RECIPE_HARNESS_BROWSER, (中文(简体) ), 或发射装置 --chrome-bin 直接 : 每晚都会有二进制 auto 发射,即使它是一个克罗姆 测试建设.

保留在Chrome上用于测试的插槽,该插槽是“不交出帧”(a) 即时判决, 保留在 Chrome 测试上) 移动到 Google Chrome 不重设配置文件 : 使用 RECIPE_HARNESS_BROWSER=chrome。 。 。 . 这个简介是Google Chrome的简介,后来是 auto 继续发射 谷歌克罗姆. 换个方式打开一个旧浏览器的配置,所以 重设配置文件 .

在此浏览器记录存在之前创建的配置文件没有记录, 因此 第一个 auto 发射探测器像一个新的剖面图,可能移动到Google Chrome.

mm-harness doctor --adapter extension 显示当前选择; 每次发射 写给 temp/recipe/runtime/browser-resolution.json 使用浏览器 程序身份,并运行证据(product-provenance.json名称 浏览所驱动的运行在检查该精确进程后仍然服务于 CDP 移植已执行的运行 。 CDP 端口的拥有者是命名为 简介 SingletonLock,并且只有锁名这个主机 程序在锁被写入之前开始(一个再利用的pid没有),它 在配置文件中保存打开的文件 。 那个证据是有用的 lsof什么样的macOS船; 没有它,发射停止 并有一个解释。 启动时间被精确比较为 ps -o lstart 在协调世界时打印它们,所以用较早的带来记录 建设( 当地时间) 无约束boundTo: none直到插槽重新启动.

在macOS上,插槽浏览器从背景开始,没有启动窗口, 它的第一个窗口打开 CDP 作为背景窗口。 发射后 解析后有一个焦点检查: 只有槽浏览器自己的进程 最前面的是以前专注的应用程序 一次是前端 (单位:千美元)FARMSLOT_FOCUS_HOLD=0 关掉这个). 在槽窗口右侧单击 因此,在发射后可以取消一次. FARMSLOT_FOCUS_HOLD 财务报告和审定财务报表 FARMSLOT_FOCUS_BROWSER 属于 @farmslot/adapter-web; 结算延迟 在检查之前, MM_HARNESS_FOCUS_SETTLE_MS属于这个绳子 发射器.

# Roll back to Chrome for Testing with a fresh slot profile (a profile Google
# Chrome has opened is not reopened in the older Chrome for Testing). Keep
# RECIPE_HARNESS_BROWSER=cft set for later launches too: on a plain auto launch
# the profile follows Chrome for Testing only until a probe proves it dies.
RECIPE_HARNESS_BROWSER=cft mm-harness fixtures set
rm ~/.cache/farmslot/browser-probe.json        # forget probe verdicts

远程特性旗

--remote-flag KEY=VALUE[,KEY=VALUE] 为发射打上远程特性旗, 这就是A/B变体后面的屏门如何可以到达:

mm-harness launch --remote-flag perpsTAT3938AbtestScreenVsBottomSheet=treatment
mm-harness launch ios --remote-flag perpsEnabled=true,perpsConfig='{"tier":2}'

光字是已命名的变种(treatment 变成 { "name": "treatment" }, (中文(简体) ), true编号 :false 是一个布尔,和一个值打开 { 或者说 [ 解析为 贾森。 语法被解析一次 每片叶子都得到解析图 所以 布尔保持布尔而不是成为字符串 "true"。 。 。 .

每一次发布都会让应用程序的超能力 精确地设定钱包的固定 remoteFeatureFlags 对象(基线每个运行的股份)与 --remote-flag 两种客户端的地图(一次发射的覆盖). 一个平地 launch 因此放弃了先前的运行 --remote-flag 变种和保持固定的. 移动清空并重新应用运行中的设定 RemoteFeatureFlagController 如果发射未读取,则发射失败。 这个 扩展将其写入每个运行的不快的快照显示并重新读取 拥有的磁带记录_harness.remoteFeatureFlags,每页 ),所以发射报告它所证明的指针;重用运行的浏览器 只允许在记录已等于请求时重装 将记录带过重建的快照 --watch (哪个) 永远不要重新创建快照)拒绝 --remote-flag食谱本身的恢复 重启时携带活针,而不是在中跑时放下. 经核实 文物从不重写 所以发射必须把它钉上 (单位:千美元)--remote-flag 或悬挂旗帜的固定装置)拒绝试验 手臂不对.

随动作一起读取或更改运行中的应用程序上的标记 . fixtures set 如下 与发射相同的规则: 固定块是基线和 fixtures set --remote-flag KEY=VALUE 层上有一个单运行的覆盖,即 怎么样 prepare --remote-flag 把它的指针通过固定步骤.

mm-harness call metamask.feature_flags.read
mm-harness call metamask.feature_flags.set 'flags={"perpsEnabled":true}'   # mobile
mm-harness call metamask.feature_flags.clear                                      # mobile

doctor 财务报告和审定财务报表 status 打印 a feature flags: 指定每个活动的行 覆盖,所以一个插槽从不运行一个无名变体下的证明. 线条 区分 (no runtime) 和无法读取的真象 0 override(s)。 。 。 .

日志来源分开 :

mm-harness logs --source extension  # Extension page
mm-harness logs --source dapp       # active dapp
mm-harness logs --source webpack    # compiler
mm-harness logs --source watcher    # watcher lifecycle
mm-harness logs --source rebuild    # incremental rebuilds
mm-harness logs --source app        # Mobile app
mm-harness logs --source metro      # Mobile bundler

Live Mobile 和扩展配方自动索引一个有界限、有编辑功能的 network/run-summary.json 带有请求时间和食谱节点界限。 使用 明确 app.network_capture 财务报告和审定财务报表 app.network_assert 过滤的节点 窗口和机器检查请求预期值。 见 辅助扫描网络捕获。 。 。 .

移动和扩展配方可以将清晰的UI-smoothess 窗口与 app.performance_capture 并核实他们的证据 app.performance_assert捕捉从来不是自动的 见 UI 平滑捕捉。 。 。 .

工作任务

# Pick a checklist from the shared catalog.
mm-harness execution-template list --package-templates <catalog> --json

# Write the task directory the agent works from.
farmslot task init temp/tasks/fix/TAT-1 --project <project> \
  --flow fix-bug --template fix-bug/mobile \
  --package-templates <catalog> --title "Wrong total on the receipt" --ticket TAT-1

# Bring the checkout to a proven-ready state before the first step.
mm-harness prepare --artifacts-dir temp/tasks/fix/TAT-1/artifacts --json

# Use the generated marker, which verifies the task's retained tooling.
temp/tasks/fix/TAT-1/mark start
temp/tasks/fix/TAT-1/mark 1
temp/tasks/fix/TAT-1/mark complete --mark-last

farmslot task init 写入 TASK.md, (中文(简体) ), CHECKLIST.md,则 mark 嘘,和 inputs/。 。 。 . 它保留了选定的CLI、提供者和图书馆。 使用 farmslot task verify <task-dir> --json 检查他们的身份。 现有任务保留原有的标记和收发. CHECKLIST.md 是唯一一个将框算作阶梯的文件。 没有 checklist-target.json; 缺席手段 CHECKLIST.md + 键 SIGNAL.json。 。 。 .

prepare 运行 doctor --fix, (中文(简体) ), status, (中文(简体) ), launch --verify, (中文(简体) ), fixtures set,以及 verify 在第一次失败时停止 记录一个准备状态记录 时间 <artifacts-dir>/sandbox.json核心跳过发射和固定装置;移动取用 ios编号 :android 从检查对象,然后从设备 status 报告,并问何时是含糊不清的。 退出 0 表示 准备 见 任务目录。 。 。 .

发现和证明

mm-harness actions positions
mm-harness actions --action metamask.wallet.ensure_unlocked
mm-harness call metamask.wallet.ensure_unlocked

mm-harness run --list
mm-harness run perps.smoke --describe
mm-harness run wallet.smoke --describe
mm-harness run wallet.import method=auto
# When a visible Terms of Use gate follows import and acceptance is authorized:
mm-harness run wallet.accept-terms accept=true

# Use visible client UI to delete and import the wallet again.
mm-harness run wallet.reset-import
mm-harness run path/to/recipe.json market=ETH --plan
mm-harness run path/to/recipe.json

run 选择一个检出- 本地文物目录, 除非 --artifacts-dir <dir> 超过它。 人类产出印出诊断和 绝对路径的报告,追踪,执行的食谱, 和文物清单. 使用 mm-harness last --json 在不重复上次行动的情况下恢复.

关于自动化, --json 发出一个稳定的文档. run --json-stream 发射 线性缓冲 JSONL 进度和终端事件。 它的状态符合食谱 pass, (中文(简体) ), fail,或 unknown 判决; unknown 仍然离开非零.

团队图书馆

export RECIPE_LIBRARY_PATH="team=$HOME/shared-library/team-recipes"
mm-harness run --list

共享的图书馆有持久的行动和可调和的食谱。 任务接受 标准仍然是任务所在地。 见 食谱。 。 。 .

关于将接受标准与图书馆流动相匹配和评估的可选模式咨询 草案或证据,见 可选食谱顾问。 。 。 . 选择一个提供者 --advisor typesafe 或保存 advisor.enabled 财务报告和审定财务报表 advisor.provider 结束 mm-harness config检查有效的政策 farmslot recipe quality advisor-status --project <project> --json; 使用 --advisor off 每个任务. 普通食谱执行不需要顾问或API密钥.

不需要导出: 在 mm-harness config set libraries.<name> <path>,或者在产品检出旁检查,到达 run, (中文(简体) ), actions和模板的发现. mm-harness status 列出这个 机器解决,每个地点的修改和食谱计数.

一个库可以在知识文件中声明命名的测试账户 recipe-library.json 清单"knowledge": ["knowledge/test-accounts.json"], (中文(简体) ), 每个 { "name", "secret", "index", "address", "purpose" }: 该账户是 HD 指数 index 名称 secret,所以定着 只保守他们的秘密 图书馆注册(--library, (中文(简体) ), RECIPE_LIBRARY_PATH 即你们所设定的,或你们所设定的,不是结对的, mm-harness help 列出它们( 名称、 地址、 目的), 每个钱包, 命令 启动时可以使用它们(Web-dapp,扩展和移动固定导入,Core),以及 食谱, metamask.app.launch 财务报告和审定财务报表 metamask.wallet.select_account 选择一个 名称或地址.

团队维持他们的图书馆取出。 任务开始前更新; 记录本地修改和食谱摘要,但不获取或 检查上游更新。 运行时保持所选库不变 .

公布更改

# Write artifacts/pr-description.md in the repository PR template shape (prose
# only), then render the publishable body.
mm-harness pr-body render temp/tasks/dev/TAT-1 --command 'mm-harness run artifacts/recipe.json'

pr-body render 写入 artifacts/pr-body.md:带有"变相"的描述 食谱"和"Validation Logs"两节 artifacts/recipe.json 财务报告和审定财务报表 artifacts/recipe-run/report.md (和"收工"从 artifacts/workflow.mmd 当它存在时,用手替换任何粘贴。 工人从来不贴文物 因此栅栏无法断裂。 当通过运行记录了任务 选中的尝试, 两节都来自该尝试的验证软件包; 一个软件包 无法验证的,将被拒绝,任何文字都不写.

审查更改

# Which team library owns the change (declared --domain wins, else owned-paths.json).
farmslot review domain --project <project>

# The review guide: base review + the library's anti-pattern families and parity rule.
farmslot review checklist --project <project> --domain perps

# A checklist the mark shim can track: Setup, Base review, Domain patterns, Parity, Verdict.
farmslot review checklist --project <project> --domain perps --out temp/tasks/review/TAT-1/CHECKLIST.md
farmslot review checklist --project <project> --domain perps --since <last-reviewed-sha>   # incremental re-review

# Where this machine keeps libraries and the other platform's checkout (outside any repo).
mm-harness config set references.extension ~/dev/metamask-extension

团队图书馆用品 review/antipatterns.md (一个) ## (a) 每个家庭, 选项 review/antipatterns.<adapter>.md 仅配有适配器的家庭, review/parity.md,以及 owned-paths.json{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}绳子会编织而来 永远不会 复制它们。 位置解析嵌入( E)RECIPE_LIBRARY_PATH, (中文(简体) ), MM_HARNESS_REF_<ADAPTER>(中文(简体) ) → mm-harness config - 结账前或下方的兄弟目录 ~/shared-library ~ 浅取入 <checkout>/.skills-cache/<name>。 。 。 . MM_HARNESS_SIBLING_LIBRARIES=0 关闭兄弟的台阶,用于图书馆和 参考检查相同(测试沙盒设置). 缺少参考文献 取出后, 将等价步骤降低为“ 不检查 ” .

回收

mm-harness doctor
mm-harness doctor --fix
mm-harness verify
mm-harness cleanup

失败就是下一个行动 核心是无头;浏览器,设备,日志, 和调试器的能力报告为没有,而不是捏造. 稳定退出代码为 1 运行时间/ 动作失败, 2 无效的 CLI 使用 , 3 基础设施故障, 4 有限度地拒绝追回,以及 5 审定/信任 失败.

参考文献

  • 食谱 ——发现,作曲,作者,共享证明.
  • 警卫 信任、批准、固定装置和证据安全.
  • 质量保证 ——清洁机和人放行检查.
  • 捐款 ——所有权,布局,并更换出入口.

对于开发,请直接引用源检出:

/path/to/metamask-harness/bin/mm-harness --version

农场选择相同的软件包通过 recipe.provider.root.env,配置为 MM_HARNESS_PACKAGE_ROOT二进制环境不会改变公众进入点的方向.

工作流程进入点和完成点

明确援引 mms-recipe-dev, (中文(简体) ), mms-recipe-fix-bug, (中文(简体) ), mms-recipe-qa 或团队的静态审查技巧. mms-recipe-cook 选择或恢复其共享的Markdown清单。 匹配描述或已改变的路径永远不会激活这些工作流程.

主机任务选择执行节点上的核对表,而不是网关. 核心、移动和扩展包将他们的食谱烹饪清单根植于 CONSENSYS_RECIPE_COOK_ROOT 及其行凶者核对表 PERPS_RECIPE_LIBRARY_ROOT设置在每个节点的池中 env不只是网关 缺少选定清单的根的节点拒绝此任务为无法使用源 .

静态Perps审查使用生成的源清单,而不安装或启动应用套接字. recipe-qa 冻结 PR、 范围或每日更改窗口, 并需要运行时的烟雾和选定的食谱证明。 官方发布验证使用其命名的发布剖面和证明道.

TASK.md持有请求;CHECKLIST.md是唯一的一步列表. 被冻结的终端合同和任务当地标记验证完成。 出版,保留会话和工作空间清理属于呼叫者. 农场通过控制平面处理它们;直接援引将结果交还给工程师。 见 任务指南 财务报告和审定财务报表 QA 辅导。 。 。 .

便携式运行时间证明

validateRuntimeProof(bundle, smokeTarget) 从 @farmslot/recipe-cli/harness 验证一个保留了的Recipe v1 文物包,要求对其宣布的目标执行行为断言. 仅通过命令或结束节点是不够的。 QA 技能从中导入 @farmslot/recipe-cli 其锁定的绑带安装取决于;不需要网关、农场简介或运行的ID.

版本与发布记录

@deeeed/metamask-harness 共发布 255 个版本,首次发布于 2026/07/03;过去 12 个月发布了 255 个版本。

版本发布日期距今
0.96.11latest2026/11/101 天前
0.96.102026/11/101 天前
0.96.92026/11/101 天前
0.96.82026/11/101 天前
0.96.72026/11/102 天前
0.96.62026/11/092 天前

关于 @deeeed/metamask-harness 的常见问题

@deeeed/metamask-harness 是什么?

一个CLI用于操作MetaMask扩展、移动和Core并产生可审查的食谱证据。 在检查出内运行;自动检测出产品、槽、端口和运行时路径.

如何安装 @deeeed/metamask-harness?

在项目目录运行 npm install @deeeed/metamask-harness,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mm-harness,可以用 npx mm-harness 直接运行。

@deeeed/metamask-harness 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/deeeed__metamask-harness 是否存在。

@deeeed/metamask-harness 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@deeeed/metamask-harness 可以商用吗?

@deeeed/metamask-harness 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@deeeed/metamask-harness 的下载量有多少?

根据 npm 官方下载统计,@deeeed/metamask-harness 在 2026/10/12 – 2026/11/10 这 30 天内被下载 12,806 次,日均约 427 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@deeeed/metamask-harness 还在维护吗?

最新版本 0.96.11 发布于 2026/11/10(1 天前);至今共发布 255 个版本,其中过去 12 个月发布了 255 个;首次发布于 2026/07/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。