Hợp tác với Claude để tạo tài liệu hiệu quả
Bạn vừa hoàn thành một tính năng mới, đã kiểm tra và sẵn sàng để phát hành. Trước khi đưa ra phản hồi cho khách hàng, điều quan trọng là bạn cần kiểm tra với nhóm để đảm bảo mọi thứ đều ổn. Một câu hỏi thường xảy ra trong tình huống này là: "Chúng ta có tài liệu cho tính năng này không?"
Tại sao tài liệu lại quan trọng?
Tài liệu thường trở thành vấn đề bị bỏ qua trong quá trình phát triển phần mềm. Việc tạo tài liệu không chỉ giúp người dùng hiểu rõ hơn về sản phẩm mà còn giúp lập trình viên khác trong nhóm có thể hiểu và tiếp cận với mã nguồn một cách dễ dàng hơn. Để cải thiện quy trình này, tôi muốn khám phá việc sử dụng Claude - một trợ lý AI - để giúp xác định những thiếu sót trong tài liệu và tạo các bản nháp ban đầu cho tài liệu còn thiếu.
Bắt đầu với Claude
Tôi đang sử dụng các sandbox từ Depot Claude, vì tôi nghĩ rằng việc có thể trở lại phiên làm việc và chia sẻ nó với nhóm sẽ rất hữu ích. Để tìm hiểu thêm về chúng, hãy tham khảo hướng dẫn bắt đầu nhanh.
Quy trình làm việc
Hiểu thay đổi
Bước đầu tiên là đảm bảo rằng Claude hiểu rõ về thay đổi được thực hiện. Để đơn giản hóa ví dụ này, tôi sẽ chọn một thay đổi nhỏ được đại diện bởi một commit duy nhất để thử nghiệm quy trình. Tôi sẽ bắt đầu một phiên làm việc với Depot Claude và cung cấp ID phiên của riêng tôi để dễ dàng tham khảo sau này.
bash
depot claude \
--org ORG_ID \
--repository https://github.com/depot/cli.git \
--branch main \
--session-id doc-hiding-summaries \
"Bạn có thể giải thích các thay đổi từ commit này: 4febf18142a6bfafaaad7258b9c34f2cb251cb07"```
Khi vào liên kết được cung cấp, tôi thấy rằng Claude đã hiểu rõ về thay đổi này. Đối với những thay đổi lớn hơn, bạn có thể cần nhiều trao đổi hơn để đảm bảo sự đồng nhất, nhưng commit này thì khá đơn giản.
#### Kiểm tra thiếu sót tài liệu
Tiếp theo, tôi muốn biết liệu tính năng này đã được tài liệu hóa chưa. Nếu có, tôi có thể muốn mở rộng tài liệu với thay đổi mới này. Nếu chưa có, tôi muốn thêm tài liệu vào tổng thể. Vì vậy, tôi sẽ tiếp tục phiên làm việc và yêu cầu Claude kéo xuống một repo khác chứa tài liệu của chúng tôi và kiểm tra giúp tôi.
```bash
depot claude \
--org ORG_ID \
--resume doc-hiding-summaries \
"Tôi muốn kiểm tra xem có tài liệu nào cho tính năng này trong repo tài liệu của chúng tôi không. \
Bạn có thể kéo nhánh chính của repo tài liệu và kiểm tra không? \
Repo ở đây: https://github.com/depot/docs.git"```
Có vẻ như chúng tôi cần đảm bảo rằng trợ lý có quyền để clone repo. Tôi sẽ yêu cầu nó làm lại nhưng lần này cung cấp cờ `--allowedTools` để chỉ định các công cụ mà nó sẽ được phép sử dụng nhằm tránh gặp các vấn đề về quyền truy cập.
```bash
depot claude \
--org ORG_ID \
--resume doc-hiding-summaries \
--allowedTools "Bash(git:*)" \
"Tôi muốn kiểm tra xem có tài liệu nào cho tính năng này trong repo tài liệu của chúng tôi không. \
Bạn có thể kéo nhánh chính của repo tài liệu và kiểm tra không? \
Repo ở đây: https://github.com/depot/docs.git"```
Cờ `--allowedTools "Bash(git:*)"` cấp quyền cho Claude sử dụng các lệnh git, an toàn hơn so với việc bỏ qua tất cả các kiểm tra quyền.
Dựa trên đầu ra, tôi thấy rằng nó đã clone thành công repo tài liệu và kiểm tra xem tính năng này đã được tài liệu hóa chưa (nó chưa). Tuyệt, vậy chúng tôi có lẽ nên thêm một số tài liệu mới về biến môi trường này; không chỉ cho thay đổi cụ thể này mà còn cho cách sử dụng của nó nói chung.
### Tạo bản nháp tài liệu
Tại thời điểm này, tôi nghĩ chúng tôi đã đủ thông tin để bắt đầu tạo một số tài liệu. Tôi sẽ yêu cầu Claude xem xét cách mà biến môi trường này được sử dụng tổng thể để có cái nhìn đầy đủ về nó. Sau đó, tôi muốn nó tìm một nơi trong tài liệu để thêm một số thông tin này và đưa ra đề xuất về thay đổi tài liệu mà nó nghĩ nên thực hiện dựa trên phát hiện của mình. Tôi vẫn rất chú ý đến việc làm việc với AI vì đây vẫn là một quy trình mới với tôi, vì vậy tôi thích xem kế hoạch trước khi chúng tôi thực hiện các thay đổi.
```bash
depot claude \
--org ORG_ID \
--resume doc-hiding-summaries \
"Vì không có tài liệu nào cho biến môi trường này, bạn có thể nhìn chung cách mà nó được sử dụng và những gì nó có thể làm không? \
Sau đó, tôi muốn bạn tìm một nơi tốt trong repo tài liệu mà bạn nghĩ sẽ hợp lý để thêm tài liệu này. \
Cuối cùng, đề xuất thay đổi tài liệu mà bạn nghĩ nên thực hiện dựa trên những gì bạn đã tìm hiểu."```
Claude đã có thể tạo ra cái nhìn tổng quát hơn về cách sử dụng biến môi trường này và tìm một vị trí thích hợp để thêm tài liệu. Tôi không đồng ý hoàn toàn với nơi mà Claude đã đặt nó trên trang, nhưng tổng thể thì cũng khá ổn với tôi. Tôi sẽ cung cấp một số phản hồi trước khi làm gì khác.
```bash
depot claude \
--org ORG_ID \
--resume doc-hiding-summaries \
"Tôi thích những gì bạn đã làm. \
Thay vì một phần Các biến môi trường sau xác thực, bạn có thể tạo một phần Câu hỏi thường gặp ở dưới cùng của trang mà bạn trả lời chung về cách giảm thiểu đầu ra xây dựng và viết lại điều này theo định dạng đó không?"```
Điều này có vẻ hợp lý với tôi như một điểm khởi đầu và giờ tôi muốn nhận phản hồi từ những người khác.
### Quay lại mã nguồn
Tại thời điểm này, tôi sẽ yêu cầu Claude kiểm tra một nhánh, commit thay đổi này, và sau đó tạo một yêu cầu pull nháp để đưa nó trở lại mã nguồn.
```bash
depot claude \
--org ORG_ID \
--resume doc-hiding-summaries \
--allowedTools "Edit" "Bash(git:*)" "Bash(gh pr:*)" \
"Bạn có thể tạo một nhánh, commit thay đổi này, và sau đó tạo một yêu cầu pull trong repo tài liệu với điều này không? \
Tôi muốn bạn đảm bảo rằng liên kết đến sandbox này có trong mô tả: https://depot.dev/orgs/ORG_ID/claude/doc-hiding-summaries để bất kỳ ai cần thêm ngữ cảnh."```
Cuối cùng, tôi có một yêu cầu pull, điều này thật tuyệt và tôi có thể thấy những thay đổi. Đây cũng là thời điểm mà các kiểm tra CI đang chạy và tôi thấy có một số lỗi định dạng và lint. Tôi sẽ yêu cầu trợ lý sử dụng các script trong package.json của chúng tôi để định dạng những thay đổi này.
```bash
depot claude \
--org ORG_ID \
--resume doc-hiding-summaries \
--allowedTools "Edit" "Bash(git:*)" \
"Bạn có thể kiểm tra package.json và chạy trình định dạng không?"```
Bây giờ tôi đã chính thức có một PR với những thay đổi này và chúng đang vượt qua tất cả các kiểm tra, sẵn sàng để tiếp tục phát triển và xem xét chính thức.
Giờ là lúc làm việc với nhóm để đảm bảo tài liệu là chính xác và tuân theo các tiêu chuẩn thông thường của chúng tôi.
### Sự hợp tác trong nhóm và chia sẻ ngữ cảnh
Đây là nơi mà khía cạnh hợp tác của các sandbox từ Depot trở nên rất giá trị. Khi một đồng nghiệp cần ngữ cảnh về mã mà tôi đang tài liệu hóa, họ có thể truy cập cùng một phiên Claude thông qua liên kết chia sẻ. Tất cả ngữ cảnh, phân tích thay đổi ban đầu, khám phá repo và lý do đằng sau các quyết định tài liệu được bảo tồn và dễ dàng xem bởi những người khác.
Ví dụ, nếu một người đánh giá đặt câu hỏi tại sao chúng tôi lại đặt tài liệu trong phần Câu hỏi thường gặp thay vì một trang các biến môi trường riêng biệt, họ có thể hỏi Claude trực tiếp trong cùng một phiên. Claude có đầy đủ ngữ cảnh về quy trình ra quyết định và có thể giải thích lý do hoặc giúp đưa ra các lựa chọn thay thế.
### Thí nghiệm phức tạp hơn
Quy trình làm việc đầu tiên mà tôi thử nghiệm sử dụng một tính năng rất nhỏ mà hoàn toàn không có tài liệu. Tôi muốn thử nghiệm điều này trên một tính năng lớn hơn đã được xây dựng với nhiều thay đổi và lặp đi lặp lại hơn và có một số tài liệu phần nào. Các quy trình làm việc của tôi có xu hướng mang tính thực tiễn hơn khi tôi bắt đầu kết hợp các trợ lý vào quy trình làm việc của mình, nhưng nếu bạn muốn thử nghiệm với quyền tự do hơn và những thay đổi phức tạp hơn, bạn có thể thử một prompt như sau:
```bash
depot claude \
--org ORG_ID \
--repository https://github.com/depot/cli.git \
--branch main \
--session-id docs-claude-sandboxes \
--allowedTools "Edit" "Bash(git:*)" "Bash(gh pr:*)" \
"Chúng tôi đã thêm các thay đổi gần đây cho lệnh depot claude. \
Nó giờ đây mặc định khởi động claude trong một sandbox từ xa thay vì sử dụng claude cục bộ trên máy tính của bạn. \
Bạn có thể xác nhận rằng chúng tôi có tài liệu cho điều này trong repo tài liệu: https://github.com/depot/docs.git và sau đó thêm hoặc cập nhật chúng và đảm bảo chúng được cập nhật. \
Tôi muốn chỉ ra các ví dụ về cách khởi động depot claude cục bộ và từ xa. \
Sau đó, vui lòng tạo một nhánh, commit thay đổi này và tạo một yêu cầu pull nháp để tôi có thể xem xét."```
Tôi đã thử nghiệm, và cuối cùng điều này đã nhanh hơn so với việc tự mình tìm kiếm và viết tài liệu. Tôi có những điều chỉnh mà tôi muốn thực hiện và điều này cung cấp một điểm khởi đầu tuyệt vời mà tôi có thể tiếp tục phát triển từ đó. Phần khó khăn nhất trong hầu hết các quy trình làm việc này là đảm bảo tôi đã cấu hình đúng `--allowedTools`.
### Khi quy trình này nổi bật
Dựa trên thí nghiệm này, tôi thấy rằng cách tiếp cận này hoạt động đặc biệt tốt cho:
- **Các tính năng phức tạp trải dài qua nhiều tệp**: Claude có thể phân tích toàn bộ mã nguồn để hiểu quy mô và mẫu sử dụng của tính năng.
- **Tài liệu đa repo**: Khi tài liệu của bạn sống trong một repo riêng biệt với mã, Claude có thể làm việc trên cả hai một cách liền mạch.
- **Tài liệu sau phát triển**: Thích hợp cho tình huống phổ biến mà các tính năng được xây dựng trước và tài liệu đến sau.
### Hạn chế
Hiện tại, tương tác này chỉ giới hạn ở việc sử dụng CLI, vì vậy không có cách nào để bắt đầu các phiên từ xa qua giao diện người dùng; có rất nhiều sự qua lại giữa terminal và UI. Điều này có thể được cải thiện trong tương lai, nhưng đó là trạng thái hiện tại của thế giới.
Ngoài ra, quy trình này yêu cầu bạn phải quen thuộc với cú pháp `--allowedTools` để cấp quyền thích hợp một cách an toàn. Bạn có thể sử dụng `--dangerously-skip-permissions` như một sự thay thế ở đây nhưng, như tên cờ ngụ ý, điều này có thể rất rủi ro. Bạn sẽ cần thử nghiệm với quyền dựa trên những hành động mà bạn muốn Claude thực hiện.
Đây là một điểm khởi đầu tuyệt vời nhưng ở giai đoạn này, bạn có thể vẫn cần sự can thiệp của con người để đảm bảo rằng các tài liệu được tạo ra ở đúng vị trí và nắm bắt ngữ cảnh phù hợp với những gì bạn muốn tài liệu hóa. Các mô hình này làm rất tốt nhưng vẫn là một ý tưởng tốt để kiểm tra lại mọi thứ và phản hồi nếu có điều gì đó có vẻ không chính xác.
### Suy nghĩ cuối cùng
Đây là lần đầu tiên tôi thử nghiệm với quy trình làm việc này và tôi muốn xem tôi có thể sử dụng các sandbox này để cải thiện quy trình thêm tài liệu sau khi tôi đã hoàn thành một tính năng như thế nào. Tôi có thể thấy điều này đặc biệt hữu ích với những thay đổi không nhỏ hoặc khi bạn có những người khác nhau làm việc trên các tính năng và viết tài liệu.
Còn rất nhiều lặp lại khác của quy trình này có thể được khám phá. Một số khả năng thú vị:
- Biến điều này thành một phần của quy trình PR được kích hoạt bởi một thay đổi mã
- Thêm ngữ cảnh vào một phiên cụ thể theo thời gian trong quá trình phát triển
- Chỉ định trợ lý đến một hướng dẫn phong cách hiện có để đảm bảo tài liệu nhất quán
Bạn muốn thử nghiệm điều này cho chính mình? Hãy chọn một tính năng nhỏ cần tài liệu, thiết lập một phiên Claude với `depot claude`, và thực hiện quy trình làm việc.