Chuyển tới nội dung chính

Hướng dẫn: Xây dựng Đại lý đánh giá PR GitHub`Vấn đề: Nhóm của bạn mở PR nhanh hơn mức bạn có thể xem lại. PR ngồi chờ đợi nhiều ngày. Các nhà phát triển cấp dưới hợp nhất các lỗi vì không ai có thời gian kiểm tra. Bạn dành cả buổi sáng để tìm hiểu những khác biệt thay vì xây dựng.

Giải pháp: Một nhân viên AI theo dõi các kho lưu trữ của bạn suốt ngày đêm, đánh giá mọi hoạt động PR mới để tìm lỗi, vấn đề bảo mật và chất lượng mã, đồng thời gửi cho bạn bản tóm tắt — vì vậy, bạn chỉ dành thời gian cho những hoạt động PR thực sự cần sự đánh giá của con người.

Những gì bạn sẽ xây dựng:

` ┌───────────────────────────────────────────────────────────────────┐ │ │ │ Cron Timer ──▶ Hermes Agent ──▶ GitHub API ──▶ Review │ │ (every 2h) + gh CLI (PR diffs) delivery │ │ + skill (Telegram, │ │ + memory Discord, │ │ local) │ │ │ └───────────────────────────────────────────────────────────────────┘

` ``Hướng dẫn này sử dụng cron jobs để thăm dò PR theo lịch trình — không cần máy chủ hoặc điểm cuối công cộng. Hoạt động đằng sau NAT và tường lửa.

Want real-time reviews instead?

Nếu bạn có sẵn điểm cuối công khai, hãy xem Automated GitHub PR Comments with Webhooks - GitHub đẩy các sự kiện tới Hermes ngay lập tức khi PR được mở hoặc cập nhật.


Điều kiện tiên quyết

  • Đã cài đặt Hermes Agent — xem Installation guide
  • Cổng chạy cho các công việc định kỳ:
  Hermes gateway install   # Install as a service

# or
Hermes gateway # Run in foreground

`
- **GitHub CLI (
`gh

) đã được cài đặt và xác thực**:

``` bash

# Install
brew install gh # macOS
sudo apt install gh # Ubuntu/Debian

# Authenticate
gh auth login

`
- **Đã định cấu hình tin nhắn** (tùy chọn)[Telegram](/docs/user-guide/messaging/Telegram) hoặc [Discord](/docs/user-guide/messaging/Discord)

:::tip[No messaging? No problem]
Sử dụng
`deliver: "local"
` để lưu đánh giá vào

~/.Hermes/cron/output/

. Tuyệt vời để thử nghiệm trước khi kết nối thông báo.
:::

---

## Bước 1: Xác minh cài đặt

Đảm bảo Hermes có thể truy cập GitHub. Bắt đầu cuộc trò chuyện:

``` bash
Hermes

`
``Kiểm tra bằng một lệnh đơn giản:

`
Run: gh pr list --repo NousResearch/Hermes-agent --state open --limit 3

`
``Bạn sẽ thấy danh sách các PR đang mở. Nếu cách này hiệu quả thì bạn đã sẵn sàng.

---

## Bước 2: Thử Review thủ công

Vẫn trong cuộc trò chuyện, yêu cầu Hermes xem xét một PR thực sự:

`
Review this pull request. Read the diff, check for bugs, security issues,
and code quality. Be specific about line numbers and quote problematic code.

Run: gh pr diff 3888 --repo NousResearch/Hermes-agent

`
``Hermes sẽ:

1. Thực thi
`gh pr diff
` để tìm nạp các thay đổi mã
2. Đọc qua toàn bộ khác biệt
3. Đưa ra đánh giá có cấu trúc với những phát hiện cụ thể

Nếu bạn hài lòng với chất lượng, đã đến lúc tự động hóa nó.

---

## Bước 3: Tạo kỹ năng đánh giá

Một kỹ năng cung cấp cho Hermes các nguyên tắc đánh giá nhất quán tồn tại qua các phiên và các lần chạy định kỳ. Nếu không có một, chất lượng đánh giá sẽ khác nhau.

``` bash
mkdir -p ~/.Hermes/skills/code-review

`
``Tạo

~/.Hermes/skills/code-review/SKILL.md

:

`markdown

---
name: code-review
description: Review pull requests for bugs, security issues, and code quality
---

# Code Review Guidelines

When reviewing a pull request:

## What to Check
1. **Bugs** — Logic errors, off-by-one, null/undefined handling
2. **Security** — Injection, auth bypass, secrets in code, SSRF
3. **Performance** — N+1 queries, unbounded loops, memory leaks
4. **Style** — Naming conventions, dead code, missing error handling
5. **Tests** — Are changes tested? Do tests cover edge cases?

## Output Format
For each finding:
- **File:Line** — exact location
- **Severity** — Critical / Warning / Suggestion
- **What's wrong** — one sentence
- **Fix** — how to fix it

## Rules
- Be specific. Quote the problematic code.
- Don't flag style nitpicks unless they affect readability.
- If the PR looks good, say so. Don't invent problems.
- End with: APPROVE / REQUEST_CHANGES / COMMENT

`
``Xác minh rằng nó đã được tải - khởi động
`Hermes
` và bạn sẽ thấy
`code-review
` trong danh sách kỹ năng khi khởi động.

---

## Bước 4: Dạy nó các quy ước của bạn

Đây là điều làm cho người đánh giá thực sự hữu ích. Bắt đầu một buổi học và dạy cho Hermes các tiêu chuẩn của nhóm bạn:

`
Remember: In our backend repo, we use Python with FastAPI.
All endpoints must have type annotations and Pydantic models.
We don't allow raw SQL — only SQLAlchemy ORM.
Test files go in tests/ and must use pytest fixtures.

`

`

Remember: In our frontend repo, we use TypeScript with React.
No
`any
` types allowed. All components must have props interfaces.
We use React Query for data fetching, never useEffect for API calls.

`
``Những ký ức này tồn tại mãi mãi - người đánh giá sẽ thực thi các quy ước của bạn mà không cần phải thông báo mỗi lần.

---

## Bước 5: Tạo Cron Job tự động

Bây giờ nối tất cả lại với nhau. Tạo một công việc định kỳ chạy 2 giờ một lần:

``` bash
Hermes cron create "0 */2 * * *" \
"Check for new open PRs and review them.

Repos to monitor:

- myorg/backend-API
- myorg/frontend-app

Steps:
1. Run: gh pr list --repo REPO --state open --limit 5 --JSON number,title,author,createdAt
2. For each PR created or updated in the last 4 hours:
- Run: gh pr diff NUMBER --repo REPO
- Review the diff using the code-review guidelines
3. Format output as:

## PR Reviews — today

### [repo] #[number]: [title]
**Author:** [name] | **Verdict:** APPROVE/REQUEST_CHANGES/COMMENT
[findings]

If no new PRs found, say: No new PRs to review." \
--name "pr-review" \
--deliver Telegram \
--skill code-review

`
``Xác minh nó đã được lên lịch:

``` bash
Hermes cron list

`

### Lịch trình hữu ích khác

| Lịch trình | Khi nào |
|----------|------|
|
`0 */2 * * *
` | Cứ sau 2 giờ |
|
`0 9,13,17 * * 1-5
` | Ba lần một ngày, chỉ các ngày trong tuần |
|
`0 9 * * 1
` | Tổng hợp sáng thứ Hai hàng tuần |
|
`30m
` | Cứ sau 30 phút (repo có lưu lượng truy cập cao) |

---

## Bước 6: Chạy theo yêu cầu

Bạn không muốn chờ đợi lịch trình? Kích hoạt nó bằng tay:

`bash
Hermes cron run pr-review

`
``Hoặc từ trong phiên trò chuyện:

`
/cron run pr-review

`

---

## Tiến xa hơn

### Đăng bài đánh giá trực tiếp lên GitHub

Thay vì gửi tới Telegram, hãy yêu cầu đại lý nhận xét về chính PR:

Thêm phần này vào dấu nhắc cron của bạn:

`
After reviewing, post your review:

- For issues: gh pr review NUMBER --repo REPO --comment --body "YOUR_REVIEW"
- For critical issues: gh pr review NUMBER --repo REPO --request-changes --body "YOUR_REVIEW"
- For clean PRs: gh pr review NUMBER --repo REPO --approve --body "Looks good"

`

:::caution
Đảm bảo
`gh
` có mã thông báo với phạm vi
`repo

. Các bài đánh giá được đăng dưới dạng
`gh
` được xác thực là ai.
:::

### Bảng thông tin PR hàng tuần

Tạo tổng quan vào sáng thứ Hai về tất cả các kho lưu trữ của bạn:

``` bash
Hermes cron create "0 9 * * 1" \
"Generate a weekly PR dashboard:

- myorg/backend-API
- myorg/frontend-app
- myorg/infra

For each repo show:
1. Open PR count and oldest PR age
2. PRs merged this week
3. Stale PRs (older than 5 days)
4. PRs with no reviewer assigned

Format as a clean summary." \
--name "weekly-dashboard" \
--deliver Telegram

`

### Giám sát nhiều kho lưu trữ

Mở rộng quy mô bằng cách thêm nhiều kho lưu trữ hơn vào lời nhắc. Tác nhân xử lý chúng một cách tuần tự — không cần thiết lập thêm.

---

## Khắc phục sự cố

### "gh: không tìm thấy lệnh"
Cổng chạy trong môi trường tối thiểu. Đảm bảo
`gh
` nằm trong PATH của hệ thống và khởi động lại cổng.

### Đánh giá quá chung chung
1. Thêm kỹ năng
`code-review
` (Bước 3)
2. Dạy cho Hermes những quy ước của bạn thông qua trí nhớ (Bước 4)
3. Càng có nhiều ngữ cảnh về ngăn xếp của bạn thì đánh giá càng tốt

### Công việc định kỳ không chạy

`
``` bash
Hermes gateway status # Is the gateway running?
Hermes cron list # Is the job enabled?

`

### Giới hạn tỷ lệ
GitHub cho phép 5.000 yêu cầu API/giờ đối với người dùng được xác thực. Mỗi đánh giá PR sử dụng ~3-5 yêu cầu (danh sách + khác biệt + nhận xét tùy chọn). Ngay cả việc xem xét 100 PR/ngày vẫn nằm trong giới hạn.

---

## Tiếp theo là gì?- **[Webhook-Based PR Reviews](./webhook-GitHub-pr-review.md)** — nhận được đánh giá ngay lập tức khi PR được mở (yêu cầu điểm cuối công khai)

- **[Daily Briefing Bot](/docs/guides/daily-briefing-bot)** — kết hợp các bài đánh giá PR với bản tin buổi sáng của bạn
- **[Build a Plugin](/docs/guides/build-a-Hermes-plugin)** — gói logic đánh giá vào một plugin có thể chia sẻ
- **[Profiles](/docs/user-guide/profiles)** — chạy hồ sơ người đánh giá chuyên dụng với bộ nhớ và cấu hình riêng
- **[Fallback Providers](/docs/user-guide/features/fallback-providers)** — đảm bảo các bài đánh giá vẫn chạy ngay cả khi một nhà cung cấp không hoạt động