Sử dụng AI như trợ lý kỹ sư: Tối ưu hóa quy trình làm việc
AI đã trở nên dễ tiếp cận hơn bao giờ hết, có khả năng cải thiện đáng kể công việc kỹ thuật hàng ngày của tôi. Tôi không chỉ giao cho AI xây dựng một cái gì đó mà không kiểm soát. Tôi vẫn muốn kiểm soát cách thức mà mọi thứ được triển khai, đặc biệt khi tôi là người phải bảo trì mã.
Vấn đề với việc "chỉ cần làm cho nó hoạt động"
Gần đây, tôi đã yêu cầu Claude hỗ trợ với một tính năng liên quan đến việc chuyển đổi giữa chế độ bảng và chế độ lọc trên trang chi tiết nhật ký GitHub Actions. Về mặt kỹ thuật, nó hoạt động. Nhưng cách triển khai? Có rất nhiều hook useEffect kích hoạt lẫn nhau để đạt được kết quả cuối cùng. Mặc dù nó hoạt động, nhưng việc đọc và lý giải trở nên quá phức tạp, dễ dẫn đến việc phát sinh lỗi và hành vi không mong muốn trong các thay đổi tương lai. Nếu tôi xem xét mã này trong một PR, tôi sẽ để lại nhận xét để xem liệu có cách nào đơn giản hơn để đạt được kết quả này không. Có và dưới sự hướng dẫn của "hãy làm điều này theo cách rõ ràng hơn mà không phụ thuộc quá nhiều vào useEffects ...", tôi đã có được một giải pháp sạch hơn.
Việc làm cho một cái gì đó hoạt động không phải lúc nào cũng đủ. Là kỹ sư, phần lớn thời gian của chúng tôi là đọc mã, không chỉ viết nó. Nếu logic trở nên phức tạp và khó theo dõi, chúng tôi đã giải quyết một vấn đề trong khi tạo ra một vấn đề khác.
Cách tôi thực sự sử dụng AI
Điều hướng lãnh thổ không quen thuộc
Tại Depot, chúng tôi có nhiều mã nguồn, và tôi chắc chắn quen thuộc hơn với một số so với những cái khác. Khi tôi cần đào sâu vào mã không quen thuộc, tôi không yêu cầu Claude "giải thích toàn bộ mã nguồn" vì điều đó quá rộng để hữu ích. Thay vào đó, tôi tập trung vào các câu hỏi:
- "Tôi đang tìm kiếm nơi xác thực xảy ra cho loại yêu cầu cụ thể này. Tất cả các ngữ cảnh khác nhau là gì?"
- "Tôi đã tìm thấy một cái gì đó trong tệp này. Nó có liên quan đến những gì tôi đang tìm kiếm không? Nó thực sự làm gì?"
Mặc dù Claude rất mạnh mẽ, nó không phải lúc nào cũng đúng 100%, và tôi thường thấy mình phải phản biện: "Bạn đã nói điều này, nhưng tôi đã tìm thấy điều khác có vẻ trái ngược với nó. Tôi có hiểu sai không?" Khoảng một nửa thời gian, Claude trả lời bằng một phiên bản của "Bạn biết không, bạn đúng." Điều này có thể là một điểm khởi đầu tuyệt vời trong khi bạn tìm hiểu trong một mã nguồn không quen thuộc, cho phép bạn học hỏi trong quá trình đó, nhưng luôn có ích khi kiểm tra lại.
Làm việc cùng một người đánh máy rất nhanh
Tôi đến từ nền tảng lập trình cặp chính thức, trong đó một người là người điều khiển chủ yếu xử lý việc gõ và thực hiện thay đổi, và người khác là người dẫn đường, người hướng dẫn các thay đổi được thực hiện. Với chế độ tương tác của Claude, tôi đã điều chỉnh cách tiếp cận này. Tôi là người dẫn đường; Claude là người điều khiển.
Cách hoạt động như sau: Tôi sẽ bắt đầu với "Đây là một trang tôi muốn làm mẫu. Tạo một cái mới dựa trên cái này nhưng chỉ hiển thị hello world." Sau đó: "Bây giờ lấy dữ liệu cụ thể này từ cơ sở dữ liệu của chúng tôi" (với chi tiết về điều kiện và bảng nào để sử dụng).
Mỗi bước, tôi đang xem xét mã, đảm bảo nó hợp lý. Sự khác biệt so với việc lập trình cặp với con người là thời gian chờ 30 giây trong khi Claude gõ, nhưng nguyên tắc thì giống nhau. Tôi đang hướng dẫn việc triển khai dựa trên cách tôi sẽ xây dựng nó, chỉ nhanh hơn.
Thỉnh thoảng Claude cố gắng "giúp đỡ" và thêm lại những thứ tôi đã cố ý xóa. Vì vậy, tôi đã học được cách nói: "Này, tôi đã thực hiện một số thay đổi. Bắt đầu từ đây và tiến lên."
Nhìn chung, tôi thấy việc sử dụng chế độ tương tác để xem xét từng thay đổi trong suốt quá trình là hữu ích để đảm bảo Claude đang đi đúng hướng. Điều này cho tôi cơ hội điều chỉnh hướng đi và thử nghiệm các triển khai khác nhau trong suốt quá trình.
Những việc tẻ nhạt
AI thực sự tỏa sáng ở đây:
- So sánh các tệp nhật ký để phát hiện sự khác biệt về thời gian hoặc bất thường (nhanh hơn nhiều so với mắt người)
- Biến một thành phần cụ thể thành chung chung để tôi có thể tái sử dụng
- Tìm mọi nơi trong mã nguồn mà chúng tôi cập nhật các bản ghi nhất định để tôi có thể thêm một trường mới một cách nhất quán
Để xác minh, tôi sẽ thực hiện một cái gì đó bằng chính mình, sau đó hỏi: "Tôi dự định làm X. Tôi đã bỏ sót nơi nào không?" Giống như có một cặp mắt thứ hai không bao giờ mệt mỏi.
Trực quan hóa dữ liệu và truy vấn
Chúng tôi đã thiết lập MCP để cho Claude quyền truy cập chỉ đọc vào một số cơ sở dữ liệu. Bây giờ tôi có thể hỏi: "Chúng ta có thấy sự gia tăng thất bại trong việc xây dựng trong giờ qua không?" Claude xác định các bảng cần truy vấn, viết SQL, thực thi và cung cấp cho tôi một biểu đồ với các bản xây dựng thất bại gần đây nhất.
Vẫn có những lúc tôi đang viết các truy vấn đơn lẻ, nhưng Claude thực hiện rất tốt, đặc biệt là qua nhiều cơ sở dữ liệu, để kéo dữ liệu liên quan giúp tôi xác định và trực quan hóa bất kỳ xu hướng nào có thể liên quan.
Trí tuệ quy trình làm việc
Các tác nhân này giúp:
- Cung cấp thông tin về các thay đổi chính đã thực hiện kể từ lần cuối tôi nhìn vào mã nào đó.
- Hành động như một người đánh giá mã tự động phát hiện khi mô tả PR của tôi nói một điều nhưng triển khai lại là điều khác (rất tốt trong việc tìm lỗi chính tả, thỉnh thoảng phát hiện vấn đề thực sự)
- Tạo các trường hợp kiểm tra dựa trên mã hiện có (mặc dù bạn vẫn cần sự đánh giá của con người về những gì đáng kiểm tra)
Tất cả các quy trình làm việc này hoạt động rất tốt, nhưng chúng có một hạn chế lớn.
Các tác nhân từ xa để giữ ngữ cảnh
Một trong những hạn chế khi sử dụng phiên làm việc của Claude là mất ngữ cảnh từ phiên này sang phiên khác. Chuyển đổi máy và chuyển đổi ngữ cảnh có thể dẫn đến việc bắt đầu lại từ đầu vì nó không nhớ các cuộc trò chuyện hoặc quyết định trước đó được thực hiện trong suốt quá trình.
Đây là lúc các sandbox tác nhân từ xa của Depot có thể giúp đỡ. Thay vì chạy Claude cục bộ, nó chạy trong một môi trường đám mây liên tục với quyền truy cập đầy đủ vào các tệp dự án, lịch sử git và terminal của bạn.
Điều này có thể hữu ích khi tôi muốn bảo nó làm điều gì đó theo định kỳ mà không cần phải cung cấp cùng một ngữ cảnh, và tôi không cần chế độ tương tác. Bạn có thể bắt đầu với hướng dẫn nhanh Claude Code của chúng tôi.
Tóm lại
AI đã trở thành một công cụ rất mạnh mẽ để tăng tốc công việc của tôi, không thay thế suy nghĩ của tôi. Nó đã giúp tôi hiểu những khái niệm và mã nguồn không quen thuộc trong khi vẫn cho phép tôi kiểm soát kiến trúc và triển khai các thay đổi mà tôi thực hiện. Nó có thể thực hiện nhiều công việc tẻ nhạt cho bạn và thực hiện một lượng thay đổi đáng ngạc nhiên một cách tự động, nhưng nó có thể hoạt động tốt hơn nữa để tạo ra các giải pháp dễ bảo trì khi bạn cung cấp cái nhìn và hướng dẫn trong suốt quá trình.
Chìa khóa là duy trì sự cân bằng: để AI xử lý các phần tẻ nhạt trong khi giữ quyền kiểm soát về kiến trúc, các mẫu và khả năng bảo trì của mã. Bởi vì cuối cùng, tôi không chỉ cố gắng làm cho một cái gì đó hoạt động. Tôi đang xây dựng một cái gì đó mà đội ngũ của tôi và tôi sẽ cần hiểu, sửa đổi và bảo trì trong nhiều tháng hoặc năm tới.
Các câu hỏi thường gặp (FAQ)
Sự khác biệt giữa AI như một trợ lý và chế độ tự động là gì?
Sử dụng AI như một chế độ tự động có nghĩa là để nó đưa ra quyết định kiến trúc và viết mã mà không có sự giám sát. Là một trợ lý, bạn hướng dẫn việc triển khai trong khi AI xử lý công việc cơ khí—như có một người đánh máy rất nhanh làm theo chỉ dẫn của bạn.
Làm thế nào tôi có thể chia sẻ các phiên làm việc Claude Code với đội ngũ của mình?
Các phiên làm việc Claude Code của Depot cho phép bạn chia sẻ và tiếp tục các phiên lập trình AI trên toàn bộ đội ngũ của bạn. Bất kỳ ai trong tổ chức của bạn cũng có thể tiếp tục từ nơi bạn đã dừng lại, giúp việc hợp tác với các tác nhân AI trở nên liền mạch.
Tôi có thể chạy Claude Code trong các pipeline CI/CD không?
Có! Với các sandbox tác nhân từ xa của Depot và Claude Code trong GitHub Actions, bạn có thể chạy các tác nhân lập trình AI trong quy trình làm việc CI của mình. Điều này cho phép đánh giá mã tự động, cập nhật và các nhiệm vụ bảo trì trực tiếp trong quy trình phát triển của bạn.
Các sandbox tác nhân từ xa là gì?
Các sandbox tác nhân từ xa cung cấp môi trường đám mây liên tục nơi các tác nhân AI như Claude Code có thể làm việc với ngữ cảnh đầy đủ về hệ thống tệp, tích hợp Git và lịch sử dự án. Không còn phải bắt đầu lại từ đầu—tác nhân AI của bạn duy trì ngữ cảnh qua các phiên.