UStackUStack
Ray icon

Ray

Ray 是一款桌面应用,用于组织与查看代码调试输出;可筛选、搜索并归档结果,避免干扰应用运行。

Ray

Ray 是什么?

Ray 是一款专用的桌面应用,用于在应用运行时之外组织和查看调试输出。它允许您使用一致的 ray(...) 语法发送值(字符串、数组、对象等),然后在 Ray 中查看、筛选并重访结果。

其核心目的是保持调试输出易读且结构化,同时减少在应用中添加额外日志代码的需求。Ray 还支持通过 SSH 进行远程调试,并在 PHP/Laravel 环境中提供暂停和执行测量工具。

主要特性

  • 调试输出的专用桌面视图:将调试输出保存在专用应用中,便于检查结果,而无需依赖浏览器控制台。
  • 多种数据类型的格式化渲染:发送字符串、数组、对象和表格等值,并整洁渲染以供检查。
  • 跨消息的筛选、标签和搜索:按类型、来源或自定义标签筛选,并使用搜索查找之前的输出。
  • 归档和清屏控制:清空屏幕并归档消息,以便后续参考、比较输出或排查难以复现的问题。
  • 通过 SSH 的远程调试:通过 SSH 连接服务器,将远程代码的调试输出流式传输到 Ray。
  • 跳转至 IDE:从转储输出跳转回编辑器中的相关位置(支持多种 IDE,如网站所述)。
  • 跨语言/框架的调试语法:网站描述了跨语言和框架使用相同的 dump 风格方法。
  • Ray 3.0 的 PHP/Laravel 执行工具:包括暂停和测量执行,以暂停 PHP/Laravel 代码并测量调用间时间。
  • 自动接收运行时输出(Ray 3.0):网站提到自动接收输出(如查询、任务、异常),无需在代码中添加显式调用。
  • 扩展性和自定义:更改主题、使用宏扩展 Ray,并为尚未支持的语言/框架创建自己的客户端发送数据。
  • AI 特性(Ray 3.0):在 Ray 内直接与 AI 输出交互,包括 AI 生成的 HTML 组件/原型,以及通过内置查看器对 Mermaid 和 ERD 图的结构化解释。
  • AI 代理的 MCP 服务器:网站指出,MCP 服务器允许 AI 代理访问窗口/工具,从而读取、生成和输出内容。

如何使用 Ray

  1. 下载 Ray 并在需要时购买许可证(网站显示 49 美元价格,并提及通过 Spatie 管理的 1 年许可证)。
  2. 使用网站所示的 ray(...) 语法向 Ray 发送调试输出(示例包括标签、表格、应用颜色和按调用属性筛选)。
  3. 在 Ray 中检查和管理消息:使用搜索和筛选缩小结果,并在需要后续比较输出时归档消息。
  4. (可选)设置远程调试:通过 SSH 连接服务器,以便 Ray 流式传输远程执行的调试输出。
  5. (可选)使用 IDE 导航和执行工具:从 Ray 输出跳转至源位置,并使用 PHP/Laravel 的暂停和测量执行工具。

使用场景

  • 检查复杂值而不干扰应用:发送字符串、数组、对象和表格(带标签和格式)到 Ray,在开发中了解状态,而无需依赖原始控制台输出。
  • 使用筛选调试特定请求或代码路径:为 ray(...) 调用附加颜色/标签,然后在 Ray 中按类型/来源/标签筛选以隔离相关消息。
  • 跨尝试比较输出:在更改代码前后归档消息,以便排查间歇性问题时重访早期输出。
  • 通过 SSH 的远程服务器调试:将远程服务器上运行代码的调试输出流式传输到 Ray,无需手动复制日志即可检查结果。
  • PHP/Laravel 性能和流程调试:暂停执行并测量调用间时间,加上自动接收特定运行时输出(如查询、任务、异常),如 Ray 3.0 所述。
  • 通过 AI 处理数据库图表和架构解释:使用 Ray 3.0 特性,让 AI 解释数据库架构,并在 Mermaid 或 ERD 格式中查看结构化输出。

常见问题

  • Ray 只适用于浏览器调试吗? 不是。官网将 Ray 描述为专用的桌面应用,可在应用运行时外部组织调试输出。

  • Ray 支持哪些输出格式? 官网指出 Ray 会格式化接收到的输出(例如字符串、数组、对象),并能渲染表格;还提到可转储查询、邮件、事件和堆栈跟踪。

  • Ray 可以调试远程服务器上的代码吗? 可以。官网描述了通过 SSH 连接并将调试输出流式传输至 Ray。

  • Ray 会取代 dd() 或其他调试器吗? 页面表示 Ray 不会取代 dd 或 xdebug;它被描述为填补快速转储与更结构化调试工作流之间空白的第三种工具。

  • Ray 3.0 有哪些新功能? 页面强调了暂停与测量执行、AI 交互(包括 HTML 组件和 Mermaid/ERD 查看器),以及用于 AI 代理的 MCP 服务器。

替代方案

  • 浏览器内日志和控制台输出(例如 console.log、浏览器开发者工具):适合快速检查,但结果绑定在浏览器环境中,无法以专用、可搜索的桌面时间线呈现。
  • 应用框架中的“转储”助手(例如 dd() 风格调试):快速直接,但通常将输出保留在应用/浏览器响应内,而非独立的桌面应用中提供筛选/搜索和归档。
  • 远程日志/可观测性工具:用于从远程环境收集日志的替代方案,通常聚焦日志聚合和监控,而非 Ray 描述的结构化、基于消息的检查工作流。
  • 基于终端的 REPL/调试工具:可在开发中检查值,但可能无法提供 Ray 官网提及的相同组织化桌面 UI、筛选和 IDE 跳转工作流。
Ray | UStack