cntrvsy/secure-sme-agent-skills-slm-proxy
GitHub: cntrvsy/secure-sme-agent-skills-slm-proxy
基于微调量化小语言模型的本地安全代理,在消费级硬件上为中小企业 Agent 技能防御间接提示注入攻击并压缩 token 开销。
Stars: 0 | Forks: 0
# 通过微调 SLM 代理保护中小企业 Agent 技能
此代码库包含研究项目**“通过微调 SLM 代理保护中小企业 Agent 技能”**的学位论文文档、模型微调 pipeline、评估测试工具以及演示幻灯片。
## 项目概述
中小企业(SME)面临着一种**“运营悖论”**:它们必须利用 AI 自动化来保持竞争力,但却缺乏计算和财务资源来部署庞大的大型语言模型(LLM)或管理复杂的 Model Context Protocol(MCP)服务器。
为了规避这些开销,中小企业采用了 **Agent 技能**——这是一种轻量级、静态、带有版本控制的目录,其中包含一个 [SKILL.md](dissartation%20doc/dissertation.typ#L39) 文件,该文件定义了加载到下游 agent 上下文窗口中的指令(YAML frontmatter + Markdown 正文)。然而,这些静态技能文件引入了严重的漏洞:
### 解决方案:本地 SLM 安全代理
## 代码库结构
该项目主要由三个组件构成:
```
├── dataset/ # LoRA Fine-Tuning & Evaluation Pipeline
│ ├── results/ # Quantitative evaluation output logs (JSONL/MD)
│ ├── train.jsonl # SFT training dataset split
│ ├── test.jsonl # SFT evaluation holdout dataset split
│ ├── refine_dataset.py # Script to structure and prepare data
│ ├── evaluate_proxy.py # Assessment harness simulating attacks & computing metrics
│ └── Qwen2_5_3B_SKILLmd_Sanitizer_Finetune.py # Unsloth/QLoRA training script
│
├── dissartation doc/ # Typst Dissertation Source Document
│ ├── dissertation.typ # Main Typst document containing research write-up
│ ├── template.typ # Typst formatting layout template
│ └── *.png # Empirical results plots (ASR, format, compression)
│
└── src/ # Svelte Presentation Slides (built on Animotion)
├── routes/ # Presentation entry points (+page.svelte)
├── styles/ # Global slides design system (overrides.css)
└── slides/ # Individual presentation slides (100 to 700)
```
## SFT 训练与评估 Pipeline
机器学习实现位于 [dataset/](dataset/) 目录中:
### 1. 数据集生成
- 运行 [refine_dataset.py](dataset/refine_dataset.py) 将原始三元组格式化为系统-用户-响应模式,将有毒的 Markdown 结构映射为干净的“gold distilled”目标技能。
### 2. 微调设置
LoRA/QLoRA 微调在 [Qwen2_5_3B_SKILLmd_Sanitizer_Finetune.py](dataset/Qwen2_5_3B_SKILLmd_Sanitizer_Finetune.py) 中定义:
- **基础模型:** 量化的 4-bit `Qwen2.5-3B-Instruct`
- **PEFT 框架:** 通过 `UnslothSFTTrainer` 进行 Low-Rank Adaptation (LoRA)
- **输出:** 序列化的 GGUF 和 LoRA adapter 权重,用于本地执行。
### 3. 评估测试工具
测试 pipeline 由 [evaluate_proxy.py](dataset/evaluate_proxy.py) 管理:
- 在包含 1,198 个样本的未见过保留测试集中,模拟标准(Base)和越狱增强(Enhanced)攻击。
- 自动计算:
- **ASR-valid:** 攻击成功率(标记逐字 payload 泄露或高关键词重叠度)。
- **格式完整性通过率:** 对 YAML frontmatter 和 Markdown 块进行语法有效性检查。
- **压缩率:** 使用 `unsloth/Qwen2.5-3B-Instruct` tokenizer 进行 token 压缩大小计算。
- 集成本地 Ollama(`/api/generate`)和 LM Studio(`/v1/chat/completions`)服务器端点。
## 交互式 Svelte 幻灯片 (Animotion)
解释此项研究的演示文稿位于 [src/](src/) 目录下,并使用 **Animotion**(一个基于 Svelte 的动画布局框架)构建。
### 在本地运行幻灯片
1. **安装依赖:**
pnpm install
2. **启动开发服务器:**
pnpm dev
在浏览器中打开 `http://localhost:5173/`。
3. **构建生产包:**
pnpm build
这将在 `.svelte-kit/output` 文件夹中生成一个静态构建版本。
### 核心演示功能
- **标题幻灯片 (100):** 自定义样式的落地页幻灯片,展示学位论文标题和元数据。
- **代码审计可视化 (210, 500):** 展示易受攻击的 schema 和微调模板的代码块,采用极具可读性的浅色模型容器样式,并带有纯黑色的代码文本。
- **专属结果页面 (610 到 640):** 独立的幻灯片直接展示性能图表(安全有效性、格式通过率、Token 压缩,以及基线的截断错觉回归图),并留有充足的展示空间。
标签:AI安全, AI风险缓解, Chat Copilot, DLL 劫持, 人工智能, 大语言模型, 实时告警, 提示词注入攻击, 本地部署, 模型微调, 用户模式Hook绕过, 逆向工具