VibeShift:Vibe编码器的安全工程师
VibeShift 是一个智能安全代理,旨在与AI编码助手(如Cursor、GitHub Copilot、Claude Code等)无缝集成。它充当您的自动化安全工程师,分析人工智能生成的代码,识别漏洞,并促进人工智能驱动的补救 *之前* 不安全的代码会进入你的代码库。它利用了 MCP(模型上下文协议) 在现有的AI编码环境中实现流畅的交互。
 
问题: AI编码助手极大地加速了开发,但它们也可以生成具有微妙或明显安全漏洞的代码。手动审查所有人工智能生成的代码是否存在安全漏洞是缓慢的,容易出错,并且不能随着人工智能开发的速度而扩展。这种“氛围驱动的开发”可能会使应用程序暴露在外。
解决方案:GroundNG的VibeShift 通过使您的AI编码助手能够:
- 自动分析AI生成的代码: 当AI助手生成或修改代码时,可以触发VibeShift,使用一套工具(SAST、DAST组件)和AI驱动的检查来执行安全分析。
- 识别安全漏洞: 在AI生成的代码段或更大的代码块中找出常见和复杂的漏洞(例如XSS、SQLi、不安全的配置、逻辑缺陷)。
- 促进人工智能驱动的补救: 直接向AI编码助手提供详细的反馈和漏洞信息,使其能够建议甚至自动应用修复程序。
- 创建安全反馈循环: 确保开发人员及其人工智能助手立即意识到潜在的安全风险,从而能够快速纠正和学习。
这为人工智能辅助编码创造了一个“左移”的安全范式,将安全性直接嵌入到开发工作流程中,并帮助更快地发布更安全的代码。
演示(点击播放这些视频)
 
特性
- MCP集成: 与Cursor/Windsurf/Github Copilot/Roo代码无缝集成
- 自动安全扫描: 触发AI代码生成/修改以执行:
- 静态代码分析(SAST): 集成Semgrep等工具以查找源代码中的漏洞。 - 动态分析(DAST图元): 可以调用Nuclei或ZAP等工具对正在运行的组件进行检查(如适用)。
- 人工智能辅助测试记录: 从自然语言描述生成基于Playwright的测试脚本(在自动模式下)。
- 确定性测试执行: 使用Playwright可靠地运行录制的JSON测试文件。
- AI驱动的测试发现: 抓取网站并利用任何LLM(符合openai格式)为发现的页面建议测试步骤。
- 回归测试: 轻松运行现有的测试套件以捕获回归。
- 自动反馈循环: 返回执行结果(包括失败、屏幕截图、控制台日志),为AI助手提供直接反馈。
- 自我修复: 现有测试在代码更改时会自我修复。无需手动更新。
- UI测试: 剧作家不直接支持的UI测试也得到了支持。例如,
Check if the text is overflowing in the div - 视觉回归测试:使用传统的像素匹配和视觉LLM方法。
它是如何工作的
+-------------+ +-----------------+ +---------------------+ +-----------------+ +-------------+
| User | ----> | AI Coding Agent | ----> | MCP Server | ----> | Scan, test, exec| ----> | Browser |
| (Developer) | | (e.g., Copilot) | | (mcp_server.py) | | (SAST, Record) | | (Playwright)|
+-------------+ +-----------------+ +---------------------+ +-----------------+ +-------------+
^ | | |
|--------------------------------------------------+----------------------------+---------------------+
[Test Results / Feedback]- 用户: 提示他们的AI编码助手(例如,“测试此存储库的安全漏洞”,“记录登录流的测试”,“运行回归测试'Test_login.json'”)。
- AI编码代理: 确认意图,并使用MCP调用
MCP Server. - MCP服务器: 将请求路由到相应的功能(
get_security_scan,record_test_flow,run_regression_test,discover_test_flows,list_recorded_tests). - VibeShift代理:
- 传统安全扫描: 调用 静态分析工具 (例如Semgrep)在代码上。 - 记录: 这 WebAgent (在自动模式下)与LLM交互以计划步骤,通过以下方式控制浏览器 BrowserController (Playwright),处理HTML/Vision,并将生成的测试步骤保存到JSON文件中 output/ 目录。 - 执行: 这 TestExecutor 加载指定的JSON测试文件,使用 BrowserController 根据记录的步骤与浏览器交互,并捕获结果、屏幕截图和控制台日志。 - 发现: 这 CrawlerAgent 用途 BrowserController 和 LLMClient 抓取页面并建议测试步骤。
- 浏览器: Playwright驱动实际的浏览器交互。
- 反馈回路:
- 综合安全报告(漏洞、位置、建议)通过MCP服务器返回给 AI编码代理. - AI编码代理将此信息呈现给开发人员,并可以使用该信息 建议或应用修复程序. - 目标是快速循环代码生成->安全扫描->人工智能驱动的修复->重新扫描(可选)。
入门指南
先决条件
- Python 3.10+
- 访问任何LLM(在我的测试中,gemini 2.0闪存最适合免费使用)
- MCP已安装(
pip install mcp[cli]) - 已安装Playwright浏览器(
patchright install)
安装
- 克隆存储库:
git clone https://github.com/GroundNG/VibeShift
cd VibeShift- 创建虚拟环境(推荐):
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows- 安装依赖项:
pip install -r requirements.txt- 安装Playwright浏览器:
patchright install --with-deps # Installs browsers and OS dependencies配置
- 将.env.example.重命名为项目根目录中的.env文件。
- 添加您的LLM API密钥和其他必要的详细信息:
# .env
LLM_API_KEY="YOUR_LLM_API_KEY"- 替换 YOUR_LLM_API_KEY 用你真正的钥匙。
添加MCP服务器
将此添加到您的mcp配置中:
{
"mcpServers": {
"VibeShift":{
"command": "uv",
"args": ["--directory","path/to/cloned_repo", "run", "mcp_server.py"]
}
}
}在与AI编码助手交互时,保持此服务器运行。
用法
使用自然语言通过启用MCP的AI编码助手与代理进行交互。
示例:
- 安全分析:
- 自动(首选): VibeShift会自动分析AI助手生成或显著修改的代码片段。 - 显式命令: > “VibeShift,分析此功能的安全漏洞。” > “让VibeShift检查Copilot刚刚为SQL注入编写的Python代码。” > “在提交之前,使用VibeShift保护生成的代码。”
- 记录测试:
> “记录测试:转到https://practicetestautomation.com/practice-test-login/,在用户名字段键入“student”,在密码字段键入“Password123”,单击提交按钮,并验证文本“恭喜学生”是否可见。"
- *(代理将自动执行这些操作并保存 test_....json 文件在 output/)*
- 执行测试:
> “运行回归测试 output/test_practice_test_login_20231105_103000.json"
- *(代理将执行指定文件中的步骤,并报告包含错误和详细信息的PASS/FAIL状态。)*
- 发现测试步骤:
> “从以下内容开始发现潜在的测试步骤https://practicetestautomation.com/practice/"
- *(代理将抓取网站,分析页面,并返回每个页面的建议测试步骤。)*
- 列出记录的测试:
> “列出可用的已录制web测试。”
- *(代理人将返回以下列表 .json 在中找到的文件 output/ 目录。)*
输出:
- 安全报告: 返回给AI编码助手,详细说明:
- 漏洞类型(例如,CWE、OWASP类别) - 代码中的位置 - 严重性 - 证据/解释 - 建议的补救措施(通常供AI采取行动)
- 记录的测试: 保存为JSON文件
output/目录(参见test_schema.md格式)。 - 执行结果: 作为JSON对象返回,总结运行情况(状态、错误、证据路径)。完整结果也保存到
output/execution_result_....json. - 发现结果: 作为JSON对象返回,其中包含发现的URL和建议的步骤。完整结果保存到
output/discovery_results_....json.
灵感
贡献
我们欢迎捐款!请看 CONTRIBUTING.md 有关如何开始、报告问题和提交pull请求的详细信息。我们特别感兴趣的是:
- 新的安全分析器集成。
许可证
该项目根据 容量2.0.

