MokiMeow/PatchPilot
GitHub: MokiMeow/PatchPilot
PatchPilot 是一个开源的供应链漏洞响应平台,扫描项目依赖中的可达 CVE 并协调自动化修复与人工审批流程。
Stars: 3 | Forks: 0
# PatchPilot Watch Commander
PatchPilot 是一个开源的 CVE 和供应链响应指挥中心。它会清点 GitHub 仓库和加入白名单的本地文件夹,使用真实的 OSV 数据扫描 Node.js 依赖项,在可用时通过 EPSS/CISA KEV 补充风险信息,展示爆炸半径,记录审计凭证,并通过真实工具或显式配置错误来管控修复/审批流程。
每个集成的运行都是实时的。任何你未配置的内容(GitHub、Telegram、Codex、OpenClaw、Vercel、Redis 或 SBOM 工具)都会如实地显示为 `not_configured` 或 `unavailable`,因此仪表盘始终能反映真实情况。
## 实时演示
**[trypatchpilot.vercel.app](https://trypatchpilot.vercel.app)** 是一个托管预览,其中包含预设的演示数据,因此你无需安装任何软件即可浏览落地页和仪表盘。如需对你自己的仓库进行真实扫描,请进行自托管(见下文)或使用 CLI。
## 使用单一命令扫描任意项目
```
# 来自任何地方(发布在 npm 上)
npx patchpilot-cli scan ./my-app --fail-on high
# 或来自此 repo
pnpm scan:cli /absolute/path/to/your/project
```
CLI 会运行真实的 OSV 扫描,并为每个发现标记 **可达性 (VEX-lite)** 信号,以便你优先修复实际导入的内容。请参阅 `apps/cli/README.md`。
## 快速开始
```
pnpm install
copy .env.example .env
pnpm test
pnpm dev
```
打开 `http://127.0.0.1:3000`。
要扫描本地文件夹,请将 `.env` 中的 `PATCHPILOT_LOCAL_ROOTS` 设置为包含该项目的父文件夹。本地扫描会拒绝此白名单之外的路径。
```
$env:PATCHPILOT_LOCAL_ROOTS="\patchpilot\tests\fixtures"
pnpm scan:fixture
```
## 主要命令
```
pnpm dev # Next.js dashboard and API
pnpm worker:dev # local worker status, --scan-all supported
pnpm mcp:dev # stdio MCP server
pnpm typecheck
pnpm test
pnpm build
pnpm verify:local-e2e
pnpm smoke:app http://127.0.0.1:3000
```
## 各集成所需的环境变量
- 本地文件夹扫描:`PATCHPILOT_LOCAL_ROOTS`
- GitHub 仓库验证和 PR:`GITHUB_TOKEN`
- Telegram 审批:`TELEGRAM_BOT_TOKEN`、`TELEGRAM_ALLOWED_CHAT_IDS`、`APPROVAL_HMAC_SECRET`
- Codex 修复执行:`CODEX_BIN`、`CODEX_ENABLED=true`、已通过身份验证的 Codex CLI
- OpenAI SDK 计划适配器:`OPENAI_API_KEY`,可选 `OPENAI_MODEL`
- Vercel AI SDK 计划适配器:`AI_GATEWAY_API_KEY` 或 `VERCEL_OIDC_TOKEN`,可选 `AI_GATEWAY_MODEL`
- Vercel 部署 API:`VERCEL_TOKEN`
- SBOM 生成:指向已安装 Syft 的 `SYFT_BIN`
- 可选的本地状态路径:`PATCHPILOT_DATA_FILE`
## 本地可用功能
- 位于 `.patchpilot/patchpilot.db.json` 的基于文件的持久化状态。
- 仅来自存储状态的仪表盘指标。
- 带有路径遍历/白名单检查的本地项目清单。
- 针对直接 npm 依赖项的真实 OSV API 依赖项扫描,并在安装 CLI 时支持 OSV-Scanner lockfile/传递依赖扫描。
- 存在 CVE 时的 EPSS 和 CISA KEV 风险补充信息。
- NVD 和 GitHub Advisory 风险补充作为尽力而为的查询;源错误与未找到的结果分开存储。
- 带有缺失数据指示器的风险评分。
- Agent 供应链盾 (Agent Supply-Chain Shield) 可检查存在风险的 Codex/MCP/GitHub Actions/package/env 模式。
- 带有哈希链的审计凭证创建。
- Telegram 审批 HMAC 验证路由。
- 调用真实应用服务并如实报告状态的 MCP server 工具。
- 确定性的 npm 修复,可进行验证、写入本地补丁工件,并且在应用补丁之前不会将状态标记为回滚可用。
- 通过身份验证后,在一次性脱敏密钥的工作区中执行 Codex CLI 修复。
- 自带 (BYO) 模型提供商层 (`PATCHPILOT_AGENT_PROVIDER`):Codex 工作区编辑器、OpenRouter / OpenAI 兼容 / Ollama 严格 JSON 计划顾问以及确定性修复程序。只有 Codex 和 PatchPilot 自己的应用器会修改文件;顾问仅返回计划。请参阅 `docs/model-providers.md`。
- OpenAI SDK 和 Vercel AI SDK 修复计划适配器。
## 基于配置管控的功能
- GitHub PR 创建需要有效的 `GITHUB_TOKEN`;只有在创建了真实 PR 时才会存储 PR URL。
- Codex 修复需要真实的 Codex CLI;否则请使用 OpenAI SDK、Vercel AI SDK 或仅限手动计划的适配器。
- Telegram 发送需要机器人凭证;配置后,Webhook 回调需要 `TELEGRAM_WEBHOOK_SECRET`。
- SBOM 生成需要 Syft;否则将返回 `sbom_tool_missing`。
- Vercel API 查询需要 `VERCEL_TOKEN`;本地 `.vercel/project.json` 映射仍然有效。
## 验证状态
- 已实现并在本地验证:本地测试夹具扫描、风险评分、确定性修复、带有忽略安装脚本的验证、本地补丁工件、审计凭证、仪表盘/API 冒烟测试、生产环境 `pnpm start`。
- 已实现但需要凭证以进行实时验证:针对 github.com 的 GitHub 仓库扫描、GitHub PR 创建、Telegram 发送、实时 Codex 修复。
- 已实现但尚未在此进行实时测试:OSV-Scanner CLI 路径、NVD API 密钥路径、通过身份验证的 GitHub Advisory 路径。
- 可选/部分功能:Redis/BullMQ 持久队列和 Postgres 持久化是可选的 Docker 路径;GitHub PR 回滚会关闭草稿 PR 并删除分支;已签名的插件注册表、SBOM 生成/差异帮助程序以及部署 URL 验证已实现/受配置管控。OpenClaw 仍处于记录/配置管控状态,而不是原生插件。
## 文档
请从 `docs/CONCEPT.md` 开始了解产品演练。`docs/` 的其余部分涵盖了架构、安全、扫描器、watch 模式、Codex 集成、模型提供商、MCP server、Telegram 审批以及环境参考。
仓库布局:
- `docs/`:主题指南(architecture、security、scanners、codex-integration、model-providers、mcp-server、telegram-approval、watch-mode、env-reference)。
- `apps/`:`web`(Next.js 仪表盘 + API + 落地页)、`worker`、`mcp`、`cli`。
- `packages/core`:扫描、风险、修复、Codex、GitHub、Telegram、审计逻辑。
- `scripts/`:本地/实时验证入口点(`verify:*`、`demo:live`)。
- `tests/fixtures/`:验证程序使用的一次性漏洞测试夹具。
标签:LLM防护, MITM代理, 搜索引擎查询, 暗色界面, 测试用例, 自动化攻击