AI Security Studio的ASS Script引擎采用本地LLM(Ollama/llama.cpp),安全扫描全程离线运行。规则引擎先做确定性分析,LLM仅在结构化摘要基础上做推理,避免了LLM直接接触源码带来的幻觉问题。
大多数"AI 驱动"的安全工具都有同一个依赖:你的代码必须离开你的机器才能得到答案。这对于很多安全研究场景来说是不可接受的——无论是 NDA 约束下的客户项目、受监管的代码库,还是单纯不想让专有源代码出现在别人的推理日志里。
AI Security Studio 的架构完全不同:所有操作都在本地运行。使用本地 LLM(Ollama / llama.cpp / LM Studio),不调用外部 API,不进行遥测数据传输。本文将深入介绍这个系统的一个特定组件——我们称之为 ASS Script 的自动化引擎,以及我在其基础上构建的一个小型离线流程,用于生成带旁白和字幕的操作演示视频,全程无需使用云端 TTS API。
确定性优先,LLM 第二
在任何 AI 处理发现结果之前,系统会经过以下流程:
Parser → Rule Engine → Knowledge Retrieval → Summarization → LLM → Reasoning → Finding → Report
静态解析(Roslyn / Tree-sitter)和确定性规则引擎——包括密钥检测、请求头分析、JWT 验证、SQL 注入/XSS 模式匹配——负责实际的漏洞发现。LLM 从不接触源代码,它只在规则引擎已生成的结构化摘要基础上进行推理:解释为什么某处是漏洞、关联各个发现、起草报告内容。如果证据不够充分,系统会设计为提示"需要人工验证"而非凭空生成结论。
一次记录,持续回放
ASS Script(AI Security Studio Automation Script)是一个类似 iMacros 的录制/播放/编辑引擎,构建在应用其他地方使用的节点图设计器之上。脚本采用纯 YAML 格式——可读且支持差异对比,而非模糊的宏 blob:
nodes:
- id: "n5"
kind: "GuiInteract"
title: "Click Find bugs on this URL"
notes: "Imports the URL as a one-host scope. Scope import only — sends no network traffic by itself."
parameters:
control: "ScanUrlButton"
action: "click"
- id: "n9"
kind: "GuiInteract"
title: "Click Scan All"
notes: "Kicks off the panel's real passive sweep — genuinely live crawl traffic, same as a human operator would trigger."
parameters:
control: "ScanAllButton"
action: "click"
- id: "n14"
kind: "RunScan"
title: "Live source scan"
notes: "Runs the real ScanService against the target's own source directory — footage shows a real scan, not a mockup."
parameters:
path: "/path/to/target/source"
每个节点都是一个真实的 GUI 操作或真实的扫描/分析器调用——没有模拟步骤。你录制一次工作流,然后可以从 GUI 或 CLI 完整地回放它(workflow run some-script.adrflow.yaml)。
有趣的附加任务:演示视频的离线旁白
我们想要制作带配音和字幕的操作演示视频,但"生成字幕"这一步通常需要将视频/音频上传到云端转录或 TTS API——对于整个项目的核心卖点"数据不离开你的机器"来说,这有点尴尬。
所以整个流程是:将分镜头列表写成 markdown 表格(节拍 / 时间码 / 画面动作 / 字幕 / 配音文本),然后用一个小 Python 脚本处理:
say 命令合成每条配音(完全离线的 TTS)输出的是 narration.wav + captions.srt 文件对,完全由机器上已有的工具生成——无需 API 密钥,无需云端依赖,与扫描器本身的理念一致。
为什么这在演示视频之外也很重要
这个模式可以推广:将 LLM/AI 步骤视为可选项和可替换的,将确定性的、本地优先的部分放在前面。这对于安全流水线(规则引擎优先于 LLM)和项目的工具链(离线 TTS 优先于云端 TTS)同样适用。如果你的架构在每次说"AI"时实际上意味着"网络调用",这一点值得质疑。