CyberStrike源码架构全景图Bun单体仓库、SolidJS Web UI与SQLite存储层如何协作【免费下载链接】CyberStrikeOpen-source AI-powered offensive security harness for automated penetration testing.项目地址: https://gitcode.com/gh_mirrors/cy/CyberStrikeCyberStrike 是一个开源 AI 驱动的攻击性安全框架用于自动化渗透测试。它的源码仓库是一个典型的Bun 单体仓库Monorepo核心引擎运行在 Bun 运行时上浏览器端 Web UI 用SolidJS构建数据落盘则依赖SQLite 存储层Bun 内置 sqlite Drizzle ORM 双层设计。这篇文章用通俗的方式带你看懂这三者如何分工协作。一、单体仓库长什么样用 Bun 组织多个包打开仓库根目录核心线索都在 package.json 里packageManager: bun1.3.9—— 整个仓库统一由 Bun 驱动安装、运行与测试workspaces.packages声明了packages/*、packages/console/*、packages/sdk/js等子包这就是单体仓库的标准做法一个仓库、多个可独立发布的包、共享一份依赖目录bun.lock根dev脚本直接以bun run --cwd packages/cyberstrike启动核心引擎dev:web则启动 Web 前端开发时后端与前端各自热更新。各包职责一览目录职责技术栈packages/cyberstrike/核心引擎终端 TUI、服务端、存储、AI 代理Bun TypeScriptpackages/app/Web UIcyberstrike webSolidJS Vitepackages/console/官网与控制台SolidStartpackages/hackbrowser/内置渗透浏览器流量捕获Playwright/Chromiumpackages/sdk/js/供 Web UI 调用的 JS SDKTypeScriptpackages/ui/共享 UI 组件与设计系统SolidJS包间依赖通过workspace:*协议互相引用根 package.json 中可见cyberstrike-io/sdk、cyberstrike-io/plugin等再用 turbo.json 的 Turbo 流水线统一跑类型检查与构建——这是 Bun 单体仓库提升协作效率的关键套路。二、核心引擎packages/cyberstrike 的内部结构核心引擎是一个功能密集的包按职责拆分目录见 packages/cyberstrike/src/cli/140 文件终端 TUI 界面首次运行引导你配置大模型提供商session/、agent/、skill/会话管理、13 安全领域代理、7,600 可签名加载的技能文件provider/150 大模型提供商的接入层Anthropic、OpenAI、Ollama 离线模型等server/HTTP 服务端为 TUI 与 Web UI 提供同一套 APIstorage/数据存储层下文详述。服务端的 server.ts 之下是 routes/ 目录每个文件对应一类资源session.ts、project.ts、mcp.ts、bolt.ts、permission.ts、pty.ts伪终端等。也就是说终端界面和浏览器界面只是两个壳背后共用同一个 REST 风格的 API 层——这是单体仓库里前后端解耦得最干净的部分。三、SolidJS Web UIpackages/app 如何接入引擎cyberstrike web启动的 Web 界面位于 packages/app/技术栈是SolidJS Vite页面结构很清晰packages/app/src/pages/home.tsx—— 首页/会话列表session.tsx—— 会话主界面与 13 安全代理对话、查看漏洞发现、管理 MCP 服务器与 Bolt 远程工具layout/—— 侧边栏、标题栏、命令面板等布局组件。Web UI 不直接执行安全工具而是通过 packages/sdk/js/src/ 的 JS SDK 调用核心引擎的 HTTP API界面状态模型选择、项目同步、全局配置由 packages/app/src/context/ 下的sdk.tsx、sync.tsx、models.tsx等上下文统一管理。此外packages/app/e2e/ 用 Playwright 写了 20 个端到端测试覆盖会话、文件树、设置、终端等模块——对新手来说读 e2e 测试往往是理解一个前端包最快的入口。四、SQLite 存储层双轨制设计存储是这套架构里最值得看的一块它实际上是两条轨道并行① SQLite 主库新轨道—— packages/cyberstrike/src/storage/db.ts直接使用 Bun 内置的bun:sqlite数据库文件为数据目录下的cyberstrike.db之上套一层Drizzle ORM表结构声明在 schema.ts会话、消息、漏洞、权限、Web 凭据/角色/端点以及方法论引擎的相位表等开启PRAGMA journal_mode WAL提升并发读写迁移文件按时间戳命名放在 packages/cyberstrike/migration/如20260218223028_add_vulnerability/启动时按序回放还内置了reconcile()自愈逻辑对比实际表结构与 Drizzle schema自动补齐缺失列见 db.ts。② JSON 文件存储旧轨道—— packages/cyberstrike/src/storage/storage.ts以键路径 → JSON 文件的形式落盘读写都套上文件锁Lock.read/Lock.write防止并发损坏启动时执行历史迁移storage.ts把早期按项目分目录的 JSON 数据归一化。这种新数据进 SQLite、旧数据经迁移兼容的双轨设计让开源项目可以在不停机的情况下完成存储演进——对想学习存储层迁移实践的开发者是很好的样本。五、三者如何协作一次请求的完整旅程把前面的拼图合起来一条用户操作在架构中是这样流动的浏览器 (SolidJS Web UI, packages/app) │ 调用 JS SDK ▼ HTTP API (packages/cyberstrike/src/server/routes/*) │ 路由 → 会话/代理/权限逻辑 ▼ 核心引擎 (agent / skill / provider / mcp) │ Drizzle ORM 读写 ▼ SQLite (cyberstrike.db) JSON 文件存储 (packages/cyberstrike/src/storage/)Bun 单体仓库提供统一运行时与包管理CLI、服务端、迁移脚本、甚至 Nix 打包脚本nix/都在同一仓库、同一语言里维护SolidJS Web UI是纯视图层靠 SDK 与引擎对话界面逻辑与业务逻辑零耦合SQLite 存储层是唯一的权威数据源TUI 与 Web UI 看到的是同一份会话与漏洞数据。想动手跟进源码建议路线先跑 README.md 的 Quick Start再从 packages/cyberstrike/src/index.ts 顺藤摸瓜到server/与storage/最后用 docs/http-replay-engine-design.md 这类设计文档验证你对模块边界的理解。小结CyberStrike 的架构本质是一个 Bun 单体仓库 一个共享 HTTP API 一个 SQLite 单一数据源。终端 TUI、浏览器 Web UI、远程访问三者只是 API 的不同客户端这正是它代码量可控、前端技术SolidJS可以独立演进的根本原因。【免费下载链接】CyberStrikeOpen-source AI-powered offensive security harness for automated penetration testing.项目地址: https://gitcode.com/gh_mirrors/cy/CyberStrike创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考