Hướng dẫn cho lập trình viên · 18 việc
AI cho lập trình viên: agent lập trình, chi phí và giao việc an toàn
Nếu bạn đã dùng tính năng tự động hoàn thành và trò chuyện, bước tiếp theo là các agent đọc repository, chạy lệnh và mở pull request. Việc đó có tiết kiệm thời gian hay không phụ thuộc vào cách thiết lập nhiều hơn là vào mô hình. Phần đầu áp dụng cho mọi agent lập trình; các phần về Claude Code và Codex đi vào lệnh, tệp và cài đặt của từng công cụ, theo tài liệu chính thức của chúng.
Mọi agent lập trình
01
Giao cho agent một nhiệm vụ mà nó chứng minh được là đã xong
Agent thất bại với “cải thiện cái này” và thành công với những nhiệm vụ kết thúc bằng một bước kiểm tra: một bài kiểm thử đang lỗi phải chạy qua, một lệnh mà đầu ra phải thay đổi. Hãy viết bằng chứng hoàn thành vào nhiệm vụ, và agent sẽ tiếp tục cho đến khi xong thật thay vì dừng lại khi trông có vẻ đã xong.
Ví dụ
“Sửa bộ phân tích ngày cho định dạng tuần ISO. Hoàn thành nghĩa là npm test -- dates chạy qua, kể cả bài kiểm thử mới cho 2026-W01. Không thay đổi các bài kiểm thử.” Agent chạy bài kiểm thử cho đến khi qua và dán đầu ra; bạn xem lại một diff 30 dòng thay vì một phỏng đoán.
Cách làm
- 1Trước khi giao, hãy viết hoặc chỉ ra bước kiểm tra: bài kiểm thử đang lỗi, hoặc lệnh và đầu ra mong đợi của nó.
- 2Giao nhiệm vụ bằng prompt trên trang này, kèm các tệp nó được phép sửa và các tệp không được sửa.
- 3Để nó tự chạy bước kiểm tra và dán đầu ra cuối cùng.
- 4Xem lại diff như pull request của một đồng nghiệp; bước kiểm tra chạy qua là lúc bắt đầu xem lại, không phải lúc kết thúc.
Tích hợp sẵn
Prompt để sao chép
Nhiệm vụ: [thay đổi]. Hoàn thành nghĩa là: [bài kiểm thử hoặc lệnh] chạy qua và in ra [đầu ra mong đợi]. Hãy chạy nó trước khi kết thúc và dán kết quả. Bạn được sửa: [đường dẫn]. Không được sửa: [đường dẫn], các dependency, hoặc các bài kiểm thử. Nếu bạn không làm cho nó chạy qua được, hãy dừng lại và giải thích lý do thay vì lách bước kiểm tra.Chỗ dễ sai
- Đôi khi agent làm bài kiểm thử chạy qua bằng cách nới lỏng nó. Hãy cấm sửa bài kiểm thử, và tìm dấu hiệu đó trong diff.
- Một nhiệm vụ quá lớn cho một bước kiểm tra thì cũng quá lớn cho một lần giao việc. Hãy chia nhỏ nó.
02
Chạy nhiệm vụ trên đám mây trong khi bạn làm việc khác
Agent trên đám mây làm việc với repository của bạn trong môi trường riêng của chúng và gửi lại các thay đổi để bạn xem xét, nên nhiều nhiệm vụ chạy trong lúc bạn làm việc khác. Cách này chỉ đáng giá với những nhiệm vụ được mô tả rõ; nhiệm vụ mơ hồ sẽ trở về thành những diff lớn mà bạn phải gỡ từng phần.
Ví dụ
Ba nhiệm vụ nhỏ trước bữa trưa: nâng cấp một dependency, thêm một chỉ mục cơ sở dữ liệu còn thiếu, sửa một bài kiểm thử lúc qua lúc lỗi. Mỗi nhiệm vụ được giao cho một agent trên đám mây kèm bước kiểm tra riêng, và buổi chiều bạn xem lại ba pull request thay vì chuyển ngữ cảnh ba lần.
Cách làm
- 1Chọn công cụ gắn liền với nơi đặt code của bạn: Codex Cloud, Copilot cloud agent trên GitHub, hoặc Claude Code on the web.
- 2Đảm bảo môi trường của nó cài được các dependency và chạy được các bài kiểm thử của bạn; thiếu chúng, agent chỉ đang đoán.
- 3Gửi những nhiệm vụ nhỏ, độc lập, mỗi nhiệm vụ có bước kiểm tra riêng, như trong việc ở trên.
- 4Để một công cụ review tự động đọc mỗi pull request trước, rồi bạn tự xem lại.
Tích hợp sẵn
Prompt để sao chép
Trong repository này: [nhiệm vụ]. Bối cảnh: [vị trí trong code, issue liên quan]. Hoàn thành khi: [bài kiểm thử hoặc lệnh] chạy qua trong môi trường của bạn; đưa đầu ra của nó vào phần mô tả pull request. Giữ pull request dưới [số] dòng thay đổi. Nếu cần nhiều hơn, hãy dừng lại và đề xuất cách chia nhỏ.Chỗ dễ sai
- Các bài kiểm thử cần thông tin bí mật hoặc dịch vụ mà bạn chưa thiết lập sẽ bị bỏ qua hoặc lỗi. Một lần chạy xanh khi thiếu chúng chẳng chứng minh được bao nhiêu.
- Nhiều agent làm trên phần code liên quan đến nhau sẽ tạo ra các pull request xung đột. Hãy giữ các nhiệm vụ chạy song song ở những vùng code tách biệt.
03
Để các bước kiểm tra tự chạy mà không cần bạn
Đừng tốn thời gian review cho những gì máy kiểm tra được. Hook chạy formatter, linter và bài kiểm thử của bạn sau mỗi thay đổi agent thực hiện, và một bot review đọc mỗi pull request trước bạn. Khi đó phần review của bạn là về thiết kế, không phải lỗi gõ phím.
Ví dụ
Một hook chạy formatter và các unit test sau mỗi lần sửa. Thay đổi của agent làm hỏng hai bài kiểm thử; nó thấy lỗi trong đầu ra của hook và sửa trước khi bạn xem. Sau đó bot review đánh dấu một trường hợp lỗi chưa được xử lý, và trường hợp đó bạn quyết định.
Cách làm
- 1Đưa các lệnh build, test và lint vào tệp hướng dẫn mà agent đọc khi bắt đầu mỗi phiên; tài liệu của từng agent nêu tên tệp này.
- 2Trong Claude Code, thêm hook chạy formatter và các bài kiểm thử sau mỗi lần sửa, để agent thấy lỗi và tự sửa.
- 3Cho một bot review mọi pull request: bật “Automatic review” trong Codex, hoặc thêm Copilot làm người review.
- 4Khi agent mắc cùng một lỗi hai lần, hãy biến lỗi đó thành một bài kiểm thử hoặc một quy tắc trong tệp hướng dẫn.
Tích hợp sẵn
Prompt để sao chép
Hãy đọc repository này và viết tệp hướng dẫn cho các agent lập trình: 1. Các lệnh chính xác để cài đặt, build, test, lint và format. 2. Cấu trúc dự án trong tối đa 10 dòng. 3. Những quy ước mà người mới hay làm sai ở đây, mỗi quy ước một ví dụ. 4. Những gì agent không bao giờ được làm ở đây, ví dụ sửa migration hoặc chỉnh sửa tệp được sinh tự động. Chỉ liệt kê các lệnh bạn đã chạy thành công; đánh dấu phần còn lại là “chưa xác minh”.Chỗ dễ sai
- Tệp hướng dẫn chứa những lệnh không còn chạy được sẽ dạy agent phớt lờ nó. Hãy chạy lại chúng khi cách thiết lập thay đổi.
- Bot review cũng mắc lỗi một cách rất tự tin. Hãy coi nhận xét của chúng là gợi ý.
04
Kết nối agent với công cụ của bạn, với quyền truy cập tối thiểu
Agent chỉ tốt bằng những gì nó nhìn thấy: issue, tài liệu, log, lược đồ cơ sở dữ liệu. MCP kết nối những thứ đó, nhưng mỗi kết nối là một quyền truy cập, và văn bản nó đọc từ bên ngoài có thể chứa chỉ thị. Hãy bắt đầu với quyền chỉ đọc và chỉ mở rộng khi một nhiệm vụ cần.
Ví dụ
Agent đọc issue 482 từ hệ thống theo dõi, tìm stack trace trong log và tra tài liệu của thư viện, rồi chỉ ra tệp gây lỗi, tất cả qua các token chỉ đọc. Bản sửa lỗi thì nó viết trong repository của bạn, nơi bạn xem lại như thường lệ.
Cách làm
- 1Liệt kê những gì bạn dán vào cuộc trò chuyện thường xuyên nhất, chẳng hạn issue, log lỗi, tài liệu hoặc lược đồ. Kết nối những thứ đó trước.
- 2Thêm MCP server chính thức cho từng thứ, với token chỉ có quyền đọc. Trong Gemini CLI, một extension có thể đóng gói sẵn MCP server và phần thiết lập của nó.
- 3Giao cho nó một nhiệm vụ cần đến chúng và kiểm tra xem nó có gọi đúng server không.
- 4Vài tuần một lần, hãy gỡ các server bạn không còn dùng.
Tích hợp sẵn
Prompt để sao chép
Trước khi thay đổi bất cứ thứ gì: đọc issue [id] trong hệ thống theo dõi, tìm lỗi trong log, và tra tài liệu của [thư viện]. Cho biết mỗi nguồn cho bạn biết điều gì và bạn nghĩ tệp nào gây lỗi. Không ghi vào bất kỳ công cụ nào đã kết nối.Chỗ dễ sai
- Một trang web, issue hay tài liệu có thể chứa văn bản được viết ra để điều khiển agent. Đừng cấp quyền ghi cho những công cụ đọc nội dung từ bên ngoài.
- Token trong tệp cấu hình sẽ bị lộ. Hãy dùng kho lưu thông tin bí mật của client hoặc biến môi trường, không bao giờ dùng repository.
05
Chọn giữa gói thuê bao và trả theo token
Phiên làm việc của agent đọc tệp và chạy nhiều bước, nên dùng nhiều token hơn hẳn một cuộc trò chuyện. Hãy tính giá cho một tuần sử dụng điển hình của chính bạn trước khi chọn: gói thuê bao giới hạn mức dùng trực tiếp, còn tính phí theo token cho phép bạn đặt giới hạn cho từng lần chạy tự động.
Ví dụ
Một tuần dùng agent hằng ngày tốn khoảng 40 triệu token đầu vào và 3 triệu token đầu ra. Tính giá theo trang Giá API cho mô hình bạn dùng, rồi so với một tháng thuê bao. Nếu gói thuê bao rẻ hơn và giới hạn của nó vừa với tuần làm việc của bạn, hãy chọn gói đó, và giữ một khóa API có hạn mức cho CI.
Cách làm
- 1Kiểm tra những gì bạn đã trả tiền: các gói ChatGPT có kèm Codex, và các gói trả phí của Claude có kèm Claude Code.
- 2Ghi lại mức dùng token của vài phiên điển hình ở nơi agent của bạn hiển thị con số này.
- 3Tính giá cho mức dùng đó trên trang Giá API của chúng tôi và so với gói thuê bao.
- 4Với tự động hóa và CI, hãy dùng khóa API có hạn mức chi tiêu để một vòng lặp không thể đẩy hóa đơn lên cao.
Tích hợp sẵn
Prompt để sao chép
Đây là mức dùng của tôi trong [số] phiên điển hình: [token đầu vào và đầu ra]. Tôi làm việc khoảng [số ngày] ngày mỗi tuần. Hãy ước tính chi phí hằng tháng của tôi nếu trả theo token với mức giá này: [dán từ trang Giá API]. So sánh với gói thuê bao [giá] mỗi tháng. Trình bày phép tính để tôi kiểm tra được.Chỗ dễ sai
- Gói thuê bao cũng có giới hạn sử dụng. Chạm giới hạn giữa chừng một nhiệm vụ sẽ làm mất thời gian; hãy kiểm tra giới hạn, không chỉ giá.
- Mô hình làm thay đổi hóa đơn nhiều hơn bất cứ yếu tố nào khác. Hãy so sánh với đúng mô hình bạn thực sự dùng.
Claude Code
06
Cho mọi phiên cùng một điểm khởi đầu với CLAUDE.md
Nếu bạn giải thích lệnh build và các quy ước ở đầu mỗi phiên, bạn đang làm đúng việc mà CLAUDE.md sinh ra để làm. Claude đọc tệp này khi bắt đầu mỗi phiên; hãy giữ nó ngắn và đúng, và những lỗi cũ sẽ không quay lại nữa.
Ví dụ
Một repository mà Claude cứ chạy npm test thay vì lệnh pnpm test:unit của dự án, và cứ sửa các tệp được sinh tự động. Hai dòng trong CLAUDE.md, lệnh đúng và “không bao giờ sửa src/gen/”, là cả hai lỗi chấm dứt.
Cách làm
- 1Chạy /init trong repository: lệnh này phân tích codebase và viết một CLAUDE.md khởi đầu, hoặc đề xuất cải tiến cho tệp bạn đang có.
- 2Giữ các quy tắc chung của nhóm, như lệnh build và test và chuẩn viết code, trong ./CLAUDE.md và commit tệp này. Sở thích riêng của bạn đặt trong ~/.claude/CLAUDE.md cho mọi dự án, hoặc CLAUDE.local.md cho riêng dự án này.
- 3Trỏ đến các tài liệu dài hơn thay vì dán chúng vào: @path/to/file nhập một tệp khác khi khởi động.
- 4Mỗi lần Claude làm sai cùng một việc hai lần, hãy thêm đúng một dòng lẽ ra đã ngăn được lỗi đó.
Prompt để sao chép
Hãy đọc repository này và cải thiện CLAUDE.md. Giữ dưới 60 dòng: 1. Các lệnh chính xác để build, test và lint. 2. Cấu trúc dự án trong vài dòng. 3. Những quy ước mà người mới hay làm sai ở đây. 4. Các tệp và thư mục không bao giờ được sửa. Xóa mọi thứ không còn đúng. Đánh dấu các lệnh bạn chưa chạy là “chưa xác minh”.Chỗ dễ sai
- Mọi thứ trong CLAUDE.md được nạp ở mỗi phiên và chiếm chỗ trong ngữ cảnh. Hãy chuyển phần chi tiết sang các tệp mà nó nhập vào.
- Hướng dẫn không còn đúng còn tệ hơn không có hướng dẫn. Hãy kiểm tra lại các lệnh khi cách thiết lập thay đổi.
Từ tài liệu chính thức: Claude Code docs: How Claude remembers your project
07
Lập kế hoạch trước, rồi mới để nó sửa
Với một thay đổi trải trên nhiều tệp, sai lầm tốn kém là đi sai hướng, không phải một dòng sai. Ở plan mode, Claude tìm hiểu và viết kế hoạch mà không sửa các tệp mã nguồn của bạn; bạn sửa kế hoạch, rồi phê duyệt.
Ví dụ
Chuyển xác thực từ cookie sang token trên 14 tệp. Kế hoạch đầu tiên quên mất ứng dụng di động; bạn chỉ ra điều đó, kế hoạch có thêm một bước, và chỉ khi đó Claude mới sửa bất cứ thứ gì.
Cách làm
- 1Nhấn Shift+Tab cho đến khi thanh trạng thái hiện plan mode đang bật, hoặc bắt đầu prompt bằng /plan.
- 2Mô tả thay đổi và những gì không được thay đổi. Claude vẫn có thể chạy lệnh để tìm hiểu, nhưng không sửa tệp khi đang lập kế hoạch.
- 3Đọc kế hoạch như một ghi chú thiết kế: sai tệp, thiếu một trường hợp, thay đổi quá lớn. Yêu cầu sửa cho đến khi đúng, rồi phê duyệt.
- 4Trước nhiệm vụ tiếp theo không liên quan, hãy bắt đầu lại từ đầu với /clear.
Prompt để sao chép
/plan Thay đổi [cái gì] để [mục tiêu]. Ràng buộc: [những gì không được thay đổi]. Liệt kê các tệp bạn sẽ động đến, thứ tự các thay đổi, bài kiểm thử chứng minh từng bước, và mọi điều bạn chưa chắc. Không sửa gì cho đến khi tôi phê duyệt.Chỗ dễ sai
- Một kế hoạch động đến nhiều tệp hơn bạn nghĩ chính là dấu hiệu cảnh báo. Hãy hỏi lý do trước khi phê duyệt.
- Plan mode vẫn chạy lệnh để tìm hiểu. Nó không làm cho một repository lạ trở nên an toàn để chạy.
Từ tài liệu chính thức: Claude Code docs: Choose a permission mode · Claude Code docs: Commands · Claude Code docs: Best practices
08
Thôi phê duyệt cùng một lệnh năm mươi lần
Phê duyệt bằng tay mọi lần chạy kiểm thử sẽ tập cho bạn thói quen bấm đồng ý mà không đọc. Hãy cho phép một lần các lệnh an toàn, lặp đi lặp lại trong cài đặt của dự án, chặn các lệnh nguy hiểm, và giữ lời nhắc hỏi cho mọi thứ còn lại.
Ví dụ
Một nhóm cho phép các lệnh test và lint, và chặn việc đọc tệp .env trong cài đặt dùng chung của dự án. Lời nhắc hỏi giảm xuống còn vài lệnh đáng đọc, và không phiên làm việc của ai mở được các khóa.
Cách làm
- 1Mở /permissions để xem mọi quy tắc và tệp cài đặt mà mỗi quy tắc đến từ đó.
- 2Đặt quy tắc của nhóm trong .claude/settings.json và commit tệp này. Quy tắc cá nhân đặt trong ~/.claude/settings.json hoặc .claude/settings.local.json.
- 3Quy tắc được kiểm tra theo thứ tự deny trước, rồi ask, rồi allow, nên một quy tắc deny thắng mọi quy tắc allow.
- 4Chuyển chế độ bằng Shift+Tab: acceptEdits tự phê duyệt việc sửa tệp trong thư mục làm việc. bypassPermissions tắt lời nhắc hỏi và các bước kiểm tra an toàn; tài liệu khuyên chỉ dùng nó trong container hoặc máy ảo (VM) cách ly, không có kết nối internet.
Prompt để sao chép
Hãy xem các lệnh bạn đã chạy trong phiên này. Đề xuất các quy tắc quyền cho .claude/settings.json: cho phép (allow) các lệnh chỉ đọc và lệnh test mà chúng tôi dùng hằng ngày, chặn (deny) mọi thứ đọc thông tin bí mật hoặc xóa ngoài dự án, và để mọi thứ còn lại ở chế độ hỏi (ask). Giải thích mỗi quy tắc trong một dòng.Chỗ dễ sai
- Một quy tắc allow khớp với mọi lệnh cũng giống như không có lời nhắc nào. Hãy cho phép đúng từng lệnh cụ thể.
- Quy tắc trong .claude/settings.json áp dụng cho cả nhóm sau khi được commit. Hãy review chúng như review code.
Từ tài liệu chính thức: Claude Code docs: Configure permissions · Claude Code docs: Settings files and precedence · Claude Code docs: Choose a permission mode
09
Giữ mỗi phiên tập trung vào một việc
Một phiên đã gánh ba nhiệm vụ không liên quan vẫn còn cả ba trong ngữ cảnh, và điều đó lộ ra trong kết quả. Hãy xóa giữa các nhiệm vụ, nén các nhiệm vụ dài kèm trọng tâm, và để subagent làm các tìm kiếm rộng trong ngữ cảnh riêng của chúng.
Ví dụ
Sau khi sửa một lỗi, bạn yêu cầu refactor trong cùng phiên và nó cứ bám theo cách lách lỗi cũ. Một lệnh /clear cùng một câu bối cảnh, và nó không còn làm vậy nữa.
Cách làm
- 1Giữa các nhiệm vụ không liên quan, /clear bắt đầu một cuộc trò chuyện mới với ngữ cảnh trống.
- 2Trong một nhiệm vụ dài, /compact kèm trọng tâm, ví dụ “/compact giữ lại kế hoạch và bài kiểm thử đang lỗi”, sẽ tóm tắt những gì đã diễn ra trước đó.
- 3Giao các tìm kiếm rộng cho một subagent: mỗi subagent chạy trong cửa sổ ngữ cảnh riêng, nên chỉ câu trả lời của nó quay về phiên của bạn.
- 4Claude Code cũng tự nén khi gần chạm giới hạn; tự nén vào thời điểm thích hợp giúp giữ lại những gì bạn chọn.
Tích hợp sẵn
Prompt để sao chép
/compact Giữ lại: mục tiêu, kế hoạch, các tệp đã thay đổi đến giờ, và bài kiểm thử vẫn đang lỗi. Bỏ phần tìm hiểu.Chỗ dễ sai
- /clear quên cuộc trò chuyện. Mọi thứ bạn sẽ cần lại phải được đưa vào CLAUDE.md trước.
- Câu trả lời của subagent là tất cả những gì bạn nhận lại. Hãy yêu cầu nó đưa đường dẫn tệp và số dòng, không chỉ kết luận.
Từ tài liệu chính thức: Claude Code docs: Commands · Claude Code docs: Best practices · Claude Code docs: Create custom subagents
10
Chạy hai nhiệm vụ cùng lúc mà không đụng nhau
Hai phiên trong cùng một checkout sẽ sửa chồng lên tệp của nhau. claude --worktree cho mỗi phiên một bản sao riêng trên nhánh riêng, nên một lần refactor và một bản sửa lỗi có thể chạy song song.
Ví dụ
Nâng cấp dependency trong một worktree và sửa giao diện trong một worktree khác, cả hai cùng chạy trong khi bạn review pull request thứ ba. Không phiên nào thấy các tệp đang làm dở của phiên kia.
Cách làm
- 1Bắt đầu mỗi phiên bằng claude --worktree <name> (hoặc -w). Lệnh này tạo một git worktree trong .claude/worktrees/<name>/ trên nhánh worktree-<name>.
- 2Thêm .claude/worktrees/ vào .gitignore, như tài liệu khuyến nghị.
- 3Giao cho mỗi phiên một nhiệm vụ với bước kiểm tra riêng, để bạn review lần lượt từng cái.
- 4Review và merge từng nhánh như mọi pull request khác.
Prompt để sao chép
Bạn đang làm việc trong một worktree trên nhánh worktree-[tên]. Nhiệm vụ: [một thay đổi]. Hoàn thành khi: [bài kiểm thử hoặc lệnh] chạy qua. Chỉ commit trên nhánh này; không merge hay rebase các nhánh khác.Chỗ dễ sai
- Mỗi worktree là một thư mục riêng, nên dependency và đầu ra build không được dùng chung. Hãy cài đặt trong từng worktree.
- Hai nhiệm vụ động đến cùng các tệp vẫn xung đột khi bạn merge, dù có worktree hay không.
Từ tài liệu chính thức: Claude Code docs: Run parallel sessions with worktrees
11
Hoàn tác một bước đi sai bằng rewind
Khi một phiên đi sai hướng, việc yêu cầu Claude tự hoàn tác thay đổi của nó thường gây thêm một mớ rắc rối thứ hai. Rewind khôi phục cuộc trò chuyện, code hoặc cả hai về một thời điểm trước khi sai. Nó không hoàn tác được những gì lệnh shell đã làm, nên hãy commit trước các bước rủi ro.
Ví dụ
Một lần refactor đã đi sai hướng từ ba prompt trước. Rewind về trước thời điểm đó sẽ khôi phục các tệp và cuộc trò chuyện, và bạn diễn đạt lại yêu cầu thay vì tranh luận để đưa code về như cũ.
Cách làm
- 1Nhấn Esc hai lần khi ô prompt đang trống, hoặc gõ /rewind (/checkpoint và /undo cũng dùng được).
- 2Chọn thời điểm trước khi mọi thứ đi sai và khôi phục cuộc trò chuyện, code, hoặc cả hai.
- 3Biết giới hạn: các tệp bị thay đổi bởi lệnh shell như rm, mv hay cp không được khôi phục, và các chỉnh sửa thực hiện bên ngoài Claude Code hoặc trong phiên khác cũng vậy.
- 4Commit trước các bước rủi ro. Checkpoint dùng để khôi phục nhanh trong một phiên, không thay thế được git.
Prompt để sao chép
Trước khi bắt đầu, hãy commit trạng thái hiện tại với thông điệp “checkpoint trước [nhiệm vụ]”. Sau đó [nhiệm vụ]. Hỏi tôi trước bất kỳ lệnh nào xóa hoặc di chuyển tệp.Chỗ dễ sai
- Rewind không mang lại được tệp mà một lệnh đã xóa. Chỉ git làm được.
- Các chỉnh sửa bạn làm bằng tay trong lúc đó cũng không được ghi lại. Hãy commit chúng trước khi rewind.
Từ tài liệu chính thức: Claude Code docs: Checkpointing · Claude Code docs: Commands
12
Chạy từ script và CI
Cùng một agent đó chạy được mà không cần khung trò chuyện: claude -p nhận một prompt, làm việc và thoát với một mã trạng thái mà script của bạn kiểm tra được. Trong CI, --bare bỏ qua hook, skill, MCP server và CLAUDE.md trên máy của bạn, nên một lần chạy cho kết quả như nhau ở mọi nơi.
Ví dụ
Một tác vụ chạy hằng đêm gọi claude -p với “cập nhật changelog từ các pull request đã merge hôm nay” và --output-format json, và đánh build thất bại khi mã thoát khác 0, nên một lần chạy hỏng sẽ được phát hiện vào sáng hôm sau.
Cách làm
- 1claude -p "..." chạy ở chế độ không tương tác. --output-format json hoặc stream-json cho ra đầu ra mà script phân tích được.
- 2Nó thoát với mã 0 khi thành công và mã khác 0 khi thất bại, nên CI có thể rẽ nhánh theo đó.
- 3Thêm --bare trong CI cho các lần chạy không phụ thuộc vào thiết lập trên máy.
- 4Với pull request, /install-github-app thiết lập Claude Code GitHub Actions (chỉ với repository trên github.com); sau đó nhắc @claude trong bình luận của pull request hoặc issue.
Prompt để sao chép
claude -p "Đọc diff so với main. Liệt kê mọi thay đổi có thêm dependency, động đến xác thực hoặc thay đổi migration cơ sở dữ liệu, dưới dạng JSON: {"files": [], "reason": ""}. Trả về danh sách rỗng nếu không có." --output-format jsonChỗ dễ sai
- Script chạy với những quyền bạn cấp cho nó. Hãy cấp cho CI mức tối thiểu cần thiết.
- /install-github-app chỉ hoạt động với repository trên github.com.
Từ tài liệu chính thức: Claude Code docs: Run Claude Code programmatically · Claude Code docs: GitHub Actions
Codex
13
AGENTS.md: hướng dẫn mà mọi nhiệm vụ Codex bắt đầu từ đó
Codex đọc AGENTS.md trước khi làm bất cứ việc gì, từ tệp toàn cục của bạn xuống đến thư mục nó đang làm việc. Hãy viết lệnh và quy tắc một lần, gần với phần code mà chúng áp dụng, và tệp gần nhất sẽ thắng.
Ví dụ
Một repository có một web app và một dịch vụ thanh toán. AGENTS.md ở thư mục gốc chứa các lệnh dùng chung; payments/AGENTS.md thêm “không bao giờ thay đổi cách làm tròn tiền tệ khi không có bài kiểm thử”. Công việc trong payments/ tuân theo cả hai, và tệp gần hơn thắng ở chỗ chúng khác nhau.
Cách làm
- 1Chạy /init trong CLI để viết một AGENTS.md khởi đầu trong thư mục hiện tại.
- 2Đặt hướng dẫn cá nhân trong ~/.codex/AGENTS.md và quy tắc dự án trong repository. Một thư mục con có thể có tệp riêng; tệp càng gần nơi Codex làm việc càng được ưu tiên.
- 3Giữ các tệp ngắn gọn: tổng dung lượng của chúng bị giới hạn, mặc định là 32 KiB.
- 4Thêm một mục “## Code Review Rules”: các lần review của Codex trên GitHub sẽ tuân theo mục này.
Prompt để sao chép
Hãy đọc repository này và viết AGENTS.md: 1. Các lệnh chính xác để cài đặt, build, test và lint. 2. Cấu trúc dự án trong vài dòng. 3. Những quy ước mà người mới hay làm sai ở đây. 4. Một mục “## Code Review Rules” ghi những gì người review luôn phải đánh dấu. Chỉ liệt kê các lệnh bạn đã chạy thành công; đánh dấu phần còn lại là “chưa xác minh”.Chỗ dễ sai
- Tệp dài sẽ gây bất lợi cho bạn: tổng dung lượng mặc định bị giới hạn ở 32 KiB.
- Một tệp trong thư mục con mâu thuẫn với tệp ở thư mục gốc mà không nói rõ sẽ làm con người bối rối không kém gì Codex. Hãy ghi rõ nó ghi đè lên điều gì.
Từ tài liệu chính thức: Codex docs: AGENTS.md · Codex docs: CLI commands · Codex docs: GitHub integration
14
Quyết định Codex được tự làm đến đâu
Chế độ quyền quyết định Codex làm gì mà không cần hỏi. “Ask for approval” làm việc bên trong workspace và tạm dừng trước khi vượt ra ngoài; “Full access” bỏ sandbox và các câu hỏi. Hãy chọn theo từng nhiệm vụ, không chọn một lần cho mãi mãi.
Ví dụ
Đọc một repository lạ ở chế độ chỉ đọc, rồi chuyển sang “Ask for approval” để sửa một lỗi. Codex sửa bên trong repository nhưng dừng lại để hỏi trước khi vượt ra ngoài.
Cách làm
- 1Trong CLI, /permissions chuyển chế độ, và /status hiển thị chính sách phê duyệt cùng các thư mục được phép ghi đang có hiệu lực.
- 2“Ask for approval”, chế độ mặc định được khuyến nghị, sửa tệp và chạy lệnh bên trong workspace và tạm dừng trước khi vượt ra ngoài.
- 3“Approve for me” giữ nguyên sandbox nhưng gửi các yêu cầu phê duyệt đến bộ review tự động thay vì đến bạn.
- 4“Full access” bỏ các giới hạn về hệ thống tệp và mạng. Tài liệu có kèm cảnh báo; chỉ dùng nó cho những môi trường bạn có thể bỏ đi.
Prompt để sao chép
Trước khi bắt đầu, hãy chạy /status và cho tôi biết chính sách phê duyệt và các thư mục được phép ghi. Sau đó [nhiệm vụ]. Hỏi trước bất kỳ lệnh nào cần mạng hoặc ghi ra ngoài repository này.Chỗ dễ sai
- Với “Approve for me”, không có người nào đọc từng yêu cầu. Hãy dùng nó ở nơi mà một thao tác sai có thể hoàn tác dễ dàng.
- “Full access” áp dụng cho cả máy, không chỉ repository.
Từ tài liệu chính thức: Codex docs: Permission modes · Codex docs: Sandboxing · Codex docs: Approvals and security · Codex docs: CLI commands
15
Chạy Codex từ script và CI
codex exec chạy một nhiệm vụ mà không cần khung trò chuyện: tiến trình đi ra stderr và chỉ thông điệp cuối cùng đi ra stdout, nên script có thể dùng câu trả lời. Mặc định nó chạy chỉ đọc; chỉ cấp quyền ghi khi tác vụ cần.
Ví dụ
Một script phát hành chạy codex exec với “viết ghi chú phát hành từ các commit kể từ tag gần nhất” và lưu stdout vào RELEASE.md. Chỉ đọc là đủ, vì chính script ghi tệp.
Cách làm
- 1codex exec "..." chạy ở chế độ không tương tác và mặc định dùng sandbox chỉ đọc.
- 2Thêm --sandbox workspace-write khi nó phải sửa tệp; --full-auto đã bị ngừng khuyến nghị.
- 3--json xuất ra một luồng sự kiện dạng JSON Lines cho các script cần từng bước.
- 4Trong GitHub Actions, openai/codex-action@v1 chạy codex exec cho bạn.
Prompt để sao chép
codex exec "Đọc các thay đổi kể từ tag [v1.2.0]. Viết ghi chú phát hành chia nhóm Thêm mới, Thay đổi và Sửa lỗi: mỗi thay đổi một dòng, bằng lời mà người dùng hiểu được, không có mã hash của commit."Chỗ dễ sai
- Các hướng dẫn cũ vẫn dùng --full-auto. Tùy chọn này đã bị ngừng khuyến nghị; hãy dùng --sandbox workspace-write.
- Một tác vụ chỉ đọc thì nên giữ ở chế độ chỉ đọc, trong CI cũng vậy.
Từ tài liệu chính thức: Codex docs: Non-interactive mode · Codex docs: GitHub Action
16
Nhận review trước khi push
Codex review working tree, một nhánh hoặc một pull request của bạn. Trên GitHub, nó chỉ đánh dấu các vấn đề nghiêm trọng nhất, P0 và P1, nên nhận xét của nó đáng đọc. Hãy chạy nó trước khi push, và để nó review mọi pull request.
Ví dụ
Trước khi push một migration, /review chỉ ra rằng cột mới không có giá trị mặc định, nên các dòng hiện có sẽ lỗi. Mất một phút trước khi push thay vì một lần deploy thất bại.
Cách làm
- 1/review trong CLI review working tree của bạn. codex review làm việc tương tự mà không cần khung trò chuyện, so với một nhánh gốc, một commit hoặc các thay đổi chưa commit.
- 2Trên GitHub, bình luận @codex review trong một pull request.
- 3Bật review tự động trong mục “Personal preferences” của cài đặt Codex; khi đó không cần bình luận nữa.
- 4Viết quy tắc của nhóm bạn trong mục “## Code Review Rules” của AGENTS.md.
Tích hợp sẵn
Prompt để sao chép
## Code Review Rules - Đánh dấu mọi thay đổi liên quan đến xác thực hoặc phân quyền. - Đánh dấu các migration cơ sở dữ liệu không có cách quay lui. - Đánh dấu các dependency mới và cho biết chúng có cần thiết không. - Bỏ qua định dạng; linter sẽ xử lý.Chỗ dễ sai
- Review trên GitHub chỉ đánh dấu vấn đề P0 và P1. Không có nhận xét không có nghĩa là thiết kế đúng.
- Review là ý kiến thứ hai, không phải một lần chạy kiểm thử. Hãy giữ các bài kiểm thử.
Từ tài liệu chính thức: Codex docs: CLI commands · Codex docs: GitHub integration
17
Giao nhiệm vụ cho Codex Cloud
Codex Cloud vẫn tiếp tục làm việc khi máy tính của bạn ngủ, mỗi nhiệm vụ trong một workspace riêng được tạo từ một môi trường bạn thiết lập một lần. Với một môi trường đầy đủ, nó có thể cài đặt, build và test; không có môi trường, nó chỉ đoán.
Ví dụ
Bốn lần refactor nhỏ được gửi bằng codex cloud exec trước một cuộc họp, mỗi lần trong workspace riêng từ cùng một môi trường. Với lần khó nhất, bạn yêu cầu ba lần thử và giữ lại bản tốt nhất; sau đó bạn review bốn diff.
Cách làm
- 1Tạo một môi trường với các repository, dependency, công cụ và thiết lập truy cập mà các nhiệm vụ cần. Môi trường mới sẽ ghi lại một script cài đặt và một skill khởi động.
- 2Thiết lập quyền truy cập internet cho từng môi trường: chỉ trình quản lý gói, chỉ các tên miền được chọn, hoặc tất cả.
- 3Bắt đầu nhiệm vụ từ ChatGPT, từ extension cho IDE với những việc dài hơn, hoặc từ terminal bằng codex cloud exec; --attempts 1-4 yêu cầu nhiều lần thử để so sánh.
- 4Code Review và các tích hợp GitHub và Linear vẫn chạy trên Codex Cloud phiên bản cũ (Legacy), mà OpenAI dự định ngừng hỗ trợ.
Tích hợp sẵn
Prompt để sao chép
codex cloud exec --attempts 3 "Nhiệm vụ: [thay đổi]. Bối cảnh: [các tệp]. Hoàn thành khi [bài kiểm thử] chạy qua trong môi trường này. Giữ diff dưới [số] dòng."Chỗ dễ sai
- Internet không giới hạn cho phép một nhiệm vụ truy cập mọi trang, kể cả những trang được viết ra để điều khiển nó. Chỉ cho phép những gì công việc cần.
- Nếu thiếu script cài đặt, có thể các bài kiểm thử chưa hề chạy. Hãy kiểm tra xem nhiệm vụ có thực sự chạy chúng không.
Từ tài liệu chính thức: Codex docs: Cloud environments · Codex docs: CLI commands · Codex docs: IDE extension
18
Thiết lập Codex một lần: config, profile và MCP
Nếu mỗi phiên bạn đều đổi mô hình và cài đặt bằng tay, hãy đưa chúng vào config.toml. Codex luôn đọc ~/.codex/config.toml, đọc cài đặt dự án trong các dự án được tin cậy, và một profile chuyển cả bộ cài đặt cùng lúc.
Ví dụ
Một profile “deep” với mức suy luận cao cho các câu hỏi thiết kế, và cấu hình mặc định cho các bản sửa nhanh. codex --profile deep trước một câu hỏi về kiến trúc; codex thông thường cho mọi việc khác.
Cách làm
- 1Đặt mô hình và mức suy luận mặc định trong ~/.codex/config.toml (model và model_reasoning_effort). CLI và extension cho IDE dùng chung tệp này.
- 2Tạo một profile thành tệp riêng, ~/.codex/<name>.config.toml, và khởi động với --profile <name>.
- 3Thêm MCP server bằng codex mcp add <name> -- <command>; mỗi server trở thành một bảng [mcp_servers.<name>], và /mcp liệt kê các server đang hoạt động.
- 4/status cho biết cài đặt nào đang có hiệu lực, và codex resume --last tiếp tục phiên gần nhất trong thư mục này.
Prompt để sao chép
Hãy đọc ~/.codex/config.toml và .codex/config.toml của dự án này. Cho tôi biết mô hình, mức suy luận, sandbox và các MCP server đang có hiệu lực, mỗi thứ đến từ tệp nào, và mọi chỗ xung đột.Chỗ dễ sai
- Cài đặt dự án chỉ được nạp với các dự án được tin cậy. Nếu một cài đặt có vẻ bị bỏ qua, hãy kiểm tra điều đó trước.
- Profile giờ là các tệp riêng. Những hướng dẫn đặt [profiles.name] bên trong config.toml đã lỗi thời.
Từ tài liệu chính thức: Codex docs: MCP · Codex docs: Config basics · Codex docs: Advanced config · Codex docs: CLI commands
Nguyên tắc cho lập trình viên
- Không bao giờ dán thông tin bí mật, khóa hay dữ liệu khách hàng vào prompt; để chúng ngoài các thư mục được lập chỉ mục.
- Chạy agent trên một nhánh riêng, với thiết lập quyền buộc nó hỏi trước khi chạy lệnh; xem lại mọi diff.
- Tự chạy các bài kiểm thử trước khi merge những gì agent đã viết.
- Đặt hạn mức chi tiêu cho mọi khóa API mà agent dùng.
Tìm hiểu sâu hơn
- Cung cấp đúng bối cảnh bài học, khoảng 8 phút
- Đưa ví dụ và định dạng bạn muốn bài học, khoảng 8 phút
- Cải thiện câu trả lời từng bước bài học, khoảng 8 phút
- Claude Code 101 Anthropic (Claude Academy)
- Get Started with Codex OpenAI (OpenAI Academy)
- AI Agents Course Hugging Face
- Full Course: Spec-Driven Development with Coding Agents DeepLearningAI on YouTube