作为一名Go开发者,你是否常常面临以下挑战?
- 每次启动新项目,都需要重复搭建基础架构,耗时费力。
- 业务逻辑代码与基础设施代码混杂在一起,维护成本越来越高。
- 团队成员的代码风格各异,代码审查(Code Review)效率低下。
- 渴望建立统一的开发规范,却不知从何入手。
- 随着项目规模扩大,模块间的解耦与协作变得异常困难。
如果你正被这些问题困扰,那么不妨了解一下 jzero,一个旨在提升Go开发体验的开源工具。
什么是 jzero?
jzero 是一个基于 go-zero 框架开发的增强型开发工具集,它通过以下两种核心方式提升开发效率:
- 🏗️ 模板生成基础框架代码:根据描述文件(如
.api、.proto、SQL)自动生成对应的框架代码。
- 🤖 Agent Skills 生成业务代码:内置
jzero-skills,引导 AI(如 Claude)生成符合最佳实践的业务逻辑代码。
其核心设计理念与价值包括:
- 开发体验优先:提供一站式生产可用解决方案,支持一键初始化 API、RPC、Gateway 项目。
- AI 赋能:通过预设的 Skills,让 AI 助手生成高质量的业务代码。
- 模板驱动:默认生成的代码即代表最佳实践,并支持自定义远程模板,打造企业专属底座。
- 插件化架构:功能模块分层设计,支持插件化,使团队协作更顺畅。
- 内置开发组件:包含缓存、数据库迁移、配置中心、条件查询等常用工具。
- 生态兼容:完全兼容 go-zero 生态,旨在解决其痛点并扩展新功能。
- 接口灵活:不绑定特定数据库、缓存或配置中心,可按需自由选择。
项目地址:
基础框架代码生成
jzero 能够基于可描述文件,自动生成生产就绪的基础框架代码。
从 .api 文件生成 API 框架代码
给定一个描述 API 的 .api 文件:
info (
go_package: “user” // 定义生成的 type 文件夹位置
)
type User {
id int `json:“id”`
username string `json:“username”`
}
type PageRequest {
page int `form:“page”`
size int `form:“size”`
}
type PageResponse {
total uint64 `json:“total”`
list []User `json:“list”`
}
@server (
prefix: /api/user // 路由前缀
group: user // 生成的 handler/logic 文件夹位置
jwt: JwtAuth // 启用 JWT 认证
middleware: AuthX // 中间件
compact_handler: true // 合并该 group 的 handler 到同一个文件
)
service userservice {
@doc “用户分页”
@handler Page
get /page (PageRequest) returns (PageResponse)
}
执行生成命令后,jzero 会自动创建 Handler、Logic、Types、路由注册以及中间件等全套代码。
特性说明:
go_package: 用于定义 types 结构体生成的文件夹位置,避免单个 types.go 文件过于庞大。
compact_handler: true: 将同一分组(group)下的所有 handler 合并到同一个文件中,有效减少项目中的文件数量。
从 .proto 文件生成 RPC 框架代码
对于一个定义服务的 .proto 文件:
syntax = “proto3”;
package user;
option go_package = “./types/user”;
// 引入 jzero 扩展
import “jzero/api/http.proto”;
import “jzero/api/zrpc.proto”;
import “google/api/annotations.proto”;
// 引入公共 proto
import “common/common.proto”;
// 引入验证规则
import “buf/validate/validate.proto”;
message GetUserRequest {
int64 id = 1;
}
message CreateUserRequest {
string username = 1 [
(buf.validate.field).string = {
min_len: 3,
max_len: 20,
pattern: “^[a-zA-Z0-9_]+$”
}
];
string email = 2 [
(buf.validate.field).string.email = true,
(buf.validate.field).string.max_len = 254,
(buf.validate.field).string.min_len = 3
];
string password = 3 [
(buf.validate.field).cel = {
id: “password.length”
message: “password must contain at least 8 characters”
expression: “this.size() >= 8”
}
];
}
message CreateUserResponse {
int64 id = 1;
string username = 2;
}
message GetUserResponse {
int64 id = 1;
string username = 2;
}
service UserService {
// 为整个 service 添加 HTTP 中间件
option (jzero.api.http_group) = {
middleware: “auth,log”,
};
// 为整个 service 添加 RPC 中间件
option (jzero.api.zrpc_group) = {
middleware: “trace”,
};
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse) {
option (google.api.http) = {
post: “/api/v1/user/create”,
body: “*”
};
}
rpc GetUser(GetUserRequest) returns (GetUserResponse) {
option (google.api.http) = {
get: “/api/v1/user/{id}”,
};
};
}
生成命令会输出 RPC 服务端与客户端代码、HTTP Gateway 以及配置的中间件。
特性说明:
- 支持多 Proto 文件:可在项目中定义多个
.proto 文件(例如 user.proto, order.proto)。
- 支持引入公共 Proto:方便管理公共的消息定义。
- 一键生成 RPC 客户端:生成独立的客户端代码,与服务端解耦,便于调用。
- 内置字段验证:基于
buf.validate 实现自动参数校验,支持强大的 CEL(Common Expression Language)表达式。
- 灵活中间件配置:支持为整个 Service 或单个 RPC Method 分别配置 HTTP 及 RPC 中间件。
从 SQL/数据库生成 Model 代码
无论是本地的 SQL 文件还是远程数据库连接,jzero 都能生成对应的数据模型代码。
CREATE TABLE `user` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
基于上述 SQL,jzero 将生成包含 CRUD 操作的 Model 层代码,并支持复杂的链式查询。
特性说明:
- 多种数据源:支持 SQL 文件或直接连接远程数据库来生成代码。
- 自动生成 CRUD 接口:为基础的表操作自动生成代码。
- 复杂查询支持:提供链式查询方法,以应对复杂的业务查询场景。
- 一套代码,多数据库适配:生成的模型代码兼容 MySQL、PostgreSQL、SQLite 等多种数据库,切换底层存储时无需重新生成代码。
灵活的生成策略与配置
jzero 提供了高度灵活的生成策略,以适应不同开发阶段的需求,显著提升大型项目的代码生成效率。
# 仅生成与 Git 改动相关的文件对应的代码
jzero gen --git-change
# 指定特定描述文件进行生成
jzero gen --desc desc/api/user.api
在配置方面,jzero 支持多种方式的自由组合,告别复杂的命令行指令:
- 项目配置文件 (
.jzero.yaml)
- 命令行参数
- 环境变量
# 使用默认配置文件 .jzero.yaml 生成
jzero gen
# 指定其他配置文件生成
jzero gen --config .jzero.dev.yaml
这意味着你可以轻松为本地开发、测试、生产等不同环境准备独立的配置,实现一键切换。
Hooks 配置:jzero 还支持在代码生成前后执行自定义脚本,实现流程自动化。
# .jzero.yaml
# 全局 hooks
hooks:
before:
- echo “执行 jzero 指令前执行”
after:
- echo “执行 jzero 指令后执行”
# gen 指令专有配置
gen:
hooks:
before:
- echo “执行生成代码前执行”
- go mod tidy
after:
- echo “执行生成代码后执行”
通过 Agent Skills 生成业务代码
jzero 集成了 jzero-skills,能够引导 AI 工具自动生成符合项目规范和最佳实践的业务代码。
# 初始化,将 AI Skills 配置输出到 Claude 的默认技能目录(通常为 ~/.claude/skills)
jzero skills init
# 将 Skills 配置输出到当前项目的指定目录
jzero skills init --output .claude/skills
# 随后,在 Claude 等 AI 助手中用自然语言描述需求,建议以“jzero-skills”开头引导
AI 能协助完成哪些工作?
1. REST API 开发:
- 自动编写符合规范的
.api 描述文件(正确设置 go_package, group, compact_handler 等)。
- 自动执行
jzero gen --desc desc/api/xxx.api 命令生成框架代码。
- 自动实现 Logic 层的业务逻辑,严格遵循
Handler → Logic → Model 三层架构。
2. 数据库操作:
- 自动创建 SQL 迁移文件(
xx.up.sql 与 xx.down.sql)。
- 自动执行数据库迁移命令(
jzero migrate up)。
- 自动根据 SQL 文件生成 Model 代码(
jzero gen --desc desc/sql/xxx.sql)。
3. RPC 服务开发:
- 自动编写
.proto 文件来定义服务接口。
- 自动生成 RPC 服务端和客户端代码。
- 自动实现服务端的业务逻辑,同样遵循清晰的分层架构。
插件化架构
jzero 支持插件化开发,允许将功能模块作为独立的插件进行开发和加载,这对于大型项目和团队协作尤其有益。
# 1. 创建一个名为 helloworld 的 API 服务项目
jzero new helloword --frame api
cd helloworld
# 2. 向项目中添加一个独立的 API 插件
jzero new plugin_name --frame api --serverless
# 3. 添加一个“mono”类型的 API 插件(与主项目共用同一个 Go Module)
jzero new plugin_name_mono --frame api --serverless --mono
# 4. 编译并加载所有已创建的插件
jzero serverless build
# 5. 卸载所有插件
jzero serverless delete
# 6. 卸载指定的某个插件
jzero serverless delete --plugin plugin_name
插件化架构的优势:
- 📦 功能解耦:各功能模块可独立开发、测试和部署。
- 👥 高效协作:不同团队可以专注于自己负责的插件,减少冲突。
- 🔄 按需加载:应用程序可以根据运行时需求动态加载或卸载插件,组装灵活。
快速体验:5分钟上手
只需几步,你就能快速体验 jzero 带来的便捷。
# 1. 安装 jzero
go install github.com/jzero-io/jzero/cmd/jzero@latest
# 2. 一键检查本地开发环境是否就绪
jzero check
# 3. 创建一个新项目
# 创建 API 项目
jzero new helloworld --frame api
# 创建 RPC 项目
jzero new helloworld --frame rpc
# 创建 Gateway 项目
jzero new helloworld --frame gateway
cd helloworld
# 4. 下载项目依赖
go mod tidy
# 5. 运行服务
go run main.go server
# 服务启动后,可通过内置的 Swagger UI 查看和调试 API
# 访问:http://localhost:8001/swagger
相关生态项目
jzero-intellij IDE 插件
如果你使用的是 GoLand 或 IntelliJ IDEA,那么 jzero-intellij 插件能极大提升你的开发体验。
核心功能:
- 在 IDE 内一键创建
.api、.proto、.sql 等描述文件。
- 为
.api 文件提供语法智能高亮。
- 支持在描述文件(api/proto)与生成的 Logic 文件之间快速跳转。
- 在描述文件的行首和
.jzero.yaml 配置文件中添加便捷的“执行按钮”,直接生成代码。
下载地址:https://github.com/jzero-io/jzero-intellij/releases
jzero-admin 后台管理系统
这是一个基于 jzero 构建的、开箱即用的后台管理系统,内置了完整的 RBAC(基于角色的访问控制)权限管理模块。
核心特性:
- 完整的权限管理系统(用户、菜单、角色管理)。
- 支持 MySQL、PostgreSQL、SQLite 多种数据库。
- 后端采用插件化架构,易于扩展。
- 支持国际化。



在线演示:
GitHub:https://github.com/jzero-io/jzero-admin
作为一个致力于提升 Go 开发效率的开源项目,jzero 通过代码生成、AI 集成和插件化等特性,为构建微服务提供了新的思路。其详细的技术文档和丰富的生态工具,值得 Go 开发者深入探索和实践。如果你对如何优化开发流程感兴趣,欢迎在 云栈社区 交流更多实战经验。