Alun发布了0.3.0,真正面向AI Coding的Rust Web框架它来了,体验了之后真香!

💡 原文中文,约4800字,阅读约需12分钟。
📝

内容提要

Alun 是面向 AI Coding 的 Rust Web 框架,采用 Just Config 范式:一个接口即一个 async fn 加宏注解,scan() 自动注册路由,无需 Service、Repository 等样板代码。内核零 HTTP 与数据库依赖,能力按 feature 分层叠加,支持多租户、缓存、认证、任务等。设计目标是降低 Token 消耗、提高注意力浓度,让 AI 稳定生成业务代码。

🔎

延伸解读

AI Coding 框架的定位与设计取舍

Alun 明确面向 AI Coding 时代,而非传统人类手写代码场景。其设计优先满足大模型对代码结构的需求:更少 Token 消耗、更高 Attention 浓度、更低上下文噪音。这体现在 Just Config 范式上——消除 Service、Repository、Mapper 等非业务结构,将代码收敛为「一个接口 = 一个 async fn + 一个宏注解」。这种取舍意味着开发者需要接受更少的显式分层,以换取 AI 生成代码的稳定性和可预测性。

能力分层与依赖管理

Alun 内核 alun-core 零 HTTP、零数据库依赖,能力通过 feature 按需叠加。默认只是一个 HTTP 服务,认证、缓存、模板、文件存储、实时推送、可观测、导出导入、插件、异步任务、数据库等均需显式启用。预设 mini ⊂ lite ⊂ full 严格递增,也可完全按点拼。这种设计让项目不为未使用的代码买单,但要求开发者清楚各 feature 的职责边界,避免遗漏必要能力。

多租户与数据库操作的约定

开启 [tenant].enabled = true 后,App 自动挂载租户层:从表自动注入租户列、上下文缺失直接报错、原生 SQL 需显式承诺完整性。开发者不应手写 AND tenant_id = ?。数据库操作上,表名、主键、时间戳、软删除均有默认约定,错误直通——handler 恒为 ResResult<T>,数据层 DbError 可直接 ? 上来。这些约定减少了样板代码,但也要求遵循框架的默认规则,否则可能引入隐蔽问题。

文档与测试的工程化保障

Alun 将文档中的 rust 代码块通过 rustdoc 真实编译,防止 API 与代码漂移:可编译示例用 rust,no_run,示意片段用 rust,ignore。CI 包含 cargo test --workspace 完整门禁和 feature 分层纪律守卫。此外,AGENTS.md 提供 AI 检索与引用规范,docs/index.json 为机器可读索引,支持按 tag/summary 筛选、按需拉取。这些措施旨在确保框架在快速迭代中保持文档与代码一致,降低 AI 生成时的上下文噪音。

❓

Q&A

Alun 框架是什么?它和传统 Rust Web 框架有什么不同?

Alun 是面向 AI Coding 的 Rust Web 框架,采用 Just Config 范式:一个接口即一个 async fn 加宏注解,scan() 自动注册路由,无需 Service、Repository 等样板代码。内核零 HTTP 与数据库依赖,能力按 feature 分层叠加。

Alun 如何降低 AI 生成代码的 Token 消耗?

Alun 通过消除 Service/Repository/Mapper 等非业务结构和路由注册样板,把代码收敛为「一个接口 = 一个 async fn + 一个宏注解」,从而减少 Token 消耗、提高 Attention 浓度、降低上下文噪音,让 AI 稳定生成业务代码。

Alun 的快速上手步骤是什么?

在 Cargo.toml 添加 alun 依赖(如 features = ["lite"]),使用 use alun::prelude::*; 编写 handler 并用 #[alun::get("/")] 等宏注解,然后在 main 中调用 App::new().parse_cli().scan().start().await 即可。scan() 会自动发现所有标注的 handler。

Alun 支持哪些数据库?如何定义模型?

Alun 支持 PostgreSQL、SQLite、MySQL,通过 feature 选择驱动(如 postgres)。模型使用 #[derive(Model)] 和 #[table("invoices")] 等属性定义,字段可标注 #[key]、#[tenant]、#[unique] 等。API 统一,提供 insert、query、paginate、update 等方法。

Alun 的多租户功能如何工作?

开启 [tenant].enabled = true 后,App 自动挂载租户层:从表自动注入租户列,上下文缺失直接报错,原生 SQL 需显式承诺完整性。开发者无需手写 AND tenant_id = ? 条件。

Alun 的能力分层是如何设计的?有哪些可选的 feature?

Alun 默认只是一个 HTTP 服务,能力按 feature 分层叠加,不为没用的代码买单。可选 feature 包括:core(认证与权限)、cache(缓存)、template(模板)、fs/fs-minio(文件存储)、sse(实时推送)、metrics(可观测)、xlsx(导出导入)、plugin(插件)、task(异步任务)、sqlite/postgres/mysql(数据库驱动)。预设严格递增 mini ⊂ lite ⊂ full,也可按点拼。

Alun 的核心理念 Just Config 是什么?

Just Config 是 Alun 成为 AI Coding 框架的核心:消除 Service/Repository/Mapper 等非业务结构与路由注册样板,把代码收敛为「一个接口 = 一个 async fn + 一个宏注解」。这不只是更少代码,而是直接作用于大模型的 Token 预算与注意力分布。

Alun 如何保证文档中的代码示例与 API 一致?

Alun 通过文档门禁确保一致性:cargo test -p alun-docs-tests --doc 会真实编译 66 个 Markdown 模块中的 rust 代码块,防止 API 与代码漂移。可编译示例用 ```rust,no_run,示意片段用 ```rust,ignore。

🏷️

标签

➡️

继续阅读