编程 Gai:AI 原生的 Go Web 全栈框架

2026-05-21 16:19:43 +0800 CST views 157

Gai:AI 原生的 Go Web 全栈框架

标签: 开源项目 / Go / Web框架 / AI原生 / ORM
原文: 微信公众号「码农先森」https://mp.weixin.qq.com/s/jo1LUH2ApbUuMQ2yEF4Vpw
GitHub: https://github.com/Hlgxz/gai


核心亮点

Gai 是一个 AI 原生的 Go Web 全栈框架,融合 Go 语言的简洁高效与 Laravel 的优雅设计。通过 Schema 驱动开发AI 代码生成,让你用声明式的方式定义业务,框架自动推导出 API、数据库迁移、校验规则等全部代码。


AI 原生开发支持

Gai 是首个为所有主流 AI 编码工具内置规则文件的 Go 框架

gai new 创建的每个业务项目都自动包含全平台 AI 规则文件,让任何 AI 编程工具打开项目就能立即理解框架并正确编码。

支持的 AI 工具

AI 工具规则文件
Cursor.cursor/rules/gai.mdc
Claude CodeCLAUDE.md
GitHub Copilot.github/copilot-instructions.md
Windsurf.windsurfrules
Kiro.kiro/rules.md
Gemini / Qoder.gemini/style-guide.md
Roo Code / Cline.roo/rules.md + .clinerules
Augment / Antigravity.augment/rules.md
Codex CLIAGENTS.md

快速开始(AI 方式)

给任何 AI 编程助手发送:

请帮我用 Gai 框架 (https://github.com/Hlgxz/gai) 创建一个项目

AI 会自动执行:

go install github.com/Hlgxz/gai/cmd/gai@latest
gai new myapp --module github.com/user/myapp
cd myapp && go mod tidy

核心特性

特性说明
Schema 驱动用 YAML 描述业务模型,自动生成 Model、Controller、Migration、Routes
优雅的 APIGo 惯用风格为主,关键处借鉴 Laravel 的链式调用和表达式路由
服务容器类 Laravel 的依赖注入容器,支持 Singleton、Bind、ServiceProvider
多数据库 ORM链式查询构建器,支持 MySQL、PostgreSQL、SQLite
数据库迁移版本化的数据库迁移系统,支持 Up/Down/Rollback
认证系统多 Guard 设计,内置 JWT + 微信小程序认证
小程序 SDK微信/支付宝小程序登录、支付、消息推送
请求校验Laravel 风格的管道式校验规则 (`required
内置中间件CORS、Logger、Recovery、RateLimit 开箱即用
CLI 工具gai 命令行工具,项目脚手架、代码生成一键完成

项目结构

myproject/
├── app/
│   ├── controllers/     # 控制器
│   └── models/          # 模型
├── config/
│   └── app.yaml         # 配置文件
├── database/
│   └── migrations/      # 数据库迁移
├── routes/
│   └── routes.go        # 路由注册
├── schemas/             # Schema 定义文件
├── storage/             # 存储目录
├── .env                 # 环境变量
├── main.go              # 入口文件
└── go.mod

核心用法

路由

app := gai.New()
r := app.Router()

r.Get("/", homeHandler)
r.Post("/login", loginHandler)

r.Group("/api/v1", func(g *router.Group) {
    g.Use(middleware.Auth("jwt"))
    g.Get("/users", userCtrl.Index)
    g.Post("/users", userCtrl.Store)
    g.Get("/users/:id", userCtrl.Show)
    g.Resource("/posts", postCtrl)
})

ORM 查询

// 链式查询
users, err := orm.Get[User](
    orm.Query[User](db).
        Where("age", ">", 18).
        Where("status", "=", "active").
        OrderBy("created_at", "DESC").
        Limit(20),
)

// 分页
page, err := orm.Paginate[User](
    orm.Query[User](db).Where("status", "=", "active"),
    1, 20,
)

// 创建
user, err := orm.Create[User](db, &User{
    Name:  "张三",
    Email: "z@test.com",
})

Schema 驱动开发

创建 schemas/user.yaml

model: User
table: users
fields:
  - name: name
    type: string
    size: 100
    rules: required|min:2|max:50
  - name: email
    type: string
    unique: true
    rules: required|email
  - name: phone
    type: string
    size: 20
    rules: phone
  - name: status
    type: enum
    values: [active, inactive, banned]
    default: "'active'"

api:
  prefix: /api/v1/users
  actions: [index, show, store, update, destroy]
  auth: jwt

relations:
  - type: hasMany
    model: Post

生成代码

gai generate --schema schemas/user.yaml

自动产出:

  • app/models/user.go
  • app/controllers/user_controller.go
  • database/migrations/xxx_create_users_table.go
  • routes/user_routes.go

认证

// JWT
guard := auth.NewJWTGuard("your-secret", 7200)
token, _ := guard.IssueToken(userID, nil)

// 中间件保护路由
r.Group("/api", func(g *router.Group) {
    g.Use(authManager.Middleware("jwt"))
    // ...
})

微信小程序

wc := wechat.NewClient(wechat.Config{
    AppID:     "your-app-id",
    AppSecret: "your-app-secret",
})

// 登录
session, err := wc.Auth().Code2Session(code)

// 支付
result, err := wc.Pay().UnifiedOrder(&wechat.Order{
    Body:       "商品描述",
    OutTradeNo: "order-001",
    TotalFee:   100,
    OpenID:     session.OpenID,
})

// 订阅消息
err = wc.Message().SendSubscribe(&wechat.SubscribeMessage{
    ToUser:   openid,
    TemplateID: "tpl-id",
    Data:      map[string]wechat.MsgVal{"thing1": {Value: "订单已发货"}},
})

请求校验

validator := ghttp.NewValidator(input, map[string]string{
    "name":  "required|min:2|max:50",
    "email": "required|email",
    "phone": "phone",
    "age":   "numeric|min:0|max:150",
})
if errs := validator.Validate(); errs != nil {
    c.JSON(422, errs)
    return
}

CLI 命令

命令说明
gai new <name>创建新项目
gai serve启动开发服务器
gai serve -w热重载模式
gai make model <Name>生成模型
gai make controller <Name>生成控制器
gai make middleware <Name>生成中间件
gai make migration <name>生成迁移文件
gai generate --schema <path>从 Schema 生成代码
gai migrate执行数据库迁移
gai migrate rollback回滚迁移
gai migrate status查看迁移状态

技术栈

技术说明
HTTP基于 net/http,零第三方路由依赖
数据库database/sql + MySQL / PostgreSQL / SQLite 驱动
配置YAML + .env 环境变量
JWTgithub.com/golang-jwt/jwt/v5
CLIgithub.com/spf13/cobra
日志log/slog (Go 标准库)

写在最后

Gai 的核心价值在于 AI 原生

  • 内置全平台 AI 规则文件,AI 助手开箱即用
  • Schema 驱动开发,声明式定义业务
  • 自动生成 Model、Controller、Migration、Routes

对于使用 AI 辅助编程的 Go 开发者来说,这是一个值得尝试的框架。


本文整理自微信公众号「码农先森」,原文链接:https://mp.weixin.qq.com/s/jo1LUH2ApbUuMQ2yEF4Vpw
GitHub 项目地址:https://github.com/Hlgxz/gai

复制全文 生成海报 开源项目 Go Web框架 AI原生 ORM Schema驱动

推荐文章

使用临时邮箱的重要性
2025-07-16 17:13:32 +0800 CST
阿里云发送短信php
2025-06-16 20:36:07 +0800 CST
html夫妻约定
2024-11-19 01:24:21 +0800 CST
Requests库详细介绍
2024-11-18 05:53:37 +0800 CST
程序员茄子在线接单