Tui Học AI – Bài 4 – “Tôi dùng AI thủ công” → “Tôi xây hạ tầng để AI tự chạy”
BlogContents
Một tuần tui copy-paste log lỗi từ terminal qua khung chat AI gần năm chục lần, mà cứ tưởng mình nhanh. Tới hôm dựng được cái đường ống, con số đó về gần zero. Bài thứ tư trong series.
Đọc thêm bài viết trước: Tui Học AI – Bài 3 – “Tôi hỏi AI” → “Tôi quản lý mọi thứ AI nhìn thấy”
1. Năm chục lần copy-paste một tuần
Có một dạo ngày nào tui cũng dính cái vòng này. Chạy một lệnh trong terminal, nó văng ra một đống lỗi đỏ lòm. Tui bôi đen cái stack trace, copy, mở khung chat AI, dán vào, gõ “lỗi này do đâu, fix sao”. AI gợi ý. Tui copy đoạn fix, dán ngược về editor, chạy lại. Xong lỗi này thì lòi lỗi kế. Lặp lại y chang.
Một buổi chừng chục lần. Tui tò mò đếm thử cả tuần, gần năm chục lần. Mỗi lần mất vài phút: đọc lỗi, copy, dán, chờ, copy fix về, chạy lại... Cộng dồn lại là mấy tiếng đồng hồ một tuần, chỉ để làm đúng một việc: bê cái log từ cửa sổ này qua cửa sổ kia bằng tay.
Mà hồi đó tui thấy mình ngon lắm. Tay tui quen tới mức copy-paste gần như không cần nhìn. Tui nghĩ đó là dấu hiệu mình xài AI giỏi.
Rồi một buổi chiều rảnh, tui viết một cái script nhỏ bọc ngoài lệnh hay chạy. Lệnh nào văng lỗi, nó tự tóm cái log đó, tự đẩy thẳng qua AI, rồi in ngược ra màn hình một hướng fix gợi ý. Tui khỏi copy, khỏi dán, khỏi mở chat. Tui mất chừng hai tiếng để dựng cái đó. Tuần sau, cái vòng lặp năm chục lần kia gần như biến mất. Tui không còn ngồi giữa nữa.
Lúc nhìn lại tui mới thấy quê. Suốt mấy tháng tui không hề đang “dùng AI”. Tui đang làm cái ống dẫn bằng tay giữa terminal và AI. Tui chính là cái máy copy-paste.
Đó là chỗ bậc bốn bắt đầu.

2. Không phải gõ gì cho AI, là dựng gì cho AI
“Tôi dùng AI thủ công” → “Tôi xây hạ tầng để AI tự chạy”
Ba bậc trước, bạn đều ngồi trước một khung chat.
- Bậc một, bạn đặt khuôn cho câu trả lời.
- Bậc hai, bạn để nó hỏi lại trước khi làm.
- Bậc ba, bạn quản cái nó được nhìn thấy.
Khác nhau nhiều, nhưng có một điểm chung: bạn vẫn ngồi đó, vẫn gõ tay, vẫn là người bê thông tin ra vào.
Bậc bốn kéo bạn ra khỏi cái ghế đó. Câu hỏi đổi hẳn. Không còn là “gõ gì cho AI”, mà là “dựng cái gì để AI tự lấy, tự chạy, mà không cần tui ngồi giữa làm con thoi”.
Cụ thể thì có ba thứ bạn bắt đầu dựng.
Thứ nhất là đường kết nối. Thay vì copy log từ terminal, copy ticket từ Jira, copy data từ database rồi dán vào chat, bạn nối thẳng AI vào mấy nguồn đó. Cái cách phổ biến bây giờ gọi là MCP, một chuẩn để AI tự cắm vào tool ngoài và tự đọc dữ liệu thật. Nối một lần. Sau đó AI tự lấy, bạn khỏi bê.
Thứ hai là tự động hóa bằng code. Tới bậc này bạn nhận ra khung chat không phải cửa duy nhất để nói chuyện với AI. Bạn gọi nó bằng code, trong một script. Script đó chạy trong pipeline có sẵn: một bước pre-commit, một bước trong CI, một con bot xử lý hàng loạt. Nó chạy mà không cần bạn ngồi bấm.
Thứ ba, và đây là chỗ phân biệt người làm bậc bốn cho đàng hoàng với người chỉ “tự động cho lẹ”: ranh giới quyền. Vì giờ AI không còn nói chuyện suông trong khung chat nữa. Nó đụng vào hệ thống thật. Nó đọc database thật, nó tạo PR thật. Khi một thứ chạy tự động và đụng vào đồ thật, câu hỏi quan trọng nhất không phải “nhanh chưa”, mà là “nó được phép làm tới đâu”.
Nói gọn lại: bậc ba là bậc cuối cùng bạn còn làm mọi thứ bằng tay. Bậc bốn, bạn đặt cái tay đó xuống và dựng đường ống. Nhưng dựng đường ống không phải là buông tay cho nó chạy bừa. Là dựng ống có van khóa.
Vậy làm sao biết mình đã chuyển hay chưa? Ba dấu hiệu.
3. 3 dấu hiệu bạn chưa chuyển
1. Bạn vẫn làm con thoi copy-paste mỗi ngày
Giống y tui với cái terminal. Mỗi ngày bạn bê dữ liệu qua lại bằng tay giữa một cửa sổ và khung chat AI. Copy log dán vào hỏi. Copy ticket dán vào nhờ tóm. Copy một đoạn data dán vào nhờ phân tích. Rồi copy kết quả dán ngược về.
Việc này không sai, ai cũng làm lúc đầu. Nó chỉ thành dấu hiệu chưa chuyển khi nó lặp lại hằng ngày mà bạn chưa từng dừng lại hỏi: cái thao tác này tui làm tới lần thứ năm chục rồi, sao tui không nối nó lại một lần cho xong? Còn bê tay mỗi ngày nghĩa là cái máy copy-paste vẫn là bạn.
2. Bạn chưa từng gọi AI bằng code
Với nhiều người, AI chỉ tồn tại trong một cái khung chat. Mở web lên, gõ, đọc, đóng lại. Hết.
Người chưa chuyển không biết rằng đằng sau cái khung đó là một API, gọi được bằng code y như mọi service khác. Mà cái khác biệt giữa “gõ trong chat” và “gọi bằng code” lớn lắm. Trong chat, bạn xử một thứ một lần. Bằng code, bạn xử hai trăm thứ trong một vòng lặp, lúc bạn đang đi ăn trưa. Chưa từng viết một dòng code nào gọi tới AI, nghĩa là bạn vẫn đang dùng nó ở chế độ thủ công, từng cái một, bằng tay.
3. AI đang được phép làm gì, bạn không nắm rõ
Cái này tinh vi và hơi đáng sợ. Bạn cắm vài cái tool, bật vài cái tích hợp, cho con AI agent quyền đụng vào repo, vào database, vào cái gì đó. Nó tiện thật. Nhưng hỏi lại “nó được phép làm tới đâu, không được làm gì”, bạn ậm ừ. “Ờ thì… nó cứ chạy thôi.”
“Nó cứ chạy thôi” là câu nguy hiểm nhất ở bậc này. Một con AI được cấp quyền mà không ai vẽ ranh giới thì sớm muộn cũng làm một việc không ai dặn. Chưa trả lời gọn được câu “AI của tui được làm gì, cấm làm gì”, nghĩa là bạn mới tự động hóa một nửa: phần tiện thì có, phần kiểm soát thì chưa.

4. 3 dấu hiệu bạn đã chuyển
1. Bạn có ít nhất một đường ống để AI tự lấy dữ liệu
Thay vì copy tay, bạn đã nối được ít nhất một nguồn. Một MCP server cắm vào GitHub để AI tự đọc issue. Một kết nối vào database read-only để AI tự truy vấn cái nó cần. Một đường vào Jira để nó tự lấy ticket.
Điểm chung của mấy thứ này: bạn dựng một lần, rồi cái việc bê tay năm chục lần một tuần kia tự bốc hơi. Bạn không còn là khâu trung gian. Dữ liệu tự chảy tới chỗ AI cần nó.
2. Bạn có ít nhất một script chạy mà không cần bạn ngồi đó
Đây là dấu hiệu rõ nhất. Bạn đã từng gọi AI bằng code, ít nhất một lần, để làm một việc lặp đi lặp lại. Một con bot tóm tắt PR. Một bước pre-commit nhờ AI soi qua diff. Một script chạy hàng loạt.
Lấy một ví dụ nhỏ tui hay dùng: tự sinh release notes từ git log. Trước đây mỗi lần release tui ngồi đọc lại đống commit rồi gõ tay thành ghi chú. Giờ tui để một script làm:
import subprocess
import anthropic
# Lấy tiêu đề các commit từ tag gần nhất tới HEAD
log = subprocess.run(
["git", "log", "--pretty=format:%s", "v1.4.0..HEAD"],
capture_output=True, text=True,
).stdout
client = anthropic.Anthropic() # SDK tự đọc key từ biến môi trường
msg = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=800,
messages=[{
"role": "user",
"content": (
"Gom các commit sau thành release notes tiếng Việt, "
"nhóm theo Tính năng / Sửa lỗi / Khác, mỗi mục một dòng gọn:\n\n"
+ log
),
}],
)
print(msg.content[0].text)
Mười mấy dòng. Không có gì cao siêu. Nhưng cái việc trước đây tốn của tui hai mươi phút mỗi lần release, giờ là một lệnh chạy trong vài giây. Quan trọng hơn con số đó: lần đầu viết được một thứ như vầy, bạn bước qua một cái cửa. Bạn thôi xài AI như một cái app, bắt đầu xài nó như một thành phần trong hệ thống của mình.
3. Bạn có chỗ ghi rõ AI được làm gì, cấm làm gì
Lên bậc này, có một thứ bạn tự nhiên muốn viết ra: ranh giới. Một mẩu ghi chú, một dòng comment trong config, một file ngắn cũng được. Trả lời ba câu: con AI này được đọc cái gì, được ghi vào đâu, và chỗ nào bắt buộc phải có người duyệt.
Tui học bài này theo cách hơi đắng. Hồi mới dựng được con bot đầu tiên, tui khoái quá, cho luôn nó quyền tự commit. Một bữa nó commit một mớ thay đổi tui chưa kịp đọc kỹ. May là trên nhánh phụ, không phải main. Từ đó tui kẹp lại một quy tắc: mọi thứ AI sinh ra chỉ được dừng ở mức bản nháp, con người vẫn là cái cổng cuối cùng trước khi đụng vào đồ thật. Trong nghề người ta gọi nguyên tắc này là least privilege, cấp đúng quyền tối thiểu cần để làm việc, không cấp dư một li.
Có viết cái ranh giới đó ra, dù chỉ ba dòng, nghĩa là bạn đã tự động hóa cả phần kiểm soát chứ không riêng phần tiện.
5. Bài tập tuần này
Tuần này ngồi liệt kê ba thao tác copy-paste mà bạn lặp đi lặp lại với AI. Loại bạn làm gần như mỗi ngày. Bê log, bê ticket, bê data, gì cũng được.
Chọn cái tốn thời gian nhất trong ba cái. Rồi viết một script nhỏ xử đúng cái đó. Đừng cố làm cho đẹp, đừng cố tổng quát. Chỉ cần nó chạy được một lần thành công, làm đúng cái việc bạn vẫn bê tay.
Nếu chưa từng gọi API bao giờ, cứ lấy đúng đoạn mười mấy dòng ở trên làm khung mà sửa lại theo việc của bạn. Mục tiêu không phải một con bot hoành tráng. Mục tiêu là một lần đầu tiên bạn để code đứng giữa, thay cho cái tay copy-paste của mình.
Cái cần có sau ba mươi phút: một script chạy được, kèm một dòng ghi lại nó tiết kiệm cho bạn bao nhiêu phút mỗi lần. Và thêm một dòng nữa, đừng bỏ: script này được đụng vào cái gì, và chỗ nào bạn vẫn giữ lại để tự tay duyệt. Một dòng thôi. Nhưng đó là dòng phân biệt người dựng hạ tầng với người buông cho nó chạy bừa.
Tạm kết

Nếu bài này chỉ giữ lại một câu: chừng nào bạn còn bê dữ liệu qua lại bằng tay mỗi ngày, bạn chưa thật sự dùng AI, bạn đang làm con thoi cho nó.
Bậc bốn là lúc bạn đặt cái tay đó xuống. Nối một đường ống để AI tự lấy. Viết một script để nó tự chạy. Rồi vẽ một ranh giới để nó chạy trong vòng an toàn. Ba việc đó, không phải để bạn làm nhanh hơn cho oai. Để bạn thôi tốn mấy tiếng một tuần vào cái việc một cái script làm được trong vài giây.
Nhớ năm chục lần copy-paste log lỗi đầu bài không? Tui không hề học gõ prompt hay hơn để bớt cái con số đó. Tui chỉ bỏ ra một buổi chiều dựng cái đường ống, rồi thôi ngồi giữa. AI không giỏi lên. Tui chỉ thôi làm cái máy copy-paste.
Tới đây bạn đã dựng được hạ tầng cho riêng mình. Bậc năm hỏi một câu khó hơn: mấy cái script, mấy cái quy trình bạn dựng đó, có đóng gói lại được cho cả team xài chung không, hay vẫn chỉ một mình bạn gọi được?
Cảm ơn bạn đã đọc bài viết này!
Related Posts:
Written by chuotfx
Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!
Leave a Reply Cancel reply
Fan page
Tags
Recent Posts
- Tui Học AI – Bài 4 – “Tôi dùng AI thủ công” → “Tôi xây hạ tầng để AI tự chạy”
- Guided Generation – Khi Swift type trở thành hợp đồng với model
- Foundation Models và “Hello World” trong 10 phút
- Skill Boundary (P/L/R): dạy kỹ năng biết khi nào nên dừng
- Context – Cung cấp ít hơn để đạt kết quả tốt hơn
- Tui Học AI – Bài 3 – “Tôi hỏi AI” → “Tôi quản lý mọi thứ AI nhìn thấy”
- Đừng xoá hàm này (phần 1)
- Tui Học AI – Bài 2 – “Tôi ra lệnh cho AI” → “Tôi cộng tác với AI”
- Context Rot – Vì sao cho mô hình thêm thông tin đôi khi làm kết quả tệ đi?
- Giải mã tool poisoning – Vì sao con AI coding tool an toàn nhất cũng không tự bảo vệ bạn
You may also like:
Archives
- July 2026 (1)
- June 2026 (13)
- May 2026 (2)
- April 2026 (5)
- March 2026 (5)
- February 2026 (1)
- January 2026 (10)
- December 2025 (1)
- October 2025 (1)
- September 2025 (4)
- August 2025 (5)
- July 2025 (10)
- June 2025 (1)
- May 2025 (2)
- April 2025 (1)
- March 2025 (8)
- January 2025 (7)
- December 2024 (4)
- September 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (4)
- April 2024 (2)
- March 2024 (5)
- January 2024 (4)
- February 2023 (1)
- January 2023 (2)
- November 2022 (2)
- October 2022 (1)
- September 2022 (5)
- August 2022 (6)
- July 2022 (7)
- June 2022 (8)
- May 2022 (5)
- April 2022 (1)
- March 2022 (3)
- February 2022 (5)
- January 2022 (4)
- December 2021 (6)
- November 2021 (8)
- October 2021 (8)
- September 2021 (8)
- August 2021 (8)
- July 2021 (9)
- June 2021 (8)
- May 2021 (7)
- April 2021 (11)
- March 2021 (12)
- February 2021 (3)
- January 2021 (3)
- December 2020 (3)
- November 2020 (9)
- October 2020 (7)
- September 2020 (17)
- August 2020 (1)
- July 2020 (3)
- June 2020 (1)
- May 2020 (2)
- April 2020 (3)
- March 2020 (20)
- February 2020 (5)
- January 2020 (2)
- December 2019 (12)
- November 2019 (12)
- October 2019 (19)
- September 2019 (17)
- August 2019 (10)





