跳到正文
Hacker News· mike1o1·· 3 小时前AI 评分58

Rust off Rails 发布面向 AI 时代的 Rust Web 框架

Rust off Rails: The opinionated web stack for the AI era

AI 导读

Rust off Rails 发布一套不含框架代码的 Rust Web 框架,用 60 个 Markdown 文件规定技术栈、目录结构和开发约定,由编码智能体据此生成全部代码。

正文 · AI 翻译

一个零行代码的 Web 框架

Rust off Rails 是一组 Markdown 文件,告诉编码代理如何构建全栈 Rust Web 应用:一套受推崇的技术栈、一种布局、每件事只有一种做法。约定写在文字里。代理来写代码。

curl -fsSL https://rustoffrails.org/install.sh | sh

或者在 Claude Code 中:/plugin marketplace add rust-off-rails/rustoffrails

管道之前先读:安装脚本 · INSTALL.md

Railboard:AI 用 7 个提示词构建的实时看板 3:06 · 在 YouTube 上观看
  • 0 行框架代码
  • 60 个 Markdown 文件
  • 2 个数据库,同一份代码

~/code/bookshelf, claude

一段带插图的代理会话:/offrails:new 命令、访谈、计划、生成的文件,以及在 SQLite 和 Postgres 上通过的测试。
  1. > /offrails:new bookshelf:人们记录和评论书籍,之后为移动应用提供 API
  2. ● 读取 AGENTS.md → 访谈 · 原则 · 结构 · 技术栈 · 工作流
  3. ? 账户? a) 魔法链接(推荐) b) 邮箱 + 密码 c) 仅限邀请 d) 无
  4. › a
  5. ? 谁拥有数据? a) 每个用户(推荐) b) 团队 c) 共享
  6. › 你来决定
  7. ? 前端? a) htmx(推荐) b) inertia c) spa d) api
  8. › b
  9. ? UI 库? a) React(推荐) b) Svelte
  10. › b
  11. ? 为其他程序提供 API? a) 无 b) REST + OpenAPI c) GraphQL d) 两者都要
  12. › b
  13. ◆ 计划:inertia + Svelte · API rest · 生产环境用 Postgres(本地用 SQLite)
  14. Book title、author、rating 1–5 · 属于 User
  15. Review body、stars 1–5 · 属于 Book
  16. API /api/v1/books、/api/v1/reviews · bearer tokens
  17. › 是
  18. + migration/src/m20261013_120000_create_books.rs
  19. + src/models/book.rs · src/controllers/books.rs
  20. + web/src/pages/Books/Index.svelte (+ 71 个更多)
  21. ✓ cargo clippy --all-targets -- -D warnings
  22. ✓ pnpm --dir web typecheck · svelte-check
  23. ✓ cargo nextest run · SQLite · 142 个通过
  24. ✓ cargo nextest run · Postgres 18 · 142 个通过
  25. 完成定义:全绿。运行 bin/setup && bin/dev

它是什么

一个由决策而非代码构成的框架。

其他框架交付一个库。Rust off Rails 给你的代理判断力:它原本会即兴发挥的每个选择,都已做出并写下来。

根本规则

所有代码都由 AI 编写

每一行 Rust、SQL、HTML、CSS、TypeScript 以及每个 Dockerfile 都由代理编写。人类编写意图:product/ 中的规格、访谈中的回答、对话中的反馈。绝不写代码。这是其他规则所依赖的规则:样板代码免费,约定由代理强制执行,规格始终是事实来源。阅读 §0。

Markdown 就是框架

在框架会交付库的地方,Off Rails 交付精确的规格。任务队列、会话和 Inertia 适配器会作为你拥有的代码渲染进你的应用。

强烈的观点,面向代理

crate 选择、文件布局、命名、错误、测试:一次决定。代理从不争论 ORM。不一致才是敌人,而非不完美。

开箱即用

认证、任务、邮件、缓存、上传、实时、部署:每一层都有指南和配方,因此代理从不从空白页开始。浏览指南。

它如何运作

访谈。计划。生成。全绿。

智能体只问人类能回答的问题,把答案记录下来,只有当编译器和两个数据库上的测试套件都通过时才算完成。

  1. 01

    访谈

    只问产品问题,每个都附带推荐的默认值。“谁能看到这个?”可以问;“用哪个 ORM?”绝不要问。说“你决定”,它就采用默认值。

  2. 02

    计划

    一份紧凑的计划(资源、页面、任务、假设)写入 product/ 规格,并带有验收标准。规格是持久的记录;聊天不是。

  3. 03

    生成

    生成器配方,由智能体运行:迁移 → 模型 → 失败的测试 → 控制器 → 视图,一次一个垂直切片。

  4. 04

    通过

    fmt、clippy、在 SQLite 和 Postgres 上的测试,每条验收标准都追溯到测试,覆盖率门槛。通过,否则不算完成。

八项技能,每项对应一项工作

技能它做什么
/offrails:new访谈 → 计划 → 应用骨架 → 计划的功能,通过
/offrails:feature规格先行,然后代码。无参数时:构建 product/ 中变更的内容
/offrails:scaffold应用前端模式下的完整资源
/offrails:generate任务、邮件发送器、频道、认证、模型、迁移、任务
/offrails:check完成定义:fmt、clippy、在 SQLite 和 Postgres 上的测试
/offrails:doctor对照文档中的每项约定审计应用
/offrails:deploy部署配置和已验证的镜像;在任何面向外部的操作前先确认
/offrails:upgrade推进应用内置的框架并迁移约定

你将如何使用它

你写意图。智能体写其他一切。

  1. 1

    说出你想要什么,或写在 product/features/*.md 中。用平实的英语。

  2. 2

    智能体先写规格,再写代码:迁移、模型、视图、测试。

  3. 3

    完成意味着通过 SQLite 和 Postgres,每条验收标准都经过测试。

阅读指南

开发工具

深入了解你的应用。

追踪、性能分析器、本地邮箱、任务仪表板和实时在线状态,内置。你的智能体以 JSON 读取相同数据,因此可以检查自己的工作。

在发布构建中,仪表板每个请求约花费 1 µs,且默认仅用于开发。

开始导览

交易

当打字免费时,什么会改变。

一个数十万行的库
60 个 Markdown 文件
一个代码生成器二进制文件
generators/scaffold.md:智能体运行的配方
约定优于配置
约定优于斟酌:智能体从不争论用哪个 crate
为程序员幸福感优化
为智能体正确性优化:一切由编译器检查
魔法,为了省击键
没有魔法。当你不打字时,显式代码是廉价的。

一口气说清技术栈

每项工作一个 crate。不接受替换。

Axum·Tokio·SeaORM 本地 SQLite,生产 Postgres,同一份代码·Askama·Tailwind·lettre·tracing·一个二进制文件,一个 Docker 镜像

FRONTEND_MODE,在访谈中一次性选定

htmx 默认

Askama 模板,编译时检查,加上 htmx。无需 Node。适用于 CRUD 应用、仪表板、内容站点(比如这个)。

inertia

通过生成的 Inertia 适配器,使用服务端路由和控制器的 React 或 Svelte 页面。当你想要 JS UI 时的选择。

spa

一个单独的单页应用加 JSON API,适用于 UI 必须是独立应用的情况。类型通过 ts-rs 从 Rust 流转。

api 进行中

完全没有 UI:一个后端和面向移动应用、合作伙伴与脚本的版本化 API。

UI_LIBRARY
react(默认)或 svelte,用于 inertia、spa 和 htmx 岛屿
API
none、rest(OpenAPI + tokens)、graphql 或 both:一个公开的、版本化的 API,独立于 UI

而在数据库中:一个任务队列、一个缓存和 pub/sub。数据库是唯一的基础设施。

站在巨人的肩膀上

Rails 和 Phoenix 的精华,合二为一。

这里的好点子没有一个是新的。我们从两个我们热爱的框架中挑选了那些经受住时间考验的,赋予每个一个 Rust 的形态,并把它们写下来供 agent 使用。

来自 Ruby on Rails

来自 Elixir 和 Phoenix

还有

实地测试

真实应用,由 agent 移植。

Agent 将广受欢迎的开源应用从 Rails 移植到 Rust。它们遇到的每一个粗糙边缘都会反馈到框架中。

  • 来自 Fizzy 进行中

    fizzyer

    Fizzy 的看板和卡片,由 agent 在 Rust 中重建。

  • 来自 FreeScout 进行中

    一个 FreeScout 移植

    一个共享收件箱帮助台,由 agent 在另一台机器上构建。

  • 来自 Uptime Kuma 已构建

    uptime-offrails

    在 SQLite 和 Postgres 上 1530 个测试全部通过。

使用 GPT-6 Luna Claude Sonnet 5.5 Meta 的 Muse Wonder 1 通过 opencode 使用 GLM 5.3 Flash 目标:小巧、廉价的 agent 也能完成真正的工作。

阅读实地测试

开始使用

安装插件。描述应用。观看。

1 使用 Claude Code(推荐)

/plugin marketplace add rust-off-rails/rustoffrails
/plugin install offrails@offrails

然后,在一个空目录中:

/offrails:new bookshelf: people track the books they've read and review them

Agent 会采访你,确认一个计划,然后构建。技能也会在普通请求上触发(“给我做一个新的 Rust Web 应用……”)。

2 使用 Codex、Cursor 或任何读取 AGENTS.md 的 agent

Read /path/to/rustoffrails/AGENTS.md and make me a new app called "bookshelf".

生成的应用带有 AGENTS.md 和一个内置的 .offrails/,因此后续会话无需设置。

3 然后

用通俗语言描述功能,或将它们作为规格写入 product/:

Scaffold Book with title:string, author:string, published_on:date, rating:integer.
Users must be logged in to create books.

完整演示 你将如何使用它 阅读文档 在 GitHub 上加星

来源:Hacker News · rustoffrails.org