使用Claude代码子代理生成项目特定提交消息的技术实践

news/2025/9/23 21:33:12/文章来源:https://www.cnblogs.com/qife122/p/19108136

使用Claude代码子代理生成项目特定提交消息

在使用Claude Code进行开发时,我经常面临生成的提交消息过于冗长的问题。最近发现新发布的子代理功能可以解决这个问题,因此想分享如何设置。

Claude代码提交消息的问题

当你要求Claude Code在执行功能实现后运行git commit时,它会生成极其冗长的提交消息,例如:

Add describe_tables e2e test and refactor MCP initialization- Add comprehensive e2e test for describe_tables tool
- Refactor MCP server initialization into reusable functions- setupMCPServer: Starts the server process- initializeMCPServer: Handles the MCP protocol handshake
- Ensure both list_tables and describe_tables have complete e2e coverage:robot: Generated with [Claude Code](https://claude.ai/code)Co-Authored-By: Claude <noreply@anthropic.com>

Claude Code生成的提交消息存在几个问题:

  • 在项目符号中包含过多的实现细节
  • 反映会话中的对话上下文
  • 不考虑项目偏好的简单消息风格

在更糟的情况下,它们甚至包括试错过程,如"最初尝试了这种方法,但出现错误,因此放弃并最终做了这个替代方案"。这是因为会话的对话上下文影响了消息生成。

使用子代理解决问题

Claude Code的子代理功能允许你将特定任务委托给具有独立上下文的独立代理。我认为这可以将提交消息生成与会话上下文隔离开来,并创建符合项目约定的消息。

首先,我使用/agents命令生成子代理配置文件,然后进行一些调整创建以下设置。这个子代理的功能包括:

  • 分析git添加文件中的详细更改
  • 研究项目的提交历史以学习消息模式
  • 生成符合项目约定的提交消息
  • 将生成的消息提议给父会话

完整的.claude/agents/git-commit-message-generator.md内容:

你是专门用于生成git提交消息的代理!:sparkles:你负责为暂存文件创建符合项目约定的适当提交消息。## 工作流程### 1. 检查项目提交规则- 如果找到,优先遵循这些规则### 2. 分析暂存文件
- 运行`git diff --cached`检查暂存文件中的详细更改
- 识别更改性质(新功能、错误修复、重构、文档更新等)
- 评估更改的范围和重要性### 3. 分析项目提交历史
- 运行`git log --oneline -10`检查最近提交消息格式
- 特别注意以下方面:- 语言(日语、英语或其他)- 消息结构(单行vs多行格式)- 前缀使用(feat:、fix:、docs:等)- 写作风格和语气模式- 字符数趋势- 其他显著模式### 4. 生成并提议提交消息
- 基于以上分析,生成完美匹配项目约定的提交消息
- 消息应准确简洁地描述更改,便于未来开发人员理解
- 以"请自行运行git commit -m '生成的消息'"结束## 重要说明- **不要执行git commit** - 仅提议消息,将实际提交留给父会话
- 尊重现有项目模式并保持一致性
- 对于复杂更改,适当总结同时不遗漏重要信息
- 如果有任何不清楚的地方,请要求澄清## 错误处理- 如果没有文件暂存,报告此情况
- 如果不在git仓库中或发生git相关错误,适当报告
- 如果无法确定项目约定,遵循一般最佳实践并解释你的目标是提供项目优化的消息,让开发人员可以自信地提交!祝你好运!:flexed_biceps:

一个重要的设计选择是不让子代理自己执行提交。原因是如果子代理直接提交,当你想要调整消息时无法调整。相反,我让它以"请自行运行git commit -m '生成的消息'"结束,因此父会话执行git commit。这样如果对消息不满意,可以进行调整。

实际使用结果

使用很简单 - 在执行git add后只需说"创建提交消息"。Claude Code将自动启动子代理。如果没有自动启动,可以明确说"使用子代理创建提交消息"。

让我们看一个实际会话日志。在开发slack-explorer-mcp时,我正在实现向响应添加工作区URL的功能。当我随后要求提交消息时,它生成了一个简单的消息:

Add workspace URL to search_messages response

我包含下面的会话日志。你可以看到子代理如何正确分析并生成符合项目约定的消息,以及父会话如何执行git commit。

完整会话日志:

> git add completed, subagent commit:record_button: git-commit-message-generator(任务:生成提交消息(使用git-commit-message-generator代理)提示:请分析暂存更改并生成符合项目约定的适当提交消息。)⎿ 代理响应:CLAUDE.md中没有特殊提交消息规则。让我分析最近提交历史模式!项目提交消息模式分析 :bar_chart:1. 语言:英语2. 结构:简单单行格式3. 前缀:未使用(无feat:、fix:等)4. 风格:以动词开头的命令式语气(Add、Update、Implement、Refactor等)5. 字符数:约50-70个字符更改分析 :magnifying_glass_tilted_left:查看暂存更改:handler.go:- 向SearchMessagesResponse结构添加WorkspaceURL字段- 当消息存在时,从第一条消息永久链接添加工作区URL提取handler_test.go:- 更新现有测试以断言响应中包含workspace_url- 添加未找到消息的测试用例(workspace_url应为空字符串)这是向search_messages响应添加工作区URL返回功能!提议的提交消息 :sparkles:遵循现有项目模式,我提议此提交消息:Add workspace URL to search_messages response选择此消息的原因:- 以命令式动词"Add"开头,匹配模式- 准确简洁地描述更改- 51个字符,适当长度- 无前缀,匹配项目风格请自行运行git commit -m "Add workspace URL to search_messages response"!⎿ 完成(4个工具使用·20.2k令牌·27.2秒):record_button: Bash(git commit -m "Add workspace URL to search_messages response")⎿ [return-workspace-url b5e9f4c] Add workspace URL to search_messages response2个文件更改,66个插入(+),1个删除(-):record_button: 提交完成!:party_popper:

结论

使用Claude Code的子代理功能成功解决了冗长提交消息的问题。自从引入此设置后,我很少需要手动编辑提交消息。如果你在Claude Code开发中遇到类似问题,我推荐尝试这种方法。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上海网站建设公司推荐合肥市住房建设局网站

全世界只有3.14 % 的人关注了爆炸吧知识今天&#xff0c;8岁表妹的老师给她奖励了一块大巧克力&#xff0c;超模君打趣她能不能分给我点&#xff0c;遭到残忍拒绝&#xff0c;超模君很愤怒&#xff0c;暗下决心要神不知鬼不觉地吃上表妹的巧克力。超模君趁表妹在认真做作业的时…

网站建设 前期资料dede门户网站模版

文章目录 1. 如何计算DDR带宽2. DDR data rate和DDR主频3. Mbps和Mhz4. 出题 1. 如何计算DDR带宽 计算DDR理论带宽的公式为&#xff1a; DDR主频 * 位宽 理论带宽其中&#xff0c;位宽(bit width)指的是内存总线的位宽&#xff0c;例如64位、128位、16bit、32bit等&#xff…

新手可以自己学做网站设计吗wordpress怎么设置静态主页

jquery 通过submit()方法 提交表单示例&#xff1a; 本示例&#xff1a;以用户注册作为例子。使用jquery中的submit()方法实现表单提交。 注&#xff1a;本示例仅提供了对表单的验证&#xff0c;本例只用选用了三个字段作为测试。 用户点击提交按钮时&#xff0c;触发点击事件&…

做网站先做ue网页版代码编辑器

先创建自定义控件类painter_label 1.自定义类必须给基类传入父窗口指针 2.重写控件中的方法 3.在UI中创建一个QLabel,右键“提升为”&#xff0c;输入类名

宜昌市水利建设工程协会网站湖南长沙房价2023年最新房价

【问题描述】[中等] 给定一个由表示变量之间关系的字符串方程组成的数组&#xff0c;每个字符串方程 equations[i] 的长度为 4&#xff0c;并采用两种不同的形式之一&#xff1a;"ab" 或 "a!b"。在这里&#xff0c;a 和 b 是小写字母&#xff08;不一定不…

网站建设完成阶段性总结报告厚街镇网站仿做

一、MySQL数据库管理系统安装部署【简单】 简介 MySQL数据库管理系统&#xff08;后续简称MySQL&#xff09;&#xff0c;是一款知名的数据库系统&#xff0c;其特点是&#xff1a;轻量、简单、功能丰富。 MySQL数据库可谓是软件行业的明星产品&#xff0c;无论是后端开发、…

长春网站制作长春万网企业内部网站开发

本章节将示范三台 zookeeper 服务端集群搭建步骤。 所需准备工作&#xff0c;创建三台虚拟机环境并安装好 java 开发工具包 JDK&#xff0c;可以使用 VM 或者 vagrantvirtualbox 搭建 centos/ubuntu 环境&#xff0c;本案例基于宿主机 windows10 系统同时使用 vagrantvirtualb…

差分电压

差分电压1) T_02_V+ / T_02_V- —— 差分电压输入(Voltage differential)含义(常见):V+ 与 V- 通常是一对 差分电压输入(或者单端的正、负端)。用于测量传感器或变送器给出的电压信号(例如 0–10 V、10 V、5 V…

走迷宫(BFS)

输入样例:5 5 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 期望输出:8代码实现:#include<bits/stdc++.h> using namespace std;typedef pair<int,int> pii; const int N = 110;int n ,m; int s…

网站首页生成静态页面做神马网站优

public static void test4(){int sum 0; //求和for(int i 1;i<100;i){if(i%3!0){sumsumi;}}System.out.println("和是&#xff1a;"sum);}

MyBatis分页的原理和分页插件的原理是什么

1、mybatis的分页 MyBtis本身不提供自动化分页,MyBatis 原生分页的本质,就是通过在 SQL 语句中直接使用数据库特定的分页关键字(如 LIMIT, ROWNUM)来实现的。这是一种物理分页,即数据库只返回查询结果中的一部分数…

达成度报告

一、功能设计 1. 课程简介 课程目标、成绩分布、课程目标分值分布、支撑矩阵 2. 基于成绩的统计分析与可视化平时成绩分布(散点图)+ 成绩段分布 期末成绩分布(散点图)+ 成绩段分布 平时与期末差异值的分布(散点图…

金泉网做网站要找谁做网站必须要推广吗

0、怎么写一个前端页面: HTML是超文本标记语言,它用来写前端的内容和框架,CSS是层叠样式表,它用来给前端写样式,让内容变漂亮。1、要写前端页面需要用VScode代码编辑器: VScode当中可以下载汉化插件、快捷键插件(eclipse)浏览器用于解析html/css/js代码,浏览器是从上往…

阜阳网站建设fywzjs做推广哪个网站效果好

大家好&#xff0c;今天为大家带来的是 mysql 5.7 msi &#xff0c; MySql 8.0 版本的下载、安装教程&#xff0c;附详细图文。本文以 5.7 版本为例子&#xff0c;帮助大家讲解。希望对大家有所帮助 文章首发地址 一、下载地址 这里提供一下 CSDN 镜像下载地址&#xff0c;有…

广西网站建设工具建设工程网站贴吧

一&#xff1a;description方法 description有对象方法和类方法两种&#xff0c;&#xff08;是NSObject类的方法&#xff09;1&#xff0c;-description&#xff08;对象方法&#xff09; 使用NSLog和%输出某个对象时&#xff0c;会调用对象的description方法&#xff0c;并拿…

阿里云需要网站建设方案书网站开发要学的课程

前言 之前虽然单独讲过Security Client和Resource Server的对接&#xff0c;但是都是基于Spring webmvc的&#xff0c;Gateway这种非阻塞式的网关是基于webflux的&#xff0c;对于集成Security相关内容略有不同&#xff0c;且涉及到代理其它微服务&#xff0c;所以会稍微比较麻…

中国建设银行下载官方网站共享门店新增跑腿距离计算优化

随着VR技术的不断进步&#xff0c;VR全景技术已经成为了文化展示和传播的一项重要工具&#xff0c;相较于传统视频、图文等展现方式&#xff0c;VR全景体验更加直观、便捷&#xff0c;其中蕴涵的信息量也更加丰富&#xff0c;这也为公众了解博物馆和历史文化带来了更为深刻的体…

备案期间能否做网站解析wordpress php占内存

尽管BERT为代表的预训练模型大肆流行&#xff0c;但是身处工业界才会知道它落地有多难&#xff0c;尤其是QPS动辄几百的在线推荐、搜索系统&#xff0c;哪怕在大厂也很难在线上系统见到它们。 今天就想反其道而行之&#xff0c;谈谈工业界搜索、推荐、广告这类核心场景中落地能…

零基础建设网站视频wordpress当前页面id

1 引言 在学习前&#xff0c;我想说一句&#xff0c;那就是为什么要学习Java。 每个人的出发点都不同&#xff0c;对于做信息化的工程技术人员来说&#xff0c;java不懂&#xff0c;就没法干项目。 尽管有c和matlab等基础&#xff0c;但java看起来与这些语言都不太一样。 做…

深圳市盐田区住房和建设局网站泽成杭州seo网站推广排名

文章目录 1. 添加动画2. Animation2.1 制作界面2.2 制作好的 Animation 动画2.3 添加和使用事件 3. Animator3.1 制作界面3.2 一些参数解释3.3 动画参数 4. Animator中相关类、属性、API4.1 类4.2 属性4.3 API4.4 几个关键方法 5. 动画播放和暂停控制 1. 添加动画 选中待提添加…