Go+deepseek 帮你写 git 提交信息 - V2EX
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 287 天前 1445 次点击
    这是一个创建于 287 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    很早之前就想做一个借助 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 中敏感内容如何处理?目前只能简单的过滤

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

    6 条回复    2025-02-26 10:39:04 +08:00
    cslive
        1
    cslive  
       287 天前
    Fitten Code 有个自动生成提交信息,我觉得还不错,一直用这个
    wangyjjt
        2
    wangyjjt  
    OP
       287 天前
    嗯 我也试试
    janda
        3
    janda  
       287 天前
    idea 版本的通义千问也不错、我现在基本都是靠这个生成对应的 git 注释、git 注释是我定义的模版
    UN2758
        4
    UN2758  
       280 天前
    jb 家的 IDE 有个插件叫 AI commit ,支持的功能更多吧
    wangyjjt
        5
    wangyjjt  
    OP
       280 天前
    @UN2758 嗯,后来经提才知道,就当练手了吧
    wangyjjt
        6
    wangyjjt  
    OP
       280 天前
    @UN2758 我去试用了下,目前仅支持 OpenAI 的模型,对国内用户来说经济和时间还是门槛稍高了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4331 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 04:03 PVG 12:03 LAX 20:03 JFK 23:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86