mcpField
R
recovery-probe

recovery-probe

本地服务
github.com/BojanKovachki其他7今天更新

关于 recovery-probe

Recovery Probe 面向开发者和编码 Agent,通过向 Web 与 Electron 应用注入故障来检查界面响应。它比较正常运行与故障运行,并保存报告,便于复现和验证恢复问题。

主要功能

  1. 01注入 HTTP、连接和 JSON 故障
  2. 02发现已加载界面背后的请求
  3. 03测试 Web 与 Electron 恢复行为
  4. 04比较正常与故障运行
  5. 05保存 HTML 和 JSON 报告

适用场景

  1. 01检查界面能否从读取失败中恢复
  2. 02测试请求失败时保存或发送的表现
  3. 03通过前后证据验证修复效果

MCP 相关

Recovery Probe 可通过 `recovery-probe mcp` 提供 MCP 服务。MCP 客户端可触发读取故障并检查界面响应。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"bojankovachki-recovery-probe": {
"command": "npx",
"args": [
"-y",
"recovery-probe"
]
}
}
}
启动命令npx -y recovery-probe

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

安装包
npmrecovery-probe1.0.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Recovery Probe

别再假设代码能正常运行。测试实际会发生什么。

Recovery Probe 帮助开发者和 AI 编码 Agent 发现普通测试可能遗漏的错误。它会刻意在 Web 和 Electron 应用中触发故障,观察 UI 如何响应,并生成证据,供你复现、修复和验证问题。

请求失败时,不应该悄无声息地把内容充实的页面变成“未找到任何项目”。Recovery Probe 帮你复现这种故障,并检查应用是否按预期恢复。

CI npm License: MIT

Recovery Probe 捕获到损坏的重试流程,并通过了修复后的流程

试用

你需要 Node.js 22 或更高版本。

npm install --save-dev recovery-probe playwright
npx playwright install chromium
npx recovery-probe demo

该演示会运行两个版本的小型应用。两者都能正常加载。只有修复后的版本能在遇到 503、连接中断和损坏的 JSON 响应时正常运行。

检查你自己的应用

Web 应用。 启动应用,然后运行:

npx recovery-probe init http://localhost:3000

浏览器会打开。登录,前往你关心的页面,然后点击一个只有在数据加载后才会显示的内容。Recovery Probe 会找到其背后的请求,以三种方式让请求失败,并告知你数据是否恢复。

Electron 应用。 使用 --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 启动应用,然后运行 npx recovery-probe init。

通过 IPC 加载数据的 Electron 应用。 在主进程中加载仅用于开发的轻量钩子。npx recovery-probe doctor 会打印代码以及需要加载该代码的路径。启用检查器后重启应用,然后运行 npx recovery-probe init:它会列出钩子的通道,询问哪个通道负责加载页面,并以几种方式让其失败。

每次运行都会保存 HTML 和 JSON 报告。再次运行相同命令即可重复检查,或者添加 --fresh 重新设置。如果缺少什么,npx recovery-probe doctor 会说明缺少的内容以及如何修复。

更多

目标运行文档
无需编写断言,即可让页面背后的读取请求失败discover发现
无需注入故障,即可捕获过时页面和状态卡在旧状态的行observe观察
查看保存或发送失败时用户会看到什么action操作检查
让 SDK 或主进程自身的 HTTPS 连接失败net网络故障
找出会把读取失败转成“无数据”的代码suspects可疑代码
证明某项更改已修复问题compare、watch、verify比较、监控、验证

在编码 Agent 中使用

recovery-probe mcp 是一个 MCP 服务。任何支持 MCP 的 Agent 都可以用它让读取请求失败,并查看页面,然后再声称代码能够处理错误。大多数 Agent 都可使用以下配置:

{
  "mcpServers": {
    "recovery-probe": { "command": "npx", "args": ["recovery-probe", "mcp"] }
  }
}

其他配置格式和工具列表请参阅 MCP。

在测试中使用

withFault 会在 Playwright 测试中让匹配的请求失败:

import { test, expect } from '@playwright/test'
import { withFault } from 'recovery-probe'

test('profile recovers after a 503', async ({ page }) => {
  const stats = await withFault(
    page,
    { match: '**/api/profile', kind: 'http-error', status: 503 },
    async () => {
      await page.goto('http://127.0.0.1:3000/profile')
      await page.getByRole('button', { name: 'Retry' }).click()
      await expect(page.getByTestId('profile-name')).toHaveText('Test User')
    },
  )
  expect(stats.applied).toBe(1)
})

如果没有匹配项,withFault 会抛出 FAULT_NOT_TRIGGERED,而不是通过测试。对于接收 fetch 函数的代码,可以使用 createFaultFetch。请参阅 API。

判定方式

  • 每次注入故障的运行之前,都会在同一页面上进行一次正常运行,报告会比较两者。
  • 结果分为通过、失败或无法确定。故障未触发、基线不稳定或路径无法访问时,结果为无法确定,绝不会判定为通过。
  • 有些发现(例如 SILENT_EMPTY)只是线索,用来指明检查方向,并不代表代码有问题。
  • 退出码:0 表示通过,1 表示检查失败,2 表示需要复核或无法确定,3 表示用法或配置错误,4 表示无法运行。

适用场景

  • Chromium 中的 Web 应用,可由 Recovery Probe 启动,也可通过本地调试端口连接。
  • Electron 应用,可通过渲染进程中的 HTTP 或配合 hook 使用 IPC。
  • 使用 HTTPS_PROXY 的原生 HTTPS 客户端,例如主进程中的 SDK。此类客户端只能让整个连接失败。
  • Android WebView,实验性支持。

它不会模拟整个设备离线、WebSocket 断开、令牌过期、休眠或网络变慢。

隐私

报告保存在你的设备上,不会发送遥测数据。不会记录请求和响应正文;发现和观察只会将屏幕文本保存为哈希值。不过,报告仍可能包含端点路径、选择器、你选作标记的文本,以及使用 --screenshots 时的屏幕内容,因此分享前请先检查。除非你主动选择使用修复工作流,否则不会调用 AI 服务。

恢复检查失败时,也可能保存 screenText:最多包含 200 个字符的新显示屏幕文本,并会出现在终端输出、报告、修复摘要和 MCP 结果中。这些引文不会经过脱敏处理,即使没有截图,也可能包含个人或敏感数据。分享这些输出或将其交给 Agent 前,请先检查。

只能测试你有权测试的应用和账户,并确保调试端口仅监听 localhost。

1.x 版本兼容性

兼容性承诺涵盖文档中说明的非实验性包导出、CLI 命令和选项、退出代码、配置字段、MCP 工具及 JSON 报告字段。移除或重命名这些接口、以不兼容方式更改其类型,或更改文档中说明的含义,都需要发布主版本。向后兼容的新增内容可以在次要版本中发布;恢复文档所述行为的修复可以在补丁版本中发布。

使用方应能容忍 JSON 中出现额外字段。终端输出的确切措辞、HTML 布局、计时测量值和启发式分析结果不属于固定契约。dist/ 下的内部文件不是公开导入接口;请使用包声明的导出。明确标记为实验性的功能(包括 Android WebView 支持和修复)可能会在次要版本中更改,相关变更会记录在变更日志中。

升级到 1.0

1.0 移除了旧命令拼写 desktop、web、ipc、--demo 和 --config。现在这些命令都会停止执行并报用法错误,说明替代命令,例如 windows、reads、check、discover、action 和 demo。用法错误的退出代码为 3,设置失败的退出代码为 4;旧拼写对应的退出代码为 2,因此请更新读取退出代码的 CI 脚本。demo 和 JSON 运行器的 check 会将 report.json 写入 --out 文件夹。升级后请重启开发应用,使其 IPC hook 与 CLI 匹配。公开的包导入接口和 hook 路径没有变化。请参阅变更日志。

文档

入门指南 · 桌面应用和浏览器 · IPC · 发现 · 观察 · 刷新 · 网络故障 · Android · 疑似问题 · 比较 · 监视 · 验证 · MCP · API · JSON 运行器 · CI · 修复 · 变更日志

贡献

请参阅 CONTRIBUTING.md。请按照 SECURITY.md 中的说明报告安全问题。

许可证

MIT © 2026 Bojan Kovachki

评论

支持 Markdown

第一次接触 MCP?

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

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