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发现, 上游代理, 代码审查, 安全检测, 数据可视化, 暗色界面, 自定义脚本, 静态扫描