重磅发布!Salvo Web框架专属AI智能体 - 让Rust开发效率翻倍
原版项目 GitHub 仓库: https://github.com/salvo-rs/salvo-skills
🎉 项目介绍
经过精心整理和优化,我发布了基于官方原版整合后的简洁版 Salvo Web框架专属AI智能体 !这是一个专为 Salvo 打造的AI知识库,整合了28个核心技能模块,覆盖从基础到高级的全部开发场景。
无论你是Salvo新手还是资深开发者,这个智能体都能帮你:
- ✅ 快速生成符合最佳实践的代码
- ✅ 解决开发中遇到的各种问题
- ✅ 学习Salvo框架的核心概念
- ✅ 提升Rust Web开发效率
📦 什么是Salvo?
Salvo 是一个基于 Rust 的异步 Web 框架,具有以下特点:
- 🚀 高性能 - 基于 Tokio 异步运行时
- 📝 易用性 - 直观的API设计,学习曲线平缓
- 🔧 灵活性 - 强大的中间件系统
- 🌐 功能丰富 - 内置路由、模板、WebSocket、OpenAPI等
- 📦 生态完善 - 支持JWT认证、数据库集成、CORS等
🤖 智能体功能概览
28个技能模块全覆盖
本项目整合了 28个独立的Skill模块,每个模块都包含详细的说明、代码示例和最佳实践:
📌 核心框架 (5个)
| Skill | 说明 |
|---|---|
| salvo-basic-app | 创建基础Salvo应用,包含Handler、Router和服务器设置 |
| salvo-routing | 配置路由,支持路径参数、嵌套路由和过滤器 |
| salvo-middleware | 实现中间件,用于认证、日志、CORS和请求处理 |
| salvo-error-handling | 优雅地处理错误,自定义错误类型和错误页面 |
| salvo-path-syntax | 路径参数语法指南,{}语法(v0.76+)和迁移示例 |
📌 数据处理 (5个)
| Skill | 说明 |
|---|---|
| salvo-data-extraction | 从请求中提取和验证数据(JSON、表单、查询参数、路径参数) |
| salvo-database | 集成数据库,支持SQLx、Diesel、SeaORM等ORM |
| salvo-file-handling | 处理文件上传、下载和多部分表单 |
| salvo-static-files | 提供静态文件、目录和嵌入式资源服务 |
| salvo-caching | 实现缓存策略,提升性能 |
📌 安全认证 (6个)
| Skill | 说明 |
|---|---|
| salvo-auth | 实现认证和授权(JWT、Basic Auth、Session) |
| salvo-session | 管理用户会话,用于登录、购物车和偏好设置 |
| salvo-csrf | 防护跨站请求伪造攻击 |
| salvo-cors | 配置CORS和安全头,支持浏览器访问 |
| salvo-rate-limiter | 实现限流,保护API免受滥用 |
| salvo-tls-acme | 配置TLS/HTTPS,自动证书管理 |
📌 实时通信 (3个)
| Skill | 说明 |
|---|---|
| salvo-realtime | 实时功能概述,WebSocket和SSE |
| salvo-websocket | 全双工双向WebSocket通信 |
| salvo-sse | 服务器推送事件,用于实时通知和订阅 |
📌 性能运维 (5个)
| Skill | 说明 |
|---|---|
| salvo-compression | 压缩HTTP响应,支持gzip、brotli、zstd |
| salvo-timeout | 配置请求超时,防止慢请求 |
| salvo-concurrency-limiter | 限制并发请求,保护资源 |
| salvo-graceful-shutdown | 优雅关闭,处理进行中的请求 |
| salvo-logging | 实现请求日志、追踪和可观测性 |
📌 高级功能 (4个)
| Skill | 说明 |
|---|---|
| salvo-openapi | 从Handler自动生成OpenAPI文档 |
| salvo-proxy | 实现反向代理,用于负载均衡和API网关 |
| salvo-flash | Flash消息,用于重定向后的一次性通知 |
| salvo-testing | 使用TestClient编写单元和集成测试 |
核心能力
核心能力
1️⃣ 代码生成
rust
// 只需说:"创建一个带JWT认证的Salvo API"
// 智能体自动生成:
#[handler]
async fn login(body: JsonBody<LoginRequest>) -> Result<Json<LoginResponse>, StatusError> {
let claims = JwtClaims {
sub: body.username.clone(),
exp: (chrono::Utc::now() + chrono::Duration::hours(24)).timestamp(),
};
let token = encode(&Header::default(), &claims, &EncodingKey::from_secret(SECRET.as_bytes()))
.map_err(|_| StatusError::internal_server_error())?;
Ok(Json(LoginResponse { token }))
}
2️⃣ 问题诊断
用户:"路由匹配不到,怎么回事?"
AI:"Salvo v0.76+ 使用 {id} 语法,不是 <id>。检查你的路由配置:
Router::with_path("users/{id}") // ✅ 正确
Router::with_path("users/<id>") // ❌ 错误"
3️⃣ 最佳实践指导
- 推荐使用提取器(Extractors)而非手动提取
- 正确处理错误返回
Result<T, StatusError> - 数据库连接池通过
affix_state::inject()注入 - OpenAPI文档自动生成技巧
🚀 快速开始
方式一:Trae IDE内置智能体(推荐)
-
打开 Trae IDE
-
进入智能体设置
-
创建新智能体,名称:"Salvo框架专家"
-
复制以下提示词(约9K字,覆盖核心知识):
你是Salvo Web框架专家(v0.89.3)。
核心知识:
- Handler使用#[handler]宏,参数顺序无关
- 路由路径用{id}而非<id>,支持{id:num},{id:i64},{*name},{**path}
- 中间件用.hoop()附加,FlowCtrl控制流程
- Depot存储:insert(key,value)/inject(type), get(key)/obtain()
- 数据提取:手动req.param()/query()或使用提取器PathParam/QueryParam/JsonBody
- 返回Result<T,StatusError>处理错误
- 数据库:affix_state::inject(pool), depot.obtain::<PgPool>()
- JWT:JwtAuth::new(ConstDecoder::from_secret(SECRET))
- OpenAPI:用#[endpoint]替代#[handler],使用提取器而非手动提取
依赖:
salvo = { version = "0.89.3", features = ["full"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }提供完整可运行的代码示例,遵循官方最佳实践。
方式二:项目级Skills(完整版 - 推荐)
将完整的28个Skill模块放入你的项目,享受无字符限制的完整知识库:
原版完整28个Skills(官方仓库)
bash
# 克隆原版完整Skills(28个独立模块)
git clone https://github.com/salvo-rs/salvo-skills.git
# 复制到你的Salvo项目
cp -r salvo-skills/salvo-* your-project/.trae/skills/
简洁版智能体(GitCode - 推荐用于Trae)
如果你只需要一个整合的简洁版智能体(适合Trae IDE的9K字限制):
bash
# 克隆简洁版智能体(已整合为单个文件)
git clone https://gitcode.com/qq_21460781/SalvoWebskills.git
# 复制到Trae技能目录
cp SalvoWebskills/.trae/skills/salvo-framework/SKILL.md your-project/.trae/skills/salvo-framework/
项目结构
your-salvo-project/
├── .trae/
│ └── skills/
│ ├── salvo-basic-app/SKILL.md
│ ├── salvo-routing/SKILL.md
│ ├── salvo-middleware/SKILL.md
│ ├── salvo-database/SKILL.md
│ ├── salvo-auth/SKILL.md
│ ├── salvo-websocket/SKILL.md
│ ├── salvo-openapi/SKILL.md
│ └── ... (共28个)
├── src/
│ └── main.rs
└── Cargo.toml
使用示例
安装后,你可以问AI:
- "Create a basic Salvo web server with a hello world endpoint"
- "Add JWT authentication to my Salvo API"
- "How do I extract JSON data from a POST request in Salvo?"
- "Set up a WebSocket chat handler in Salvo"
- "Generate OpenAPI documentation for my Salvo endpoints"
- "Configure CORS for my API"
- "Add rate limiting to protect my endpoints"
AI会自动加载对应的Skill,提供准确的框架专属指导。
优势
- ✅ 无字符限制 - 完整的28个Skill,每个都有详细说明
- ✅ 版本控制 - Skill文件随项目提交,团队共享
- ✅ 离线可用 - 无需网络,本地直接加载
- ✅ 自动激活 - AI自动识别Salvo相关提问并加载对应Skill
💡 使用示例
示例1:创建基础服务器
用户提问:
创建一个Salvo Hello World服务器
AI回答:
rust
use salvo::prelude::*;
#[handler]
async fn hello() -> &'static str {
"Hello World"
}
#[tokio::main]
async fn main() {
let router = Router::new().get(hello);
let acceptor = TcpListener::new("0.0.0.0:8080").bind().await;
Server::new(acceptor).serve(router).await;
}
Cargo.toml:
toml
[dependencies]
salvo = "0.89.3"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
示例2:数据库集成
用户提问:
如何集成SQLx数据库?
AI回答:
rust
use salvo::prelude::*;
use salvo::affix_state;
use sqlx::{FromRow, PgPool};
#[derive(FromRow, Serialize)]
struct User { id: i64, name: String, email: String }
#[handler]
async fn list_users(depot: &mut Depot) -> Result<Json<Vec<User>>, StatusError> {
let pool = depot.obtain::<PgPool>()
.map_err(|_| StatusError::internal_server_error())?;
let users = sqlx::query_as::<_, User>("SELECT * FROM users")
.fetch_all(pool)
.await
.map_err(|_| StatusError::internal_server_error())?;
Ok(Json(users))
}
#[tokio::main]
async fn main() {
let pool = PgPool::connect("postgres://user:pass@localhost/db")
.await
.expect("db connect");
let router = Router::new()
.hoop(affix_state::inject(pool))
.push(Router::with_path("users").get(list_users));
let acceptor = TcpListener::new("0.0.0.0:8080").bind().await;
Server::new(acceptor).serve(router).await;
}
示例3:WebSocket实时通信
用户提问:
实现一个WebSocket echo服务器
AI回答:
rust
use salvo::prelude::*;
use salvo::websocket::WebSocketUpgrade;
#[handler]
async fn ws_handler(req: &mut Request, res: &mut Response) -> Result<(), StatusError> {
WebSocketUpgrade::new()
.upgrade(req, res, |mut ws| async move {
while let Some(Ok(msg)) = ws.recv().await {
if ws.send(msg).await.is_err() {
break;
}
}
})
.await
}
#[tokio::main]
async fn main() {
let router = Router::new().push(Router::with_path("ws").goal(ws_handler));
let acceptor = TcpListener::new("0.0.0.0:8080").bind().await;
Server::new(acceptor).serve(router).await;
}
📊 效果对比
| 场景 | 传统开发 | 使用智能体 |
|---|---|---|
| 创建基础项目 | 30分钟(查文档、写代码) | 2分钟(AI生成) |
| 集成JWT认证 | 1小时(理解原理、调试) | 5分钟(复制即用) |
| 排查路由问题 | 20分钟(搜索、尝试) | 30秒(AI解答) |
| 学习新功能 | 2小时(看文档、写Demo) | 10分钟(AI演示) |
效率提升:5-10倍!
📁 项目特色:28个独立Skill模块
与其他AI知识库不同,本项目采用 模块化设计,每个Skill都是独立的:
Skill文件结构
每个Skill目录包含:
salvo-auth/
└── SKILL.md # 包含YAML frontmatter和详细说明
Skill格式示例
markdown
---
name: salvo-auth
description: Implement authentication and authorization using JWT, Basic Auth, or custom schemes. Use for securing API endpoints and user management.
version: 0.89.3
tags: [security, authentication, jwt, basic-auth]
---
# Salvo Authentication
## JWT Authentication
```toml
[dependencies]
salvo = { version = "0.89.3", features = ["jwt-auth"] }
jsonwebtoken = "9"
详细代码示例和最佳实践
为什么选择模块化?
| 优势 | 说明 |
|---|---|
| 按需加载 | AI只加载相关的Skill,节省token |
| 易于维护 | 更新单个Skill不影响其他模块 |
| 社区贡献 | 开发者可以单独提交某个Skill的改进 |
| 灵活组合 | 可以选择性使用需要的Skill |
| 版本管理 | 每个Skill可以独立版本控制 |
🎯 适用人群
- Rust初学者 - 快速入门Salvo框架
- 全栈开发者 - 快速搭建后端API
- 技术团队 - 统一开发规范,提升协作效率
- 独立开发者 - 加速项目开发,减少踩坑
🔧 技术栈
- 框架: Salvo v0.89.3
- 语言: Rust
- 运行时: Tokio
- 数据库: SQLx / SeaORM / Diesel
- 认证: JWT / Basic Auth / Session
- 文档: OpenAPI 3.0
📚 相关资源
Salvo框架
- Salvo官网: https://salvo.rs
- GitHub仓库: https://github.com/salvo-rs/salvo
- 在线文档: https://docs.rs/salvo
本智能体项目
-
原版完整28个Skills: https://github.com/salvo-rs/salvo-skills
- 包含28个独立的Skill模块
- 每个模块都有详细的说明和示例
- 适合深度开发和团队共享
-
简洁版智能体(GitCode): https://gitcode.com/qq_21460781/SalvoWebskills.git
- 整合为单个文件,约9K字
- 适合Trae IDE内置智能体使用
- 快速查阅,即开即用
🌟 结语
AI正在改变开发方式,这个Salvo智能体是我对"AI+开发"的一次实践。希望能帮助更多开发者提升效率,享受Rust开发的乐趣!
如果你觉得这个项目有用,请给个 ⭐ Star,让更多人看到!
#Rust #Salvo #AI #智能体 #Web开发 #后端框架
💬 讨论区:你在使用Salvo时遇到过什么问题?欢迎在评论区交流!