Files
CyberStrikeAI/docs/zh-CN/plugin-development.md
T
2026-07-08 14:21:10 +08:00

7.2 KiB
Raw Blame History

插件开发

CyberStrikeAI 当前仓库中的插件主要位于 plugins/,已有 Burp Suite 扩展Chromium 浏览器扩展 两个参考实现。插件通常通过 HTTP API、MCP 或本地文件与主应用集成。

目录

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 / FinalPopup 只读连接状态。

构建与加载:

  • 无需编译:chrome://extensions/ → 加载已解压 → 选择 cyberstrikeai-browser-extension/
  • 打包:bash package.shdist/cyberstrikeai-browser-extension.zip

浏览器插件认证最佳实践

服务端 POST /api/auth/login 返回 { token, expires_at }无 refresh token,插件不应假设 Token 会自动续期。参考实现见 lib/auth-session.jslib/api.jspanel/panel.js

实践 说明
Session 存储 Token 与 expires_atchrome.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_permissionsValidate 时请求目标 origin

扩展重载后 DevTools 面板上下文可能失效:需 关闭 DevTools → 重载扩展 → 再开 F12

浏览器插件数据与性能边界

插件侧应设内存上限,避免 DevTools 长时间开启拖垮浏览器:

  • 捕获:200 条 / Tab20 个 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/streamSSE)。
  • 大文件通过 /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/<name>/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

{"cmd":{"type":"string"}}

好 schema

{
  "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.jslib/api.jslib/storage.js
    • 主 UIpanel/panel.js
    • 捕获:devtools.jsbackground/service-worker.js
  • OpenAPIinternal/handler/openapi.go
  • 外部 MCPinternal/handler/external_mcp.go
  • Web 端认证参考:web/static/js/auth.js