🎯 模式学习MCP服务器 - 演示
通过模式学习实现AI代码生成中验证时间的减少演示
📋 概述
这个演示展示了MCP(模型上下文协议)服务器如何帮助像Goose这样的AI代理从开发者的修正中学习,将验证时间从20分钟缩短到2分钟(减少了90%)。
问题
- AI生成的代码存在安全漏洞
- 开发者花费大量时间进行审查和修复
- 同样的错误一再发生
解决方案
- 当开发者修复由AI生成的代码时,存储修正模式
- 在未来代码生成中检索并应用这些模式
- 大幅缩短验证时间
🚀 快速入门
1. 安装依赖项
cd pattern-learning-demo
pip install -r requirements.txt2. 运行演示程序
选项A:Python脚本(推荐用于Windows)
python demo_script.py选项B:Bash脚本(Linux/Mac)
chmod +x demo_script.sh
./demo_script.sh3. 测试MCP服务器
python mcp_server.py服务器将启动并使用安全模式初始化模式数据库。
📊 演示流程
在模式学习之前(尝试1)
- 开发者问道:“创建 Flask 登录端点”
- Goose 生成的代码存在时序攻击漏洞
password == stored_password) - 开发人员花20分钟进行审查和修复
- 数据库中存储的模式
模式学习后(尝试2)
- 开发者提问:“创建Flask登录端点”(相同提示)
- Goose 调用 MCP 服务器以获取安全模式
- Goose 生成代码,使用
secrets.compare_digest()从一开始 - 开发者在2分钟内验证
- 实现了90%的时间缩减
🏗️ 建筑学
┌─────────────────────────────────────────┐
│ GOOSE AGENT │
│ (calls MCP tools via JSON-RPC) │
└───────────────┬─────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PATTERN LEARNING MCP SERVER │
│ │
│ Tools: │
│ • get_security_patterns() │
│ • validate_code_security() │
│ • store_correction_pattern() │
│ • get_database_stats() │
└───────────────┬─────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ SQLite Pattern Database │
│ (patterns.db) │
└─────────────────────────────────────────┘🔧 零部件
1. pattern_db.py - 数据库层
- 基于SQLite的模式存储
- 贝叶斯置信度评分
- 模式检索与统计
2. security_patterns.py - 模式定义
- 预定义的安全模式
- 基于正则表达式的漏洞检测
- 情境感知推荐
3. mcp_server.py - MCP 服务器
- 通过MCP协议暴露工具
- 处理模式的存储和检索
- 与Goose集成
4. demo_script.py - 互动演示
- 展示前后对比
- 直观展示时间节省效果
- 展示价值主张
📈 结果
| 指标 | 之前 | 之后 | 改进 |
|---|---|---|---|
| 生成时间 | 30秒 | 30秒 | - |
| 验证时间 | 20分钟 | 2分钟 | 90% |
| 漏洞 | 1(高危) | 0 | 百分之百 |
| 开发者信心 | 低 | 高 | ✅ |
🎯 主要特点
✅ 自动模式学习 - 从每一次纠正中学习 ✅ 情境感知 - 根据任务类型推荐模式 ✅ 置信度评分 - 随着时间的推移,贝叶斯更新会加强模式 ✅ 多个类别 - 安全性、性能、风格等。 ✅ 翻译成中文是:✅(这个符号本身在中文中没有特定的含义,通常用于表示确认、正确或完成,类似于英文中的✅,在中文语境中可直接保留或根据具体语境翻译为“正确”、“确认”等,但在此处为保持原样,故直接译为“✅”) MCP集成 - 与Goose无缝协作 ✅(对勾符号,表示正确、确认或完成) 零配置 - SQLite,无需外部数据库
🔒 包含的安全模式
- 防止时序攻击
- 检测: password == stored_password - 修复: secrets.compare_digest(password, stored_password)
- 防止SQL注入
- 检测:SQL查询中的字符串格式化 - 修复:参数化查询
- 硬编码密钥检测
- 检测: API_KEY = "secret123" - 修复: os.environ.get("API_KEY")
- “不安全随机数防范”
- 检测: random.randint() - 修复: secrets.token_hex()
🧪 测试
# Run tests (when implemented)
pytest tests/📝 Goose 的配置
要在 Goose 中使用此 MCP 服务器,请在您的 Goose 配置中添加:
{
"mcp_servers": {
"pattern-learning": {
"command": "python",
"args": ["C:/Users/aadis/goose-pattern-demo/pattern-learning-demo/mcp_server.py"]
}
}
}🎬 演示脚本输出
演示显示:
- 尝试1 - 生成易受攻击的代码及20分钟修复方案
- 模式存储 - 更正已保存至数据库
- 尝试2 - 自动生成安全代码
- 结果 - 节省时间与指标
💡 未来改进方向
- \[ \] 基于抽象语法树(AST)的漏洞检测(更准确)
- \[ \] 用于模式相似性搜索的向量嵌入
- \[ \] 多智能体协调
- \[ \] 自主提示进化
- \[ \] 社区模式共享
- \[ \] 性能模式类别
- \[ \] 风格指南执行
📞 支持
对于问题或疑虑:
- 电子邮箱:your-email@example.com
- GitHub:你的GitHub用户名
📄 许可证
MIT 许可证 - 欢迎自由使用和修改
______________________________________________________________________
为格罗斯·格兰特面试而建
通过体验式学习展示验证时间的缩短。
