rails-ai-context
为 Rails 应用武装 39 个 MCP 工具,让 AI 实时查询真实 schema、模型、路由和约定,从源头消灭编码错误
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为 Rails 应用武装 39 个 MCP 工具,让 AI 实时查询真实 schema、模型、路由和约定,从源头消灭编码错误
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
"这条迁移语句,AI 又给我写了一遍 subscription_status 字段——我们三个月前就加过了。"
如果你长期用 AI 辅助 Rails 开发,这样的场景一定不陌生:AI 在 user.posts 上报 NoMethodError,因为实际关联叫 user.articles;AI 生成了 FactoryBot 的测试用例,而你整个项目用的其实是 fixtures;AI 调用了 before_action :authenticate_user!,却完全没注意到父控制器里这个过滤器。这些错误不是 AI 笨,而是 AI 从训练数据里猜你的代码长什么样,而你的代码偏偏不是那个样子。
rails-ai-context 的作者 cristine(GitHub @crisnahine)正是被这个问题折磨了太久,于是在 2026 年 3 月开源了这个项目。她在 README 里写得很直接:"AI 编码的真正成本不是 token,而是修正循环——你发现了,修复了,重新 prompt,然后别的地方又坏了。"这个 gem 就是要从源头消灭"猜"。
rails-ai-context 的思路非常清晰:不再让 AI 靠记忆或推理,而是让 AI 实时查询你真实运行的 Rails 应用。
安装方式极其简单,两行命令搞定:
gem "rails-ai-context", group: :development
rails generate rails_ai_context:install
或者独立使用,完全不依赖 Gemfile:
gem install rails-ai-context
cd your-rails-app
rails-ai-context init
rails-ai-context serve
安装完成后,你的 AI 工具(Claude Code、Cursor、Copilot、OpenCode、Codex CLI)就拥有了一组新的"读取引擎"——39 个工具,5 种资源模板,专门查询你应用的实际状态:数据库 schema、模型关联、路由配置、控制器继承链、视图模板、测试风格,甚至 Stimulus 控制器参数。

rails-ai-context 的核心能力建立在两个技术支柱上。
第一是 Prism AST 解析。 Ruby 3.1+ 将 Prism 纳入了标准库,项目对 Ruby 3.1~3.4 均提供支持。Prism 负责解析 Rails 模型文件,提取关联(associations)、作用域(scopes)、回调(callbacks)和枚举(enums)。每个解析结果都会被打上 [VERIFIED] 或 [INFERRED] 标签——前者代表从 AST 严格推导的事实,后者代表基于代码结构的推断。这种双重置信度机制让 AI 能够区分"绝对正确"和"大概率正确",避免在灰色地带盲目行动。
第二是 Model Context Protocol(MCP)。 这是 Anthropic 主导的 AI 工具互操作协议,rails-ai-context 同时实现了 stdio 和 HTTP 两种传输方式。stdio 模式下,MCP Server 作为独立子进程运行,AI 工具直接通过协议调用工具;HTTP 模式下,Server 以 Rails Engine 挂载到 /mcp 路径,复用已有路由、认证和中间件,对现有 Rails 应用侵入性极低。
项目支持 Rails 7.0~8.1 四个大版本,测试套件包含超过 2600 个测试用例,覆盖了工具的各个方面。
启动后,AI 工具通过 MCP 协议调用工具,例如 search_code 可以追踪某个方法的定义、源码、所有调用方和测试用例,一次返回相当于 4~5 次顺序文件读取的结果量:
rails ai:serve
# config/routes.rb
mount RailsAiContext::Engine, at: "/mcp"
对于已有认证体系的应用,HTTP 模式天然继承了 current_user 等上下文,不需要额外处理。
不想启动 Server?直接用命令调用:
rails 'ai:tool[schema]' table=users
rails 'ai:tool[model_details]' model=User
rails 'ai:tool[controllers]' controller=PostsController action=create
当 AI 需要修改一个 PostsController#create 时,它通常不知道父类 ApplicationController 里还有个 before_action :authenticate_user! 过滤器。使用了 rails-ai-context 之后,controllers 工具会返回:
Filters: before_action :authenticate_user!, before_action :set_post (only: show, edit)
Strong params: post_params → title, body, published_at
Renders: redirect_to @post | render :new
AI 直接看到了认证过滤器、实际参数和白名单渲染路径,不需要开发者兜底修正。
没有工具是完美的,rails-ai-context 有几个值得注意的限制:
性能开销:Prism AST 解析在大型模型文件上耗时不可忽视,尤其是首次启动时的 cold parse。如果你的应用有数百个模型,每次 AI 启动时触发全量解析可能需要数秒。
工具锁定:目前最佳体验绑定在 MCP 协议上。对于还未支持 MCP 的 AI 工具(如某些老版本 Copilot),只能退而使用 CLI 模式,自动化程度大打折扣。
生态局限:顾名思义,这是一款专门服务 Rails 生态的工具。如果你的团队使用 Django、Express 或 Laravel,这套工具完全不适用。不过反过来看,Rails 生态长期缺乏此类基础设施,cristine 实际上是在填补一个空白赛道。
rails-ai-context 的出现折射出一个更大的趋势:AI 编码工具正在从"根据 prompt 生成代码"向"基于真实代码库上下文做决策"演进。这类工具的共同特征是:它们不再把代码库当作静态文本,而是当作实时查询的数据库。
类似的精神也在其他领域出现:BBR(Building Block Runtime)之于前端组件复用、Continue.dev 的代码库索引,以及 Cursor 的"上下文注入"功能,都在解决同一个问题——让 AI 的输出质量取决于它对真实代码的理解深度,而非 prompt 的精心程度。
对于 Rails 开发者而言,rails-ai-context 解决了一个长久的痛点:AI 不了解你的"约定"(conventions)。Rails 以"约定优于配置"闻名,但这恰恰成了 AI 的盲区——因为 AI 的训练数据里,最常见的是"标准 Rails 约定",而不是"你们团队的 Rails 约定"。这个 gem 的价值,正是把"你们团队的约定"显式化、工具化,让 AI 能够访问。

项目作者 cristine(@crisnahine),长期活跃于 Ruby/Rails 生态,开源动机来自真实的工程痛点。
一句话总结:rails-ai-context 是一个为 Rails 应用"武装"MCP 协议的 gem,让 AI 编码助手能够实时查询真实 schema、模型、路由和约定,从源头减少因"猜测"导致的修正循环。适合所有在 Rails 项目中使用 AI 辅助开发的团队,尤其推荐给模型关联复杂、测试风格独特的项目。