CodeGeeX可通过插件、API、Git Hook和GitHub Actions四种方式解析Git提交历史生成结构化版本内容:一、插件配合CLI提取并分类日志;二、API批量处理JSON日志;三、Git Hook调用本地模型增强提交摘要;四、Actions自动构建Release Note。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望利用CodeGeeX从Git提交历史中提取关键信息并生成结构化版本管理内容,则需借助其代码理解与自然语言生成能力对commit message、作者、时间戳及变更范围进行解析。以下是实现该目标的多种方法:
一、使用CodeGeeX插件配合Git CLI提取并格式化提交记录
该方法通过本地执行Git命令获取原始提交数据,再交由CodeGeeX插件逐条分析语义,识别功能新增、缺陷修复、文档更新等类别,并归类为版本日志条目。
1、在项目根目录打开终端,运行命令:git log --pretty=format:"%h|%s|%an|%ad" --date=short -n 50 > commits_raw.txt。
2、在VS Code中安装CodeGeeX插件,打开commits_raw.txt文件。
3、选中全部文本,右键选择“CodeGeeX:总结所选内容”,在弹出窗口中输入提示词:将以下Git提交记录按语义分类为【新增】、【修复】、【优化】、【文档】四类,每类下列出最多5条精简描述,保留原始提交哈希和作者名。
二、调用CodeGeeX API批量处理Git日志JSON输出
此方法适用于CI/CD流程集成,先用git log --pretty=format:%j导出结构化JSON,再通过HTTP请求发送至CodeGeeX服务端模型,获得标准化版本说明片段。
1、执行命令生成JSON格式日志:git log -n 100 --pretty=format:%j | jq -s '.' > commits.json。
2、编写Python脚本,使用requests库POST commits.json至CodeGeeX公开API(如已部署)endpoint,请求头包含Authorization令牌。
3、在payload中指定system prompt为:你是一个版本发布助手,请将输入的Git提交列表转换为符合Conventional Commits规范的中文版本日志,按feat、fix、chore、docs分组,不添加解释性语句。
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
三、在Git Hook中嵌入CodeGeeX本地模型推理流程
该方案在每次git commit后自动触发轻量级CodeGeeX本地模型(如codegeex2-6b-int4),对本次提交信息进行摘要增强,写入CHANGELOG.md对应版本区块。
1、将CodeGeeX量化模型下载至本地,使用transformers加载并设置device_map="auto"。
2、编辑.git/hooks/prepare-commit-msg,在文件末尾添加调用逻辑:python generate_changelog_line.py "$1" "$(git log -1 --pretty=%B)"。
3、generate_changelog_line.py中构造prompt:“本次提交信息为‘{message}’,作者{author},时间{now},生成一行符合v2.3.0格式的变更描述,仅输出纯文本,不带引号或编号”。
四、基于GitHub Actions + CodeGeeX Docker镜像自动生成Release Note
利用GitHub托管仓库的Actions能力,在tag推送时拉取CodeGeeX镜像,读取当前版本与上一tag之间的diff commits,生成Markdown格式Release Note正文。
1、在.github/workflows/release.yml中配置job,使用actions/checkout@v4并设定fetch-depth: 0。
2、添加步骤运行Docker容器:docker run --rm -v $(pwd):/workspace codegeex:latest python /app/process_release.py --from ${{ github.event.base_ref }} --to ${{ github.head_ref }}。
3、process_release.py中调用pipeline("text2text-generation"),输入模板为:“对比两个Git版本间所有提交,提取用户可见行为变更,忽略构建、测试、CI配置类提交,输出为无序列表,每项以✅、?、?开头区分类型”。

















