AI 助手生成业务逻辑代码
提示
要求 sponge v1.13.0+ 版本
概述
随着 AI 技术的普及,AI 辅助编程(Cursor、Windsurf、Trae 等)已成为开发者工作中的重要组成部分。使用 AI 辅助编程工具确实提升了开发效率,尤其是在生成单一简单功能的代码时表现良好。然而,这些工具在应对复杂业务场景时仍存在明显局限,主要体现在对框架的理解不足,生成的代码往往需要手动调整,整合成本较高。具体痛点如下:
- 需求拆解依赖人工:AI 尚无法独立分解复杂需求,仍需开发者明确拆分任务并提供详细指导。
- 上下文理解不足:面对大型项目或复杂业务逻辑时,AI 难以精准捕捉上下文,导致生成代码偏离预期。
- 可维护性风险:生成的代码风格不一致,或与项目现有结构不匹配,增加后期维护负担。
- Prompt 敏感度高:输出质量严重依赖输入指令的精确性,模糊的 Prompt 容易产生低效结果。
这些问题的本质在于当前 AI 仍处于代码模仿阶段,缺乏项目级全局建模能力。虽然未来技术发展有望逐步解决,但目前仍需寻找更落地的方案。
sponge 为什么集成 AI 助手?
市面上大多数 AI 工具缺乏与特定的 Go 开发框架的深度集成,这里的"深度集成"指的是 AI 工具不仅仅是表面级别的代码辅助,而是能够深入理解框架的结构、约定和最佳实践,提供与框架高度契合的代码生成和修改能力,能够按照框架约定的目录结构和文件组织方式生成代码,这种深度集成显著减少了开发者的上下文切换和手动整合工作,使 AI 生成的代码能够"即插即用"。
sponge 框架与内置的 AI 助手深度集成,解决使用 AI 工具开发项目时的部分痛点,帮助开发者更轻松快速实现业务逻辑,特点如下:
- 开发框架 sponge 与主流 AI 模型(DeepSeek、ChatGPT、Gemini)深度集成;
- 按照框架 sponge 约定的目录结构和文件组织方式生成代码,生成的代码风格与 sponge 框架代码风格保持一致;
- AI 助手支持多任务并发生成代码,提升生成代码效率。
- 支持一键合并代码,大幅减少手动整合 Go 代码的工作量。
适用场景:sponge 创建的服务缺少业务逻辑代码时,使用内置的 AI 助手快速生成业务逻辑代码。
主流大语言模型生成代码测评比较(来源于网络,测试日期2025年4月,仅供参考):
题目 | o3-mini-high | Claude 3.7 | DeepSeek-V3-0324 | Gemini 2.5 Pro |
---|---|---|---|---|
中等算法题 | ✅ | ❌ | ❌ | ✅ |
困难算法题 | ✅ | ❌ | ❌ | ✅ |
超级玛丽 | ✅ | ✅ | ✅ | ✅ |
3D 迷宫 | ❌ | ❌ | ❌ | ✅ |
生成代码
前期准备
使用前请先获取对应平台的 API Key,选择一个或多个平台即可。
触发 sponge 内置 AI 助手生成代码条件
- 在 Go 代码中定义函数
- 添加详细的功能注释(作为 AI 提示语)
- 在函数体内添加
panic("implement me")
标记
示例:
// 描述函数的需要实现的具体功能
func MyFunc() {
panic("implement me")
}
AI 助手生成代码
使用 sponge 基于 protobuf 创建的服务中,生成的 Go 代码自动满足触发 AI 助手生成代码的条件,具体操作步骤如下:
首先在
.proto
文件中的rpc
方法添加详细注释,注释将作为 AI 的提示词,建议包含业务规则与技术要点。proto 文件示例:
syntax = "proto3"; package api.user.v1; service User { // 用户登录验证 // - 支持账号密码和短信登录 // - 密码需加密验证 // - 短信需验证有效性 rpc Login(LoginRequest) returns (LoginReply) {} }
然后执行命令生成代码:
# 生成与合并 api 相关代码 make proto
生成的 Go 代码文件(文件名与proto文件名相同)将位于:
- Web 服务 →
internal/handler
- gRPC 服务 →
internal/service
这些 Go 代码文件中的函数自动满足触发 AI 助手生成代码的条件。
- Web 服务 →
使用 sponge 内置的 AI 助手生成代码:
- 打开 sponge 的 UI 界面;
- 进入左侧菜单栏 【AI 助手生成代码】 → 【生成 Go 代码】;
- 填写以下参数(鼠标悬停在参数旁边的问号
?
上可以查看参数说明):- 大语言类型:如
deepseek
- 模型:如
deepseek-chat
- api key:如
sk-xxxxxx
- 工作目录:如
/home/gopher/project/user
- 大语言类型:如
- 点击 生成代码 按钮,如下图所示:
生成代码示例 等价命令
sponge assistant generate --type=deepseek --model=deepseek-chat --api-key=sk-xxxxxx --dir=/home/gopher/project/user
提示
AI 助手生成的 Go 代码保存到与
.go
文件相同的目录中,后缀名为.xxx.md
的 markdown 文件中,其中 xxx 是大语言类型名(例如 deepseek、chatgpt、gemini)。在代码生成功能页面中,可以通过两种方式指定生成范围:
工作目录模式:
- AI 助手会处理该目录下的所有
.go
文件,识别其中的所有符合条件的函数,并生成实现代码。 - 注意:当目录中包含大量满足条件的函数时,生成过程可能需要较长的等待时间,具体耗时取决于 AI 大语言模型的处理性能
- AI 助手会处理该目录下的所有
Go 文件模式(推荐):
- 此模式下,AI 助手仅会处理指定的单个
.go
文件,识别其中的所有符合条件的函数,并生成实现代码。 - 这种针对性更强的处理方式更符合实际开发场景的需求。
- 此模式下,AI 助手仅会处理指定的单个
如果对生成结果不满意,可调整函数注释描述,或者更换模型再次生成,并对比不同模型的代码质量。
合并代码
AI 助手生成的逻辑代码初步保存在 .xxx.md
文件中,如确认无误,可使用 sponge 提供的自动合并功能,快速将其合并到对应的 .go
文件中,具体操作步骤如下:
- 打开 sponge 的 UI 界面;
- 进入左侧菜单栏 【AI 助手生成代码】 → 【合并 Go 代码】;
- 填写以下参数(鼠标悬停在参数旁边的问号
?
上可以查看参数说明):- 大语言类型:如
deepseek
,如果有多种大语言类型都有生成代码,选择最符合要求代码的大语言类型 - 工作目录:如
/home/gopher/project/user
- 清除 AI 代码:默认为
true
,合并后是否自动删除.xxx.md
文件。
- 大语言类型:如
- 点击 合并代码 按钮,即可完成代码整合,如下图所示:

等价命令
sponge assistant merge --type=deepseek --dir=/home/gopher/project/user --is-clean=true
提示
合并代码前会自动备份原有 .go
文件,防止因代码修改导致代码丢失,合并成功后会打印出备份代码存放的路径,如果需要还原代码,可手动恢复.go
文件。
重要
若多次使用不同模型合并代码,后一次的结果将覆盖前一次合并的内容。
清理 AI 生成文件
如需批量清除所有 .xxx.md
的 AI 生成文件,可执行以下命令:
sponge assistant clean --dir=/path/to/directory