Skip to content

AI không thay thế phán đoán kỹ thuật: Xây dựng quy trình làm việc bền vững trong dự án phần mềm

AI Governance trong dự án thực tế

“AI không thay thế phán đoán kỹ thuật — nó làm phán đoán đó quan trọng hơn.”

Đây là thông điệp cốt lõi được đúc kết từ quá trình đưa AI vào các dự án phần mềm thực tế.

Khi sử dụng các công cụ hỗ trợ lập trình bằng AI trong các thử nghiệm cá nhân hoặc đoạn mã nhỏ, kết quả thường rất ấn tượng: yêu cầu ngắn, phản hồi nhanh, mã chạy được ngay. Tuy nhiên, khi đưa AI vào một dự án phần mềm thực tế với codebase lớn, nhiều thành viên cùng tham gia và hệ thống nghiệp vụ phức tạp, cách làm việc dựa thuần vào prompt nhanh chóng bộc lộ các giới hạn kỹ thuật.


Vấn đề thực tế khi dùng AI trong dự án

Trong quá trình làm việc thực tế với AI, các kỹ sư thường gặp phải 4 vấn đề phổ biến sau:

Hậu quả điển hình trên quy mô lớn: mã nguồn nhất quán ở các file từ 1 đến 10, bắt đầu phân rã (code drift) từ file 30 trở đi, và không thể review nổi khi số lượng file chạm ngưỡng 80+.


Thay đổi tư duy: AI không phải autocomplete thông minh hơn

Nguyên nhân cốt lõi của tình trạng trên nằm ở góc nhìn tiếp cận công cụ:

Quan niệm cũQuan niệm đúng
AI là công cụ nhận lệnh đơn lẻAI tương tự như một junior developer mới vào team
Cải thiện bằng cách viết prompt chi tiết hơnCải thiện bằng cách xây dựng hệ thống quản trị tốt hơn
Mỗi lần prompt là một lần bắt đầu lại từ đầuGovernance system là hạ tầng kỹ thuật bền vững

Một developer mới vào dự án dù tiếp thu nhanh nhưng chưa thể nắm ngay toàn bộ quy ước ngầm, ranh giới kiến trúc hay các yêu cầu bảo mật của hệ thống. Thay vì liên tục nhắc nhở thủ công bằng lời trong từng tác vụ, giải pháp bền vững là cung cấp tài liệu quy chuẩn, thiết lập công cụ kiểm tra tự động và phân định phạm vi trách nhiệm rõ ràng.

Prompt là lệnh một lần. Governance system là hạ tầng.


Mô hình 3 tầng: Con người · Hệ thống · AI

Để tích hợp AI an toàn vào dự án dài hạn, quy trình làm việc cần được tổ chức thành 3 tầng phân cấp:

flowchart LR
    subgraph Human_Layer ["Layer 1: Human Engineer"]
        direction TB
        H1["<b>System Thinking & Technical Judgment</b>"]
        H2["<b>Trade-off Decisions & Risk Assessment</b>"]
    end

    subgraph Governance_Layer ["Layer 2: Governance System"]
        direction TB
        G1["<b>1. Convention Files:</b> CLAUDE.md & rules/"]
        G2["<b>2. Confidence Gate:</b> Threshold & Protocols"]
        G3["<b>3. Specialized Agents:</b> Planner, Executor, Reviewer"]
        G4["<b>4. Pre-commit Hooks:</b> Block & Warning"]
    end

    subgraph AI_Layer ["Layer 3: AI Execution"]
        direction TB
        A1["<b>Context Loading & Proposal</b>"]
        A2["<b>Self-Assessment (< 0.7 Escalates)</b>"]
        A3["<b>Execution within Boundaries</b>"]
        A4["<b>Commit & Verification</b>"]
    end

    H1 -->|"Encode rules"| G1
    G1 -->|"Inject context"| A1
    A1 -->|"Evaluate score"| G2
    G2 -->|"Escalate if < 0.7"| H2
    G2 -->|"Approved (>= 0.7)"| G3
    G3 -->|"Plan & Execute"| A3
    A3 -->|"Trigger git hook"| G4
    G4 -->|"Block or pass"| A4
    G4 -->|"Warning review"| H2

4 Lớp Governance kiểm soát AI trong dự án

Quy trình governance được tổ chức thành 4 chốt chặn tuần tự xuyên suốt vòng đời của từng tác vụ AI:

flowchart LR
    P1["<b>1. Convention File</b><br/>Modular rules & context"] --> P2["<b>2. Confidence Gate</b><br/>Score assessment & escalation"]
    P2 --> P3["<b>3. Specialized Agents</b><br/>Planner, Executor, Reviewer"]
    P3 --> P4["<b>4. Pre-commit Hooks</b><br/>Hard block & warning checks"]

Lớp 1 — Convention Files: Nền tảng quy tắc

Convention file là tài liệu quy chuẩn dự án được nạp tự động vào mỗi phiên làm việc với AI (ví dụ CLAUDE.md, AGENTS.md, hoặc system_prompt.md).

Để tránh tình trạng quá tải ngữ cảnh (context window) khiến AI bỏ sót thông tin, convention file nên được chia nhỏ theo mô hình modular:

project-root/
├── CLAUDE.md                  # File gốc: Tổng quan stack, 5-10 quy tắc cứng, index trỏ tới rules
└── rules/
    ├── architecture.md        # Giới hạn kích thước file, ranh giới phân tách module
    ├── security.md            # Xác thực, phân quyền, kiểm tra input, cấm hardcode secrets
    ├── patterns.md            # Quy chuẩn đặt tên, cấu trúc component, kiểu dữ liệu
    └── testing.md             # Tiêu chuẩn coverage, phương pháp viết kiểm thử

Nguyên tắc triển khai:


Lớp 2 — Confidence Gate: Chốt chặn tự tin trước khi thực thi

Sau khi nạp ngữ cảnh từ convention files, bước nguy hiểm nhất là khi AI nhận yêu cầu nhưng chưa nắm rõ codebase đã vội vàng sinh mã. Khi gặp ngữ cảnh chưa rõ ràng, AI có xu hướng tự đưa ra giả định ngầm dẫn đến lỗi lan truyền (code drift).

Để chuẩn hóa phản ứng của AI trong các tình huống này, hệ thống áp dụng Confidence Gate và Deviation Protocol:

Đánh giá Confidence Score

Trước khi bắt đầu lập kế hoạch hoặc viết mã, AI phải tự đánh giá mức độ tự tin trên 4 tiêu chí theo thang điểm từ 0 đến 1:

Nếu bất kỳ tiêu chí nào đạt điểm dưới 0.7, AI phải dừng lại và đặt câu hỏi cho kỹ sư, tuyệt đối không được tự suy đoán.

Deviation Protocol

Xử lý các tình huống phát sinh trong quá trình thực thi:


Lớp 3 — Specialized Agents: Phân tách vai trò

Khi đã vượt qua Confidence Gate, công việc chuyển sang giai đoạn thực thi. Nếu để một agent duy nhất đảm nhiệm toàn bộ quy trình từ lập kế hoạch, viết code đến kiểm tra, hệ thống mất đi cơ chế kiểm soát chéo. Mô hình cần phân chia thành các agent chuyên trách:

Vai tròTrách nhiệmRàng buộc kỹ thuật
PlannerKhảo sát mã nguồn, lập kế hoạch triển khai, xác định danh sách file cần sửa và tiêu chí nghiệm thu (Acceptance Criteria).Không được viết code.
ExecutorViết code theo đúng các bước trong kế hoạch đã được phê duyệt.Không được tự ý thay đổi kế hoạch hoặc mở rộng phạm vi.
ReviewerTự động kiểm tra chất lượng code, quy chuẩn kiến trúc và bảo mật sau mỗi lần build.Chạy tự động, bắt buộc phải hoàn thành trước khi bàn giao.

Quy trình phối hợp: Planner đọc convention và xác định phạm vi -> Kỹ sư phê duyệt -> Executor viết mã -> Reviewer kiểm tra.


Lớp 4 — Pre-commit Hooks: Tường phòng thủ tự động

Dù convention file và agent có chặt chẽ đến đâu, vẫn luôn có xác suất AI vi phạm quy chuẩn. Pre-commit Hook là chốt chặn vật lý tự động trên máy lập trình trước khi mã nguồn được commit vào git repository.

Hệ thống kiểm tra được phân thành 2 cấp độ:

flowchart LR
    subgraph AI_Layer ["Layer 1: AI Developer"]
        direction TB
        C1["<b>AI Commit Code</b><br/>Task completed, trigger hook"]
        Fix["<b>Fix & Re-commit</b><br/>Fix issues and retry"]
    end

    subgraph Block_Layer ["Layer 2: Block Gate"]
        direction TB
        G1{"<b>Scan Secrets, .env, Test</b>"}
        B1["<b>Hard Block (Hủy commit)</b><br/>Secrets leaked, .env exposed, test fail"]
    end

    subgraph Warn_Layer ["Layer 3: Warning Gate"]
        direction TB
        G2{"<b>Scan Code Quality & Scope</b>"}
        W1["<b>Warning (Rung cảnh báo)</b><br/>console.log, type any, scope > 15 files"]
    end

    subgraph Human_Layer ["Layer 4: Human Approval"]
        direction TB
        Rev["<b>Scope Verification</b><br/>Review warning & approve"]
        Pass["<b>Approved Git Commit</b><br/>Merged cleanly into repository"]
    end

    C1 --> G1
    G1 -->|"Violations found"| B1
    B1 --> Fix
    Fix --> C1
    G1 -->|"Pass"| G2
    G2 -->|"Warning flagged"| W1
    W1 --> Rev
    Rev -->|"Approved"| Pass
    G2 -->|"No warnings"| Pass

Các bài kiểm tra thực tế cần ưu tiên:


Case Study: Tự động hóa sinh kiểm thử trong dự án thực tế

Trong một dự án thực tế mà nhóm mình tham gia, đội ngũ QA ban đầu phải trích xuất thủ công các test case từ GitHub Issues. Quy trình này tốn nhiều thời gian và dễ sót các trường hợp biên.

Nhóm kỹ sư đã xây dựng quy trình AI-assisted Test Generation tích hợp các lớp governance:

flowchart LR
    subgraph Input_Layer ["Layer 1: Input & Artifacts"]
        direction TB
        I1["<b>GitHub Issue #4727</b><br/>Feature request or bug report"]
        Export["<b>Export Excel File</b><br/>Standardized test cases delivered"]
    end

    subgraph Agents_Layer ["Layer 2: Specialized AI Agents"]
        direction TB
        AC["<b>AI Product Owner</b><br/>/generate-acceptance-criteria"]
        COV["<b>AI QA Lead</b><br/>/generate-test-coverage"]
        TC["<b>AI Test Generator</b><br/>/generate-test-cases (TC_001)"]
    end

    subgraph Human_Layer ["Layer 3: Human Gate (QA Engineer)"]
        direction TB
        Review{"<b>MANDATORY: Human Review</b><br/>Audit & approve test coverage<br/><i>(AI blocked until approved)</i>"}
    end

    I1 --> AC
    AC --> COV
    COV --> Review
    Review -->|"Approved"| TC
    TC --> Export

Cách áp dụng các lớp governance trong case study:

Kết quả đo lường: Giảm khoảng 70% thời gian viết test case thủ công, đồng thời duy trì tính chuẩn hóa của bộ kiểm thử.


So sánh hiệu quả trước và sau khi áp dụng Governance

Tiêu chíKhi chưa có GovernanceKhi đã có Governance
Ngữ cảnh làm việcBắt đầu lại từ đầu ở mỗi phiên làm việc.Quy tắc dự án được nạp tự động vào mỗi phiên.
Chất lượng mã nguồnPhụ thuộc vào chất lượng của từng câu prompt.Được bảo đảm bằng quy tắc và rào chắn tự động.
Quy trình reviewKỹ sư rà soát thủ công toàn bộ lỗi chi tiết.Tự động hóa kiểm tra; kỹ sư tập trung vào logic cốt lõi.
Xử lý yêu cầu mơ hồAI tự ý phỏng đoán và quyết định kiến trúc.AI dừng lại hỏi khi điểm tin cậy (confidence) thấp.
Độ ổn định mã nguồnMã lệch chuẩn dần sau vài chục file.Mã duy trì tính nhất quán từ file đầu đến file thứ 200+.

Lộ trình triển khai theo từng giai đoạn

Việc xây dựng hệ thống quản trị cho AI nên được thực hiện tuần tự theo mức độ phát triển của dự án:


Cảnh báo về hiện tượng Governance Bloat

Một rủi ro kỹ thuật khi xây dựng hệ thống quy tắc là việc tích lũy quá nhiều quy định không cần thiết (Governance Bloat). Sau một thời gian, số lượng quy tắc quá lớn sẽ làm cạn kiệt context window của mô hình, gây ra sự chậm trễ hoặc tạo ra các chỉ dẫn mâu thuẫn lẫn nhau.

Quy trình rà soát định kỳ (Quarterly Audit) cần đặt ra 4 câu hỏi cho mỗi quy tắc, hook hoặc agent:

  1. Quy tắc này được áp dụng lần cuối khi nào?
  2. Quy tắc này giải quyết vấn đề kỹ thuật cụ thể nào trong thực tế?
  3. Có phiên bản triển khai nào đơn giản hơn không?
  4. Quy tắc này có mâu thuẫn với các quy tắc khác trong hệ thống không?

Hệ thống quản trị cần mở rộng khi phát sinh vấn đề mới và phải được tinh gọn khi vấn đề không còn tồn tại. Việc cắt tỉa (pruning) đóng vai trò quan trọng tương đương với việc xây dựng mới.


Kết luận

Sự phát triển của AI đang dịch chuyển vai trò của kỹ sư phần mềm lên tầng bài toán và thiết kế hệ thống (Problem Layer):

Trọng tâm công việc của kỹ sư phần mềm hiện nay là mã hóa các phán đoán kỹ thuật tốt nhất vào một hệ thống quản trị nhất quán, thay vì phụ thuộc vào việc nhắc nhở thủ công qua từng phiên làm việc.


Câu hỏi thảo luận


Share this post on:

Next Post
Kinh nghiệm phỏng vấn ứng viên bằng Mindmap trong công ty outsource