应使用结构化提示词明确各层职责与依赖规则,分层逐级生成代码,利用幽灵注释锚定架构语义,并基于标准clean架构模板上下文微调补全,确保domain层最稳定、依赖单向流动、接口隔离严格。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望使用CodeGeeX生成符合Clean Architecture(清洁架构)规范的Go代码,但生成结果出现分层混乱、依赖倒置缺失或用例层与数据层耦合等问题,则可能是由于提示词未明确架构约束或模型未接收到足够上下文。以下是实现该目标的具体方法:
一、使用结构化提示词精准引导生成
CodeGeeX对自然语言指令的解析高度依赖提示词的明确性与结构性。需强制声明各层职责、接口契约及依赖方向,避免模型默认采用扁平式或MVC风格输出。
1、在CodeGeeX插件或Web界面中输入以下格式的完整提示:
2、“请生成一个Go语言Clean Architecture项目结构,包含domain(含entity、repository interface)、usecase(纯业务逻辑,不依赖外部框架)、interface(http/gateway层,仅引用usecase接口)、infrastructure(repository实现、db连接等),所有层之间通过接口而非具体类型依赖”
3、在后续补全请求中追加约束:“domain层不能import任何其他层;usecase层只能import domain;interface层只能import usecase;infrastructure层可import domain和usecase,但必须通过构造函数注入依赖”
二、分层拆解+逐层生成法
一次性生成完整Clean架构易导致跨层引用错误。应按依赖单向流动顺序,从最稳定的domain层开始,逐层向下生成,并手动校验接口签名一致性。
1、先请求生成domain层核心定义:“生成Go代码:定义User实体结构体、UserRepository接口(含Save、FindByID方法),位于domain/user目录下,无外部import”
2、再生成usecase层:“生成Go代码:定义CreateUserUsecase结构体及Execute方法,接收User参数并调用UserRepository.Save,位于usecase/user目录下,仅import domain/user”
3、最后生成infrastructure层实现:“生成Go代码:实现UserRepository接口,使用GORM操作PostgreSQL,位于infrastructure/repository/user目录下,import domain/user和gorm.io/gorm”
三、利用CodeGeeX的“幽灵注释”功能反向建模
幽灵注释(Ghost Comment)是CodeGeeX识别意图的关键锚点。在已有骨架文件中插入特定注释,可触发模型按Clean架构语义补全,比自由描述更可靠。
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
1、新建main.go,写入:“// @clean-arch: domain layer - define core business types and interfaces”
2、光标置于注释下方,按Tab键触发补全,模型将仅生成domain相关代码。
3、新建usecase/create_user.go,写入:“// @clean-arch: usecase layer - pure logic, no framework deps”
4、再次Tab补全,确保生成内容不含http、database等非业务关键词。
四、导入标准Clean架构模板后微调生成
CodeGeeX支持基于现有代码上下文续写。预先提供经验证的Clean架构目录模板(如github.com/bxcodec/go-clean-arch最小化结构),能显著提升生成准确性。
1、在编辑器中打开已存在的clean-arch模板项目根目录。
2、在domain/user/entity.go中添加注释:“// TODO: add validation rules for User.Email field”
3、选中该行并触发CodeGeeX代码补全,模型将在domain层上下文内生成符合Clean原则的校验逻辑。
4、在interface/http/user_handler.go中添加:“// TODO: map HTTP request to CreateUserUsecase input struct”
5、触发补全,确保生成代码仅调用usecase接口,不直接操作数据库或日志实例。










