架构概览
┌─────────────────────────────────────────────────────────────┐│ OpenPR (Plan) ││ Issues · Boards · Sprints · Governance · MCP · Webhooks │└──────────┬──────────────────────────────────┬───────────────┘ │ 任务派发 │ 结果回调 ▼ ▲┌──────────────────────┐ ┌────────────────────┐│ openpr-webhook │ │ AI 代理 ││ 事件路由 │── 派发 ── │ Codex / Claude / ││ WSS 隧道 │ │ OpenCode │└──────────┬───────────┘ └────────┬───────────┘ │ │ ▼ ▼┌──────────────────────────────────────────────────────────┐│ PRX (Think) ││ 19 通道 · 14 供应商 · 路由器 · 子代理 ││ 自我进化 · 安全策略 · MCP 客户端 │└──────────┬──────────┬──────────┬──────────┬──────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ prx-memory prx-email Fenfa WAF + SD (Build) (Build) (Ship) (Protect)MCP(模型上下文协议)
Section titled “MCP(模型上下文协议)”主要集成协议。OpenPR 通过 HTTP、stdio 和 SSE 传输方式暴露 34 个 MCP 工具。PRX 作为 MCP 客户端进行连接。
Webhooks
Section titled “Webhooks”OpenPR 通过 HMAC-SHA256 签名的 Webhook 触发 30 种事件类型。openpr-webhook 服务接收这些事件并将工作派发给 AI 代理。
WSS 隧道
Section titled “WSS 隧道”对于位于 NAT/防火墙后的代理,openpr-webhook 支持到 OpenPR 控制面的出站 WebSocket 隧道。任务通过隧道接收、确认、执行,并将结果返回。
Issue → 修复 → 部署
Section titled “Issue → 修复 → 部署”- Issue 创建 — 在 OpenPR 中手动或通过 API 创建
- 机器人任务分配 — OpenPR 触发
issue.createdWebhook,带有机器人上下文 - Webhook 调度器 接收事件,匹配到代理配置
- CLI 执行器 启动编码代理(如
claude-code),使用模板化提示词 - 代理工作 — 阅读代码、进行修改、运行测试
- 代理使用 prx-memory 通过 MCP 回忆过往模式并存储新知识
- 结果回调 — 代理通过 MCP/API 将结果发回 OpenPR
- 状态变更 — Issue 从
in_progress转为done - CI 构建 — 标准 CI/CD 流水线生成产物
- Fenfa 分发 — 构建产物通过 API 上传,分发到所有平台
- WAF 监控 通过 17 个检测阶段监控传入的 HTTP 流量
- SD 扫描 端点上的文件,使用哈希匹配、YARA 规则和 ML 推理
- 检测到威胁 → 自动响应(拦截、隔离、修复)
- 通知 通过 Webhook、邮件、Telegram 发送
- 未来规划:安全事件反馈回 OpenPR,生成 Issue 供 AI 驱动的响应
最小化(单机部署)
Section titled “最小化(单机部署)”┌─────────────────────────┐│ 服务器 ││ ├── OpenPR (Docker) ││ ├── PRX (二进制) ││ ├── prx-memory (二进制) ││ └── PostgreSQL │└─────────────────────────┘┌──────────┐ ┌──────────┐ ┌──────────┐│ OpenPR │ │ PRX │ │ Fenfa ││ + Caddy │ │ 守护进程 │ │ + S3/R2 │└────┬─────┘ └────┬─────┘ └──────────┘ │ │ ▼ ▼┌──────────┐ ┌──────────┐│ WAF │ │ SD ││ 集群 │ │ 守护进程 │└──────────┘ └──────────┘