Tạo Tin Nhắn Commit Đặc Biệt với Subagents của Claude Code
Khi phát triển với Claude Code, tôi thường gặp vấn đề với những tin nhắn commit quá dài và chi tiết. Gần đây, tôi phát hiện ra rằng tính năng subagents mới được phát hành có thể giải quyết vấn đề này, và tôi muốn chia sẻ cách thiết lập nó.
Vấn Đề Với Tin Nhắn Commit Của Claude Code
Khi bạn yêu cầu Claude Code thực hiện git commit sau khi triển khai các tính năng, nó sẽ tạo ra những tin nhắn commit rất dài như sau:
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
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Tin nhắn commit được tạo bởi Claude Code có một số vấn đề:
- Chúng bao gồm quá nhiều chi tiết thực hiện trong các điểm bullet.
- Chúng phản ánh bối cảnh cuộc trò chuyện từ phiên làm việc.
- Chúng không xem xét phong cách tin nhắn đơn giản mà dự án mong muốn.
Trong những trường hợp tồi tệ hơn, chúng thậm chí còn bao gồm các quá trình thử nghiệm và lỗi như "Ban đầu đã thử cách này, nhưng gặp lỗi, vì vậy đã từ bỏ và cuối cùng làm cách này." Điều này xảy ra vì bối cảnh cuộc trò chuyện trong phiên ảnh hưởng đến việc tạo ra tin nhắn.
Giải Quyết Vấn Đề Bằng Subagents
Tính năng subagents của Claude Code cho phép bạn ủy quyền các tác vụ cụ thể cho các tác nhân độc lập với bối cảnh riêng. Tôi nghĩ rằng điều này có thể tách biệt việc tạo tin nhắn commit khỏi bối cảnh cuộc trò chuyện và tạo ra các tin nhắn phù hợp với quy tắc của dự án.
Đầu tiên, tôi đã sử dụng lệnh /agents để tạo một tệp cấu hình subagent, sau đó thực hiện một số điều chỉnh để tạo ra thiết lập sau đây. Đây là những gì subagent này thực hiện:
- Kiểm tra các quy tắc và quy ước về tin nhắn commit trong các tệp README.md và CLAUDE.md.
- Phân tích các thay đổi chi tiết trong các tệp đã
git add. - Nghiên cứu lịch sử commit của dự án để học các mẫu tin nhắn.
- Tạo ra tin nhắn commit theo quy tắc của dự án.
- Đề xuất tin nhắn đã tạo cho phiên cha.
Nội Dung Tệp .claude/agents/git-commit-message-generator.md
---
name: git-commit-message-generator
description: "Sử dụng tác nhân này khi bạn cần tạo tin nhắn commit phù hợp cho các tệp đã được gán trong một kho git. Ví dụ: <example>Context: Người dùng đã gán một số tệp và muốn commit chúng với một tin nhắn phù hợp. user: 'Tôi đã gán một số thay đổi cho hệ thống xác thực. Bạn có thể giúp tôi tạo một tin nhắn commit không?' assistant: 'Tôi sẽ sử dụng tác nhân git-commit-message-generator để phân tích các thay đổi đã gán và tạo một tin nhắn commit phù hợp theo quy tắc của dự án này.' <commentary>Khi người dùng muốn được giúp đỡ trong việc tạo một tin nhắn commit cho các thay đổi đã gán, hãy sử dụng tác nhân git-commit-message-generator để phân tích quy tắc commit của dự án và tạo một tin nhắn phù hợp.</commentary></example> <example>Context: Người dùng đang làm việc trên một tính năng và đã gán nhiều tệp. user: 'Sẵn sàng để commit các sửa lỗi này' assistant: 'Để tôi sử dụng tác nhân git-commit-message-generator để xem xét các thay đổi đã gán và tạo một tin nhắn commit phù hợp với phong cách của dự án.' <commentary>Người dùng đã sẵn sàng để commit các thay đổi đã gán, vì vậy hãy sử dụng tác nhân git-commit-message-generator để tạo một tin nhắn commit phù hợp.</commentary></example>"
model: sonnet
---
Bạn là một tác nhân chuyên biệt để tạo ra tin nhắn commit git! ✨ Bạn có trách nhiệm tạo ra các tin nhắn commit phù hợp theo quy tắc của dự án cho các tệp đã gán.
## Quy Trình Làm Việc Của Bạn
### 1. Kiểm Tra Quy Tắc Commit Của Dự Án
- Kiểm tra các tệp CLAUDE.md và README.md để tìm bất kỳ quy tắc hoặc quy ước nào về tin nhắn commit.
- Nếu tìm thấy, hãy tuân thủ các quy tắc đó như ưu tiên hàng đầu.
### 2. Phân Tích Các Tệp Đã Gán
- Chạy `git diff --cached` để kiểm tra các thay đổi chi tiết trong các tệp đã gán.
- Xác định tính chất của các thay đổi (tính năng mới, sửa lỗi, tái cấu trúc, cập nhật tài liệu, v.v.)
- Đánh giá quy mô và tầm quan trọng của các thay đổi.
### 3. Phân Tích Lịch Sử Commit Của Dự Án
- Chạy `git log --oneline -10` để kiểm tra định dạng tin nhắn commit gần đây.
- Chú ý đặc biệt đến các khía cạnh sau:
- Ngôn ngữ (Nhật Bản, Tiếng Anh hoặc ngôn ngữ khác)
- Cấu trúc tin nhắn (định dạng một dòng so với nhiều dòng)
- Sự sử dụng tiền tố (feat:, fix:, docs:, v.v.)
- Phong cách viết và các mẫu giọng điệu
- Xu hướng số lượng ký tự
- Các mẫu khác biệt khác
### 4. Tạo và Đề Xuất Tin Nhắn Commit
- Dựa trên phân tích ở trên, tạo ra một tin nhắn commit hoàn toàn phù hợp với quy tắc của dự án.
- Tin nhắn nên mô tả chính xác và ngắn gọn các thay đổi và dễ hiểu cho các nhà phát triển tương lai.
- Kết thúc với "Vui lòng chạy git commit -m 'tin nhắn đã tạo' tự bạn."
## Lưu Ý Quan Trọng
- **KHÔNG THỰC HIỆN git commit** - Chỉ đề xuất tin nhắn và để phiên cha thực hiện commit thực tế.
- Tôn trọng các mẫu hiện có của dự án và duy trì sự nhất quán.
- Đối với các thay đổi phức tạp, hãy tóm tắt một cách hợp lý mà không bỏ lỡ thông tin quan trọng.
- Hỏi để làm rõ nếu có gì không rõ ràng.
## Xử Lý Lỗi
- Nếu không có tệp nào được gán, hãy báo cáo điều này.
- Nếu không trong một kho git hoặc xảy ra lỗi liên quan đến git, hãy báo cáo một cách thích hợp.
- Nếu không thể xác định các quy tắc của dự án, hãy tuân thủ các thực tiễn tốt nhất chung và giải thích điều này.
Mục tiêu của bạn là cung cấp các tin nhắn tối ưu hóa cho dự án mà các nhà phát triển có thể tự tin commit! Chúc may mắn! 💪
Một lựa chọn thiết kế quan trọng là không cho phép subagent thực hiện commit trực tiếp. Lý do là nếu subagent commit trực tiếp, bạn sẽ không thể điều chỉnh tin nhắn nếu bạn muốn. Thay vào đó, tôi đã kết thúc với "Vui lòng chạy git commit -m 'tin nhắn đã tạo' tự bạn", để phiên cha thực hiện git commit. Điều này cho phép điều chỉnh tin nhắn nếu bạn không hài lòng với nó.
Kết Quả Từ Việc Sử Dụng Thực Tế
Việc sử dụng rất đơn giản - chỉ cần nói "tạo một tin nhắn commit" sau khi thực hiện git add. Claude Code sẽ tự động khởi động subagent. Nếu nó không khởi động tự động, bạn có thể nói rõ "tạo một tin nhắn commit với subagent".
Hãy xem một bản ghi phiên thực tế. Khi tôi phát triển slack-explorer-mcp, tôi đã triển khai một tính năng để thêm URL workspace vào phản hồi. Khi tôi yêu cầu một tin nhắn commit sau đó, nó đã tạo ra một tin nhắn đơn giản:
Add workspace URL to search_messages response
Tôi bao gồm bản ghi phiên bên dưới. Bạn có thể thấy subagent phân tích và tạo ra một tin nhắn theo quy tắc của dự án, và phiên cha thực hiện git commit.
Bản Ghi Phiên Hoạt Động
> git add completed, subagent commit
⏺ git-commit-message-generator(Task: Generate commit message (using git-commit-message-generator agent)
Prompt: Please analyze the staged changes and generate an appropriate commit message following the project's conventions.)
⎿ Agent Response:
No special commit message rules in CLAUDE.md. Let me analyze recent commit history patterns!
Project Commit Message Pattern Analysis 📊
1. Language: English
2. Structure: Simple single-line format
3. Prefix: None used (no feat:, fix:, etc.)
4. Style: Imperative mood starting with verbs (Add, Update, Implement, Refactor, etc.)
5. Character count: Around 50-70 characters
Change Analysis 🔍
Looking at staged changes:
handler.go:
- Added WorkspaceURL field to SearchMessagesResponse struct
- Added workspace URL extraction from first message permalink when messages exist
handler_test.go:
- Updated existing tests to assert workspace_url is included in response
- Added test case for when no messages found (workspace_url should be empty string)
This is adding workspace URL return functionality to search_messages response!
Proposed Commit Message ✨
Following existing project patterns, I propose this commit message:
Add workspace URL to search_messages response
Reasons for this message:
- Starts with imperative verb "Add" matching the pattern
- Accurately and concisely describes the change
- 51 characters, appropriate length
- No prefix, matching project style
Please run git commit -m "Add workspace URL to search_messages response" yourself!
⎿ Done (4 tool uses · 20.2k tokens · 27.2s)
⏺ Bash(git commit -m "Add workspace URL to search_messages response")
⎿ [return-workspace-url b5e9f4c] Add workspace URL to search_messages response
2 files changed, 66 insertions(+), 1 deletion(-)
⏺ Commit completed! 🎉
Kết Luận
Việc sử dụng tính năng subagents của Claude Code đã giải quyết thành công vấn đề tin nhắn commit quá dài. Kể từ khi giới thiệu thiết lập này, tôi hiếm khi cần chỉnh sửa tin nhắn commit một cách thủ công. Nếu bạn gặp phải vấn đề tương tự khi phát triển với Claude Code, tôi khuyên bạn nên thử nghiệm với cách tiếp cận này.