Get in touch
or send us a question?
CONTACT

Software Engineering Has Always Been Context Engineering

Hành trình cá nhân của tôi với lập trình agentic

Tôi đã thực hành cả nghệ thuật lẫn khoa học của lập trình agentic được khoảng hai năm. Nghe có vẻ hơi buồn cười vì “lập trình agentic” là một thuật ngữ tương đối mới. Đúng là hồi đó tôi chưa dùng cụm từ này, nhưng tôi đã sử dụng một tác nhân AI để viết code.

Đó là một agent mã nguồn mở do chính tôi xây dựng, tên là Kaguya. Tôi xây dựng nó dưới dạng một plugin cho ChatGPT, cho phép nó truy cập vào ổ đĩa cục bộ của tôi, nhờ đó nó có thể tự ghi file, đọc file, chỉnh sửa file và chạy code — Bash, Python, JavaScript — hoàn toàn độc lập.

Vào thời điểm đó, đây là một ý tưởng khá kỳ lạ. Khi tôi lần đầu nói công khai về nó, nhiều người thấy buồn cười khi tôi cho AI quyền truy cập sâu như vậy vào máy của mình. Nhưng tôi chạy nó trong container, nên mức độ an toàn khá cao.

Sau đó, tôi gia nhập Sourcegraph và làm việc với nhiều trải nghiệm lập trình agentic khác nhau. Chính tôi là người giới thiệu khái niệm lập trình agentic cho Cody, một trợ lý AI hỗ trợ lập trình.

Gần đây hơn, tôi tham gia một nhóm phát triển công cụ lập trình agentic mới có tên là Amp.

Tôi đã sử dụng lập trình agentic rất nhiều trong tất cả các dự án này. Ví dụ, tôi xây dựng phần lớn Kaguya bằng chính Kaguya. Tôi đã tạo hàng trăm commit, đọc và viết ít nhất hàng nghìn dòng code, nên tôi tin rằng mình đủ tư cách để nói về chủ đề này.


Kỹ thuật ngữ cảnh trong lập trình agentic

Kỹ thuật ngữ cảnh (context engineering) là việc thu thập đúng ngữ cảnh cho trợ lý AI hoặc agent AI để nó có thể thực hiện nhiệm vụ một cách tốt nhất. Điều này có thể bao gồm nhiều khía cạnh khác nhau, chẳng hạn:

  • Thiết lập file AGENTS.md / AGENT.md để agent biết bạn đang làm dự án gì, sở thích của bạn ra sao

  • Hướng agent thu thập đúng ngữ cảnh từ codebase để nó có đủ thông tin hoàn thành yêu cầu

  • Sử dụng các công cụ như MCP server để agent có thể truy cập nguồn thông tin bên ngoài

Cuối cùng, theo quan điểm của tôi, mọi thứ quy về một vài nguyên tắc cốt lõi:

  1. Viết chỉ dẫn càng rõ ràng càng tốt và cung cấp nhiều chi tiết

  2. Cung cấp đủ ngữ cảnh liên quan để agent không phải đoán

  3. Giữ ngữ cảnh ngắn gọn nhất có thể để agent tập trung vào điều quan trọng

Tôi sẽ đưa ra thêm ví dụ chi tiết sau, nhưng ba điểm trên là nền tảng tốt để bắt đầu.


Nguyên tắc của kỹ thuật ngữ cảnh

Bản chất không đổi của kỹ thuật phần mềm

Trong suốt sự nghiệp lập trình agentic của mình, tôi luôn lập luận rằng cốt lõi của kỹ thuật phần mềm chưa bao giờ thay đổi. Và trong thời đại của lập trình agentic và kỹ thuật ngữ cảnh, điều đó theo tôi vẫn đúng.

Tôi nhớ khi còn làm kỹ sư phần mềm tại Google, một trong những kỹ năng đầu tiên tôi phải học là thu thập đúng ngữ cảnh từ codebase. Tôi sử dụng Code Search (công cụ tìm kiếm code nội bộ của Google) để tìm, ví dụ, đoạn text UI mà tôi đang thấy. Tôi có thể tìm kiếm toàn bộ codebase của Google chỉ trong vài mili-giây.

Sau đó, tôi lần theo luồng code — đôi khi chèn thêm log debug — từ UI xuống JavaScript, rồi tiếp tục tìm backend server mà đoạn code đó phụ thuộc vào. Tôi thậm chí còn in code ra giấy (và sau này mới biết không chỉ mình tôi làm vậy) để đọc từng dòng cho dễ hiểu.

Qua hơn 10 năm làm việc trong ngành công nghệ, điều tôi nhận ra — đặc biệt là gần đây — là rất nhiều công việc trong kỹ thuật phần mềm vốn dĩ chính là thứ mà ngày nay người ta gọi là “kỹ thuật ngữ cảnh”. Đó là việc thu thập tài liệu phù hợp và ngữ cảnh từ codebase, mô tả issue, chat nội bộ, tìm kiếm trên mạng, v.v.

Về bản chất, lập trình agentic không thay đổi điều này. Thay vì tự tìm kiếm, bạn có thể nhờ AI agent làm thay bạn — dù là trong codebase hay trên web. Thay vì tự đọc blog, bạn có thể yêu cầu agent đọc. Thay vì lần mò code từng dòng, từng lần search, bạn có thể yêu cầu agent thực hiện hàng chục truy vấn để lần theo luồng code và hiểu nguyên nhân của bug.

Đôi khi quá trình này mang tính lặp: sửa code rồi test. Đôi khi chỉ là một lần tìm kiếm duy nhất, như tìm lại một tin nhắn Slack từ sáu tháng trước. Nhưng dù thế nào, tất cả những công việc này vẫn hoàn toàn phù hợp trong thời đại lập trình agentic và kỹ thuật ngữ cảnh. Điểm khác biệt duy nhất là giao diện: thay vì dùng trình duyệt, bạn dùng AI coding agent.


7 kỹ thuật / ví dụ thực tế cho lập trình agentic

1. Làm việc với Git và GitHub CLI

Một trong những điều mạnh mẽ nhất bạn có thể làm với AI coding agent là cho nó quyền truy cập vào terminal (tất nhiên theo cách an toàn). Và một trong những cách hữu ích nhất là thông qua Git và GitHub CLI.

Thay vì phải nhớ mọi câu lệnh Git, bạn có thể yêu cầu agent chạy chúng giúp bạn và tập trung vào mục tiêu cấp cao hơn. Ví dụ: tạo branch, commit, mở PR dựa trên cuộc hội thoại hoặc các thay đổi gần đây; duyệt commit để tìm thông tin; tóm tắt thay đổi của đồng nghiệp; hoặc thu thập dữ liệu phục vụ code review.

Khi kết hợp với khả năng xác minh tính đúng đắn của code, git bisect thậm chí còn trở nên mạnh mẽ và tự động hơn rất nhiều.


2. Lưu ngữ cảnh nhưng vẫn tối đa năng suất

Cung cấp nhiều chi tiết và đủ ngữ cảnh là rất quan trọng, nhưng nếu ngữ cảnh quá dài, hiệu năng sẽ giảm và chi phí tăng. Các mô hình thường làm việc tốt hơn với ngữ cảnh gọn gàng, giống như con người làm việc hiệu quả hơn trên bàn làm việc sạch sẽ.

Một cách hay để giải quyết là dùng tài liệu tiến độ dự án. Sau mỗi phiên làm việc ngắn, bạn yêu cầu agent tóm tắt tiến độ và việc cần làm tiếp theo vào một file (ví dụ project-progress.md). Khi bắt đầu phiên mới, chỉ cần load lại file đó.


3. Làm việc với codebase xa lạ

AI coding agent đặc biệt hữu ích với codebase lớn và có sẵn. Điều quan trọng là đặt nhiều câu hỏi trước khi viết code, hiểu cấu trúc hệ thống và phạm vi bạn đang can thiệp.

LLM vẫn có thể sai, nên bạn không nên “tắt não”. Agent không phải để thay thế tư duy, mà để tăng tốc việc học và hiểu codebase.


4. Hoàn thiện chu trình viết – test

Bạn có thể cho agent khả năng tự viết code và tự test, ví dụ thông qua Playwright, tmux, hoặc các lệnh test. Điều này mở ra tiềm năng rất lớn, đặc biệt khi kết hợp với khả năng “computer use” (tương tác GUI).


5. Nghiên cứu chủ đề chưa quen

AI coding agent cũng rất hữu ích cho nghiên cứu, nhất là vì bạn không cần rời khỏi môi trường lập trình. Việc nghiên cứu trở nên mang tính lặp và cộng tác hơn so với các công cụ nghiên cứu truyền thống.


6. Debug theo cặp với AI agent

Hãy coi agent như một người đồng hành. Nó có thể không giải quyết được mọi thứ trong một lần, nhưng giúp bạn giữ được góc nhìn ở mức cao, hiểu nhanh codebase và tập trung vào vấn đề cốt lõi.


7. Dùng giọng nói để nhập liệu

Nói thường nhanh hơn gõ. Các mô hình hiện đại đủ thông minh để hiểu và sửa lỗi. Sau khi quen, đây có thể trở thành cách lập trình chính của bạn.


Lời kết

Bài viết này có thể đưa bạn đi được khoảng 90% chặng đường trong việc làm chủ lập trình agentic. 10% còn lại phụ thuộc vào lĩnh vực và hoàn cảnh cụ thể của bạn.

Bạn có thể đọc bài viết gốc tại đây https://agenticcoding.substack.com/p/software-engineering-has-always-been