Đừng bắt coding agent tự review code của chính nó
Cài PR-Agent open source làm GitHub Action để review PR: nén context, committable suggestions, skills, dynamic context và self-reflection.
✓ Đã duyệt độc lập · cập nhật 30/10/2026 · 9 min
1. Thật lòng đi: bạn có đọc code của mình không?
Người dẫn kênh DevOps Toolbox mở đầu bằng một câu hỏi thẳng: hãy thành thật, bạn không thật sự nhìn vào code của mình, đúng không? Ý anh là, chắc chắn thỉnh thoảng bạn có liếc qua, có thể là lúc sửa bug hoặc lúc đụng tới những phần quan trọng, nhạy cảm. Nhưng ai thật sự đi qua mọi thứ, từng dòng một, để chắc rằng code theo đúng guidelines, best practices, security, và nói chung là những thứ của nghề làm software?

Theo anh (video đăng ngày 30/10/2026), ngoài kia có những dịch vụ mà bạn có thể outsource việc này. Nhưng sao không thử một lựa chọn open source? Một công cụ dùng AI để tự động review, viết mô tả và cải thiện pull request từ đầu tới cuối. Nói cách của anh: có ai đó chống lưng cho bạn.
Anh kể công cụ này từng là một sản phẩm thương mại, thứ mà những cái tên lớn thật sự trả tiền để dùng, và rồi đội làm ra nó đã tử tế đóng góp toàn bộ codebase cho cộng đồng. Theo anh (video đăng ngày 30/10/2026), điều đó có nghĩa là bạn có thể dùng nó, sửa nó, nhưng quan trọng nhất là tự host nó. Cắm bất kỳ LLM nào vào, dùng subscription của chính bạn hoặc một model chạy local, bạn được tự do làm theo ý mình. Và rồi anh bắt đầu.
2. PR-Agent, và cái prompt review đáng xấu hổ
Công cụ đó là PR-Agent: một agent open source mô tả, review và cải thiện pull request. Anh lưu ý rằng ba động từ đó không chỉ nằm trong tiêu đề, mà chính là các lệnh mà công cụ này đi kèm. Trang docs trên màn hình (video đăng ngày 30/10/2026) cho thấy các lệnh /describe, /review, /improve và /ask, ghi rằng có thể chạy PR-Agent từ một comment trên PR, một webhook, CI hoặc terminal, và liệt kê các nền tảng GitHub, GitLab, Bitbucket, Azure DevOps và Gitea.

/review sinh ra, và khung Quick start chạy review từ terminal bằng docker run với một OpenAI key và một GitHub token.Theo anh, dự án nằm dưới tổ chức riêng của nó trên GitHub, the-pr-agent, và có hơn 13.000 sao (video đăng ngày 30/10/2026; trang repo ghi 13.8k sao, đọc ngày 30/10/2026). Anh nói đây đúng là thứ anh đang tìm.
Để có bối cảnh, anh kể: vài tháng trước, khi tìm hiểu OpenCode, anh nhận ra mình có thể chạy nó như một GitHub Action. Thế là anh làm vậy, với model miễn phí mà họ cung cấp lúc đó (theo lời anh, video đăng ngày 30/10/2026). Và dù cực kỳ xấu hổ về thứ sắp cho xem, anh vẫn mở ra cái prompt anh đã thêm vào workflow, về cơ bản chỉ nói "review the changes in this pull request thoroughly". Anh tự chế giễu: "Làm tốt lắm anh bạn, chuẩn không cần chỉnh."

.github/workflows/opencode.yml trong repo của anh (video đăng ngày 30/10/2026): job chạy OpenCode khi một comment chứa /oc hoặc /opencode, và toàn bộ việc review dồn vào một đoạn prompt ngắn ở cuối file.Phần prompt trên màn hình (video đăng ngày 30/10/2026):
Review the changes in this pull request thoroughly.
After your review, decide whether the PR is ready to merge.
If you determine it is ready, run the following shell command to approve it:
gh pr review ${{ github.event.issue.number }} --approve --body "<your review summary>"
If you find issues that must be fixed first, do NOT approve - instead leave a review comment explaining what needs to change.
The GH_TOKEN environment variable is already available for the gh CLI.Từ đó anh đặt vấn đề: sao không dùng hẳn một công cụ sinh ra cho đúng việc này?
3. PR-Agent xử lý một PR thế nào, và chuyện nén context
Anh mô tả luồng làm việc của PR-Agent (theo anh và sơ đồ trong README, video đăng ngày 30/10/2026): đó là một công cụ nhận một lệnh làm đầu vào, xử lý context, lập một bản snapshot của thay đổi, được nén và tính theo token (token-aware), hỏi lại người dùng nếu có gì chưa rõ, rồi "lao vào quậy". Anh nói ngay là đùa thôi: thật ra nó bắt tay làm việc, tìm các issue tương tự, viết mô tả, đưa code suggestions và best practices, xem changelog, rồi mới đưa ra bản review.

/review, /describe, /improve, /ask, mỗi tool cho ra một loại kết quả trên PR. Thanh nhỏ phía dưới là phần đồ hoạ của video tóm lại các bước Command, Context, Snapshot, Ask, Go.Anh đoán chỉ cần nhắc tới chữ "nén" (compression) là đã đủ làm người xem tò mò. Trước tiên, PR-Agent làm việc với GitHub, GitLab, với Bitbucket "nếu bạn đã rẽ nhầm một lần trong đời", và thậm chí cả Azure DevOps "nếu bạn rẽ nhầm hơn một lần", như anh đùa (danh sách nền tảng theo video đăng ngày 30/10/2026).
Về chuyện nén, anh giải thích (video đăng ngày 30/10/2026): nếu PR đủ nhỏ thì không có vấn đề gì. Nếu PR quá lớn, như các thay đổi do AI làm ra thường hay thế, nó bắt đầu nén: bắt đầu từ các file bị xoá, rồi tới hunks và patches, bỏ hình ảnh, các package đã nén và file binary, về cơ bản là dọn sạch một lượt trước khi mọi thứ đi vào cỗ máy ăn token của bạn.

Theo anh (video đăng ngày 30/10/2026), bạn còn cấu hình được nó: tất nhiên là đổi model, nhưng còn cả kích thước, fallback models, context bổ sung, timeouts, giới hạn token và nhiều thứ khác.
4. Cài PR-Agent thành GitHub Action
Tới lúc bắt tay vào làm. Anh nói cái tên PR-Agent đã cho thấy nó được làm ra để nằm trong một nền tảng git. Và vì đây là PR chứ không phải MR (merge request; "nếu bạn biết chữ đó thì tôi xin chia buồn", anh đùa), anh chọn GitHub. Theo anh (video đăng ngày 30/10/2026), PR-Agent cũng có lựa chọn chạy local, nhưng anh để dành phần đó cho sau.
Theo anh (video đăng ngày 30/10/2026), có sẵn một GitHub Action để bạn dùng. Nó cần một key cho nền tảng AI, và một GitHub token để action có quyền làm việc từ bên trong: trả lời trên PR, thực hiện thay đổi, đưa code suggestions, v.v. Anh dùng workmux để tạo một worktree cho việc này. Lần này anh làm từng bước, bằng tay, "như những ngày tươi đẹp của năm 2024".
Trong thư mục GitHub workflows, anh thêm file YAML cho PR-Agent. Theo anh (video đăng ngày 30/10/2026), bạn có thể chỉnh các loại event để nó được kích hoạt, rồi tới bản thân job nếu bạn muốn thêm gì. File của anh trên màn hình:

pr-agent.yml trong editor của anh (video đăng ngày 30/10/2026): job chạy trên mỗi pull request và trả lời comment của người dùng, bỏ qua event do bot gửi, cấp quyền ghi cho issues và pull-requests.on:
pull_request:
types: [opened, reopened, ready_for_review, synchronize]
issue_comment:
jobs:
pr_agent_job:
if: ${{ github.event.sender.type != 'Bot' }}
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
name: Run pr agent on every pull request, respond to user comments
steps:
- name: PR Agent action step
id: pragent
uses: the-pr-agent/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Theo anh (video đăng ngày 30/10/2026), action đã tự lấy public image của PR-Agent trên Docker Hub, cái tên mà anh thú nhận lúc nào cũng đọc nhầm thành "pregnant" (trên trang docs, image ghi là pragent/pr-agent). Việc còn lại chỉ là thêm GitHub secret, cả hai: đặt OPENAI_KEY, còn với GitHub token thì có tin tốt. Theo anh và docs trên màn hình (video đăng ngày 30/10/2026), GITHUB_TOKEN sẽ được GitHub tự động tạo và nhận khi file được push lên, một chi tiết anh thấy rất chu đáo.
Theo anh (video đăng ngày 30/10/2026), docs có các ví dụ cấu hình cho từng nền tảng và từng tuỳ chọn, nhưng anh nghĩ đã đủ để bắt đầu với một thay đổi code. Trước đó, anh thêm file YAML, push lên production, merge, và thế là sẵn sàng.
5. Chạy thử với một thay đổi thật
Anh tạo một thay đổi thật, sửa một bug mà anh lẽ ra phải sửa từ lâu. "Bạn tưởng AI chữa được bệnh trì hoãn", anh đùa. Dù sao thì thay đổi cũng đã xong và PR được tạo (demo trong video đăng ngày 30/10/2026).

Lúc này có hai pipeline đang chạy, và cái thứ hai là bản thay thế mới (demo trong video đăng ngày 30/10/2026). Theo anh (video đăng ngày 30/10/2026), các action có in log nếu bạn cần debug những lỗi như thiếu key hay lỗi xác thực. Nhưng nếu mọi thứ diễn ra đúng kế hoạch, bạn sẽ thấy kết quả như trên màn hình.
Kết quả bắt đầu bằng chỉ số mà anh gọi là "rất cần cho con người": mức công sức để review (review effort). Phần thú vị hơn là code suggestions, mỗi suggestion được đánh dấu mức impact, còn nội dung suggestion thì được thu gọn lại (demo trong video đăng ngày 30/10/2026).

github-actions để lại (demo trong video đăng ngày 30/10/2026): effort review 1 trên 5, không có test liên quan, không phát hiện vấn đề security, và ba vùng nên xem kỹ: lỗi database bị nuốt thành bảng xếp hạng rỗng, phép cắt entries[:3] gây panic khi nhóm có ít hơn ba người, và thứ tự xếp hạng bị đảo ngược.Anh đánh giá (video đăng ngày 30/10/2026): điều này rất tuyệt và cực kỳ hữu ích, nhưng chưa hoàn toàn tới nơi.
6. So với CodeRabbit: committable code suggestions và file TOML đặt sai tên
Anh muốn nói thẳng về "con voi trong phòng": CodeRabbit. Theo anh (video đăng ngày 30/10/2026), đó là một sản phẩm thương mại, một dịch vụ trả phí. Anh nói chuyện này chẳng có gì mới với ai. Anh là một khách hàng trả tiền vui vẻ ở chỗ làm, và đã như vậy một thời gian, nhưng với các project cá nhân, anh muốn công cụ open source này thay thế.
Dù vậy, theo anh (video đăng ngày 30/10/2026), CodeRabbit có code suggestions áp dụng được ngay từ bản review, không cần thêm một bước nào nữa. Anh muốn có điều đó, và chỉ cách làm tương tự với PR-Agent.
Cách thứ nhất là kích hoạt nó bằng tay, với tuỳ chọn committable code suggestions đặt là true. Trang docs của tool improve ghi cách gọi này là /improve --pr_code_suggestions.committable_code_suggestions=true (đọc ngày 30/10/2026). Theo anh (video đăng ngày 30/10/2026), cách tốt hơn là cấu hình hẳn agent bằng một file .pr_agent.toml, đặt đúng mục đó thành true.
Và đây là lý do, theo lời anh, "con người dở tệ": anh đặt tên file là "pr underscore agent underscore toml" và mất gần trọn một tiếng sau đó mà không hiểu vì sao nó không chạy. Anh để người xem tự rút ra kết luận. Trên màn hình, terminal của anh cho thấy lệnh git add .pr_agent_toml, với dấu gạch dưới thay cho dấu chấm trước toml (demo trong video đăng ngày 30/10/2026). Khi đã nhận ra lỗi, và anh nhất quyết không nói lỗi đó do AI hay do chính anh, anh có thể dùng slash command /review.

git add .pr_agent_toml rồi commit. Tên file ở đây có dấu gạch dưới thay cho dấu chấm, trong khi docs của PR-Agent gọi file cấu hình local là .pr_agent.toml (đọc ngày 30/10/2026).Lệnh được PR-Agent nhận, và bạn thấy emoji đôi mắt quen thuộc cho biết nó đã thật sự được nhìn thấy. Bản review được chuẩn bị xong, và đây là kết quả: trước tiên là một review guide, một chi tiết anh nói đang dần thích, tóm lại những gì anh cần biết, rồi tới code suggestions (demo trong video đăng ngày 30/10/2026).

Giờ anh có thể dễ dàng đi qua từng suggestion và áp dụng thay đổi ngay từ phần thảo luận của PR. Làm xong là có thể merge (demo trong video đăng ngày 30/10/2026).
7. Thiếu nút approve all, skills và dynamic context
Anh vẫn thấy thiếu một chi tiết nhỏ mà CodeRabbit có: approve all changes. Theo anh (video đăng ngày 30/10/2026), với CodeRabbit bạn chỉ cần tick một ô là mọi thay đổi được áp dụng từ cùng một chỗ. "Tôi biết bạn đang nghĩ gì", anh nói: anh có đọc trước khi bấm nút đó. "Hay là không?"
Dù sao đi nữa, theo anh (video đăng ngày 30/10/2026), tìm mãi anh vẫn không thấy tuỳ chọn đó trong dự án này. Nên nếu bạn là maintainer đang xem, đó là gợi ý khiêm tốn của anh.
Điểm hay ở đây, theo anh (video đăng ngày 30/10/2026), là agent này sẵn sàng để cắm skills của bạn vào. Chẳng hạn, đưa cho nó hướng dẫn review Terraform nếu đó là thứ bạn đang làm. Bạn sẽ cần bật skill lên. Skills có thể giới hạn trong những path cụ thể, và số token của chúng cũng có thể đặt trần để bạn không "quậy quá tay".

SKILL.md, ví dụ terraform-standards; skills tắt theo mặc định và được cấu hình bằng enabled, paths và max_skills_tokens.Ví dụ skill trên trang docs (video đăng ngày 30/10/2026):
--- name: terraform-standards description: Use when reviewing Terraform code - checks state safety and risky deletions. --- # Terraform Review Guidance - Flag any resource deletion that is not explicitly called out in the PR description. - Require `prevent_destroy` on stateful resources. - ...
Một phần cực kỳ hữu ích khác, theo anh (video đăng ngày 30/10/2026), là dynamic context. Bạn không chỉ có phần nén đã nói ở đầu để tiết kiệm token; tính năng này giúp AI hiểu đoạn code nó đang review. Anh nói nhìn vào một bản diff thì chẳng có bao nhiêu context. Agent mở rộng ra những đoạn code xung quanh để hiểu, và để đưa ra thêm chi tiết và logic. Rồi sau đó, và chỉ sau đó, nó mới đưa ra phản hồi và suggestions. Để bật, đặt allow dynamic context thành true trong file TOML của bạn; trang docs ghi tên khoá là allow_dynamic_context trong mục [config] (đọc ngày 30/10/2026).
8. Self-reflection, các tool khác và lời kết
Tính năng quan trọng cuối cùng anh nhắc là quá trình self-reflection: theo anh (video đăng ngày 30/10/2026), nó buộc agent tự chấm điểm kết quả của chính mình, về cơ bản là tự làm QA, điều anh thấy rất hay.

Theo anh (video đăng ngày 30/10/2026), còn nhiều tool khác bạn có thể dùng, như thêm docs hoặc labels, tìm các issue tương tự, cập nhật help documentation hoặc changelog.
Anh nói PR-Agent không phải lựa chọn duy nhất trong mảng open source, thậm chí không phải cái phổ biến nhất nếu chỉ tính số sao, nhưng là cái anh tin dùng tại thời điểm làm video (video đăng ngày 30/10/2026). Anh cũng đang thử một lựa chọn khác và sẽ xem trong vài tuần tới nó có đủ tốt không.
Dù thế nào, anh gọi công cụ này là "món quà từ trời". Sau nhiều tháng dùng một prompt chỉ nói "review this code, make no mistakes", với anh đây là một bước nâng cấp đáng hoan nghênh (video đăng ngày 30/10/2026). Anh cảm ơn mọi người đã xem.
Nguồn và liên kết 13 nguồn
- Tên gốc: Stop Asking Your Coding Agent to Review Its Own Code
- Sự kiện: YouTube
- Video gốc: https://www.youtube.com/watch?v=gEJ26rECifc youtube.com
- Kênh YouTube DevOps Toolbox (DevOps Toolbox): youtube.com/channel/UCYeiozh-4QwuC1sjgCmB92w youtube.com
- Repo PR-Agent trên GitHub (13.8k sao, đọc ngày 30/10/2026): github.com/the-pr-agent/pr-agent github.com
- Docs PR-Agent (đọc ngày 30/10/2026): docs.pr-agent.ai docs.pr-agent.ai
- Cài PR-Agent làm GitHub Action, secret
OPENAI_KEYvàGITHUB_TOKEN(đọc ngày 30/10/2026): docs.pr-agent.ai/installation/github docs.pr-agent.ai - Compression strategy (đọc ngày 30/10/2026): docs.pr-agent.ai/core-abilities/compression_strategy docs.pr-agent.ai
- Tool improve và tuỳ chọn
committable_code_suggestions(đọc ngày 30/10/2026): docs.pr-agent.ai/tools/improve docs.pr-agent.ai - File cấu hình local
.pr_agent.toml(đọc ngày 30/10/2026): docs.pr-agent.ai/usage-guide/configuration_options docs.pr-agent.ai - Agent Skills (đọc ngày 30/10/2026): docs.pr-agent.ai/core-abilities/agent_skills docs.pr-agent.ai
- Dynamic context và
allow_dynamic_context(đọc ngày 30/10/2026): docs.pr-agent.ai/core-abilities/dynamic_context docs.pr-agent.ai - Self-reflection (đọc ngày 30/10/2026): docs.pr-agent.ai/core-abilities/self_reflection docs.pr-agent.ai