tidewave_rails
让 AI 编程助手直接看到 Rails 应用的运行时状态,告别纸上谈兵式代码生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI 编程助手直接看到 Rails 应用的运行时状态,告别纸上谈兵式代码生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你让一个 AI 编程助手去修改你的 Rails 应用。它写了一段代码,兴冲冲地说"搞定了",但你一运行,发现数据库里根本没有那条记录,日志里全是报错。这种 AI"纸上谈兵"的问题,在当前 Agent 开发时代非常普遍——AI 不知道自己写的代码在真实运行环境中会是什么效果。
Tidewave Rails 解决的就是这个痛点:它把 AI 编程助手直接接入正在运行的 Rails 应用,让 AI 能够真正"看到"代码执行的结果、读取真实数据库状态、查阅精确版本的文档。从这个角度看,Tidewave 更像是给 AI 工具装备了一套高精度的"实时感知系统",而非又一个代码生成插件。

图1:project_eval 工具执行效果——AI 直接在真实 Rails 环境中运行 Ruby 代码
Tidewave 的核心作者之一是 José Valim,他同时也是 Elixir 语言和 Phoenix 框架的创造者,在 Ruby/Rails 社区拥有极高的声望。Valim 近年来活跃于 AI 与编程工具交叉领域,他创建 Tidewave 的核心洞察是:
当前 AI 编程助手最大的瓶颈不是"生成代码"的能力,而是"理解上下文"的能力。一个闭着眼睛写代码的 AI,和一个能看到运行时数据的 AI,写出来的代码质量有天壤之别。

图2:Tidewave 团队,背后是 Tidewave 产品官网 tidewave.ai
Tidewave Rails 作为其商业产品 Tidewave 的开源组件(Apache-2.0 许可),于 2025 年 4 月发布,star 增长迅速,半年内突破 477 星,获得了 Rails 社区和 AI Agent 圈的双重关注。
Tidewave Rails 本质上是一个嵌入式 MCP(Model Context Protocol)服务器,通过 Rack 中间件挂载到你的 Rails 应用中,然后向 AI Agent 暴露以下 6 个工具:
传统开发中,工程师用 rails console 交互式地测试代码逻辑。project_eval 就是为 AI Agent 准备的 console:它能在真实运行的 Rails 应用进程中执行任意 Ruby 代码,返回执行结果和标准输出。这意味着 AI 不再靠"猜"代码行为,而是直接验证。
典型场景:AI 生成了一段复杂的数据处理逻辑后,可以用 project_eval 实际调用该方法,确认返回值结构是否如预期。

图3:execute_sql_query 让 AI 直接查询开发数据库
这个工具允许 AI 执行任意 SQL 查询,返回原始数据库行。AI 可以用它插入测试数据、验证记录是否正确保存、检查关联数据的完整性。
传统 AI 面临的一个大问题是:它可能基于过时的文档给出错误答案。get_docs 从应用 Gemfile.lock 中锁定的精确 gem 版本读取文档,保证 AI 查到的 API 文档与实际运行版本完全一致。这对于依赖大量 gem 的 Rails 应用尤为重要。
AI 可以通过这个工具读取运行中服务器的日志,了解请求参数、数据库查询、异常堆栈等真实运行信息。调试场景下,这个工具让 AI 能像人类工程师一样"盯着日志看"。

图4:get_logs 让 AI 实时读取 Rails 应用日志
这个工具列出应用中所有 ActiveRecord/Sequel 模型,并给出每个模型对应的文件路径和行号。AI 可以在修改某个业务逻辑前,先快速了解相关的数据模型全貌。
支持跨应用和 gem 依赖的源码定位。与 grep 不同,它通过 Ruby 的运行时反射(Method#source_location)获取真实定义位置,能处理 metaprogramming(如 define_method)生成的动态方法。
从代码结构看,Tidewave Rails 采用经典的 Rack 中间件架构,核心组件分为几层:
中间件层:QuietRequestsMiddleware 静默处理 /tidewave 路径下的请求(避免污染正常日志);ExceptionsMiddleware 捕获并格式化异常。
数据库适配层:DatabaseAdapter 抽象了 ORM 差异,同时支持 ActiveRecord 和 Sequel 两种 ORM,通过适配器模式封装了各自的查询执行逻辑。这意味着无论应用用哪种 ORM,Tidewave 都能正确查询数据库。
工具注册层:Tool 基类使用 Classdescendants 模式(Ruby 元编程惯用法)自动收集所有 Tool 子类,工具注册不依赖显式配置,新增工具只需继承 Tool 类即可。
Rack 请求处理:Tidewave 接受符合 MCP 协议(streamable HTTP)的请求,执行对应工具,返回 JSON 格式结果。服务端点为 /tidewave/mcp。
项目使用 Appraisal 管理多版本依赖矩阵,CI 测试覆盖:
这意味着 Tidewave 能同时支持老 Rails 应用(7.1)和最新 Rails 8 的新特性,兼容性有保障。
Tidewave Rails 不是一个独立服务,而是一个 gem 集成到已有 Rails 应用中。安装过程极为简单:
# Gemfile
gem "tidewave", group: :development
然后在编辑器中配置 MCP 客户端(支持 Claude Code、Codex、Cursor、VS Code 等主流工具),指向 http://localhost:3000/tidewave/mcp 即可。
这不是独立部署场景——它依赖目标 Rails 应用运行,因此 quick_deploy 为 partially_supported:gem 安装简单,但需要先有可运行的 Rails 项目。
DROP TABLE)没有防护,需要开发者自行约束使用场景。Tidewave 代表了一种新兴趋势:将 AI Agent 的"感知边界"从静态代码扩展到运行时状态。此前主流方案(如 Continue.dev、Roo)侧重代码编辑和检索,而 Tidewave 的核心创新在于"让 AI 看到数据库和日志",这从根本上改变了 AI 对应用行为的认知质量。
从增长曲线看,477 星、Apache-2.0 许可、与 José Valim 的强背书,使这个项目在 Rails 生态中已形成差异化定位。随着 Claude Code、Cursor 等工具逐步支持 MCP 协议,Tidewave 的工具集可以被任何兼容 MCP 的 Agent 调用,生态扩展性良好。
总结:Tidewave Rails 是一款专注于"让 AI 理解 Rails 应用真实状态"的中间件工具,适合使用 Rails 进行日常开发并依赖 AI Agent 辅助编码的团队。其集成成本低、能力独特,但使用时需注意安全边界。对于纯 Phoenix/Elixir 项目,则需关注同家的独立 Tidewave 产品。