# 插件开发 CyberStrikeAI 当前仓库中的插件主要位于 `plugins/`,已有 **Burp Suite 扩展**与 **Chromium 浏览器扩展** 两个参考实现。插件通常通过 HTTP API、MCP 或本地文件与主应用集成。 ## 目录 ```text plugins/ README.md burp-suite/ cyberstrikeai-burp-extension/ src/main/java/burp/ README.md README.zh-CN.md build.gradle pom.xml browser-extension/ cyberstrikeai-browser-extension/ manifest.json devtools.js background/service-worker.js panel/ popup/ lib/ README.md README.zh-CN.md package.sh ``` ## 插件类型 常见集成方式: - 浏览器或安全工具扩展:调用 CyberStrikeAI API。 - MCP Server:向 CyberStrikeAI 暴露新工具。 - 文件型扩展:提供 tools、roles、skills、agents。 - Webhook/机器人:通过平台回调与 CyberStrikeAI 对话。 ## Burp Suite 扩展 Burp 插件目录包含 Java 源码和构建脚本。典型能力: - 读取 Burp 中的 HTTP 请求/响应。 - 格式化消息。 - 调用 CyberStrikeAI API。 - 在 Burp 标签页展示 AI 分析结果。 构建前确认: - JDK 可用。 - Gradle 或 Maven 可用。 - CyberStrikeAI 服务地址和认证配置正确。 ## 浏览器扩展(Chromium DevTools) 浏览器扩展目录为 MV3 DevTools 扩展,与 Burp 插件能力对齐:捕获 HTTP 流量 → 格式化 Prompt → SSE 流式输出 AI 结果。完整安装与 UI 说明见 `plugins/browser-extension/cyberstrikeai-browser-extension/README.zh-CN.md`。 典型能力: - 在 DevTools **Network** 中捕获 XHR/Fetch(可暂停)。 - 原始 HAR 存内存;展示与 AI Prompt 归一化为 **HTTP/1.1**(与 Burp 一致)。 - 调用 CyberStrikeAI 登录、Validate、Agent Stream API。 - DevTools 面板展示 Progress / Final;Popup 只读连接状态。 构建与加载: - 无需编译:`chrome://extensions/` → 加载已解压 → 选择 `cyberstrikeai-browser-extension/`。 - 打包:`bash package.sh` → `dist/cyberstrikeai-browser-extension.zip`。 ### 浏览器插件认证最佳实践 服务端 `POST /api/auth/login` 返回 `{ token, expires_at }`,**无 refresh token**,插件不应假设 Token 会自动续期。参考实现见 `lib/auth-session.js`、`lib/api.js`、`panel/panel.js`: | 实践 | 说明 | | --- | --- | | Session 存储 | Token 与 `expires_at` 存 `chrome.storage.session`(关浏览器失效),Password 不落盘 | | 剩余时间 | 状态栏显示 `OK · 剩余 11h 30m`;剩余 <30min 警告 | | 本地检测 | 每 30s 检查 `expires_at` 并调用 `GET /api/auth/validate` | | 服务端探测 | 切回 DevTools 面板 / 窗口聚焦时立即探测 | | 服务不可达 | 显示「无法连接服务」,不清 Token(便于服务重启中) | | 401/403 | 清空 Token、展开连接栏(服务重启后 session 内存清空) | | Send 前校验 | 调用 `ensureAuthReady()`,避免过期 Token 发起 SSE | | 按需授权 | `optional_host_permissions`,Validate 时请求目标 origin | 扩展重载后 DevTools 面板上下文可能失效:需 **关闭 DevTools → 重载扩展 → 再开 F12**。 ### 浏览器插件数据与性能边界 插件侧应设内存上限,避免 DevTools 长时间开启拖垮浏览器: - 捕获:200 条 / Tab,20 个 Tab 槽;Progress 512KB / run。 - 默认 **XHR/Fetch only** + 静态资源预过滤;不需要捕获时用 **已暂停**。 - 大响应走截断或摘要后再进 Prompt,不要整包塞进消息。 ## API 对接建议 插件调用主应用时: - 先 `POST /api/auth/login`,再 `GET /api/auth/validate` 确认会话。 - 保存 `expires_at`,过期后重新登录(无 silent refresh)。 - 优先调用 `/api/eino-agent/stream` 或 `/api/multi-agent/stream`(SSE)。 - 大文件通过 `/api/chat-uploads` 上传,再在消息中引用。 - 查询结果或漏洞可写入 `/api/vulnerabilities`。 - 项目信息可写入 `/api/projects/:id/facts`。 完整接口以 `/api-docs` 为准。 ## MCP 插件 如果插件的目标是给 Agent 增加工具,优先实现 MCP Server。然后在外部 MCP 管理中接入: - stdio:本机启动。 - HTTP/SSE:长期服务。 MCP 工具设计建议: - schema 明确。 - 参数最小化。 - 输出结构稳定。 - 错误信息可读。 - 高风险动作拆成独立工具,方便 HITL 审批。 ## 文件型扩展 插件也可以交付: - `tools/*.yaml` - `roles/*.yaml` - `skills//SKILL.md` - `agents/*.md` 这种方式简单可靠,适合内部方法论或工具链沉淀。 ## 发布检查 发布插件前确认: - 不包含 API Key、Cookie、目标信息。 - README 有安装、配置、卸载说明。 - 错误提示清晰。 - 与当前 CyberStrikeAI API 版本兼容。 - 高风险能力有明显说明。 ## 版本兼容 插件应避免依赖未公开的前端内部实现。优先依赖: - `/api/openapi/spec` - 稳定 HTTP API。 - MCP 协议。 - 文件目录规范。 如果必须依赖内部接口,插件 README 中应标注兼容版本。 ## 插件设计的三个层次 | 层次 | 例子 | 优点 | 代价 | | --- | --- | --- | --- | | API 插件 | Burp / 浏览器扩展调用 Agent Stream | 易实现,适合 UI 集成 | 依赖认证和 API 稳定性 | | MCP 插件 | 提供新工具给 Agent | Agent 可主动调用 | 需要 schema 和安全设计 | | 资源包插件 | 交付 tools/roles/skills/agents | 最简单,可版本化 | 交互能力弱 | 插件一开始不必做成 MCP。如果只是“把 Burp / 浏览器里的 HTTP 请求交给 AI 分析”,API 插件更直接;如果要让 Agent 主动调用 Burp 扫描或查询结果,再做 MCP。 ## API 插件请求设计 发送给 Agent 的内容应包含: - 来源工具和上下文。 - 目标 URL、方法、关键 header。 - 请求体和响应体的截断策略。 - 用户希望 AI 做什么。 - 授权边界。 不要把完整大响应直接塞进消息。大文件应走上传接口或做摘要。 ## MCP 插件 schema 设计 坏 schema: ```json {"cmd":{"type":"string"}} ``` 好 schema: ```json { "target_url": {"type":"string","description":"授权目标 URL"}, "scan_profile": {"type":"string","enum":["passive","active-safe"]}, "max_requests": {"type":"integer","description":"最大请求数"} } ``` schema 越具体,HITL 越容易判断风险,Agent 也越不容易发散。 ## 插件安全边界 插件不要绕过平台安全控制: - 不要直接执行本机高风险命令而不暴露给 HITL。 - 不要在插件内保存明文长期凭证(Password 仅用于登录,Token 用 session 存储)。 - 不要默认把目标数据发给第三方服务。 - 不要依赖浏览器本地状态绕过登录。 - 收到 401/403 应清空会话并提示重新认证,不要静默重试或忽略。 ## 源码锚点 - Burp 插件 Java 代码:`plugins/burp-suite/cyberstrikeai-burp-extension/src/main/java/burp/` - 浏览器扩展:`plugins/browser-extension/cyberstrikeai-browser-extension/` - 认证:`lib/auth-session.js`、`lib/api.js`、`lib/storage.js` - 主 UI:`panel/panel.js` - 捕获:`devtools.js`、`background/service-worker.js` - OpenAPI:`internal/handler/openapi.go` - 外部 MCP:`internal/handler/external_mcp.go` - Web 端认证参考:`web/static/js/auth.js`