•9 min read

Phát triển hướng tác nhân với GitHub Copilot: Một kỷ nguyên mới trong hợp tác phần mềm

Phát triển hướng tác nhân với GitHub Copilot: Một kỷ nguyên mới trong hợp tác phần mềm

Tôi đã dùng Copilot từ bản xem trước kỹ thuật. Hồi đó, nó giống như một tính năng tự động hoàn thành thông minh (một trò ảo thuật ấn tượng, nhưng tôi sẽ không dùng nó để xây dựng thứ gì quan trọng). Mọi thứ thay đổi nhanh hơn tôi mong đợi.

Điều tôi không ngờ tới là quy trình làm việc lại thay đổi nhiều đến vậy. Không chỉ là "AI viết code cho tôi", mà là một cách tư duy hoàn toàn khác về vòng lặp phát triển: lập kế hoạch, tạo, xem xét, tin tưởng. Lặp lại.

Audio Briefing
0:00 / 0:00
Sự thay đổi

Mục tiêu không phải là tự động hóa vì lợi ích của nó. Mà là để máy tính xử lý những phần mã hóa mang tính cơ học để bạn có thể dành năng lượng cho những phần không phải như vậy.

Cách tôi thực sự sử dụng nó

Sai lầm lớn nhất mà tôi thấy mọi người mắc phải là coi Copilot như một công cụ tìm kiếm: gõ một bình luận mơ hồ và hy vọng nó đoán đúng. Điều đó đôi khi hiệu quả, nhưng không đáng tin cậy. Cách tiếp cận tốt hơn gồm ba điều:

  1. Viết kế hoạch trước. Trong bảng trò chuyện, mô tả những gì bạn muốn trong một đoạn văn. Chế độ /plan hữu ích ở đây. Khi cách tiếp cận đã hợp lý, hãy để Copilot triển khai các phần.
  2. Giữ ngữ cảnh chặt chẽ. Mô hình hoạt động tốt nhất khi các tệp liên quan đang mở và hàm bạn đang viết có đầu vào và đầu ra rõ ràng. Nếu bạn nhảy giữa năm tệp, Copilot sẽ mất dấu.
  3. Xem xét như bạn xem xét một PR từ một nhà phát triển mới. Mã thường đúng. Các trường hợp biên là những gì nó bỏ sót. Hãy kiểm tra những trường hợp đó.

Sử dụng SDK

Copilot hiện có SDK mở rộng. Nó cho phép bạn xây dựng các tác nhân tùy chỉnh với quyền truy cập vào các công cụ và quy ước của dự án. Thời gian thiết lập sẽ được đền đáp ngay lần đầu tiên bạn tự động hóa một tác vụ lặp đi lặp lại cụ thể cho codebase của mình.

Hãy chi tiết

Các lời nhắc ngắn tạo ra mã chung chung. Viết vài câu về những gì bạn đang xây dựng, các ràng buộc và các mẫu bạn ưu tiên. Chất lượng đầu ra sẽ tăng lên đáng kể.

Giữ nhà cửa sạch sẽ

Điều này quan trọng hơn bất kỳ kỹ thuật nhắc nhở nào. Nếu mã của bạn lộn xộn, Copilot sẽ tạo ra mã lộn xộn theo cùng một phong cách. Tái cấu trúc mạnh mẽ, đặt tên rõ ràng, và trợ lý AI của bạn sẽ làm theo.

Advertisement

Tin tưởng nhưng phải kiểm tra (Thực ra, kiểm tra quy trình)

Ban đầu tôi đã lãng phí thời gian để nghi ngờ mọi gợi ý. Sau đó tôi nhận ra: nếu bộ kiểm thử bắt được mã xấu, và quy trình xem xét bắt được các mẫu xấu, thì điều đúng đắn cần làm là tin tưởng AI và kiểm tra bằng công cụ. Khi có gì đó lọt qua, hãy sửa hàng rào bảo vệ, chứ không phải lời nhắc.

Vòng lặp hiện tại của tôi
  1. Lập kế hoạch bằng ngôn ngữ tự nhiên.
  2. Copilot tạo ra phần triển khai.
  3. Các bài kiểm thử đơn vị chạy tự động.
  4. Tôi xem xét sự khác biệt như bất kỳ PR nào.
  5. Nếu có gì đó bị hỏng, tôi thêm một bài kiểm thử cho nó.

Những gì tôi đã học được

  • Những thói quen giúp bạn trở thành một đồng đội tốt (giao tiếp rõ ràng, ghi chép, đặt kỳ vọng) cũng giúp bạn làm việc tốt với Copilot.
  • Coi AI như một thực tập sinh đã đọc toàn bộ internet nhưng không có ngữ cảnh dự án. Cung cấp ngữ cảnh cho nó, xem xét công việc của nó và đừng đổ lỗi cho nó khi quy trình thất bại.
  • Các codebase sạch sẽ mang lại kết quả tốt hơn đáng kể. Nếu bạn không thể nhận được gợi ý tốt từ Copilot, điều đầu tiên cần sửa không phải là lời nhắc, mà là mã.

Bạn cũng có thể thích

Tìm hiểu sâu: Cơ chế cốt lõi

Khi chúng ta nhìn sâu hơn, các cơ chế cơ bản cho thấy sự tương tác phức tạp của các hệ thống. Trong phát triển hiện đại, việc hiểu các cơ chế này là điều phân biệt người mới bắt đầu với chuyên gia.

Hãy xem xét ví dụ thực tế này:

// A comprehensive example demonstrating advanced patterns
class ServiceManager {
  constructor() {
    this.services = new Map();
    this.initialized = false;
  }

  register(name, service) {
    if (this.services.has(name)) {
      throw new Error(`Service ${name} already registered`);
    }
    this.services.set(name, service);
  }

  async initializeAll() {
    this.initialized = true;
    for (const [name, service] of this.services) {
      if (typeof service.init === 'function') {
        await service.init();
      }
    }
  }

  get(name) {
    if (!this.initialized) {
      console.warn('Accessing services before initialization');
    }
    return this.services.get(name);
  }
}

Mô hình này đảm bảo rằng kiến trúc của chúng ta vẫn có thể mở rộng và mạnh mẽ ngay cả khi các yêu cầu kinh doanh thay đổi. Đây là một cách tiếp cận cơ bản mang lại lợi ích trong các ứng dụng quy mô lớn.

Advertisement

Ứng dụng thực tế và mở rộng quy mô

Việc triển khai điều này trong môi trường sản xuất đặt ra một loạt thách thức mới. Chúng ta phải tính đến tính đồng thời, quản lý trạng thái và rò rỉ bộ nhớ.

Ví dụ, khi xử lý các hệ thống thông lượng cao, mọi tối ưu hóa nhỏ đều có giá trị. Chúng ta thường dựa vào các công cụ phân tích hiệu suất để xác định các điểm nghẽn không rõ ràng trong quá trình phát triển cục bộ.

Sơ đồ trên minh họa một chiến lược triển khai điển hình, nơi ứng dụng của chúng ta mở rộng theo chiều ngang.

Kiểm tra sự hiểu biết của bạn

Câu hỏi thường gặp

Tính năng hoàn thành mã nội tuyến dự đoán các chuỗi token ngay xung quanh con trỏ của bạn. Chế độ Copilot Agent hoạt động trên toàn bộ không gian làm việc: nó diễn giải các tác vụ ngôn ngữ tự nhiên, kiểm tra các tệp dự án, chạy các lệnh không gian làm việc (như linters và bộ kiểm thử), phân tích lỗi và chỉnh sửa nhiều tệp một cách tự động.
Copilot Workspace lấy một GitHub Issue, kiểm tra các tệp kho lưu trữ liên quan, tạo một đặc tả chính thức và kế hoạch triển khai từng bước, thực hiện các sửa đổi mã trong một container tạm thời và mở một pull request có thể kiểm toán để nhà phát triển xem xét.
Bằng cách tạo một tệp .github/copilot-instructions.md tại thư mục gốc của kho lưu trữ, các nhóm xác định các hướng dẫn cố định. Copilot tự động tải các hướng dẫn này vào mọi lời nhắc, thực thi các quy ước TypeScript, các API bị cấm, các mẫu kiến trúc và các framework kiểm thử ưu tiên.
Cấu hình một tệp .copilotignore ở cấp gốc hoặc cấp thư mục. Copilot sẽ bỏ qua hoàn toàn các tệp phù hợp (chẳng hạn như tệp .env, chứng chỉ riêng tư hoặc mô-đun thuật toán độc quyền), ngăn chúng được truyền hoặc lập chỉ mục để lấy ngữ cảnh.
Dựa vào các cổng CI tự động thay vì kiểm tra từng dòng thủ công. Yêu cầu biên dịch TypeScript nghiêm ngặt, độ bao phủ kiểm thử đơn vị cao và kiểm tra phân tích tĩnh. Tập trung xem xét mã của con người vào các ranh giới bảo mật kiến trúc, các trường hợp biên và tính toàn vẹn của logic nghiệp vụ.
Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement