内容
center">
<img src="assets/relay-logo.svg" alt="Relay" width="254">
用户发现之前找到AI代理问题
Relay是一个开源MCP服务器 + 命令行工具**,用于审计AI代理和语音代理代码库中的延迟。它使用AST引擎读取您的代码,按影响程度对问题进行排名,运行验证检查以报,并且可以直接从Cl应用修复。
**无需账户,无需API密钥,无需后端**。它完全在您的机器上运行。
[](https://github.com/ar-ai/relay-mcp/ci.yml)
[
[
<!-- After the first PyPI release, swap the two badges above for these live ones:
[](https://pypi.org/project/relay-mcp/)
](https://img.shields.io/pypi/pyversions/cp.svg)](https://pypi/relay-mcp/)
-->
[快速入门](#快速入门) · [MCP工具](#MCP工具) · [命令行工具](#命令行工具) · [检测内容](#检测内容) · [贡献](#贡献)
</div>
<br>
<img src="assets/relay-scan.png" alt="relay scan and relay verify running against five voice" width="100%">
为什么选择Relay
代理不是由一次缓慢的引起的。它可能是由于流式被正确流式传输,可以合并为一个`asyncio.gather`的异步在每次请求时重新构建的HTTP客户端,一个位于异步函数内的`requests.post`。这些问题是结构性的,在平均请求的火焰图中不可见,但在抽象语法树(AST)中显而易见。
Relay可以发现这些问题,并对每个问题进行分析,以避免误报。
---
## 快速入门
### 在Claude Code(MCP)中
```bash
claude mcp add relay -- uvx relay-mcp
```
或者手动将其添加到您的MCP配置文件(/.claude/cl_config.json`)中:
```json
{
"mcpServers": {
"relay": {
"command": "uvx "args": ["relay-mcp"]
}
}
}
```
然后,在Claude Code中,只需说:
> 审核此代码库以查找延迟问题
就这样 - 无需配置密钥。
### 作为命令行工具
```pip install relay-m # 或:uv tool install relay-mcp
relay scan # 结构检查 -选延迟模式
relay # 语义检查 - 仅确认的间隙
relay report . # 生成 relay-report.json
```
需要Python 3.11+。
---
## 功能
- **基于AST的检测**。使用真实语法解析Python代码,而不是正则表达式,因此它可以理解`async`/`await`、调用目标、关键字参数和`**kwargs`转发。
- **六种延迟检测器**。流式间隙、顺序、缓存未命中、中的阻塞I/O、每个请求的客户端构造和预取机会 - 请参见[检测内容内容)。
- **验证检查**。每个候选问题都会在上下文中重新读取,并被驳斥为误报,每个问题都有一个原因。
-排名**。查找结果会被评分和排序,以便首先显示修复。
- **从Claude Code应用修复**。`apply_fix`会重写标记的站点(默认为干预运行),以便您在进行任何更改之前进行审查。
- **MCP和命令行工具共用一个引擎**。代理输出和终端输出永远不会出现分歧。
- **CI门控**。`relay verify --fail-on high`在存在已确认的高影响间隙时退出非零使管道失败。
-盘报告**。每个审计`relay-report.json`,您可以将其放入[Relay](https://relay.arclat.com/dashboard)以获得化视图。
- **依赖**。只有一个`mcp`包 - 没有网络调用,没有遥测数据,没有数据机器。
- **持久状态**。最后一次审计缓存在`~/.relay/last-audit.json`中,因此`get_findings`、`verify_audit`和`apply_fix`在MCP重启后仍可继续工作。
---
## MCP工具
| 工具 | 描述 |
|------|-------------|
| `audit_codebase(directory, write_report=true)` | 读取目录中的Python返回排名的查找结果(每个都有验证判决)并写入`relay-report.json`。 |
| `get_findings(severity?, finding_type?, status?)` | 过滤上次审计的查找结果。 |
| `verify_audit()` | 显示语义检查确认或驳斥的查找结果及原因。 |
| `apply_fix(finding_rank, file_path?, dry_run=true)` | 应用修复。默认为干预运行;文件路径默认为查找结果的文件。 |
上次审计缓存在`~/.relay/last-audit.json`中,因此只读工具在MCP服务器重启后仍可继续工作。
---
## 命令
```bash
relay scan <dir> 结构检查 - 标记候选延迟模式
relay verify <dir> # 语义检查 - 仅保留确认的间隙
relay report <dir> [-o f] # 生成 relay-report.json 用于仪表盘
relay mcp # 运行 MCP 服务器(与 relay-mcp 相同)
```
| 标志 | 适用 | 含义 |
|------|-----------|---------|
| `--json` | `scan`, `verify` | 以 JSON 格式打印完整报告(用于 CI、`jq`)。 |
| `--fail-on {none,high,any}` | `verify` | 当存在已确认的间隙时退出非零。默认为 `none`。 |
| `-o, --output` | `report` | 输出路径 `<dir>/relay-report.json`。 |
### 在CI```yaml
- run install relay-mcp
- run: relay verify . -- high
```
`--fail-on high`仅在已确认**的高影响时失败作业,因此不会因嘈杂的结构匹配而破坏构建。
---
## 检测 检测器 | 标记内容 |
|----------|---------------|
| **SyncOutput** | 缺少流式传输的(包括转发`**kwargs`**的调用)。 |
| **** | 连续等待,应在`async()`下运行。 |
| **CacheMiss**相同的完全静态LLM多个调用站点重复,且。 |
| **Blocking | 异步函数中的同步`requests` / 数据库调用,以及`time.sleep`和subprocess`调用。 **ColdStart** | 每个请求构建的API客户端OpenAI`、`httpx.Client`、`aiohttp`等),而不是在。 |
| **Prefetch** | 可以推测性启动的可预测工具调用对。 |
### 验证检查
都会在上下文中重新读取,并被**确认**延迟间隙或斥**为误报有一行原因 - 例如 *"一个分支(查找)是内存中的 - 没有什么可以并行化的"* 或 *"结构化/JSON输出 - 不能流式传输"*。摘要计数(`flagged`、`confirmed`、`dismissed`、`confirmed_high_impact`)驱动CLI输出和`--fail-on` CI门控。
这是您不会在CI中静音一周会保留的lint工具的区别。
---
##
Relay本身是的。如果您想查看报告的可视化,[Relayhttps://relay.ar.com/dashboard)允许您拖入任何`relay并浏览查找结果、严重性分解和时间损失聚合。报告永远不会离开您的浏览器 - 它在客户端被---
## 配置
无不需要环境变量、配置文件或API密钥。它读取您的源代码,写入报告,然后不再操作。
---
## 仓库结构
```
relay-m├── mcp # MCP 服务器 + 命令行工具(发布到 PyPI 作为 relay-mcp ├── server.py # 入口点,公开 MCP 工具 ├── cli.py # `relay` 命令(scan / verify / report / mcp)
│ └── engine/ # 审计引擎(检测器器、验证器、代码解析器)
├── tests/ # 引擎端到端测试
├── assets/ # logo 和截图
├── run.sh / run.ps1 # 开发运行脚本(安装 / 注册 / 测试 / 服务)
└── pyproject.toml # uvx / pip包配置
```
---
## 开发
pip install ".[dev]" 以可编辑模式安装 relay + relay
pytest # 运行测试套件
. # scan .自身上测试引擎
```
参见 [.md](RUN) 了解完整的开发工作流程,
[CONTRIBUTING.md](CONTRIBUTING.md) 添加检测器或提交PR。
---
## 项目
- **贡献** - [CONTRIBUT](CONTRIBUTING.md)
- **行为准则** - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
- **安全策略** - [SECURITY.md](SECURITY.md)
- **变更日志** - [CHANGELOG.md](CHANGELOG.md)
Relay 是 **Arclat** 工作 [clat.com://relay.com) 。
##
[MIT](LICENSE)