V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
wangyjjt
V2EX  ›  Go 编程语言

Go+deepseek 帮你写 git 提交信息

  •  
  •   wangyjjt · 4 天前 · 380 次点击

    背景

    很早之前就想做一个借助 ai 能力自动生成 git 提交信息的工具,但是当时的 ai 大模型要么和智能不沾边,要么 API 接口价格太贵。现在好用大模型价格也降下来了,甚至的很多平台免费的模型也堪大用了,于是就做了这么个工具。

    功能

    工具集成在以前写的命令行工具中了,它的gcmsg子命令可以帮助开发人员快速生成 git 提交消息,确认后可以提交并推送到远程仓库。

    git 地址 lwe

    效果看图:

    gcmsg.webp

    模型选择

    我开发这个功能的时候是,deepseek-V3刚推出不久,我测试后发现效果不错,而且价格也可以接受了,就打算对接一个 deepseek ,再接一个国外的 gemini 模型。但是来了,功能还没开发完(因为懒),R1 模型火出了圈,调试时接口一直超时,后来赠送的 token 也过期并且不让充值了,无奈只能去对接硅基流动部署deepseeek-V3,所以目前这个版本支持了两家的大模型,基本上可以非常低的成本使用了。

    经过我对多个模型的测试,硅基上提供的千问Qwen/Qwen2.5-Coder-32B-Instruct模型也完全足够用,价格更低,而且硅基流动注册送的 2000w token 就能用好久好久了。

    实现

    实现原理也很简单,整个流程就是:利用 git diff 命令,获取代码的变动信息,再调用大模型 API 进行分析,大模型按照prompt要求将结果返回展示,最后完成提交、推送。

    问题

    目前还有几个问题没有解决很好

    • 不同的模型,“智商”不一样,有的未必能够正确理解你的指令返回数据,甚至返回的格式都是错误的,怎样兜底能力弱的模型?
    • 如何压缩 git diff 的结果,代码改动比较大或者初始化仓库场景,token 消耗爆炸不说,也容易超时
    • git diff 中敏感内容如何处理?目前只能简单的过滤

    有经验或者好方案的可以交流一下

    cslive
        1
    cslive  
       4 天前
    Fitten Code 有个自动生成提交信息,我觉得还不错,一直用这个
    wangyjjt
        2
    wangyjjt  
    OP
       4 天前
    嗯 我也试试
    janda
        3
    janda  
       4 天前
    idea 版本的通义千问也不错、我现在基本都是靠这个生成对应的 git 注释、git 注释是我定义的模版
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.