s1mran/codehawk
GitHub: s1mran/codehawk
CodeHawk 是一款集 AI 代码审查与静态安全扫描于一体的工具,通过 GitHub Action 和 CLI 在 Pull Request 阶段自动发现问题并门控 CI 流水线。
Stars: 0 | Forks: 0
# 🦅 codehawk
**在每个 pull request 上进行 AI 代码审查 + 安全扫描。** 这是一个开箱即用的 GitHub Action,它使用 LLM 审查 diff,运行内置的静态安全扫描器,发布行内审查评论,并控制 CI 流水线 —— 此外还提供了一个本地 CLI。
- 🤖 **AI 审查** — 不依赖于特定提供商(兼容 OpenAI 或 Claude)。仅审查新增的代码行,发布一条包含行内评论的汇总审查。
- 🔒 **静态安全扫描** — 无需外部服务:检测硬编码密钥、命令/SQL 注入、弱加密、不安全的反序列化、XSS 触发点、被禁用的 TLS 验证等。
- 🚦 **CI 门控** — 当发现的问题达到严重程度阈值时,使构建失败。
- 🧩 **两种使用方式** — 用于 PR 的 GitHub Action 以及用于本地/CI 使用的 `codehawk` CLI。
## 快速开始 — GitHub Action
将 `.github/workflows/codehawk.yml` 添加到您的代码库:
```
name: codehawk
on: pull_request
permissions:
contents: read
pull-requests: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: /codehawk@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
ai-provider: openai # or: claude
ai-api-key: ${{ secrets.OPENAI_API_KEY }}
ai-model: gpt-4o-mini # or: claude-opus-4-8
fail-on: high
```
将 `ai-api-key` 留空以**仅运行静态扫描器**(无需 LLM,无需密钥)。
### 输入项
| 输入项 | 默认值 | 描述 |
|----------------|------------------|-------------|
| `github-token` | `${{ github.token }}` | 读取 PR,发布审查评论。 |
| `ai-provider` | `openai` | `openai`(任何兼容 OpenAI 的 endpoint)或 `claude`。 |
| `ai-api-key` | *(空)* | 提供商密钥。留空 → 仅进行静态扫描。 |
| `ai-model` | 提供商默认值 | 例如 `gpt-4o-mini`, `claude-opus-4-8`。 |
| `ai-base-url` | *(空)* | 自定义的兼容 OpenAI 的 base URL。 |
| `fail-on` | `high` | `critical` \| `high` \| `medium` \| `low`。 |
| `static-scan` | `true` | 开启或关闭内置扫描器。 |
## 快速开始 — CLI
```
npx codehawk scan . # static security scan
npx codehawk scan src --fail-on high # gate in CI
ANTHROPIC_API_KEY=sk-... npx codehawk review src/auth.js # AI review of a file
npx codehawk review --diff # AI review of the current git diff
```
`scan --json` 会为 pipeline 输出机器可读的检测结果。
## 工作原理
```
PR opened ──▶ list changed files + patches
──▶ chunk each diff (token-safe)
──▶ AI review (added lines only) ─┐
──▶ static security scan ─┴─▶ de-dupe ─▶ one consolidated PR review
─▶ CI gate (fail-on)
```
AI 审查器被要求**仅对新增的代码行**进行评论,并且宁可提供少量高置信度的检测结果,也不要产生过多干扰信息。如果 GitHub 拒绝了行内评论位置,系统会回退到摘要列表形式,因此审查结果总能被成功发布。
## 检测项(静态扫描器)
密钥(AWS 密钥、私钥、Slack token、凭据赋值) · `eval` / `new Function` · shell 命令注入 · SQL 字符串拼接 · `yaml.load` / `pickle` · 弱哈希(MD5/SHA1) · `innerHTML` / `dangerouslySetInnerHTML` XSS 触发点 · 被禁用的 TLS 验证。规则位于 [`src/rules.js`](src/rules.js) 中,且易于扩展。
## 开发
```
npm install
npm test # unit tests for the scanner
node bin/cli.js scan examples # scan the deliberately-vulnerable sample
```
## 许可证
MIT © Simran Sidhu
标签:AI辅助, DevSecOps, GitHub Action, MITM代理, URL发现, 上游代理, 代码审查, 安全检测, 数据可视化, 暗色界面, 自定义脚本, 静态扫描