- Lập trình AI đã chuyển dịch nhanh chóng từ việc sao chép/dán mã và tự động hoàn thành cơ bản sang các tác nhân AI chủ động viết và chỉnh sửa mã, giảm đáng kể sự can thiệp trực tiếp của con người.
- Sự thay đổi này được thúc đẩy bởi sự tiến bộ vượt bậc của các mô hình AI cùng với các "hệ thống điều khiển" (harness) như Claude Code, giúp quản lý ngữ cảnh, công cụ và tương tác để các tác nhân AI hoạt động hiệu quả.
- Tương lai của lập trình sẽ tập trung vào việc các tác nhân AI xử lý các mục tiêu cấp cao hơn và toàn bộ quy trình, biến vai trò của lập trình viên thành người hướng dẫn và đánh giá công việc do AI thực hiện.
The future of agentic coding with Claude Code
- Chuyển dịch sang lập trình dựa trên tác nhân (Agent-Driven Coding): Lập trình đã tiến hóa từ việc thao tác văn bản trực tiếp trong IDE sang việc các mô hình AI tự viết và chỉnh sửa mã, trở thành một phần của quy trình làm việc cốt lõi của nhà phát triển.
- Hai yếu tố thúc đẩy chính: Sự tiến bộ trong lập trình AI đến từ hai mặt: các mô hình AI trở nên thông minh hơn (ví dụ: từ Sonnet 3.5 lên Opus 4.0.1) và "hệ thống điều khiển" (harness) tương tác với mô hình cũng được cải thiện đáng kể (như Claude Code).
- Vai trò của Claude Code: Claude Code đóng vai trò là "giàn giáo" (scaffolding) hoặc "hệ thống điều khiển" cho mô hình AI, xử lý câu lệnh hệ thống, quản lý ngữ cảnh, cung cấp công cụ, cài đặt và quyền hạn để mô hình hoạt động hiệu quả.
- Đồng tiến hóa qua quá trình "dogfooding": Mô hình AI và các công cụ như Claude Code cùng tiến hóa thông qua việc sử dụng nội bộ hàng ngày. Các kỹ sư và nhà nghiên cứu sử dụng Claude Code, từ đó phát hiện giới hạn và cải thiện mô hình cũng như hệ thống điều khiển.
- Vòng lặp phản hồi chặt chẽ quan trọng hơn benchmark tổng hợp: Một kênh phản hồi nhanh chóng và hiệu quả từ người dùng (ví dụ: kênh Slack nội bộ) là tín hiệu mạnh mẽ nhất để cải thiện sản phẩm, vượt trội hơn so với các phương pháp đánh giá tổng hợp (synthetic evals) hoặc kiểm thử câu lệnh (prompt testing) truyền thống.
- Khả năng tùy chỉnh và mở rộng cao: Claude Code được thiết kế để dễ dàng tùy chỉnh/mở rộng thông qua các "điểm mở rộng" (extension points) như tệp
Claude.md, hệ thống cài đặt/quyền, hook, Giao thức Ngữ cảnh Mô hình (MCP), lệnh gạch chéo do người dùng định nghĩa và Tác nhân phụ. - Thay đổi vai trò của kỹ sư trong tương lai: Công việc của kỹ sư sẽ chuyển từ việc lập trình trực tiếp sang việc hướng dẫn, giám sát và đánh giá các thay đổi do AI tạo ra, với các tác nhân AI xử lý các mục tiêu cấp cao hơn như tạo toàn bộ PR hoặc xây dựng ứng dụng.
- SDK cho các tác nhân AI: Bộ công cụ phát triển phần mềm (SDK) cơ bản của Claude Code có thể được tận dụng để xây dựng các tác nhân AI không chỉ trong lập trình mà còn trong nhiều lĩnh vực khác.
Môi trường phát triển tích hợp(IDE) — Integrated Development Environment (IDE)Tác nhân AI(agent) — AI Agentquy trình làm việc(workflow) — workflowmô hình AI— AI modelhệ thống điều khiển(harness) — harness system / scaffoldingngữ cảnh(context) — contextcâu lệnh hệ thống(system prompt) — system promptvòng lặp phản hồi chặt chẽ(tight feedback loop) — tight feedback looptùy chỉnh/mở rộng(hackable) — customizable / extensiblelệnh gạch chéo(slash commands) — slash commands
Giới thiệu và Lịch sử Lập trình AI
Tôi nhớ lại khi tôi bắt đầu học lập trình. Tôi là một đứa trẻ ngồi ở cuối lớp toán cấp hai với chiếc máy tính TI-83 Plus nhỏ của mình. Chúng tôi lập trình nó bằng BASIC, vì một lúc nào đó tôi nhận ra mình có thể lập trình các câu trả lời của bài kiểm tra toán vào máy tính. Tôi không biết nữa. Chào mọi người, tôi là Alex. Tôi phụ trách quan hệ Claude tại Anthropic. Hôm nay, chúng ta sẽ nói về Claude Code và tương lai của kỹ thuật phần mềm. Đồng hành cùng tôi là đồng nghiệp, Boris. Tôi là thành viên của đội ngũ kỹ thuật tại Anthropic và là người tạo ra Claude Code.
Rất nhiều điều đã xảy ra trong 12 tháng qua và mọi thứ đang diễn ra rất, rất nhanh, đặc biệt trong lĩnh vực lập trình. Đối với những người có thể không theo dõi tin tức hàng ngày, hoặc thậm chí gặp khó khăn trong việc cập nhật những tin tức mới nhất (đôi khi tôi cũng vậy), bạn có thể cho chúng tôi biết điều gì đã xảy ra và tình hình hiện tại của chúng ta?
Vâng, một năm trước, lập trình hoàn toàn khác so với ngày nay. Một năm trước, nếu bạn muốn viết mã, bạn có một Môi trường phát triển tích hợp (IDE). Bạn có một số dạng tự động hoàn thành trong IDE. Và sau đó có một loại ứng dụng trò chuyện (chat app) nào đó và bạn có thể sao chép và dán mã qua lại một chút. Đó là hiện đại nhất. Đó là AI trong lập trình. Và tôi nghĩ, có lẽ khoảng một năm trước, chúng ta bắt đầu thấy các Tác nhân AI (agent) xuất hiện như một thứ mà mọi người thực sự sử dụng trong lập trình. Nó giống như một phần của quy trình làm việc (workflow). Nó không phải là một mánh lới quảng cáo hay nguyên mẫu (prototype). Nó thực sự là một phần của vòng lặp bên trong (inner loop) khi bạn đang phát triển. Và tôi nghĩ đây là điều đã thay đổi nhiều nhất trong năm qua: giờ đây khi bạn lập trình, bạn sử dụng Tác nhân AI, bạn không còn trực tiếp thao tác văn bản trong IDE nữa. Nó không chỉ là về hoàn thành bằng tab, mà là về việc mô hình AI viết mã cho bạn. Và tôi nghĩ những gì chúng ta bắt đầu thấy là sự chuyển dịch từ việc trực tiếp thao tác văn bản sang việc có mô hình AI tự mình thực hiện việc thao tác văn bản đó. Và tôi nghĩ, nếu chiếu theo xu hướng này, đây là quỹ đạo mà chúng ta đang đi, liệu nó có tiếp tục trong tương lai không? Tôi hiểu rồi.
Sự Chuyển Dịch Trong Lập trình với AI
Vậy là chúng ta đã chuyển từ việc mọi thứ nằm trong một ứng dụng web (web app) nơi bạn copy-paste và có thể viết mã ra ngoài, thực hiện các chỉnh sửa có mục tiêu, gần như là chuyển sang việc ít can thiệp (hands off) hơn nhiều, nói cho một Tác nhân AI (agent) biết bạn muốn nó làm gì, và sau đó tin tưởng nó để thực hiện rất nhiều chỉnh sửa và thậm chí tự mình tạo ra toàn bộ ứng dụng. Vâng, chính xác. Và đây là điều mà tôi nghĩ lý do chúng ta không thể làm được một năm trước. Mọi người đã cố gắng làm cho AI thực hiện lập trình trong một thời gian rất dài và tự động hóa ngày càng nhiều công đoạn lập trình theo nhiều cách khác nhau. Và điều đó thực sự chưa hiệu quả, tôi nghĩ, có lẽ vì một vài lý do.
Một là, các mô hình AI chưa đủ tốt. Và thứ hai là giàn giáo (scaffolding), thứ nằm trên mô hình AI, chưa đủ tốt. Và khi chúng tôi lần đầu ra mắt Claude Code, những phiên bản đầu tiên vào cuối năm ngoái, tôi nghĩ lúc đó vẫn đang sử dụng Sonnet 3.5. Nó thậm chí còn chưa phải 3.6. Dù chúng ta gọi cái này là gì, Sonnet 3.5 mới. Vâng, Sonnet được nâng cấp. Vâng, nó thậm chí còn chưa phải phiên bản này. Và nó cũng có phần nào đó hoạt động. Tôi đã sử dụng nó cho khoảng 10% mã của mình hoặc gì đó.
Nhưng ngay cả khi đó, tôi nhớ khi chúng tôi ra mắt, chúng tôi đã đưa nó cho đội ngũ cốt lõi (core team). Lúc đó chỉ có tôi và một vài người khác trong nhóm. Và tôi nhớ một buổi sáng bước vào văn phòng, trên đường đến bàn làm việc của mình, có một vài kỹ sư đang ngồi đó, một trong số họ là Robert và một vài kỹ sư khác. Tôi vừa bước vào và lần đầu tiên nhìn thấy Claude Code trên màn hình của họ. Tôi vừa đưa nó cho họ và họ đã sử dụng nó rồi. Đó là điều điên rồ nhất. Và mô hình AI lúc đó chưa thực sự tốt. Hệ thống điều khiển (harness) cũng chưa tốt lắm. Nhưng ngay cả trong phiên bản ban đầu này, nó cũng đã có chút hữu ích rồi.
Và tôi nghĩ rằng trong năm qua, điều đã xảy ra là mô hình AI đã trở nên tốt hơn rất nhiều trong việc lập trình dựa trên Tác nhân AI (agent-driven coding). Điều này đã diễn ra với 3.7 và bây giờ là 4.0 và Opus 4.0.1. Và hệ thống điều khiển (harness) cũng đã trở nên tốt hơn rất nhiều. Và rõ ràng hệ thống điều khiển (harness) chính là Claude Code, bởi vì cách tương tác với mô hình AI, bạn không thể trực tiếp sử dụng mô hình AI được. Bạn phải sử dụng một hệ thống điều khiển (harness). Nó giống như, nếu bạn cưỡi ngựa, bạn cần một chiếc yên ngựa nào đó và chiếc yên đó tạo ra sự khác biệt lớn khi bạn cưỡi ngựa. Tôi không phải là người cưỡi ngựa. Mặc dù tôi thích sự tương đồng đó.
Kiến trúc Claude Code và Sự Đồng Tiến Hóa của Mô hình AI
Ý tôi là, Claude giống như con ngựa. Và với tư cách là kỹ sư, bạn đang cố gắng khiến nó đi theo một hướng nhất định và bạn đang cố gắng hướng dẫn nó, và bạn cần một loại giàn giáo (scaffolding) nào đó xung quanh nó để có thể điều khiển nó một cách chính xác. Và hệ thống điều khiển (harness) trong trường hợp này, để hiểu rõ hơn, là tất cả mọi thứ, từ các công cụ (tools) chúng tôi cung cấp cho nó đến cách chúng tôi xử lý ngữ cảnh (context) và mọi thứ cho mô hình AI. Chính xác, chính xác. Nó giống như toàn bộ Claude Code. Mô hình AI là thứ đứng sau API. Và sau đó Claude Code là câu lệnh hệ thống (system prompt), là quản lý ngữ cảnh (context management), là công cụ (tools), là khả năng cắm các máy chủ MCP (MCP servers), cài đặt (settings), quyền hạn (permissions), tất cả những thứ này, tất cả đều giao tiếp với mô hình AI. Và mô hình AI nhìn thấy tất cả ngữ cảnh, tất cả đầu ra từ những thứ đó và nó tạo ra sự khác biệt lớn trong cách nó hoạt động. Và tôi nghĩ trong năm qua, chúng tôi đã học được cách chính xác để xây dựng cho mô hình AI. Và mô hình AI đã cùng tiến hóa (co-evolved) không chỉ với Claude Code, mà còn với tất cả các sản phẩm khác đang sử dụng mô hình AI của Anthropic để xây dựng các công cụ lập trình dựa trên Tác nhân AI (agent-driven coding tools).
Có lẽ hãy nói thêm về điều đó. Khi bạn nói cùng tiến hóa (co-evolved), có phải vì đó là một điều có chủ đích mà chúng ta đang thực hiện với huấn luyện mô hình (model training) hay mô hình AI cũng đang trở nên tốt hơn trong những việc này khi chúng ta cải thiện các tính năng sản phẩm?
Nó khá tự nhiên, thật lòng mà nói. Tại Anthropic, mọi người đều sử dụng Claude Code. Điều đó bao gồm cả các nhà nghiên cứu. Vì vậy, mỗi ngày, những người xây dựng mô hình AI đều sử dụng mô hình AI để thực hiện công việc của họ. Và tôi nghĩ rằng là một phần của việc đó, bạn sẽ thấy những giới hạn tự nhiên mà bạn gặp phải với mô hình AI. Ví dụ, có thể mô hình AI rất kém trong việc thực hiện một số loại chỉnh sửa. Và đôi khi khi bạn sử dụng Claude Code, bạn sẽ thấy kiểu như, "thay thế chuỗi thất bại", "thay thế chuỗi thất bại". Đây là một khả năng của mô hình AI. Và chúng ta có thể cải thiện điều này nếu chúng ta học được từ nó. Hoặc một ví dụ khác, có lẽ ở cấp độ cao hơn, là nếu bạn chỉ để mô hình AI chạy trong 30 phút, với 3.5, nó có thể làm được một chút. Có lẽ trong một phút hoặc gì đó, nó sẽ đi đúng hướng. Và sau đó với các mô hình AI mới hơn, thời gian này ngày càng dài hơn. Lượng thời gian mà mô hình AI có thể hoạt động tự chủ (autonomously). Và tôi nghĩ điều này thực sự dựa trên kinh nghiệm. Bởi vì bạn sử dụng mô hình AI. Bạn sẽ thấy ở đâu, với tư cách là một con người, bạn phải điều chỉnh hướng đi và lái nó. Và sau đó chúng tôi đã học được từ điều đó. Và chúng tôi có thể đưa điều đó vào mô hình AI và dạy nó tốt hơn để tự làm điều này.
Phương pháp Đánh giá Hiệu suất Mô hình AI
Khi bạn đánh giá một mô hình AI mới, bạn có một bộ kiểm tra cảm nhận (vibe check) mà bạn chạy không? Hoặc nếu đó là một tính năng mới mà chúng ta đang triển khai để làm cho hệ thống điều khiển (harness) tốt hơn, cá nhân bạn đánh giá hiệu suất có đang tốt lên không như thế nào?
Tôi chỉ làm công việc của mình trong ngày đó. Thú vị đấy. Vâng. Giống như, một ngày hoàn hảo của tôi là tôi chỉ lập trình cả ngày. Và bất kể mô hình AI đó là gì, bất kể điều mới mà chúng tôi đang thử nghiệm là gì, tôi sẽ chỉ lập trình bằng cách sử dụng nó và xem cảm nhận nó như thế nào. Không có một thứ cụ thể nào tôi làm cả. Đúng vậy. Bạn chỉ xem nó thực sự hoạt động như thế nào đối với bạn trong công việc hàng ngày? Vâng, chính xác. Và trong công việc hàng ngày, bạn làm đủ mọi thứ. Bạn viết mã mới, có thể bạn sửa lỗi, bạn đọc tin nhắn Slack hoặc các vấn đề GitHub để phản hồi ý kiến. Và tôi nghĩ mô hình AI ngày càng có thể làm được nhiều hơn những điều này. Vì vậy, thực ra, theo một cách nào đó, nếu bạn chỉ có một thứ mà bạn luôn sử dụng mô hình AI cho, bạn sẽ bỏ lỡ một số khả năng mới hơn, như kéo ngữ cảnh (context) thông qua MCP, như đọc tin nhắn Slack của bạn, hoặc tự động gỡ lỗi, bởi vì bạn có thể tự động kéo nhật ký Sentry. Vâng. Vì vậy, eval tốt nhất theo một nghĩa nào đó là eval trông giống đời thực nhất. Và trong trường hợp đó, chỉ cần sử dụng nó sẽ mang lại cho bạn kết quả tốt nhất.
Chúng tôi đã cố gắng rất nhiều khi xây dựng Claude Code để tạo ra các eval sản phẩm. Vâng. Giống như để có một loại tiêu chuẩn đánh giá (benchmark) nào đó. Khi chúng tôi thay đổi một câu lệnh hệ thống (system prompt) hoặc bất cứ điều gì, mô hình AI có tốt hơn không, và chúng tôi có một chút điều này, nhưng thật lòng mà nói, rất khó để xây dựng các eval. Và tín hiệu lớn nhất cho đến nay chỉ là cảm nhận. Giống như nó có cảm thấy thông minh hơn không? Bởi vì có một phạm vi tác vụ rất rộng mà họ sử dụng nó cho. Vâng, đó thực sự là một câu hỏi mà tôi nghe từ các nhà phát triển mọi lúc là họ sẽ đánh giá cao hơn sự hướng dẫn về cách chúng tôi thực hiện kiểm thử câu lệnh (prompt testing) và lặp lại. Tôi biết đối với các sản phẩm khác nhau, chúng tôi đã cố gắng tạo ra nhiều loại eval khác nhau. Nhưng đối với Claude Code, nó thực sự chỉ là một vòng lặp phản hồi chặt chẽ (tight feedback loop) mà gần như mang lại cho chúng tôi tín hiệu tức thì hơn bất kỳ bộ eval được mã hóa cứng nào. Tôi tự hỏi liệu mọi người có muốn nghe một câu trả lời tốt hơn từ một... Vâng, vâng. Nhưng vâng, mọi thứ đều dựa vào cảm nhận. Vâng. Tôi nghĩ ở thời điểm này, các mô hình AI đang hoạt động rất tốt trên các eval như SWE-bench. Chúng tôi đang cố gắng tìm những eval khó hơn này. Và bây giờ có T-bench, cái mà ít bão hòa hơn một chút. Nhưng tôi nghĩ thực sự rất khó để tìm ra các eval tổng hợp (synthetic evals) nắm bắt được tất cả sự phức tạp trong kỹ thuật phần mềm. Đúng vậy. Đúng vậy.
Vòng lặp phản hồi và Khả năng tùy chỉnh của Claude Code
Bạn có nghĩ có điều gì chúng ta đã làm độc đáo để thiết lập vòng lặp phản hồi đó nội bộ không? Bởi vì tôi cảm thấy Claude Code có chu trình dogfooding tốt nhất mà tôi từng thấy ở bất kỳ loại sản phẩm nào.
Ban đầu, tôi xây dựng nó theo cách tôi làm bất kỳ sản phẩm nào khác. Đó là chỉ lắng nghe người dùng và làm cho việc lắng nghe người dùng dễ dàng nhất có thể. Và tôi nghĩ một phần trong đó là khi chúng tôi xây dựng Claude Code, chỉ có một kênh phản hồi (feedback channel) duy nhất trong Slack. Và bất cứ lúc nào, bất kỳ ai có phản hồi, tôi sẽ chỉ hướng họ đến đó. Chỉ nói, vâng, đăng ở đó. Và tôi cảm thấy mọi người đôi khi hơi do dự một chút. Bởi vì đôi khi khi bạn đưa ra phản hồi, bạn mong đợi rằng không ai lắng nghe. Và nó giống như đi vào một hố đen, vào một khoảng trống. Và tôi nghĩ một trong những điều chúng tôi đã làm thực sự đúng là ngay từ đầu, bất cứ khi nào ai đó đưa ra phản hồi, tôi sẽ cố gắng sửa nó nhanh nhất có thể. Và đôi khi tôi sẽ đến văn phòng và sau đó dành khoảng ba giờ hoặc hai giờ hoặc bất cứ thời gian nào, chỉ cần xem xét càng nhiều lỗi càng tốt và sửa chúng nhanh nhất có thể. Và sau đó mỗi lần bình luận lại và nói với mọi người rằng nó đã được sửa. Đúng vậy. Và điều này khuyến khích họ tiếp tục đưa ra phản hồi. Và cho đến ngày nay, kênh phản hồi Claude Code nội bộ chỉ là một vòi nước khổng lồ. Vâng. Nó không ngừng nghỉ.
Ồ, hoàn toàn đúng. Tôi nhớ vào những ngày đầu đó, và vẫn còn bây giờ, tôi vào đó, đăng một cái gì đó và bạn phản ứng bằng biểu tượng cảm xúc ngay lập tức, hoặc bạn yêu cầu làm rõ hơn và đặt thêm câu hỏi. Và bạn thực sự cảm thấy, ồ, phản hồi của tôi đang được lắng nghe. Và sau đó bạn thực sự được khuyến khích để đăng thêm phản hồi trong tương lai. Vâng, bởi vì thành thật mà nói, tôi không biết mình đang làm gì. Không ai thực sự biết họ đang làm gì với AI. Chúng tôi đang khám phá điều này khi chúng tôi xây dựng nó. Và chỉ báo tốt nhất là những gì người dùng muốn. Vì vậy, bạn chỉ cần lắng nghe. Đúng vậy.
Chuyển hướng một chút. Tình trạng hiện tại của Claude Code là gì? Các tính năng mới nhất là gì? Bạn hào hứng về điều gì? Một số điều bạn đang thấy mọi người làm với nó ngay bây giờ.
Claude Code ngay từ đầu đã được xây dựng để trở thành thứ đơn giản nhất một lần nữa, và có khả năng tùy chỉnh/mở rộng (hackable) nhất có thể. Và tôi nghĩ khả năng tùy chỉnh/mở rộng (hackability) là điều mà chúng tôi đã phát triển rất nhiều. Và đó là điều tôi thực sự hào hứng. Vì vậy, ban đầu, cách để tùy chỉnh/mở rộng Claude Code là thêm vào Claude.md của nó. Đó là điểm mở rộng (extension point) ban đầu. Trong Claude.md, với tư cách là một tệp, bạn có thể đặt nó trong thư mục gốc (root directory). Bạn có thể đặt nó trong các thư mục con (child directories). Có nhiều nơi khác nhau bạn có thể đặt nó. Và đó chỉ là ngữ cảnh bổ sung mà bạn cung cấp cho Claude Code, và nó đi kèm với repository của bạn. Bạn thường đưa nó vào codebase của mình.
Mở Rộng Hệ Thống và Tác Nhân AI
Do đó, nó cung cấp thêm một chút thông tin về mã. Nhưng theo thời gian, chúng tôi đã thêm nhiều điểm mở rộng hơn. Giờ đây, có một hệ thống cài đặt và hệ thống quyền rất tinh vi. Hiện có các hook mà Dixon đã xây dựng. Dixon là một kỹ sư trong nhóm của chúng tôi. Anh ấy chỉ thấy tất cả các yêu cầu khác nhau từ người dùng muốn mở rộng theo cách này, muốn hook vào cái này, hook vào cái kia. Và thế là anh ấy đã xây dựng một hệ thống hook cực kỳ mở rộng. Giao thức Ngữ cảnh Mô hình (MCP), rõ ràng đây là một điểm mở rộng tuyệt vời. Và giờ đây có các lệnh gạch chéo và Tác nhân phụ. Các lệnh gạch chéo do người dùng định nghĩa là thứ mà chúng tôi đã đầu tư rất nhiều. Và ý tưởng là nó chỉ là một quy trình làm việc. Nó giống như một tệp Markdown. Bạn đặt nó vào mã của mình và đó là thứ bạn có thể tái sử dụng rất nhiều. Ví dụ, tôi có một lệnh gạch chéo để tạo lệnh. Và tôi có một số hướng dẫn ở đó: "Đây là cách bạn viết một Git commit tốt." Tôi cho phép trước lệnh bash Git commit, vì vậy tôi không cần phải chấp nhận nó mỗi lần. Và mô hình AI có thể tự động thực hiện. Vì vậy, tôi nghĩ lệnh gạch chéo thực sự thú vị. Và Tác nhân AI là một cách nhìn khác về lệnh gạch chéo. Nó giống như một lệnh gạch chéo, nhưng nó có một cửa sổ ngữ cảnh phân nhánh. Do đó, bạn có thể coi Tác nhân AI và lệnh gạch chéo là hai mặt của cùng một vấn đề. Và điều này cũng rất thú vị. Đó chỉ là một cách khác để mở rộng Claude Code.
Và khi tôi nhìn vào tương lai, tôi nghĩ phần lớn chỉ là về việc làm thế nào để chúng ta mở rộng Claude Code hơn nữa? Làm thế nào để chúng ta giúp những người khác dễ dàng xây dựng dựa trên nó hơn? Làm thế nào để chúng ta làm cho Bộ công cụ phát triển phần mềm (SDK) hữu ích hơn cho mọi người? Vì vậy, nó hữu ích cho mã nếu bạn muốn xây dựng một Tác nhân AI lập trình. Nhưng bạn cũng có thể sử dụng nó cho những thứ khác. Giống như bất cứ thứ gì bạn cần một Tác nhân AI, bạn chỉ cần sử dụng SDK. Và tôi nghĩ đây là những điều tôi hào hứng nhất. Và rõ ràng, tất cả những điều này đều mang lại lợi ích cho tất cả các công việc khác mà chúng tôi đang làm để làm cho mô hình AI tự chủ hơn, để nó hoạt động trong thời gian dài hơn, để nó tuân thủ hướng dẫn tốt hơn, để nó ghi nhớ mọi thứ tốt hơn. Và vì vậy, mọi thứ trên con đường đều có lợi.
Tương Lai của Lập Trình với Tác Nhân AI
Vậy, nếu tôi đang sử dụng Nền tảng lập trình trên web của Claude hoặc bất kỳ hình thức nào của nó trong 6 đến 12 tháng tới, công việc của tôi thực sự sẽ trông như thế nào? Liệu tôi có phải review PR cả ngày không? Hay công việc hàng ngày sẽ phân chia ra sao? Vâng, tôi nghĩ sẽ có sự kết hợp giữa lập trình trực tiếp nhiều hơn. Tôi không nghĩ điều đó sẽ biến mất. Và có thể nó sẽ trông khác đi. Chẳng hạn, lập trình trực tiếp ngày nay là thao tác trực tiếp với văn bản. Nhưng trong tương lai, có thể nó sẽ là việc sử dụng Claude để thao tác văn bản cho bạn. Và sau đó, tôi nghĩ sẽ có một nhóm khác về lập trình ít trực tiếp hơn, nơi Claude chủ động làm điều gì đó. Và có thể Claude thậm chí còn review nó. Và công việc của bạn là quyết định xem đây có phải là thay đổi bạn muốn hay không.
Và tôi nghĩ có lẽ 12 hoặc 24 tháng tới, chúng ta sẽ bắt đầu thấy Claude tập trung nhiều hơn vào các mục tiêu và những thứ cấp cao hơn mà nó cần thực hiện, và ít hơn vào các tác vụ cụ thể đi kèm với nó. Cũng giống như cách một kỹ sư suy nghĩ về việc "Tôi muốn làm gì trong tháng tới?" và sau đó thực hiện những thay đổi nhỏ để đạt được điều đó. Có lẽ Claude cũng sẽ trải qua điều tương tự. Đúng vậy, vậy là di chuyển lên cao hơn trong ngăn xếp đến một mức độ nhất định của các mức độ trừu tượng này, từ việc để Claude thực hiện các thay đổi riêng lẻ cho tệp, đến việc để Claude thực hiện các thay đổi cho toàn bộ một PR, đến việc để Claude suy nghĩ về một mục tiêu xây dựng một ứng dụng hoặc bất cứ điều gì khác. Vâng, được rồi, điều đó thú vị.
Lời Khuyên cho Lập Trình Viên trong Kỷ Nguyên AI
Nếu tôi là một kỹ sư và nghe những điều đó, có vẻ như rất nhiều thứ sẽ thay đổi trong một thời gian rất ngắn, đặc biệt là vai trò của tôi và những gì tôi nên làm. Lời khuyên của bạn dành cho những người đang tìm cách tự chuẩn bị và thích nghi với thế giới này là gì, về những gì họ nên học hoặc những kỹ năng nào họ nên phát triển? Tôi nhớ lại khi tôi mới bắt đầu học lập trình, tôi là đứa trẻ ngồi cuối lớp toán thời trung học và có chiếc máy tính cầm tay TI83 plus nhỏ của mình. Nó là một chiếc màu xám trong suốt, bạn có thể nhìn thấy mạch tính toán của nó. Và chúng tôi chỉ lập trình nó bằng BASIC. Bởi vì đến một lúc nào đó, tôi nhận ra rằng mình thực sự có thể lập trình các câu trả lời cho bài kiểm tra toán vào máy tính cầm tay. Và bạn có thể đạt điểm cao hơn bằng cách đó. Và có một điều gì đó về cảm giác trực quan này khi có thể "hack" và có ý tưởng rằng có lẽ có một chương trình tôi có thể tạo ra, và tôi chỉ cần vào máy tính cầm tay của mình và viết mã cho nó. Và sau đó tôi có thể khởi động lại và sử dụng nó rất nhanh. Kiểu chu trình phản hồi này thực sự tuyệt vời. Và nó giúp tôi có thể xây dựng những thứ mà tôi chưa bao giờ làm được trước đây. Và việc bắt đầu thật dễ dàng.
Và tôi nghĩ về sự khác biệt giữa thế giới đó và thế giới trước lập trình bằng tác nhân AI, nơi mà các ngăn xếp trở nên quá, quá phức tạp. Nếu tôi muốn tạo một website JavaScript, tôi phải học về React và có thể Next.js. Và sau đó là ba hệ thống build khác nhau và hệ thống deploy. Và nó quá phức tạp. Và tôi nghĩ một điều thực sự tuyệt vời về Tác nhân AI là chúng đang thay đổi điều này. Vì vậy, với Tác nhân AI lập trình, việc bắt đầu trở nên rất dễ dàng. Và nếu bạn có một ý tưởng, bạn có thể xây dựng nó ngay lập tức. Và giờ đây, nó tập trung nhiều hơn vào ý tưởng chứ không phải chi tiết. Bởi vì giống như Nền tảng lập trình trên web của Claude, bạn có thể viết lại mã nhiều lần. Bản thân Nền tảng lập trình trên web của Claude, chúng tôi viết lại liên tục. Và tôi nghĩ đây chỉ là điều mà Tác nhân AI lập trình cho phép. Bản thân mã không còn quý giá nữa. Và vẫn có một nghệ thuật trong việc viết nó. Và tôi vẫn sẽ tự viết mã bằng tay đôi khi. Và một trong những kỹ sư trong nhóm, Lina, cô ấy đã nói về việc vào cuối tuần, cô ấy vẫn đôi khi viết C++ bằng tay, chỉ vì nó vui. Và với tư cách là một lập trình viên, đó có thể là một điều thực sự thú vị khi làm. Nhưng tôi nghĩ ngày càng nhiều, nó sẽ là về thứ bạn tạo ra chứ không phải quá trình tạo ra nó.
Và tôi nghĩ lời khuyên của tôi dành cho những người học lập trình ngày nay là bạn vẫn phải rèn luyện kỹ năng. Vì vậy, bạn vẫn phải biết cách viết mã, các ngôn ngữ, các compiler, runtime, cách xây dựng ứng dụng web, cách xây dựng chương trình, thiết kế hệ thống. Bạn vẫn phải biết tất cả những điều này. Nhưng cũng hãy bắt đầu sáng tạo hơn. Và nếu bạn có ý tưởng cho một công ty khởi nghiệp hoặc ý tưởng cho một sản phẩm, bạn có thể xây dựng nó ngay bây giờ theo cách mà bạn không thể làm được trước đây. Và chúng ta thực sự chưa hiểu hết ý nghĩa của điều này. Nhưng có rất nhiều tiềm năng sắp được khai phá nhờ nó.
Các Thực Hành Tốt Nhất khi Sử Dụng Nền tảng lập trình trên web của Claude
Vâng, tôi thích điều đó. Tôi nghĩ đó cũng là một lời khuyên tuyệt vời. Ý tưởng đột nhiên trở thành thứ bạn có thể hành động trong vòng vài phút. Trong khi trước đây, nó có thể nằm mãi mãi trong backlog của bạn. Trước khi kết thúc, tôi muốn hỏi bạn, với tư cách là người tạo ra Nền tảng lập trình trên web của Claude, đâu là những phương pháp hay nhất để sử dụng Nền tảng lập trình trên web của Claude và bất kỳ mẹo hoặc thủ thuật nào?
Vâng, tôi nghĩ điều lớn nhất mà tôi khuyên, được rồi, có thể là hai mẹo. Vì vậy, một điều tôi khuyên là nếu bạn hoàn toàn mới với Nền tảng lập trình trên web của Claude và bạn chưa từng sử dụng nó trước đây, đừng dùng nó để viết mã. Và tôi biết điều đó nghe có vẻ điên rồ. Hãy giải thích nó. Hãy giải thích nó. Nhưng bạn phải tự dừng lại. Đừng dùng nó để viết mã vội. Điều cần bắt đầu là sử dụng nó để hỏi những câu hỏi về codebase. Vì vậy, bạn có thể hỏi: "Nếu tôi muốn thêm một logger mới, tôi phải làm thế nào?" Và sau đó yêu cầu Nền tảng lập trình trên web của Claude khám phá codebase và tìm ra câu trả lời cho bạn. Hoặc "Tại sao hàm này lại được thiết kế theo cách này?" Nền tảng lập trình trên web của Claude có thể đi vào và xem qua lịch sử Git, và nó có thể trả lời những điều đó cho bạn. Vì vậy, tôi nghĩ hãy hỏi Nền tảng lập trình trên web của Claude các câu hỏi về codebase và đừng viết mã vội. Và sau khi bạn cảm thấy thoải mái khi sử dụng Nền tảng lập trình trên web của Claude theo cách này, và bạn quen với ý tưởng về một Tác nhân AI đang thực hiện nghiên cứu này cho bạn, thì hãy bắt đầu sử dụng nó để viết mã.
Tôi nghĩ điều thứ hai là khi bạn đang sử dụng Nền tảng lập trình trên web của Claude để viết mã, hãy nghĩ về loại công việc bạn muốn làm và tác vụ đó lớn đến mức nào. Vì vậy, đối với một tác vụ thực sự dễ dàng, trong tâm trí tôi, tôi có ba loại này, dễ, trung bình và khó, rất đại khái. Và các tác vụ dễ là thứ mà Claude có thể viết trong một lần. Giống như một câu lệnh, nó sẽ thực hiện đúng gần như hoàn toàn. Và ngày nay, tôi chỉ cần vào GitHub và gắn thẻ @Claude trên issue và chỉ cần để Claude viết PR cho tôi. Và đây là cách tôi thực hiện các tác vụ dễ dàng. Bởi vì điều đó giải phóng terminal của tôi, tôi không phải dành thời gian cho việc này. Các tác vụ trung bình đều bắt đầu trong terminal và đều bắt đầu ở chế độ lập kế hoạch. Vì vậy, chỉ cần shift + tab để vào chế độ lập kế hoạch. Và tôi sẽ thống nhất một kế hoạch với Claude trước. Và sau khi tôi cảm thấy ổn với kế hoạch, tôi sẽ chuyển sang tự động chấp nhận và để nó thực hiện.
Và đối với các tác vụ thực sự khó, tôi vẫn là người điều khiển và Claude giống như một công cụ hơn. Và tôi đang ghép đôi với nó, nhưng thực sự tôi mới là người cầm lái, không phải Claude cho điều này. Và vì vậy tôi sẽ sử dụng Claude có thể để thực hiện một số nghiên cứu codebase, có thể tạo nguyên mẫu một vài ý tưởng, có thể tôi sẽ chỉ vibe code một vài tùy chọn để hiểu các giới hạn của hệ thống và những gì hoạt động tốt. Nhưng tôi vẫn chủ yếu tự thực hiện và có thể Claude sẽ viết các kiểm thử đơn vị. Nhưng tôi vẫn chủ yếu là người lập trình. Vì vậy, tôi nghĩ đó sẽ là lời khuyên thứ hai. Chỉ cần suy nghĩ về tác vụ bạn đang làm và cách đúng đắn để sử dụng Nền tảng lập trình trên web của Claude để thực hiện nó. Đó là những mẹo tuyệt vời. Thực sự cảm ơn bạn đã dành thời gian cho chúng tôi. Điều này thật tuyệt vời. Cảm ơn bạn. Vâng, cảm ơn Alex.
TL;DR
- Lập trình AI đã chuyển dịch nhanh chóng từ việc sao chép/dán mã và tự động hoàn thành cơ bản sang các tác nhân AI chủ động viết và chỉnh sửa mã, giảm đáng kể sự can thiệp trực tiếp của con người.
- Sự thay đổi này được thúc đẩy bởi sự tiến bộ vượt bậc của các mô hình AI cùng với các "hệ thống điều khiển" (harness) như Claude Code, giúp quản lý ngữ cảnh, công cụ và tương tác để các tác nhân AI hoạt động hiệu quả.
- Tương lai của lập trình sẽ tập trung vào việc các tác nhân AI xử lý các mục tiêu cấp cao hơn và toàn bộ quy trình, biến vai trò của lập trình viên thành người hướng dẫn và đánh giá công việc do AI thực hiện.
Điểm chính
- Chuyển dịch sang lập trình dựa trên tác nhân (Agent-Driven Coding): Lập trình đã tiến hóa từ việc thao tác văn bản trực tiếp trong IDE sang việc các mô hình AI tự viết và chỉnh sửa mã, trở thành một phần của quy trình làm việc cốt lõi của nhà phát triển.
- Hai yếu tố thúc đẩy chính: Sự tiến bộ trong lập trình AI đến từ hai mặt: các mô hình AI trở nên thông minh hơn (ví dụ: từ Sonnet 3.5 lên Opus 4.0.1) và "hệ thống điều khiển" (harness) tương tác với mô hình cũng được cải thiện đáng kể (như Claude Code).
- Vai trò của Claude Code: Claude Code đóng vai trò là "giàn giáo" (scaffolding) hoặc "hệ thống điều khiển" cho mô hình AI, xử lý câu lệnh hệ thống, quản lý ngữ cảnh, cung cấp công cụ, cài đặt và quyền hạn để mô hình hoạt động hiệu quả.
- Đồng tiến hóa qua quá trình "dogfooding": Mô hình AI và các công cụ như Claude Code cùng tiến hóa thông qua việc sử dụng nội bộ hàng ngày. Các kỹ sư và nhà nghiên cứu sử dụng Claude Code, từ đó phát hiện giới hạn và cải thiện mô hình cũng như hệ thống điều khiển.
- Vòng lặp phản hồi chặt chẽ quan trọng hơn benchmark tổng hợp: Một kênh phản hồi nhanh chóng và hiệu quả từ người dùng (ví dụ: kênh Slack nội bộ) là tín hiệu mạnh mẽ nhất để cải thiện sản phẩm, vượt trội hơn so với các phương pháp đánh giá tổng hợp (synthetic evals) hoặc kiểm thử câu lệnh (prompt testing) truyền thống.
- Khả năng tùy chỉnh và mở rộng cao: Claude Code được thiết kế để dễ dàng tùy chỉnh/mở rộng thông qua các "điểm mở rộng" (extension points) như tệp
Claude.md, hệ thống cài đặt/quyền, hook, Giao thức Ngữ cảnh Mô hình (MCP), lệnh gạch chéo do người dùng định nghĩa và Tác nhân phụ. - Thay đổi vai trò của kỹ sư trong tương lai: Công việc của kỹ sư sẽ chuyển từ việc lập trình trực tiếp sang việc hướng dẫn, giám sát và đánh giá các thay đổi do AI tạo ra, với các tác nhân AI xử lý các mục tiêu cấp cao hơn như tạo toàn bộ PR hoặc xây dựng ứng dụng.
- SDK cho các tác nhân AI: Bộ công cụ phát triển phần mềm (SDK) cơ bản của Claude Code có thể được tận dụng để xây dựng các tác nhân AI không chỉ trong lập trình mà còn trong nhiều lĩnh vực khác.
Từ vựng
Môi trường phát triển tích hợp(IDE) — Integrated Development Environment (IDE)Tác nhân AI(agent) — AI Agentquy trình làm việc(workflow) — workflowmô hình AI— AI modelhệ thống điều khiển(harness) — harness system / scaffoldingngữ cảnh(context) — contextcâu lệnh hệ thống(system prompt) — system promptvòng lặp phản hồi chặt chẽ(tight feedback loop) — tight feedback looptùy chỉnh/mở rộng(hackable) — customizable / extensiblelệnh gạch chéo(slash commands) — slash commands
Nội dung chi tiết
Giới thiệu và Lịch sử Lập trình AI
Tôi nhớ lại khi tôi bắt đầu học lập trình. Tôi là một đứa trẻ ngồi ở cuối lớp toán cấp hai với chiếc máy tính TI-83 Plus nhỏ của mình. Chúng tôi lập trình nó bằng BASIC, vì một lúc nào đó tôi nhận ra mình có thể lập trình các câu trả lời của bài kiểm tra toán vào máy tính. Tôi không biết nữa. Chào mọi người, tôi là Alex. Tôi phụ trách quan hệ Claude tại Anthropic. Hôm nay, chúng ta sẽ nói về Claude Code và tương lai của kỹ thuật phần mềm. Đồng hành cùng tôi là đồng nghiệp, Boris. Tôi là thành viên của đội ngũ kỹ thuật tại Anthropic và là người tạo ra Claude Code.
Rất nhiều điều đã xảy ra trong 12 tháng qua và mọi thứ đang diễn ra rất, rất nhanh, đặc biệt trong lĩnh vực lập trình. Đối với những người có thể không theo dõi tin tức hàng ngày, hoặc thậm chí gặp khó khăn trong việc cập nhật những tin tức mới nhất (đôi khi tôi cũng vậy), bạn có thể cho chúng tôi biết điều gì đã xảy ra và tình hình hiện tại của chúng ta?
Vâng, một năm trước, lập trình hoàn toàn khác so với ngày nay. Một năm trước, nếu bạn muốn viết mã, bạn có một Môi trường phát triển tích hợp (IDE). Bạn có một số dạng tự động hoàn thành trong IDE. Và sau đó có một loại ứng dụng trò chuyện (chat app) nào đó và bạn có thể sao chép và dán mã qua lại một chút. Đó là hiện đại nhất. Đó là AI trong lập trình. Và tôi nghĩ, có lẽ khoảng một năm trước, chúng ta bắt đầu thấy các Tác nhân AI (agent) xuất hiện như một thứ mà mọi người thực sự sử dụng trong lập trình. Nó giống như một phần của quy trình làm việc (workflow). Nó không phải là một mánh lới quảng cáo hay nguyên mẫu (prototype). Nó thực sự là một phần của vòng lặp bên trong (inner loop) khi bạn đang phát triển. Và tôi nghĩ đây là điều đã thay đổi nhiều nhất trong năm qua: giờ đây khi bạn lập trình, bạn sử dụng Tác nhân AI, bạn không còn trực tiếp thao tác văn bản trong IDE nữa. Nó không chỉ là về hoàn thành bằng tab, mà là về việc mô hình AI viết mã cho bạn. Và tôi nghĩ những gì chúng ta bắt đầu thấy là sự chuyển dịch từ việc trực tiếp thao tác văn bản sang việc có mô hình AI tự mình thực hiện việc thao tác văn bản đó. Và tôi nghĩ, nếu chiếu theo xu hướng này, đây là quỹ đạo mà chúng ta đang đi, liệu nó có tiếp tục trong tương lai không? Tôi hiểu rồi.
Sự Chuyển Dịch Trong Lập trình với AI
Vậy là chúng ta đã chuyển từ việc mọi thứ nằm trong một ứng dụng web (web app) nơi bạn copy-paste và có thể viết mã ra ngoài, thực hiện các chỉnh sửa có mục tiêu, gần như là chuyển sang việc ít can thiệp (hands off) hơn nhiều, nói cho một Tác nhân AI (agent) biết bạn muốn nó làm gì, và sau đó tin tưởng nó để thực hiện rất nhiều chỉnh sửa và thậm chí tự mình tạo ra toàn bộ ứng dụng. Vâng, chính xác. Và đây là điều mà tôi nghĩ lý do chúng ta không thể làm được một năm trước. Mọi người đã cố gắng làm cho AI thực hiện lập trình trong một thời gian rất dài và tự động hóa ngày càng nhiều công đoạn lập trình theo nhiều cách khác nhau. Và điều đó thực sự chưa hiệu quả, tôi nghĩ, có lẽ vì một vài lý do.
Một là, các mô hình AI chưa đủ tốt. Và thứ hai là giàn giáo (scaffolding), thứ nằm trên mô hình AI, chưa đủ tốt. Và khi chúng tôi lần đầu ra mắt Claude Code, những phiên bản đầu tiên vào cuối năm ngoái, tôi nghĩ lúc đó vẫn đang sử dụng Sonnet 3.5. Nó thậm chí còn chưa phải 3.6. Dù chúng ta gọi cái này là gì, Sonnet 3.5 mới. Vâng, Sonnet được nâng cấp. Vâng, nó thậm chí còn chưa phải phiên bản này. Và nó cũng có phần nào đó hoạt động. Tôi đã sử dụng nó cho khoảng 10% mã của mình hoặc gì đó.
Nhưng ngay cả khi đó, tôi nhớ khi chúng tôi ra mắt, chúng tôi đã đưa nó cho đội ngũ cốt lõi (core team). Lúc đó chỉ có tôi và một vài người khác trong nhóm. Và tôi nhớ một buổi sáng bước vào văn phòng, trên đường đến bàn làm việc của mình, có một vài kỹ sư đang ngồi đó, một trong số họ là Robert và một vài kỹ sư khác. Tôi vừa bước vào và lần đầu tiên nhìn thấy Claude Code trên màn hình của họ. Tôi vừa đưa nó cho họ và họ đã sử dụng nó rồi. Đó là điều điên rồ nhất. Và mô hình AI lúc đó chưa thực sự tốt. Hệ thống điều khiển (harness) cũng chưa tốt lắm. Nhưng ngay cả trong phiên bản ban đầu này, nó cũng đã có chút hữu ích rồi.
Và tôi nghĩ rằng trong năm qua, điều đã xảy ra là mô hình AI đã trở nên tốt hơn rất nhiều trong việc lập trình dựa trên Tác nhân AI (agent-driven coding). Điều này đã diễn ra với 3.7 và bây giờ là 4.0 và Opus 4.0.1. Và hệ thống điều khiển (harness) cũng đã trở nên tốt hơn rất nhiều. Và rõ ràng hệ thống điều khiển (harness) chính là Claude Code, bởi vì cách tương tác với mô hình AI, bạn không thể trực tiếp sử dụng mô hình AI được. Bạn phải sử dụng một hệ thống điều khiển (harness). Nó giống như, nếu bạn cưỡi ngựa, bạn cần một chiếc yên ngựa nào đó và chiếc yên đó tạo ra sự khác biệt lớn khi bạn cưỡi ngựa. Tôi không phải là người cưỡi ngựa. Mặc dù tôi thích sự tương đồng đó.
Kiến trúc Claude Code và Sự Đồng Tiến Hóa của Mô hình AI
Ý tôi là, Claude giống như con ngựa. Và với tư cách là kỹ sư, bạn đang cố gắng khiến nó đi theo một hướng nhất định và bạn đang cố gắng hướng dẫn nó, và bạn cần một loại giàn giáo (scaffolding) nào đó xung quanh nó để có thể điều khiển nó một cách chính xác. Và hệ thống điều khiển (harness) trong trường hợp này, để hiểu rõ hơn, là tất cả mọi thứ, từ các công cụ (tools) chúng tôi cung cấp cho nó đến cách chúng tôi xử lý ngữ cảnh (context) và mọi thứ cho mô hình AI. Chính xác, chính xác. Nó giống như toàn bộ Claude Code. Mô hình AI là thứ đứng sau API. Và sau đó Claude Code là câu lệnh hệ thống (system prompt), là quản lý ngữ cảnh (context management), là công cụ (tools), là khả năng cắm các máy chủ MCP (MCP servers), cài đặt (settings), quyền hạn (permissions), tất cả những thứ này, tất cả đều giao tiếp với mô hình AI. Và mô hình AI nhìn thấy tất cả ngữ cảnh, tất cả đầu ra từ những thứ đó và nó tạo ra sự khác biệt lớn trong cách nó hoạt động. Và tôi nghĩ trong năm qua, chúng tôi đã học được cách chính xác để xây dựng cho mô hình AI. Và mô hình AI đã cùng tiến hóa (co-evolved) không chỉ với Claude Code, mà còn với tất cả các sản phẩm khác đang sử dụng mô hình AI của Anthropic để xây dựng các công cụ lập trình dựa trên Tác nhân AI (agent-driven coding tools).
Có lẽ hãy nói thêm về điều đó. Khi bạn nói cùng tiến hóa (co-evolved), có phải vì đó là một điều có chủ đích mà chúng ta đang thực hiện với huấn luyện mô hình (model training) hay mô hình AI cũng đang trở nên tốt hơn trong những việc này khi chúng ta cải thiện các tính năng sản phẩm?
Nó khá tự nhiên, thật lòng mà nói. Tại Anthropic, mọi người đều sử dụng Claude Code. Điều đó bao gồm cả các nhà nghiên cứu. Vì vậy, mỗi ngày, những người xây dựng mô hình AI đều sử dụng mô hình AI để thực hiện công việc của họ. Và tôi nghĩ rằng là một phần của việc đó, bạn sẽ thấy những giới hạn tự nhiên mà bạn gặp phải với mô hình AI. Ví dụ, có thể mô hình AI rất kém trong việc thực hiện một số loại chỉnh sửa. Và đôi khi khi bạn sử dụng Claude Code, bạn sẽ thấy kiểu như, "thay thế chuỗi thất bại", "thay thế chuỗi thất bại". Đây là một khả năng của mô hình AI. Và chúng ta có thể cải thiện điều này nếu chúng ta học được từ nó. Hoặc một ví dụ khác, có lẽ ở cấp độ cao hơn, là nếu bạn chỉ để mô hình AI chạy trong 30 phút, với 3.5, nó có thể làm được một chút. Có lẽ trong một phút hoặc gì đó, nó sẽ đi đúng hướng. Và sau đó với các mô hình AI mới hơn, thời gian này ngày càng dài hơn. Lượng thời gian mà mô hình AI có thể hoạt động tự chủ (autonomously). Và tôi nghĩ điều này thực sự dựa trên kinh nghiệm. Bởi vì bạn sử dụng mô hình AI. Bạn sẽ thấy ở đâu, với tư cách là một con người, bạn phải điều chỉnh hướng đi và lái nó. Và sau đó chúng tôi đã học được từ điều đó. Và chúng tôi có thể đưa điều đó vào mô hình AI và dạy nó tốt hơn để tự làm điều này.
Phương pháp Đánh giá Hiệu suất Mô hình AI
Khi bạn đánh giá một mô hình AI mới, bạn có một bộ kiểm tra cảm nhận (vibe check) mà bạn chạy không? Hoặc nếu đó là một tính năng mới mà chúng ta đang triển khai để làm cho hệ thống điều khiển (harness) tốt hơn, cá nhân bạn đánh giá hiệu suất có đang tốt lên không như thế nào?
Tôi chỉ làm công việc của mình trong ngày đó. Thú vị đấy. Vâng. Giống như, một ngày hoàn hảo của tôi là tôi chỉ lập trình cả ngày. Và bất kể mô hình AI đó là gì, bất kể điều mới mà chúng tôi đang thử nghiệm là gì, tôi sẽ chỉ lập trình bằng cách sử dụng nó và xem cảm nhận nó như thế nào. Không có một thứ cụ thể nào tôi làm cả. Đúng vậy. Bạn chỉ xem nó thực sự hoạt động như thế nào đối với bạn trong công việc hàng ngày? Vâng, chính xác. Và trong công việc hàng ngày, bạn làm đủ mọi thứ. Bạn viết mã mới, có thể bạn sửa lỗi, bạn đọc tin nhắn Slack hoặc các vấn đề GitHub để phản hồi ý kiến. Và tôi nghĩ mô hình AI ngày càng có thể làm được nhiều hơn những điều này. Vì vậy, thực ra, theo một cách nào đó, nếu bạn chỉ có một thứ mà bạn luôn sử dụng mô hình AI cho, bạn sẽ bỏ lỡ một số khả năng mới hơn, như kéo ngữ cảnh (context) thông qua MCP, như đọc tin nhắn Slack của bạn, hoặc tự động gỡ lỗi, bởi vì bạn có thể tự động kéo nhật ký Sentry. Vâng. Vì vậy, eval tốt nhất theo một nghĩa nào đó là eval trông giống đời thực nhất. Và trong trường hợp đó, chỉ cần sử dụng nó sẽ mang lại cho bạn kết quả tốt nhất.
Chúng tôi đã cố gắng rất nhiều khi xây dựng Claude Code để tạo ra các eval sản phẩm. Vâng. Giống như để có một loại tiêu chuẩn đánh giá (benchmark) nào đó. Khi chúng tôi thay đổi một câu lệnh hệ thống (system prompt) hoặc bất cứ điều gì, mô hình AI có tốt hơn không, và chúng tôi có một chút điều này, nhưng thật lòng mà nói, rất khó để xây dựng các eval. Và tín hiệu lớn nhất cho đến nay chỉ là cảm nhận. Giống như nó có cảm thấy thông minh hơn không? Bởi vì có một phạm vi tác vụ rất rộng mà họ sử dụng nó cho. Vâng, đó thực sự là một câu hỏi mà tôi nghe từ các nhà phát triển mọi lúc là họ sẽ đánh giá cao hơn sự hướng dẫn về cách chúng tôi thực hiện kiểm thử câu lệnh (prompt testing) và lặp lại. Tôi biết đối với các sản phẩm khác nhau, chúng tôi đã cố gắng tạo ra nhiều loại eval khác nhau. Nhưng đối với Claude Code, nó thực sự chỉ là một vòng lặp phản hồi chặt chẽ (tight feedback loop) mà gần như mang lại cho chúng tôi tín hiệu tức thì hơn bất kỳ bộ eval được mã hóa cứng nào. Tôi tự hỏi liệu mọi người có muốn nghe một câu trả lời tốt hơn từ một... Vâng, vâng. Nhưng vâng, mọi thứ đều dựa vào cảm nhận. Vâng. Tôi nghĩ ở thời điểm này, các mô hình AI đang hoạt động rất tốt trên các eval như SWE-bench. Chúng tôi đang cố gắng tìm những eval khó hơn này. Và bây giờ có T-bench, cái mà ít bão hòa hơn một chút. Nhưng tôi nghĩ thực sự rất khó để tìm ra các eval tổng hợp (synthetic evals) nắm bắt được tất cả sự phức tạp trong kỹ thuật phần mềm. Đúng vậy. Đúng vậy.
Vòng lặp phản hồi và Khả năng tùy chỉnh của Claude Code
Bạn có nghĩ có điều gì chúng ta đã làm độc đáo để thiết lập vòng lặp phản hồi đó nội bộ không? Bởi vì tôi cảm thấy Claude Code có chu trình dogfooding tốt nhất mà tôi từng thấy ở bất kỳ loại sản phẩm nào.
Ban đầu, tôi xây dựng nó theo cách tôi làm bất kỳ sản phẩm nào khác. Đó là chỉ lắng nghe người dùng và làm cho việc lắng nghe người dùng dễ dàng nhất có thể. Và tôi nghĩ một phần trong đó là khi chúng tôi xây dựng Claude Code, chỉ có một kênh phản hồi (feedback channel) duy nhất trong Slack. Và bất cứ lúc nào, bất kỳ ai có phản hồi, tôi sẽ chỉ hướng họ đến đó. Chỉ nói, vâng, đăng ở đó. Và tôi cảm thấy mọi người đôi khi hơi do dự một chút. Bởi vì đôi khi khi bạn đưa ra phản hồi, bạn mong đợi rằng không ai lắng nghe. Và nó giống như đi vào một hố đen, vào một khoảng trống. Và tôi nghĩ một trong những điều chúng tôi đã làm thực sự đúng là ngay từ đầu, bất cứ khi nào ai đó đưa ra phản hồi, tôi sẽ cố gắng sửa nó nhanh nhất có thể. Và đôi khi tôi sẽ đến văn phòng và sau đó dành khoảng ba giờ hoặc hai giờ hoặc bất cứ thời gian nào, chỉ cần xem xét càng nhiều lỗi càng tốt và sửa chúng nhanh nhất có thể. Và sau đó mỗi lần bình luận lại và nói với mọi người rằng nó đã được sửa. Đúng vậy. Và điều này khuyến khích họ tiếp tục đưa ra phản hồi. Và cho đến ngày nay, kênh phản hồi Claude Code nội bộ chỉ là một vòi nước khổng lồ. Vâng. Nó không ngừng nghỉ.
Ồ, hoàn toàn đúng. Tôi nhớ vào những ngày đầu đó, và vẫn còn bây giờ, tôi vào đó, đăng một cái gì đó và bạn phản ứng bằng biểu tượng cảm xúc ngay lập tức, hoặc bạn yêu cầu làm rõ hơn và đặt thêm câu hỏi. Và bạn thực sự cảm thấy, ồ, phản hồi của tôi đang được lắng nghe. Và sau đó bạn thực sự được khuyến khích để đăng thêm phản hồi trong tương lai. Vâng, bởi vì thành thật mà nói, tôi không biết mình đang làm gì. Không ai thực sự biết họ đang làm gì với AI. Chúng tôi đang khám phá điều này khi chúng tôi xây dựng nó. Và chỉ báo tốt nhất là những gì người dùng muốn. Vì vậy, bạn chỉ cần lắng nghe. Đúng vậy.
Chuyển hướng một chút. Tình trạng hiện tại của Claude Code là gì? Các tính năng mới nhất là gì? Bạn hào hứng về điều gì? Một số điều bạn đang thấy mọi người làm với nó ngay bây giờ.
Claude Code ngay từ đầu đã được xây dựng để trở thành thứ đơn giản nhất một lần nữa, và có khả năng tùy chỉnh/mở rộng (hackable) nhất có thể. Và tôi nghĩ khả năng tùy chỉnh/mở rộng (hackability) là điều mà chúng tôi đã phát triển rất nhiều. Và đó là điều tôi thực sự hào hứng. Vì vậy, ban đầu, cách để tùy chỉnh/mở rộng Claude Code là thêm vào Claude.md của nó. Đó là điểm mở rộng (extension point) ban đầu. Trong Claude.md, với tư cách là một tệp, bạn có thể đặt nó trong thư mục gốc (root directory). Bạn có thể đặt nó trong các thư mục con (child directories). Có nhiều nơi khác nhau bạn có thể đặt nó. Và đó chỉ là ngữ cảnh bổ sung mà bạn cung cấp cho Claude Code, và nó đi kèm với repository của bạn. Bạn thường đưa nó vào codebase của mình.
Mở Rộng Hệ Thống và Tác Nhân AI
Do đó, nó cung cấp thêm một chút thông tin về mã. Nhưng theo thời gian, chúng tôi đã thêm nhiều điểm mở rộng hơn. Giờ đây, có một hệ thống cài đặt và hệ thống quyền rất tinh vi. Hiện có các hook mà Dixon đã xây dựng. Dixon là một kỹ sư trong nhóm của chúng tôi. Anh ấy chỉ thấy tất cả các yêu cầu khác nhau từ người dùng muốn mở rộng theo cách này, muốn hook vào cái này, hook vào cái kia. Và thế là anh ấy đã xây dựng một hệ thống hook cực kỳ mở rộng. Giao thức Ngữ cảnh Mô hình (MCP), rõ ràng đây là một điểm mở rộng tuyệt vời. Và giờ đây có các lệnh gạch chéo và Tác nhân phụ. Các lệnh gạch chéo do người dùng định nghĩa là thứ mà chúng tôi đã đầu tư rất nhiều. Và ý tưởng là nó chỉ là một quy trình làm việc. Nó giống như một tệp Markdown. Bạn đặt nó vào mã của mình và đó là thứ bạn có thể tái sử dụng rất nhiều. Ví dụ, tôi có một lệnh gạch chéo để tạo lệnh. Và tôi có một số hướng dẫn ở đó: "Đây là cách bạn viết một Git commit tốt." Tôi cho phép trước lệnh bash Git commit, vì vậy tôi không cần phải chấp nhận nó mỗi lần. Và mô hình AI có thể tự động thực hiện. Vì vậy, tôi nghĩ lệnh gạch chéo thực sự thú vị. Và Tác nhân AI là một cách nhìn khác về lệnh gạch chéo. Nó giống như một lệnh gạch chéo, nhưng nó có một cửa sổ ngữ cảnh phân nhánh. Do đó, bạn có thể coi Tác nhân AI và lệnh gạch chéo là hai mặt của cùng một vấn đề. Và điều này cũng rất thú vị. Đó chỉ là một cách khác để mở rộng Claude Code.
Và khi tôi nhìn vào tương lai, tôi nghĩ phần lớn chỉ là về việc làm thế nào để chúng ta mở rộng Claude Code hơn nữa? Làm thế nào để chúng ta giúp những người khác dễ dàng xây dựng dựa trên nó hơn? Làm thế nào để chúng ta làm cho Bộ công cụ phát triển phần mềm (SDK) hữu ích hơn cho mọi người? Vì vậy, nó hữu ích cho mã nếu bạn muốn xây dựng một Tác nhân AI lập trình. Nhưng bạn cũng có thể sử dụng nó cho những thứ khác. Giống như bất cứ thứ gì bạn cần một Tác nhân AI, bạn chỉ cần sử dụng SDK. Và tôi nghĩ đây là những điều tôi hào hứng nhất. Và rõ ràng, tất cả những điều này đều mang lại lợi ích cho tất cả các công việc khác mà chúng tôi đang làm để làm cho mô hình AI tự chủ hơn, để nó hoạt động trong thời gian dài hơn, để nó tuân thủ hướng dẫn tốt hơn, để nó ghi nhớ mọi thứ tốt hơn. Và vì vậy, mọi thứ trên con đường đều có lợi.
Tương Lai của Lập Trình với Tác Nhân AI
Vậy, nếu tôi đang sử dụng Nền tảng lập trình trên web của Claude hoặc bất kỳ hình thức nào của nó trong 6 đến 12 tháng tới, công việc của tôi thực sự sẽ trông như thế nào? Liệu tôi có phải review PR cả ngày không? Hay công việc hàng ngày sẽ phân chia ra sao? Vâng, tôi nghĩ sẽ có sự kết hợp giữa lập trình trực tiếp nhiều hơn. Tôi không nghĩ điều đó sẽ biến mất. Và có thể nó sẽ trông khác đi. Chẳng hạn, lập trình trực tiếp ngày nay là thao tác trực tiếp với văn bản. Nhưng trong tương lai, có thể nó sẽ là việc sử dụng Claude để thao tác văn bản cho bạn. Và sau đó, tôi nghĩ sẽ có một nhóm khác về lập trình ít trực tiếp hơn, nơi Claude chủ động làm điều gì đó. Và có thể Claude thậm chí còn review nó. Và công việc của bạn là quyết định xem đây có phải là thay đổi bạn muốn hay không.
Và tôi nghĩ có lẽ 12 hoặc 24 tháng tới, chúng ta sẽ bắt đầu thấy Claude tập trung nhiều hơn vào các mục tiêu và những thứ cấp cao hơn mà nó cần thực hiện, và ít hơn vào các tác vụ cụ thể đi kèm với nó. Cũng giống như cách một kỹ sư suy nghĩ về việc "Tôi muốn làm gì trong tháng tới?" và sau đó thực hiện những thay đổi nhỏ để đạt được điều đó. Có lẽ Claude cũng sẽ trải qua điều tương tự. Đúng vậy, vậy là di chuyển lên cao hơn trong ngăn xếp đến một mức độ nhất định của các mức độ trừu tượng này, từ việc để Claude thực hiện các thay đổi riêng lẻ cho tệp, đến việc để Claude thực hiện các thay đổi cho toàn bộ một PR, đến việc để Claude suy nghĩ về một mục tiêu xây dựng một ứng dụng hoặc bất cứ điều gì khác. Vâng, được rồi, điều đó thú vị.
Lời Khuyên cho Lập Trình Viên trong Kỷ Nguyên AI
Nếu tôi là một kỹ sư và nghe những điều đó, có vẻ như rất nhiều thứ sẽ thay đổi trong một thời gian rất ngắn, đặc biệt là vai trò của tôi và những gì tôi nên làm. Lời khuyên của bạn dành cho những người đang tìm cách tự chuẩn bị và thích nghi với thế giới này là gì, về những gì họ nên học hoặc những kỹ năng nào họ nên phát triển? Tôi nhớ lại khi tôi mới bắt đầu học lập trình, tôi là đứa trẻ ngồi cuối lớp toán thời trung học và có chiếc máy tính cầm tay TI83 plus nhỏ của mình. Nó là một chiếc màu xám trong suốt, bạn có thể nhìn thấy mạch tính toán của nó. Và chúng tôi chỉ lập trình nó bằng BASIC. Bởi vì đến một lúc nào đó, tôi nhận ra rằng mình thực sự có thể lập trình các câu trả lời cho bài kiểm tra toán vào máy tính cầm tay. Và bạn có thể đạt điểm cao hơn bằng cách đó. Và có một điều gì đó về cảm giác trực quan này khi có thể "hack" và có ý tưởng rằng có lẽ có một chương trình tôi có thể tạo ra, và tôi chỉ cần vào máy tính cầm tay của mình và viết mã cho nó. Và sau đó tôi có thể khởi động lại và sử dụng nó rất nhanh. Kiểu chu trình phản hồi này thực sự tuyệt vời. Và nó giúp tôi có thể xây dựng những thứ mà tôi chưa bao giờ làm được trước đây. Và việc bắt đầu thật dễ dàng.
Và tôi nghĩ về sự khác biệt giữa thế giới đó và thế giới trước lập trình bằng tác nhân AI, nơi mà các ngăn xếp trở nên quá, quá phức tạp. Nếu tôi muốn tạo một website JavaScript, tôi phải học về React và có thể Next.js. Và sau đó là ba hệ thống build khác nhau và hệ thống deploy. Và nó quá phức tạp. Và tôi nghĩ một điều thực sự tuyệt vời về Tác nhân AI là chúng đang thay đổi điều này. Vì vậy, với Tác nhân AI lập trình, việc bắt đầu trở nên rất dễ dàng. Và nếu bạn có một ý tưởng, bạn có thể xây dựng nó ngay lập tức. Và giờ đây, nó tập trung nhiều hơn vào ý tưởng chứ không phải chi tiết. Bởi vì giống như Nền tảng lập trình trên web của Claude, bạn có thể viết lại mã nhiều lần. Bản thân Nền tảng lập trình trên web của Claude, chúng tôi viết lại liên tục. Và tôi nghĩ đây chỉ là điều mà Tác nhân AI lập trình cho phép. Bản thân mã không còn quý giá nữa. Và vẫn có một nghệ thuật trong việc viết nó. Và tôi vẫn sẽ tự viết mã bằng tay đôi khi. Và một trong những kỹ sư trong nhóm, Lina, cô ấy đã nói về việc vào cuối tuần, cô ấy vẫn đôi khi viết C++ bằng tay, chỉ vì nó vui. Và với tư cách là một lập trình viên, đó có thể là một điều thực sự thú vị khi làm. Nhưng tôi nghĩ ngày càng nhiều, nó sẽ là về thứ bạn tạo ra chứ không phải quá trình tạo ra nó.
Và tôi nghĩ lời khuyên của tôi dành cho những người học lập trình ngày nay là bạn vẫn phải rèn luyện kỹ năng. Vì vậy, bạn vẫn phải biết cách viết mã, các ngôn ngữ, các compiler, runtime, cách xây dựng ứng dụng web, cách xây dựng chương trình, thiết kế hệ thống. Bạn vẫn phải biết tất cả những điều này. Nhưng cũng hãy bắt đầu sáng tạo hơn. Và nếu bạn có ý tưởng cho một công ty khởi nghiệp hoặc ý tưởng cho một sản phẩm, bạn có thể xây dựng nó ngay bây giờ theo cách mà bạn không thể làm được trước đây. Và chúng ta thực sự chưa hiểu hết ý nghĩa của điều này. Nhưng có rất nhiều tiềm năng sắp được khai phá nhờ nó.
Các Thực Hành Tốt Nhất khi Sử Dụng Nền tảng lập trình trên web của Claude
Vâng, tôi thích điều đó. Tôi nghĩ đó cũng là một lời khuyên tuyệt vời. Ý tưởng đột nhiên trở thành thứ bạn có thể hành động trong vòng vài phút. Trong khi trước đây, nó có thể nằm mãi mãi trong backlog của bạn. Trước khi kết thúc, tôi muốn hỏi bạn, với tư cách là người tạo ra Nền tảng lập trình trên web của Claude, đâu là những phương pháp hay nhất để sử dụng Nền tảng lập trình trên web của Claude và bất kỳ mẹo hoặc thủ thuật nào?
Vâng, tôi nghĩ điều lớn nhất mà tôi khuyên, được rồi, có thể là hai mẹo. Vì vậy, một điều tôi khuyên là nếu bạn hoàn toàn mới với Nền tảng lập trình trên web của Claude và bạn chưa từng sử dụng nó trước đây, đừng dùng nó để viết mã. Và tôi biết điều đó nghe có vẻ điên rồ. Hãy giải thích nó. Hãy giải thích nó. Nhưng bạn phải tự dừng lại. Đừng dùng nó để viết mã vội. Điều cần bắt đầu là sử dụng nó để hỏi những câu hỏi về codebase. Vì vậy, bạn có thể hỏi: "Nếu tôi muốn thêm một logger mới, tôi phải làm thế nào?" Và sau đó yêu cầu Nền tảng lập trình trên web của Claude khám phá codebase và tìm ra câu trả lời cho bạn. Hoặc "Tại sao hàm này lại được thiết kế theo cách này?" Nền tảng lập trình trên web của Claude có thể đi vào và xem qua lịch sử Git, và nó có thể trả lời những điều đó cho bạn. Vì vậy, tôi nghĩ hãy hỏi Nền tảng lập trình trên web của Claude các câu hỏi về codebase và đừng viết mã vội. Và sau khi bạn cảm thấy thoải mái khi sử dụng Nền tảng lập trình trên web của Claude theo cách này, và bạn quen với ý tưởng về một Tác nhân AI đang thực hiện nghiên cứu này cho bạn, thì hãy bắt đầu sử dụng nó để viết mã.
Tôi nghĩ điều thứ hai là khi bạn đang sử dụng Nền tảng lập trình trên web của Claude để viết mã, hãy nghĩ về loại công việc bạn muốn làm và tác vụ đó lớn đến mức nào. Vì vậy, đối với một tác vụ thực sự dễ dàng, trong tâm trí tôi, tôi có ba loại này, dễ, trung bình và khó, rất đại khái. Và các tác vụ dễ là thứ mà Claude có thể viết trong một lần. Giống như một câu lệnh, nó sẽ thực hiện đúng gần như hoàn toàn. Và ngày nay, tôi chỉ cần vào GitHub và gắn thẻ @Claude trên issue và chỉ cần để Claude viết PR cho tôi. Và đây là cách tôi thực hiện các tác vụ dễ dàng. Bởi vì điều đó giải phóng terminal của tôi, tôi không phải dành thời gian cho việc này. Các tác vụ trung bình đều bắt đầu trong terminal và đều bắt đầu ở chế độ lập kế hoạch. Vì vậy, chỉ cần shift + tab để vào chế độ lập kế hoạch. Và tôi sẽ thống nhất một kế hoạch với Claude trước. Và sau khi tôi cảm thấy ổn với kế hoạch, tôi sẽ chuyển sang tự động chấp nhận và để nó thực hiện.
Và đối với các tác vụ thực sự khó, tôi vẫn là người điều khiển và Claude giống như một công cụ hơn. Và tôi đang ghép đôi với nó, nhưng thực sự tôi mới là người cầm lái, không phải Claude cho điều này. Và vì vậy tôi sẽ sử dụng Claude có thể để thực hiện một số nghiên cứu codebase, có thể tạo nguyên mẫu một vài ý tưởng, có thể tôi sẽ chỉ vibe code một vài tùy chọn để hiểu các giới hạn của hệ thống và những gì hoạt động tốt. Nhưng tôi vẫn chủ yếu tự thực hiện và có thể Claude sẽ viết các kiểm thử đơn vị. Nhưng tôi vẫn chủ yếu là người lập trình. Vì vậy, tôi nghĩ đó sẽ là lời khuyên thứ hai. Chỉ cần suy nghĩ về tác vụ bạn đang làm và cách đúng đắn để sử dụng Nền tảng lập trình trên web của Claude để thực hiện nó. Đó là những mẹo tuyệt vời. Thực sự cảm ơn bạn đã dành thời gian cho chúng tôi. Điều này thật tuyệt vời. Cảm ơn bạn. Vâng, cảm ơn Alex.