用途
oma-deepsec 用于在目标仓库中安全、可控成本地运行 Vercel 的 Deepsec 安全扫描器:引导 .deepsec/ 工作区、编写精简的 INFO.md、执行扫描/处理/分级/复验/导出流程、通过 process --diff 在 CI 中对 PR 设置安全门禁,并扩展项目专属匹配器,在可控花费内产出经过复验的真实发现。
触发信号:用户提到 deepsec、"deep security scan"、bunx deepsec、pnpm deepsec、npx deepsec;要求智能体扫描仓库漏洞且项目有(或应有).deepsec/ 目录;询问如何添加 deepsec PR/CI 安全门禁或 process --diff、--diff-staged、--diff-working、--files-from、--comment-out;提到 deepsec 产物 INFO.md、SETUP.md、data/<id>/files/、FileRecord、RunMeta、revalidation、triage、自定义匹配器、MatcherPlugin、noiseTier、priorityPaths;询问 deepsec 配置 deepsec.config.ts、defaultAgent、AI_GATEWAY_API_KEY、VERCEL_OIDC_TOKEN、AI Gateway、Vercel Sandbox、--agent codex、--agent claude;询问如何降低 deepsec 成本、减少误报率或解释严重性/分级/复验结论。
主要能力
- 仓库首次安装(init、编写 INFO.md、首次校准扫描)。
- 运行全量或限定范围扫描并处理发现。
- 使用 process --diff 与 --comment-out 建立按 PR 的 CI 门禁。
- 编写项目专属匹配器,覆盖默认集合遗漏的入口点。
- 对积压发现分级(按严重性分桶、通过 revalidate 减少误报、导出到问题跟踪系统)。
- 诊断 deepsec 故障:凭证缺失、AI Gateway 配额停止、拒绝、沙箱认证。
不适用:不使用 deepsec 的通用 OWASP/lint 审查、通用 CVE/依赖公告、非 deepsec 的全新 SAST 流水线架构、应用代码本身的编写或审计、云/IAM/Terraform 加固,以及单纯推理产品代码中的修复方案(应由 oma-debug 处理)。
使用方式
每个仓库的引导(一次性):
cd <target-repo> bunx deepsec init cd .deepsec bun install
Edit .env.local: set AI_GATEWAY_API_KEY=vck_… (or VERCEL_OIDC_TOKEN via vercel env pull)
然后让编码智能体读取 .deepsec/node_modules/deepsec/SKILL.md 与 .deepsec/data/<id>/SETUP.md,浏览 README / AGENTS.md / CLAUDE.md 及若干代表性文件,替换 data/<id>/INFO.md 的每一节(50-100 行,每节 3-5 个示例,不含行号,不复述通用 CWE)。
任何全量扫描前先校准(官方文档推荐 --limit 50 --concurrency 5):
bunx deepsec scan bunx deepsec status bunx deepsec process --limit 50 --concurrency 5
读取运行成本并按比例外推到整个仓库。若用户指定不同的 --limit/--concurrency 值,则采用用户的值。
完整调查、分级、复验、导出:
bunx deepsec process --concurrency 5 bunx deepsec triage --severity HIGH bunx deepsec revalidate --min-severity HIGH bunx deepsec export --format md-dir --out ./findings bunx deepsec metrics
PR 模式(CI 门禁,限定改动文件,退出码 0/1):
bunx deepsec process
--diff origin/${BASE_REF}
--comment-out comment.md
自定义匹配器:阅读 .deepsec/node_modules/deepsec/dist/config.d.ts 中的契约与 samples/webapp/matchers/* 示例;编写 .deepsec/matchers/<slug>.ts,通过 .deepsec/deepsec.config.ts 的内联插件接入;用 bunx deepsec scan --matchers <slug> 验证命中率。
配额停止、网络中断或 Ctrl-C 后:重跑同一命令即可恢复,状态保存在 .deepsec/data/<id>/ 中。
输入与输出
期望输入:target_repo_root(要扫描代码库的绝对路径)、intent(setup | scan | pr-review | matchers | triage | config | troubleshoot)、credential_mode(ai-gateway-key | vercel-oidc | direct-anthropic | direct-openai | subscription)、agent_choice、severity_floor(通常 HIGH);可选已有 .deepsec/data/<id>/、deepsec.config.ts、自定义匹配器、CI 提供方。
期望输出:可用的 .deepsec/ 工作区;已填充的 data/<id>/INFO.md;一次或多次完成的扫描→处理(→分级/复验)运行并附可复现的成本说明;PR 模式下的 CI 工作流文件(基于 process --diff <base>,两作业拆分);匹配器的 .deepsec/matchers/<slug>.ts;发现导出(md-dir 和/或 json)及顶端严重性与误报率摘要;在任何可能超过约 $25 的流程前的明确金额与时间上限计划。
依赖与前置条件
Node.js 22+ 及包管理器(bun/bunx 优先、pnpm、npm、yarn);有效 AI 凭证(AI_GATEWAY_API_KEY=vck_…,或 VERCEL_OIDC_TOKEN,或直接 ANTHROPIC_AUTH_TOKEN + ANTHROPIC_BASE_URL,或已登录的 claude/codex CLI 订阅);Git(revalidate 与 --diff 模式会查询历史);可选 Vercel Sandbox 认证以支持分布式运行;repo 必须是 git 检出。
效果与安全边界
会在目标仓库内创建 .deepsec/(配置、锁文件、脚手架)与 .deepsec/data/<id>/(默认 gitignore);写入 .env.local(绝不提交),可能运行 vercel link/vercel env pull;启动耗资的长时间 AI 进程——据官方成本指南,单次全量扫描约 $25 至 $1,200 以上,超大仓库可达数万美元;读取源码并将片段发送给配置的 LLM(gateway 零保留;直连提供商受其政策约束);绝不外泄机密;用户要求时可写 .github/workflows/deepsec.yml;编写匹配器时编辑 deepsec.config.ts 并新增 .deepsec/matchers/*.ts;除非用户明确授权单独的提交步骤,否则不提交、推送或开 PR。
防护规则:未测量仓库规模前绝不启动无界进程,文件数未知或超过 500 时先做校准;任何 AI 流程前说明成本与停止条件;中断后恢复而非重置,未经明确指示不删除 data/<id>/;INFO.md 保持简短且项目专属(50-100 行,每节 3-5 示例,不含行号);PR/CI 门禁采用两作业模式,绝不给执行 PR 控制代码的作业授予 pull-requests: write;生产 CI 中 actions 固定到完整 SHA;绝不静默丢弃 refused: true 的拒绝;绝不回显或提交凭证。