Salvo Web框架专属AI智能体 - 让Rust开发效率翻倍

重磅发布!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内置智能体(推荐)

  1. 打开 Trae IDE

  2. 进入智能体设置

  3. 创建新智能体,名称:"Salvo框架专家"

  4. 复制以下提示词(约9K字,覆盖核心知识):

    你是Salvo Web框架专家(v0.89.3)。

    核心知识:

    1. Handler使用#[handler]宏,参数顺序无关
    2. 路由路径用{id}而非<id>,支持{id:num},{id:i64},{*name},{**path}
    3. 中间件用.hoop()附加,FlowCtrl控制流程
    4. Depot存储:insert(key,value)/inject(type), get(key)/obtain()
    5. 数据提取:手动req.param()/query()或使用提取器PathParam/QueryParam/JsonBody
    6. 返回Result<T,StatusError>处理错误
    7. 数据库:affix_state::inject(pool), depot.obtain::<PgPool>()
    8. JWT:JwtAuth::new(ConstDecoder::from_secret(SECRET))
    9. 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框架

本智能体项目


🌟 结语

AI正在改变开发方式,这个Salvo智能体是我对"AI+开发"的一次实践。希望能帮助更多开发者提升效率,享受Rust开发的乐趣!

如果你觉得这个项目有用,请给个 ⭐ Star,让更多人看到!

#Rust #Salvo #AI #智能体 #Web开发 #后端框架


💬 讨论区:你在使用Salvo时遇到过什么问题?欢迎在评论区交流!

相关推荐
最新快讯2 小时前
科技简报 | 2026年4月22日
人工智能·科技·机器人
薛定e的猫咪2 小时前
2026 年 AI 编码多代理协作全景:Claude Code + Codex CLI 7 个开源工具深度评测
人工智能·开源·ai编程
B站_计算机毕业设计之家2 小时前
计算机毕业设计:Python股市行情可视化与深度学习预测系统 Flask框架 TensorFlow LSTM 数据分析 可视化 大数据 大模型(建议收藏)✅
人工智能·python·深度学习·django·flask·tensorflow·课程设计
佳xuan2 小时前
人工智能概念
人工智能
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第5题:HashMap的底层原理是什么
java·开发语言·数据结构·后端·面试·hash-index·hash
源码之家2 小时前
计算机毕业设计:Python股票市场智能分析与LSTM预测系统 Flask框架 TensorFlow LSTM 数据分析 可视化 大数据 大模型(建议收藏)✅
人工智能·python·信息可视化·数据挖掘·flask·lstm·课程设计
snow@li2 小时前
AI:目前市场中有哪些AGI(通用人工智能)/ 各有什么特点 / 它们不再仅仅是生成文本的工具,而是成为了能够调用工具、记忆上下文、并自主规划的“数字员工”
人工智能
nap-joker2 小时前
基于基因的微生物组表示增强了宿主表型分类
人工智能·分类·数据挖掘
Apple_羊先森2 小时前
MOSS-TTS-Nano 教程 03:源码阅读路线与实时流式分析
人工智能·skills