Khóa Học Harness Engineering (Phần 3): Quy Trình Agentic SDLC & Kỹ Thuật Cô Lập Git Worktrees
📅 Cập nhật: 17/10/2026
⏱️ Thời lượng đọc: 19 phút
🏷️ Agentic SDLC, Git Worktrees, Hooks, MCP, Claude Code Best Practices
Khái niệm "Vibe Coding" (gõ vài câu prompt cảm tính và hy vọng AI tự sinh ra toàn bộ ứng dụng hoàn hảo) có thể giúp bạn tạo ra các bản demo nhỏ trong 15 phút. Nhưng khi đưa vào các dự án phần mềm tài chính quy mô lớn — nơi một dòng code sai có thể thổi bay hàng trăm triệu đồng — Vibe Coding lập tức trở thành thảm họa.
Trong kho tri thức shanraisshan/claude-code-best-practice và hesreallyhim/awesome-claude-code, các chuyên gia hàng đầu đã đúc kết bước nhảy vọt tư duy: Chuyển dịch từ Vibe Coding sang Agentic Engineering. Bài viết này sẽ hướng dẫn bạn chuẩn hóa quy trình phát triển phần mềm tự động hóa theo chu trình 5 bước kinh điển, mô hình điều phối 3 lớp Command → Agent → Skill và kỹ thuật cách ly nhánh làm việc song song bằng Git Worktrees.
1. Chu Trình Phát Triển 5 Bước Chuẩn Mực (Agentic SDLC)
Tất cả các workflow mã nguồn mở thành công nhất của cộng đồng Claude Code (Superpowers, Matt Pocock Skills, Spec Kit, Everything Claude Code, gstack) đều hội tụ về một chu trình phát triển 5 bước bất biến:
Bước 1: Khảo Sát & Nghiên Cứu
Research (Đọc Hiểu)
Agent duyệt cấu trúc thư mục, đọc các tài liệu kiến trúc (CLAUDE.md), tìm kiếm các hàm liên quan qua grep/glob trước khi đưa ra bất kỳ kết luận nào.
Bước 2: Lập Kế Hoạch Độc Lập
Plan & Spec (Thiết Kế)
Viết tài liệu đặc tả kỹ thuật, chia nhỏ bài toán thành danh sách Todo tuần tự, xác định rõ các file bị ảnh hưởng và điều kiện nghiệm thu.
Bước 3: Thực Thi Kèm TDD
Execute (Viết Test & Code)
Áp dụng Test-Driven Development (TDD): Viết Unit Test mô tả lỗi trước, sau đó chỉnh sửa code cho đến khi tất cả các bài test chuyển sang màu xanh (Passed).
Bước 4: Thẩm Định Độc Lập
Review (Kiểm Tra Chéo)
Sử dụng Subagent thẩm định (Code Reviewer) kiểm tra lại git diff, quét lỗ hổng bảo mật (Security Scan) và đối chiếu với bộ quy tắc dự án.
Bước 5: Đóng Gói & Bàn Giao
Ship (Commit & PR)
Tạo Pull Request với thông điệp commit chuẩn hóa (Conventional Commits), dọn dẹp các file rác và cập nhật tài liệu phát hành.
2. Mô Hình Điều Phối 3 Lớp: Command → Agent → Skill
Để tự động hóa chu trình trên một cách mạch lạc, Claude Code tổ chức hệ sinh thái theo kiến trúc 3 tầng:
Command (/command) → Kích hoạt quy trình làm việc cấp cao (Workflow Orchestration)
↓
Agent (.claude/agents/) → Chuyên gia chịu trách nhiệm ngữ cảnh (Architect, Reviewer, Tester)
↓
Skill (.claude/skills/) → Bộ công cụ & tri thức chuyên sâu nạp on-demand (SQL, Playwright, React)
Commands (Lệnh tắt): Đặt tại .claude/commands/. Ví dụ: khi bạn gõ /feature-dev auth-jwt, command này sẽ tự động khởi động chu trình: gọi Agent phân tích, tạo file spec, rồi chuyển giao cho Agent lập trình.
Agents (Nhân sự ảo): Đặt tại .claude/agents/. Mỗi file Markdown mô tả vai trò, tính cách, quyền hạn và danh sách công cụ được phép dùng (ví dụ: Agent Reviewer chỉ có quyền đọc file, không có quyền sửa code).
Skills (Kỹ năng): Đặt tại .claude/skills/. Cung cấp hướng dẫn kỹ thuật chi tiết theo định dạng SKILL.md.
3. Kỹ Thuật Cô Lập Nhánh Lập Trình Bằng Git Worktrees
Khi bạn muốn chạy 2–3 Agent song song (ví dụ: một Agent sửa lỗi giao diện, một Agent tối ưu hóa câu truy vấn database), nếu cả hai cùng làm việc trên thư mục dự án hiện tại, chúng sẽ ghi đè file của nhau và gây xung đột git nghiêm trọng.
Claude Code tích hợp cơ chế Git Worktrees (`EnterWorktree` / `isolation: "worktree"`):
git worktree add -b fix-auth-bug ../worktrees/fix-auth-bug main
Git Worktree cho phép bạn checkout nhiều nhánh (branches) đồng thời vào các thư mục riêng biệt trên cùng một repository cục bộ. Mỗi Agent được cấp một worktree cô lập hoàn toàn:
Agent thoải mái cài đặt package, chỉnh sửa file, chạy test mà không sợ ảnh hưởng đến nhánh main đang chạy của bạn.
Khi Agent hoàn thành và test vượt qua 100%, Harness sẽ tự động chạy lệnh merge hoặc tạo Pull Request, sau đó xóa worktree tạm để giải phóng dung lượng đĩa cứng.
4. Hệ Thống Hooks & Mở Rộng Ngoại Vi Qua Giao Thức MCP
Một Harness hoàn chỉnh phải có khả năng can thiệp vào các sự kiện vòng đời (Lifecycle Hooks) của Agent:
PreToolUse: Kích hoạt ngay trước khi một công cụ được chạy. Ví dụ: tự động chặn đứng lệnh nếu phát hiện file nhạy cảm .env bị truy cập.
PostToolUse: Kích hoạt sau khi công cụ chạy xong. Ví dụ: tự động chạy Linter (ESLint/Black) để format lại file vừa được Agent chỉnh sửa.
Model Context Protocol (MCP): Giao thức mở của Anthropic cho phép Agent kết nối tới các hệ thống bên ngoài (GitHub API, cơ sở dữ liệu PostgreSQL, trình duyệt Chrome, hệ thống thanh toán) thông qua file cấu hình .mcp.json thống nhất.
Sơ đồ dưới đây minh họa luồng kích hoạt từ một câu lệnh Command, phân bổ vai trò cho Agent và triển khai trên các thư mục Git Worktrees độc lập:
6. Triển Khai Code: Tự Động Khởi Tạo Git Worktree Cho Agent
Dưới đây là đoạn mã nguồn Python quản trị vòng đời của Git Worktree, tự động tạo không gian độc lập cho tác nhân và dọn dẹp sau khi tác vụ hoàn thành:
import subprocess
import os
import shutil
classWorktreeManager:
"""
Quản trị môi trường Git Worktrees cô lập cho các AI Coding Agents
"""def__init__(self, base_repo_path: str = "."):
self.repo_path = os.path.abspath(base_repo_path)
self.worktrees_dir = os.path.join(self.repo_path, ".claude", "worktrees")
os.makedirs(self.worktrees_dir, exist_ok=True)
defcreate_worktree(self, branch_name: str) -> str:
"""Tạo thư mục worktree mới và checkout nhánh độc lập"""
target_path = os.path.join(self.worktrees_dir, branch_name)
# Lệnh git: git worktree add -b main
cmd = f"git worktree add -b {branch_name} {target_path} main"
res = subprocess.run(cmd, shell=True, cwd=self.repo_path, capture_output=True, text=True)
if res.returncode == 0:
print(f"[WORKTREE] Khởi tạo thành công không gian cô lập tại: {target_path}")
return target_path
else:
raise RuntimeError(f"Lỗi tạo worktree: {res.stderr}")
defremove_worktree(self, branch_name: str):
"""Dọn dẹp worktree sau khi Agent đã hoàn thành công việc"""
target_path = os.path.join(self.worktrees_dir, branch_name)
if os.path.exists(target_path):
subprocess.run(f"git worktree remove --force {target_path}", shell=True, cwd=self.repo_path)
subprocess.run(f"git worktree prune", shell=True, cwd=self.repo_path)
print(f"[WORKTREE] Đã dọn dẹp sạch sẽ: {target_path}")
defpre_tool_use_hook(tool_name: str, args: dict) -> bool:
"""Hook kiểm soát bảo mật trước khi thực thi công cụ"""if tool_name == "write_file":
file_path = args.get("path", "")
# Ngăn chặn Agent sửa đổi file cấu hình bí mậtif".env"in file_path or"id_rsa"in file_path:
print(f"[HOOK CẢNH BÁO]: Từ chối quyền ghi vào file nhạy cảm {file_path}")
returnFalsereturnTrue
💡
TỔNG KẾT BÀI HỌC: Agentic Engineering không phải là viết prompt ngẫu hứng, mà là thiết lập đường ray vững chắc: SDLC 5 bước, điều phối 3 lớp Command-Agent-Skill và cách ly tuyệt đối bằng Git Worktrees. Trong Phần 4 tiếp theo (bài cuối cùng của chuỗi Claude Code), chúng ta sẽ khám phá cấp độ tự trị cao nhất: Điều Phối Đa Tác Nhân (Agent Teams) qua Async Mailbox, Đồ Thị Phụ Thuộc Nhiệm Vụ (Task Graph) và Vòng Lặp Mục Tiêu (Goal Loop)!
⚡
Biên Soạn: Học Viện Giao Dịch — Hàng Hóa Plus
Chuỗi bài giảng Harness Engineering được phát triển dựa trên các nghiên cứu chuyên sâu về kiến trúc tác nhân lập trình AI của Anthropic Claude Code và shareAI-lab.