⚡ KHÓA HỌC HARNESS ENGINEERING & AI CODING AGENT (CLAUDE CODE) BÀI 3 / 4
Harness Engineering Series • Bài 3

Khóa Học Harness Engineering (Phần 3): Quy Trình Agentic SDLC & Kỹ Thuật Cô Lập Git Worktrees

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)

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:

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:

5. Sơ Đồ Kiến Trúc Điều Phối Command - Agent - Skill & Worktrees

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:

MÔ HÌNH ĐIỀU PHỐI COMMAND - AGENT - SKILL & GIT WORKTREES Phát triển phần mềm tự động hóa theo chuẩn mực Agentic SDLC có cô lập môi trường LỚP LỆNH (/COMMANDS) /feature-dev Khởi tạo tính năng mới từ Spec /code-review Thẩm định chéo bảo mật & test /ship-pr Chạy CI/CD & đóng gói PR Điểm bắt đầu quy trình SDLC Dispatch AGENTS & SKILLS LAYER Agent: Code Architect Thiết kế cấu trúc & chia nhỏ task Agent: Feature Builder Thực thi code kèm unit tests Hooks: PreToolUse Safe Kiểm tra vi phạm quyền hạn Mỗi Agent có vai trò chuyên biệt Isolate GIT WORKTREES ISOLATION Worktree: auth-jwt/ Branch: feature/auth-jwt Builder đang viết code Worktree: db-opt/ Branch: perf/db-indices Optimizer đang chạy benchmark Nhánh Gốc (main) Tuyệt đối an toàn, sạch sẽ Song song 100% không conflict

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 class WorktreeManager: """ 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) def create_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}") def remove_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}") def pre_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ật if ".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}") return False return True
💡
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.