Hermes + DeepSeek 实战指南⑤:代码审查与 GitHub Actions 自动 CI
2026-08-20
·
入门教程
·
有封面图
前几篇讲了 Hermes 的安装、配置、技能系统和多模型协作。这篇实用向:用 Hermes 做代码审查,以及怎么把它接入 GitHub Actions 实现自动化 CI——每次有人提 PR,Hermes 自动跑一遍代码审查,不需要人工介入。
一、用 Hermes 做代码审查
代码审查是 Hermes 最能体现价值的场景之一。流程比人工审查快,视角比 linter 全面,而且能捕捉 linter 看不出来的逻辑问题。
基本用法:
```bash
hermes run "review /path/to/your/project --diff pr-123.diff"
```
第一次跑,Hermes 会拉取完整的代码改动,逐文件分析。分析完成后,它会输出一个结构化的审查报告:
```
## 审查报告
### 高风险
- `auth/login.py` L45: 没有对用户输入做长度校验,可能引发 DoS
- `api/orders.py` L112: SQL 参数化用了错误的占位符形式
### 中风险
- `utils/cache.py`: 缓存没有设置 TTL,内存可能持续增长
- `tests/test_order.py`: 缺少边界条件测试(空订单、负数价格)
### 建议
- `auth/token.py`: JWT 过期时间设了 7 天,建议改为 1-2 小时
- `config/db.py`: 日志打印了完整 SQL 语句,包含用户数据,建议脱敏
### 总结
改动整体质量不错,主要问题集中在认证模块,建议合并前优先修复高风险项。
```
这个报告可以直接贴在 GitHub PR 评论区,不需要你再手动整理。
如果改动很大,Hermes 还会额外做一件事:检查新旧代码之间有没有依赖关系被破坏。比如改了一个公共函数,会顺带扫描哪些地方调用了这个函数,评估影响范围。
二、接入 GitHub Actions:自动代码审查 CI
这是进阶用法,让代码审查变成 PR 的必经流程。
在项目根目录创建 `.github/workflows/hermes-review.yml`:
```yaml
name: Hermes Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Hermes
run: |
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
- name: Run Hermes Review
env:
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
hermes run "review ./ --output json" > hermes-review.json
- name: Post review comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = JSON.parse(fs.readFileSync('hermes-review.json', 'utf8'));
github.rest.issues.createComment({
issue_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '## Hermes 自动审查报告\n\n' + review.summary + '\n\n完整报告
\n\n' + review.full_report + '\n\n '
});
```
然后在 GitHub 仓库的 Settings → Secrets 里添加 `DEEPSEEK_API_KEY` 和 `ANTHROPIC_API_KEY`,这样 Actions 跑的时候 Hermes 才能调用模型。
效果是:每次有人提 PR,GitHub Actions 自动触发,Hermes 跑一遍审查,结果自动发到 PR 评论区。整个过程对提交者透明,不需要维护者手动介入。
三、审查规则的自定义
默认的审查规则覆盖常见问题,但如果团队有特定的编码规范,可以自定义。
在 `~/.hermes/review-rules.yaml` 里配置:
```yaml
review:
severity_threshold: medium # 低于 medium 的问题不出报告
languages:
python:
checks:
- security: true
- performance: true
- style: false # 关闭 style 检查,交给 black/isort
typescript:
checks:
- security: true
- performance: true
- typing: true # TypeScript 重点查类型
comment_template: github # 输出格式支持 github/slack/json
max_issues_per_file: 10 # 单文件问题超过 10 条就截断,避免刷屏
```
这样 Hermes 的审查重点会和团队的实际需求对齐,不会产出一堆无关紧要的 style 问题。
四、实际效果
我自己在两个项目里跑了三个月的数据:
- 平均每次 PR 审查时间:从 20 分钟降到 3 分钟(主要是读 Hermes 报告的时间)
- 高风险 bug 在合并前发现率:从 60% 提升到 85%
- 重复性审查 comment 数量:减少约 70%(之前人工反复提的同样问题,Hermes 第一次就标出来)
当然 Hermes 不是万能的。它目前识别不了业务逻辑层面的问题,比如"这个改动是否和产品的支付逻辑匹配"。这类问题还是需要人工审查。
下期预告
Hermes 系列最后一篇:Docker 部署完整攻略——如何在服务器上跑 Hermes、对接远程开发环境、多人共享实例的配置方法,以及常见运维问题的解决。
---
参考:Hermes Agent v0.3.2 CI/CD 集成文档 + GitHub Actions 配置示例
评论区