Lagune 和 Deepsec(v2.2.1)是两种防御性方案,针对的是同一个问题:AI 辅助开发时代的安全。即使在机制上有重叠,两者的前提、从开始到结束的整个过程,以及在用户面前的呈现方式,都是有意设计得不同的。
Lagune 是受 Deepsec 启发的吗?不是。Lagune 从零开始编写,灵感来自 Spec-Driven Development 和 Security Hardening。两个项目是各自独立开发的,这里的对比是为了帮助用户了解它们之间的差异。
速览
| 方面 | Lagune | Deepsec |
|---|---|---|
| 类型 | 一套方法论(SDH),附带一个参考实现 | 一个产品:由智能体驱动的漏洞扫描器 |
| 核心 | 由安全原则和按需加载的知识驱动智能体,并以确定性 hook 为基础 | 大范围的正则表达式网为必需的 AI 调查提供输入 |
| 产出 | 加固后的代码、证明,以及一条可追踪的发现项链路 | 一份按严重程度排序、经过研判的发现项报告 |
| 是否改动代码 | 是:harden 会编辑你的代码 | 否:只做静态分析,输出发现项和建议文本 |
| 运行方式 | 在你已经在用的智能体和模型上运行,任何档次的模型都可以 | 运行自己的模型流水线,默认使用前沿级模型 |
| 快速开始 | 安装一个插件或运行 npx skills add,然后用日常语言驱动它,无需搭建新工具 | 搭建 .deepsec/ 工作区,安装依赖,再添加模型密钥 |
工作原理
Lagune 以智能体为先:由智能体主导,根据代码的实际情况按需调入知识,并把能够确定判定的那部分交给确定性 hook。
Deepsec 以确定性为先:大范围扫描标记出候选项,告诉必需的模型该调查和判断什么。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 顺序 | 安全原则和匹配到的知识引导智能体,智能体把一部分交给 hook,其余自己判断 | 匹配器标记候选项,模型逐一调查并判断 |
| 确定性部分的作用 | 多语言 hook,给出判定结果或为智能体指明方向,并结合类别知识 | 匹配器标记候选项,交给必需的模型判断 |
| 开发流程 | /lagune 在你写代码的同时安全地构建 | 它只审查代码,不编写代码 |
| 审计流程 | charter → detect → plan → harden → verify | scan → process → triage → revalidate → report |
| AI 的任务 | 依据知识推理,应用修复,并证明修复确实有效 | 调查每个候选项并报告发现项 |
生命周期
Lagune 在代码编写之前、之中和之后都能发挥作用。Deepsec 则在代码写好之后审查仓库。
| 时机 | Lagune | Deepsec |
|---|---|---|
| 代码还不存在时 | charter 根据你表达的意图制定安全策略 | 从已有代码开始:init 需要一个目录 |
| 开发过程中 | /lagune 在编写过程中按默认安全的方式构建,不留下任何产物 | 在开发完成后审查,而不是在开发过程中 |
| 针对已有代码 | detect → plan → harden → verify | scan → process,即核心流程 |
| 持续审查 | 按范围重新运行各阶段,没有现成的 CI 门禁 | 增量重新扫描,用 process --diff 作为 CI 的退出门禁 |
检测层
两者的确定性层性质相反:一个负责判定,另一个负责标记。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 组织方式 | hook 和专项,按类别分组 | 按模式或框架划分的匹配器 |
| 输出 | 明确的判定结果(finding / review / advisory),外加一个分类标签 | 不带判定结果的候选项(slug、行号、代码片段、匹配到的模式) |
| 调校方向 | 精确率:能识别注释,并带有占位符防护和窗口防护 | 召回率:撒大网,之后由 AI 剔除误报 |
| 深度 | 在两者都覆盖的问题类型上更深入 | 覆盖更广,但在两者都覆盖的问题类型上没那么深入 |
| 误报 | 从源头压低,再结合上下文判定 | 有意多报,再通过一轮 revalidate 削减 |
知识与判断
两者都具备正则表达式无法承载的安全知识。区别在于这些知识放在哪里,以及谁能塑造它们。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 形式 | 可编辑的 Markdown 模块,其中一些有确定性 hook 作为支撑 | 一段简短的提示词加上按技术划分的要点,依靠模型自身的知识 |
| 选取方式 | 与代码匹配,只在相应场景存在时加载 | 注入每个 AI 批次,再加上针对检测到的技术的要点 |
| 由谁编写 | 用户编辑模块,并用 specialize 添加新模块 | 提示词由维护者掌控,用户填写一份 INFO.md |
| 判断由谁做出 | hook 负责判定基础层,其余由智能体依据知识判断 | 集中式:由一个 AI 处理器判断所有候选项 |
| 复用 | 同一个模块同时指导 detect 和 verify | 一段提示词驱动唯一的 process 阶段 |
发现项与结案
两者分歧最大的地方,在于发现项解决之后会变成什么。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 严重程度 | CVSS v4.0 评分,并根据暴露程度和利害关系调整 | 由 AI 给出的严重程度,外加按可利用性和影响划分的 P0 / P1 / P2 分级 |
| 判定结果 | Risk closed、Risk not closed 或 Cannot tell from the code | true-positive, false-positive, fixed, uncertain, accepted-risk, duplicate |
| 持久化 | 工作链路持续核对更新,已结案的发现项提炼成历史记录 | 按文件记录,只增不删 |
| 最终状态 | 可结案:已证明的发现项会结案,链路可以进入静止状态 | 每个发现项都永久保留,解决后从视图中隐藏 |
| 历史详情 | 对风险本身的简要总结 | 完整的判定记录,包括它是如何修复的 |
成本
| 方面 | Lagune | Deepsec |
|---|---|---|
| 确定性基础层 | 免费:hook 无需 AI、无需密钥即可运行,并且已经会给出判定结果 | 免费:scan 无需 AI 即可运行,但本身不给出判定结果 |
| 常见开销 | 包含在你已经在用的智能体里:用本地模型可低至 $0,否则就是你现有套餐的价格,或在基于 API 的使用中按迭代计费 | 每次运行 100 到 2,000 个文件约需 $25 到 $1,200,规模更大时更贵 |
| 最省钱的方式 | 任何模型都能走完整个循环,包括免费的本地模型 | 有更便宜的付费档位,但要得到发现项,仍离不开付费的 AI 阶段 |
可扩展性与治理
一方开放的那一层,正是另一方保持封闭的。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 可以扩展什么 | 编辑模块,或通过 specialize 添加新模块 | 添加匹配器、智能体、通知器和代码归属 |
| 策略层 | 安全原则管辖每个阶段,并纳入版本管理 | 配置是运行层面的(匹配器、模型、路径) |
| 按名称覆盖 | 改进后的模块会覆盖同名的内置模块 | 匹配器 slug 冲突时,以你的匹配器为准 |
界面
Deepsec 为安全团队产出交付物。Lagune 则为运行它的人呈现实时视图。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 面向人的界面 | 一个本地实时仪表盘,用通俗的语言展示整条链路 | 报告、导出、指标和 PR 评论文件,外加一个文档站点 |
| 责任归属 | 列出相关文件和所应用的专项 | 给出建议的负责人:值班人员、经理或提交者 |
| 可复现的证明 | prove 编写可运行的测试和一份用于披露的安全公告 | 按设计保持静态,从不执行目标代码 |
| 工具自身防护 | 加固仪表盘上的本地写入 API | 加固自身的 AI 执行环境,防范不可信的目标代码 |
规模与部署
| 方面 | Lagune | Deepsec |
|---|---|---|
| 安装 | 通过智能体的插件或 skills CLI 安装九个命令,不生成任何脚手架 | 一个 .deepsec/ 工作区,带有自己的包和依赖 |
| 规模取向 | 可以限定到任意范围:某个场景,或从单个文件到整个项目 | 扫描整个仓库,最大可到大型 monorepo |
| 分布式运行 | 仅限本地,唯一的服务器绑定在回环地址上 | 可选择分发到多台 Vercel Sandbox 工作虚拟机上并行执行 |
用户体验
两者各自如何面对使用者:第一次运行需要什么,以及操作者如何为它指定方向。
上手
Lagune 直接通过已经打开的智能体运行。Deepsec 则要先准备好自己的工作区和模型访问权限。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 第一条命令 | 安装插件或运行 npx skills add wellwelwel/lagune,然后在智能体中使用 /lagune-* | npx deepsec init,然后依次执行 cd .deepsec、pnpm install、scan、process |
| 运行所需凭证 | 不需要额外的密钥,直接使用你当前的智能体 | 一个模型密钥(例如 AI Gateway、有效期 12 小时的 Vercel OIDC 令牌或 Anthropic 令牌) |
如何驱动
两者都接受指引。Lagune 在每个阶段都会识别输入的形式。Deepsec 则缩小同一套调查所覆盖的文件范围。
| 方面 | Lagune | Deepsec |
|---|---|---|
| 整个项目 | 不带输入运行某个阶段,就会扫描整个范围 | scan 和 process 扫描整个仓库 |
| 局部范围 | 任何阶段都可以限定到指定的文件或目录 | 用 --files、--files-from 或 --diff 缩小运行范围 |
| 某个顾虑 | 阶段可以限定到你描述的某个担忧 | 调查用的提示词是固定的 |
| 某个优先级 | harden 和 verify 可以限定到严重、高危、中危或低危 | 发现项在运行结束后才打上标签 |
| 单个值 | hook 直接为单个代码片段、模式或 URL 评分(--pattern、--url) | 工作单位是文件 |
常见问题
Lagune 以智能体为先,在代码编写之前、之中和之后都能发挥作用:写代码之前先制定策略,开发时在编写过程中直接加固,并对已经写好的代码进行审计、加固和验证。Deepsec 以确定性为先:大范围的正则表达式扫描为必需的前沿模型调查提供输入,这项调查会审查已有代码并报告发现项,但不会修改代码。
Lagune 的完整流程可以在免费的本地模型上以 $0 运行,它的确定性 hook 完全不用 AI 也能给出判定结果。Deepsec 的扫描是免费的,但不给出判定结果,所以任何发现项都要依靠它付费的 AI 阶段。
Lagune 会:harden 会把修复应用到你的代码中。Deepsec 不会:它只做静态分析,输出发现项和建议文本,由人或智能体另行应用。
