AI编程代理检查工具

Relay是一款为AI编程代理提供人工检查点的工具,允许用户在代码执行前进行审查和修改,确保每一步操作都经过确认。

  • by andeya
  • Rust
  • 本地部署
  • 72 星标
  • 更新于
在 GitHub 查看 andeya/ide-relay-mcp

使用说明


中继

缺少人工智能编码代理的人类检查点。

给你的人工智能代理一个“暂停和询问”按钮——在运行之前检查、纠正或丰富每一步。

下载 · 简体中文

作者 安德里亚· andeyalee@outlook.com


Relay beside your IDE — the agent pauses, you review & answer, it continues. All in one tools/call.


为什么要接力?

AI编码代理功能强大,但 盲目自主的代理是有风险和浪费的。如果没有检查点,代理就会偏离正轨,犯下错误,导致多轮纠正,并在浪费的请求上消耗掉宝贵的计划配额。

Relay添加了一个 人在环(HITL)检查点 任何具有MCP能力的代理。代理调用一个工具-- relay_interactive_feedback --以及 块 直到你提交你的 回答 (文本、图像、文件)。结果返回到 相同 JSON-RPC往返。你能及早发现问题,准确指导 重视每一个请求 --没有云仪表板,没有额外的SaaS,只有IDE旁边的原生桌面窗口。

主要优势

适用于任何MCP IDE 一流的支持 光标, 克劳德代码, 帆板运动,并为其他人提供通用模式。
100%本地 所有数据都保留在您的机器上——仅环回HTTP,零遥测,没有电话回家。
一个常驻GUI 具有多标签会话管理的单个持久窗口(不是每个请求的弹出窗口)。
无ARG_MAX限制 retell 以HTTP JSON正文(高达16 MiB)的形式传输,而不是shell argv。
会话连续性 relay_mcp_session_id 链接变成连贯的会话 MM-DD高:毫米:秒 标签。
丰富的反馈 文本、截图、文件附件——代理在一次往返中需要的一切。
保存您的计划配额 及早发现错误并精确指导——不再浪费宝贵的修正时间来处理额外的请求。

多IDE支持

启动Relay并选择您的IDE。每种模式都解锁了IDE特定的功能——一键MCP注入、定制的规则提示和(对于Cursor)实时使用监控。

Click a card to enter that IDE mode — all settings, CLI commands, and MCP config adapt automatically.

IDE MCP注入 规则提示 使用情况监控
光标 ✅ ✅ ✅
克劳德代码 ✅ ✅ —
帆板运动 ✅ — —
其他 手动 -- --

快速开始

1.安装 --抓住 最新版本 (macOS、Linux、Windows)或 从源代码构建.

macOS——看门人/隔离: CI已建成 .app 捆包是 不 苹果公证(需要支付 开发者ID 证书)。从浏览器下载可获得 com.apple.quarantine 属性,可以触发“无法打开”或“损坏”警告。如果没有付费证书 不 为所有用户提供全自动修复;选项包括:

  • 推荐: 在Finder中, 控制单击(或右键单击)应用程序→ Open 并确认一次(存储该应用程序的异常)。
  • CLI(一次性): 将应用程序复制到后清除隔离 Applications (如果您的路径不同,请调整路径):
xattr -dr com.apple.quarantine "/Applications/Relay.app"

2.启动并选择IDE --快跑 relay 点击您的IDE卡,或直接进入:

relay gui-cursor        # Cursor mode
relay gui-claudecode    # Claude Code mode
relay gui-windsurf      # Windsurf mode

3.MCP接线 --将IDE指向Relay二进制文件。光标示例:

{
  "mcpServers": {
    "relay-mcp": {
      "command": "/path/to/relay",
      "args": ["mcp-cursor"],
      "autoApprove": ["relay_interactive_feedback"]
    }
  }
}

光标 用途 .cursor/mcp.json (每个回购,与 ~/.cursor/mcp.json). 对于 WSL代理+Windows relay.exe,添加 --exe_in_wsl: ["mcp-cursor", "--exe_in_wsl"]. 看 docs/HTTP_IPC.md 了解详情。

或使用 设置→ 环境与MCP 在Relay内部进行一键设置,并直接复制MCP JSON:

Settings → Environment & MCP — PATH detection, one-click MCP injection, copy JSON, pause MCP.

4.安装规则提示 首选 设置→ 规则提示 只需单击一下即可安装。这会教会代理人打电话 relay_interactive_feedback 每次转弯和保持 relay_mcp_session_id.

Settings → Rule prompts — one-click install into your IDE's rule configuration.

光标规则文件 --一键安装写入 relay-interactive-feedback.mdc 在...之下 用户 ~/.cursor/rules/ (Windows: %USERPROFILE%\.cursor\rules\).该路径与回购路径是分开的 .cursor/rules/;如果您只使用,请复制或符号链接到那里 项目 规则。

特工仍然跳过 relay_interactive_feedback? 确保MCP服务器 relay-mcp 已启用;在提示(或设置)时批准工具 "autoApprove": ["relay_interactive_feedback"]);编辑磁盘上的规则文件后重新加载游标。规则文件指导模型——它们不是硬保证。


在循环中传递人(端到端)

快速启动步骤2-4后,每个转弯都遵循此路径(运输细节: docs/HTTP_IPC.md;词汇: docs/TERMINOGY.md):

sequenceDiagram
  participant Agent
  participant Mcp as relay_mcp-ide
  participant Http as GUI_HTTP_127.0.0.1
  participant You

  Agent->>Mcp: tools/call relay_interactive_feedback (retell, session, commands/skills…)
  Mcp->>Http: POST /v1/feedback → request_id
  Http->>You: tab shows retell
  You->>Http: Answer / dismiss / idle cutoff
  Http-->>Mcp: GET …/wait → JSON result
  Mcp-->>Agent: same tools/call response
  1. MCP运行 --IDE启动 relay mcp-<cli_id> (stdio),例如。 **mcp-cursor**匹配的GUI是 relay gui-<cli_id> (通常已经开放)。
  2. 代理调用工具 --非空 retell. 新会话: 省略 relay_mcp_session_id (或为空)并发送 commands 和 skills (每个可能 [] 只有当主机真正不暴露任何东西时)。 继续: 通过 relay_mcp_session_id 根据之前的结果。
  3. MCP到达GUI --阅读 gui_endpoint_<cli_id>.json 在你的 配置和路径 目录(例如。 gui_endpoint_cursor.json),或产卵 relay gui-<cli_id> 等待≤~45秒。然后 POST /v1/feedback 和块上 GET /v1/feedback/wait/:id 直到选项卡完成。
  4. 你互动 --提交 回答,附加文件,关闭,或让约60分钟的空闲清理返回为空 human (与从代理人的角度解雇相同)。
  5. 返回相同的JSON-RPC --主体包括 relay_mcp_session_id, human, cmd_skill_count,可选 attachments.下一个转弯 必须 发送那个 relay_mcp_session_id 除非开始一个新标签。

规则与MCP: 步骤4 规则提示 安装写入 relay-interactive-feedback.mdc 在...之下 用户 ~/.cursor/rules/ (仅光标)。规则鼓励循环; relay-mcp 在MCP设置中 执行 它


建筑

flowchart LR
  IDE[IDE / Agent] -->|stdio JSON-RPC| MCP["relay mcp-{ide}"]
  MCP -->|read or spawn| GUI["relay gui-{ide}"]
  MCP <-->|127.0.0.1 Bearer| HTTP[Tauri HTTP API]
  HTTP <--> UI[Vue tabs]
  UI --- User((You))
  MCP -->|JSON result| IDE
  • relay mcp-{ide} --Stdio MCP服务器(clap).手柄 initialize, tools/list, tools/call.在一个连接上同时进行人工回合。可选的自动回复规则。
  • relay / relay gui-<cli_id> --Tauri应用+HTTP开启 127.0.0.1:0.写入 gui_endpoint_<cli_id>.json (例如。 gui_endpoint_cursor.json)与 { port, token, pid };在出口处清理。
  • 桥 --MCP读取端点文件;如果丢失,则产卵 gui-{ide} 民意调查时间约为45秒。然后 POST /v1/feedback → GET /v1/feedback/wait/:id。等待在提交、驳回、取代或空闲约60分钟时解决。

MCP工具: relay_interactive_feedback

参数 必填 含义
retell 是 (非空) 此回合的用户可见助手回复,逐字逐句。
relay_mcp_session_id 如果你有一个 继续同一会话;返回JSON结果。
commands 新选项卡: 必需的 斜线补全的IDE命令数组。 [] 只有当主人真的没有。
skills 与命令相同 IDE技能数组。相同的合并/重复数据消除规则。

暂停MCP (设置):哨兵 <<<RELAY_MCP_PAUSED>>> --在恢复之前不要再打电话。

Slash completion — commands and skills populate the palette with optional category badges.


功能一览

  • 多标签中心 --每个请求都会打开或刷新一个选项卡。 relay_mcp_session_id 合并流。标签显示 MM-DD高:毫米:秒 带有转弯状态颜色指示器。
  • 富有的作曲家 --Enter可提交,Shift+Enter可换行,⌘/Ctrl+Enter可提交并关闭。粘贴图像、附加文件——它们显示为 attachments 在工具结果中。
  • 光标使用监控 --自动检测您的游标令牌(跨平台解密),在实时弹出窗口中查看计划配额、请求历史记录和预测的配额耗尽。
  • 自动回复 — auto_reply_oneshot.txt / auto_reply_loop.txt 立即 0|reply 无需打开UI即可响应。
  • 本地存储 — feedback_log.txt, qa_archive/<session_id>.jsonl,可配置附件保留期(默认30天)。
  • 命令行界面 — relay feedback --retell "…" 在stdout上打印JSON; --timeout CI/自动化。

Settings → Cache — attachment + log usage, open folder, auto-clean.


CLI参考

命令 角色
relay 打开IDE选择页面
relay gui-cursor 在光标模式下启动GUI
relay gui-claudecode 在Claude Code模式下启动GUI
relay gui-windsurf 在Windsurf模式下启动GUI
relay mcp-cursor 用于Cursor的MCP stdio服务器(IDE运行的内容)
relay mcp-claudecode Claude Code的MCP stdio服务器
relay mcp-windsurf 用于Windsurf的MCP stdio服务器
relay feedback --retell "…" 终端试用; --timeout, --relay-mcp-session-id

每个IDE模式只允许一个GUI进程;赤裸的 relay (无模式)可以运行多个实例。


配置和路径

数据位于操作系统应用程序数据目录下(directories::ProjectDirs → config_dir()):

操作系统 路径
macOS ~/Library/Application Support/com.relay.relay-mcp/
Linux ~/.config/relay-mcp/
窗户 %APPDATA%\relay\relay-mcp\config\

关键文件: feedback_log.txt, qa_archive/*.jsonl, ui_locale.json, gui_endpoint_<cli_id>.json (例如。 gui_endpoint_cursor.json), relay_gui_<cli_id>_alive.marker, mcp_pause.json, attachment_retention.json, auto_reply_*.txt,遗产 gui_endpoint.json 在适用的情况下。


构建

npm install
npm run build          # Vite frontend
cargo build --manifest-path src-tauri/Cargo.toml --release
npm run tauri build    # installers / .app / etc.

开发:

npm run lint && npm run typecheck
npm run tauri:dev

图标 (从 src-tauri/icons/source/relay-icon.svg):

npm run icons:build

CI:lint,typecheck,fast, cargo fmt, clippy -D warnings, cargo test --看 docs/RELEASING.md.


文档

文档 内容
docs/HTTP_IPC.md HTTP API,超时,WSL路径重写
docs/RELAY_MCP_SESSION_ID.md 会话ID和选项卡标签
docs/TERMINOGY.md 词汇表+二进制文件/端点文件
docs/RELEASING.md 发布与CI

隐私

数据保留在设备上。 所有答案、日志、附件和设置仅在操作系统用户路径下写入。GUI和MCP进程通过以下方式进行通信 127.0.0.1 --什么都不会离开你的机器。

没有遥测。 Relay不提供分析SDK、崩溃报告器或远程仪器。本地文件,如 feedback_log.txt 可能包含敏感内容——请相应地处理它们。


致谢

受...启发 交互式反馈mcpRelay用驻留GUI和承载身份验证的本地HTTP层替换了每个请求的子流程UI。


许可证

麻省理工学院