devgen

module
v0.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2026 License: MIT

README

devgen

Go 代码生成工具集,专为现代开发工作流设计

Go Version VS Marketplace License

中文 | English


为什么选择 devgen?

特性 描述
🤖 AI 原生 内置 AI Rules 系统,让 AI 编程助手(CodeBuddy、Cursor、Kiro)理解你的代码生成规则
📦 规则管理 项目级 AI Rules 统一管理,一处定义,自动同步到 CodeBuddy/Cursor/Kiro
🧩 插件架构 基于 genkit 框架的插件系统,轻松开发自定义代码生成器
💡 智能 IDE VSCode 扩展提供语法高亮、智能补全、实时诊断,注解错误即时反馈
零配置 插件自描述注解元数据,IDE 自动识别,即插即用
🔧 开箱即用 内置 enumgen、validategen,覆盖最常见的代码生成场景

快速开始

安装
# 安装 devgen(包含所有工具)
go install github.com/tlipoca9/devgen/cmd/devgen@latest

# 或单独安装
go install github.com/tlipoca9/devgen/cmd/enumgen@latest
go install github.com/tlipoca9/devgen/cmd/validategen@latest
使用
devgen ./...                    # 运行所有生成器
devgen --include-tests ./...    # 同时生成测试文件
devgen --dry-run ./...          # 验证注解(不写入文件)
enumgen ./...                   # 仅运行枚举生成器
validategen ./...               # 仅运行验证生成器

核心特性

block-beta
    columns 4
    
    devgen["devgen CLI"]:4
    space down1<["加载"]>(down):2 space
    enumgen validategen custom["自定义插件"]:2
    space down2<["实现"]>(down):2 space
    genkit["genkit 框架"]:4
    Tool ConfigurableTool ValidatableTool RuleTool
    space down3<["驱动"]>(down):2 space
    vscode["VSCode 扩展"]:2 ai["AI 助手"]:2
    highlight["语法高亮"] complete["智能补全"] rules["读取 Rules"] suggest["代码建议"]
🤖 AI 原生集成

devgen 是首个内置 AI Rules 系统的 Go 代码生成工具。通过 RuleTool 接口,你的代码生成器可以自动生成 AI 编程助手能理解的文档。

支持的 AI 助手
助手 输出目录 文件扩展名 格式
Kiro .kiro/steering/ .md YAML frontmatter,包含 inclusionfileMatchPattern
CodeBuddy .codebuddy/rules/ .mdc YAML frontmatter,包含 descriptionglobsalwaysApply
Cursor .cursor/rules/ .mdc YAML frontmatter,包含 descriptionglobsalwaysApply
AI Rules 快速开始

列出可用的 AI 助手:

devgen rules --list-agents

预览规则(不写入文件):

devgen rules --agent kiro

为你的 AI 助手生成规则:

# 为所有 AI 助手生成
devgen rules --agent all -w

# 或单独生成
devgen rules --agent kiro -w
devgen rules --agent codebuddy -w
devgen rules --agent cursor -w
项目规则管理

除了内置工具的 AI Rules,devgen 还支持管理项目级自定义规则——让团队成员无论使用哪个 AI IDE 都能共享统一的规则。

配置:在 devgen.toml 中指定规则目录:

[rules]
source_dir = ".devgen/rules"    # 项目规则目录
include_builtin = true          # 是否包含内置工具规则(默认 true)

规则格式:Markdown + YAML frontmatter

---
description: 项目发布流程规范
globs: ["Makefile", "*.sh"]
alwaysApply: false
---

# 发布流程

1. 更新版本号
2. 运行测试
3. 创建 tag
...

一键同步

devgen rules --agent all -w

.devgen/rules/ 下的规则转换为各 AI IDE 格式,输出到对应目录。

解决的痛点

  • ✅ 团队使用不同 AI IDE,规则不再需要手动同步
  • ✅ 规则集中管理,一处修改,全局生效
  • ✅ 统一的 Markdown 格式,易于编写和维护
AI Rules 提供的能力

生成的 rules 文件让 AI 助手能够:

  • ✅ 理解你的注解语法和参数
  • ✅ 提供准确的代码补全建议
  • ✅ 在你编写代码时给出正确的使用示例
  • ✅ 建议正确的错误处理模式
  • ✅ 展示完整的工作示例
示例:生成的 Kiro 规则
---
inclusion: fileMatch
fileMatchPattern: ['**/*.go']
---

# enumgen - Go 枚举代码生成器

## 何时使用 enumgen?

在以下场景使用 enumgen:
- 为枚举类型生成 String() 方法
- 添加 JSON/SQL 序列化支持
- 实现验证方法

## 快速开始

### 步骤 1:定义枚举类型
\`\`\`go
// Status 表示订单状态
// enumgen:@enum(string, json)
type Status int

const (
    StatusPending Status = iota + 1
    StatusActive
)
\`\`\`

### 步骤 2:运行生成
\`\`\`bash
devgen ./...
\`\`\`
...

详见 AI Rules 系统文档


🧩 插件系统

基于 genkit 框架的插件架构,让你轻松开发自定义代码生成器:

// 只需实现 Tool 接口
type MyGenerator struct{}

func (m *MyGenerator) Name() string { return "mygen" }

func (m *MyGenerator) Run(gen *genkit.Generator, log *genkit.Logger) error {
    for _, pkg := range gen.Packages {
        for _, typ := range pkg.Types {
            if genkit.HasAnnotation(typ.Doc, "mygen", "gen") {
                // 生成代码...
            }
        }
    }
    return nil
}

var Tool genkit.Tool = &MyGenerator{}

两种插件模式

类型 说明 适用场景
source Go 源码,运行时编译 开发调试、快速迭代
plugin 预编译 .so 文件 高性能、生产环境

详见 插件开发文档


💡 智能 IDE 支持

VSCode 扩展提供完整的开发体验:

  • 语法高亮 - 注解关键字、参数值醒目显示
  • 智能补全 - 输入 @ 自动提示可用注解(基于 ConfigurableTool
  • 实时诊断 - 注解错误、参数校验即时反馈(基于 ValidatableTool
  • 插件感知 - 自动识别自定义插件的注解配置

VS Marketplace

在 VSCode 扩展商店搜索 devgen 或点击上方徽章安装。


⚡ 可扩展接口

插件通过实现不同接口获得对应能力:

接口 能力 说明
Tool 代码生成 必须实现,核心生成逻辑
ConfigurableTool 智能补全 自描述注解元数据,IDE 自动识别
ValidatableTool 实时诊断 返回诊断信息,IDE 即时反馈错误
RuleTool AI Rules 生成 AI 助手能理解的文档

示例 - 实现 ConfigurableTool

func (m *MyGenerator) Config() genkit.ToolConfig {
    return genkit.ToolConfig{
        OutputSuffix: "_gen.go",
        Annotations: []genkit.AnnotationConfig{
            {Name: "gen", Type: "type", Doc: "Generate code"},
        },
    }
}

VSCode 扩展通过 devgen config --json 获取注解元数据,提供智能补全。

示例 - 实现 ValidatableTool

func (m *MyGenerator) Validate(gen *genkit.Generator, log *genkit.Logger) []genkit.Diagnostic {
    var diags []genkit.Diagnostic
    for _, pkg := range gen.Packages {
        for _, typ := range pkg.Types {
            if err := validateAnnotation(typ); err != nil {
                diags = append(diags, genkit.Diagnostic{
                    Pos:      typ.Pos,
                    End:      typ.End,
                    Severity: genkit.SeverityError,
                    Message:  err.Error(),
                })
            }
        }
    }
    return diags
}

VSCode 扩展通过 devgen --dry-run --json 获取诊断信息,实时显示注解错误。

示例 - 实现 RuleTool

func (m *MyGenerator) Rules() []genkit.Rule {
    return []genkit.Rule{
        {
            Name:        "mygen",
            Description: "MyGenerator 使用指南",
            Content:     "# MyGenerator\n\n使用 `@gen` 注解标记类型...",
        },
    }
}

通过 devgen rules --agent codebuddy -w 生成 AI Rules 文件,让 AI 助手理解你的注解语法。

VSCode 扩展激活时会自动检测 AI IDE(Cursor、Kiro、CodeBuddy),并自动运行此命令生成规则文件。


内置工具

enumgen - 枚举生成器

为 Go 枚举类型生成序列化、反序列化和验证方法。

// Status 表示状态
// enumgen:@enum(string, json, sql)
type Status int

const (
    StatusPending Status = iota + 1
    StatusActive
    StatusCanceled
)

生成String() MarshalJSON() UnmarshalJSON() Value() Scan() IsValid() 等方法

详见 enumgen 文档


validategen - 验证生成器

为 Go 结构体生成 Validate() 方法。

// User 用户模型
// validategen:@validate
type User struct {
    // validategen:@required
    // validategen:@email
    Email string

    // validategen:@gte(0) @lte(150)
    Age int
}

支持@required @email @url @min @max @oneof @regex 等 20+ 验证规则

详见 validategen 文档


构建

make build    # 构建所有工具
make test     # 运行测试
make install  # 安装到 $GOPATH/bin
make vscode   # 构建 VSCode 扩展

更新日志

点击展开

许可证

MIT

Directories

Path Synopsis
cmd
devgen command
Command devgen is a unified code generator that runs all devgen tools.
Command devgen is a unified code generator that runs all devgen tools.
devgen/rules
Package rules contains embedded rule content for devgen.
Package rules contains embedded rule content for devgen.
enumgen command
Command enumgen generates enum helper methods.
Command enumgen generates enum helper methods.
enumgen/generator
Package generator provides enum code generation functionality.
Package generator provides enum code generation functionality.
enumgen/rules
Package rules contains embedded AI rules for enumgen.
Package rules contains embedded AI rules for enumgen.
golangcilint command
Command golangcilint integrates golangci-lint with devgen.
Command golangcilint integrates golangci-lint with devgen.
golangcilint/generator
Package generator provides golangci-lint integration for devgen.
Package generator provides golangci-lint integration for devgen.
validategen command
Command validategen generates Validate() methods for structs.
Command validategen generates Validate() methods for structs.
validategen/generator
Package generator provides validation code generation functionality.
Package generator provides validation code generation functionality.
validategen/rules
Package rules contains embedded AI rules for validategen.
Package rules contains embedded AI rules for validategen.
examples
plugin/plugin-goplugin command
Package main provides a pre-compiled Go plugin (.so) example.
Package main provides a pre-compiled Go plugin (.so) example.
plugin/plugin-source command
Package main provides a source-type plugin example.
Package main provides a source-type plugin example.
Package genkit provides configuration types for devgen tools and plugins.
Package genkit provides configuration types for devgen tools and plugins.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL