deepsec 拆解:Vercel 把全量代码深度审计压成一行 npm 命令,账单可能上万刀
一、速览:值不值得你花时间
推荐指数:★★★★☆(4 / 5)
给到这个分数的理由:它把「AI 代码审计」这件事的定位想清楚了,而且敢把代价写在脸上。绝大多数 AI 安全工具都在卷「快」和「便宜」—— 接 CI、扫 diff、几分钟出结果。deepsec 走的是反方向:它明确说自己是 on-demand review of all code in existing large-scale repos,目标是那些「在应用里潜伏了很久的、难找的问题」,并且默认用最好的模型、最高的 thinking level。
最让我欣赏的是 README 第一段就把成本讲明白了:
…meaning scans can cost thousands or even tens-of-thousands of dollars for large codebases. Our customers have found the cost worth it for how quickly they were able to patch vulnerabilities that would have otherwise gone unfixed.
在一个普遍对 token 成本含糊其辞的领域,这种直白是稀缺品。配套的 --max-cost-usd 100 --max-duration 2h 也让成本变得可控 —— 你能在开跑前就把上限钉死。
扣掉的一颗星,主要在这几处:成本是真门槛,个人和小团队基本用不起全量模式;项目只有 5 个月(2026-04-30 才创建),Vercel Labs 的项目本身也带实验性质;默认走 Vercel AI Gateway,虽有 --model-auth direct 自带 key 的旁路,但主路径是绑 Vercel 生态的;以及 69 个 open issues 对于 8k star 来说不算少。
关键数据(截至 2026-10-01)
| 出品方 | Vercel Labs |
| 语言 | TypeScript(npm 包 deepsec) |
| Star / Fork | 8,044 / 488 |
| 提交 / Open Issues | 104 / 69 |
| 许可证 | Apache-2.0 |
| 首次提交 | 2026-04-30(约 5 个月) |
| 最近提交 | 2026-09-23(8 天前) |
| 成本量级 | 大型代码库 数千~数万美元(官方明示,可设上限) |
| 模型接入 | 默认 Vercel AI Gateway;支持自带 OpenAI / Anthropic / 自定义 HTTPS provider |
| 官方站点 | https://deepsec.sh/ |
适合谁
| 人群 | 分 | 理由 |
|---|---|---|
| 有存量大型仓库的中大型团队 | 5 / 5 | 定位完全对口:一次全量深挖,找埋了很久的洞 |
| 企业安全运营 | 4 / 5 | 有成本上限和沙箱方案,可控;但要先说服预算 |
| DevSecOps 工程师 | 3 / 5 | process --diff 能做 PR 门禁,但那不是它的主场景 |
| 安全研究员 | 3 / 5 | 工程完整度高,但方法论没有特别新的东西 |
| 个人开发者 / 小团队 | 1 / 5 | 成本直接劝退,全量模式不是给这个体量设计的 |
二次开发
| 难度 | 说明 |
|---|---|
| 改配置 | 低 —— npx deepsec init 交互式引导,选模型(带 benchmark 分数和价格对比)和付费方式;--max-cost-usd / --max-duration 直接限 |
| 改集成 | 低 —— 有 report / export --format md-dir / metrics / triage,文档覆盖 CI 与 coding agent 两种跑法 |
| 改内核 | 中 —— 有 docs/writing-matchers.md 可写 matcher、有 plugins 机制;Apache-2.0 也友好 |
二、它是什么,不是什么
- 不是 CI 里每次提交都跑的快速门禁。它的定位是按需全量,不是增量。想跑 diff 也有
process --diff,但那是附带模式。 - 不是一个规则扫描器。
scan那一步确实用 regex matcher 且免费、不用 AI,但真正的价值在process(AI 调查)这一步。 - 不是传统 SAST 的替代品。SAST 靠已知规则模式匹配;它靠模型在代码上下文里推理「这里是不是有问题」。
- 不是只看你写的代码。
enrich能补 git committer 信息,配合 plugin 还能补 ownership 数据 —— 也就是说它关心「这个洞该谁修」。
提炼三个关键词:all-code, on-demand(全量、按需)、maximum thinking level(最高推理档位)、resumable(可中断续跑)。
三、工作流:scan → process → revalidate 三段式
这是理解 deepsec 的核心。它把一次审计拆成几步,每步的成本和价值都不一样:
| 命令 | 作用 | 是否用 AI |
|---|---|---|
scan |
用 regex matcher 找候选点 | 否(快,免费) |
process |
AI 调查候选点,产出 finding + 修复建议 | 是(主要成本) |
process --diff |
PR 模式:只扫 diff 里改动的文件 | 是 |
triage |
P0/P1/P2 轻量分级 | 是(用便宜模型) |
revalidate |
复查已有 finding,并查 git history 看是否已修 | 是 |
enrich |
补 git committer 信息 +(plugin)ownership 数据 | — |
report |
单项目的 Markdown + JSON 摘要 | — |
export |
每条 finding 的 JSON,或 markdown 文件目录 | — |
metrics |
跨项目统计:severity 分布、按类型的漏洞数、TP 数 | — |
status |
项目镜像快照 | — |
sandbox <cmd> |
在 Vercel Sandbox microVM 上跑以上任意命令 | 是 |
几个我认为设计得好的点:
1)scan 和 process 分开。 先用免费的正则 matcher 把候选点收窄,再让贵的模型只看这些候选。这是对 token 成本最基本的尊重 —— 直接把整个仓库丢给模型是不可行的。
2)triage 用便宜模型做分级。 P0/P1/P2 这种粗分类不需要最强模型,省下来的钱用在 process 上。
3)revalidate 会查 git history。 它会检查已有 finding 是不是已经被修掉了。这一条很实用 —— 存量审计报告最大的问题就是跑一次之后 finding 慢慢过期,没人维护。
4)可中断续跑。 Ctrl-C、断网、额度花光,重新跑同一条命令就行,它会跳过已分析的文件只查剩下的。对动辄跑几小时的全量审计来说,这个特性是必需品而不是加分项。
四、成本:这是选型时第一个要问的问题
官方原文说得很直白:用最好的模型 + 最高 thinking level(--thinking-level 可调),大型代码库数千到数万美元。
这个数字要怎么看?我的理解:
- 它的定价逻辑不是「每次提交几块钱」,而是「一年做几次深度体检」。 按这个心智模型,一次几千刀换一批「本来会一直没人修」的漏洞,对中大型团队是划算的。
- 成本是可以钉死的。
--max-cost-usd 100 --max-duration 2h能同时限金额和时长。开跑前先设这两个,是唯一负责任的做法。 scan免费。 你可以先跑scan看候选点有多少,据此估算process的量级,再决定要不要放开预算。这是个很好的成本控制路径。triage用便宜模型,也能压成本。
给决策者的建议:别问「deepsec 多少钱」,先问「我们仓库有多少候选点、我们愿意为一次全量审计付多少」。用 --max-cost-usd 试一次小规模,拿到实际单价再外推。
五、分布式执行:把活撒到 microVM 上
大仓库靠单机跑太慢,deepsec 支持 fan out 到 Vercel Sandbox microVM:
1 | pnpm deepsec sandbox process --project-id my-app --sandboxes 10 --concurrency 4 |
安全上的两个细节值得单独说:
- 本地工作目录被打包上传,但
.git被排除。 - 模型凭证留在 host 侧,只在选定的 egress host 注入。
这两条组合起来,意味着 worker 沙箱里既拿不到完整 git 历史,也拿不到 API key。
deepsec 自身的安全模型(官方原话,必须照抄)
Treat
deepseclike a coding agent with full shell access on the environment that it is running on.
也就是说,默认把它当成一个有完整 shell 权限的 coding agent。它设计上跑在可信输入(你的源码)上,但官方承认:外部依赖或 vendored 代码可能带来 prompt injection。
跑在沙箱里能显著降低暴露面:
- coding agent 的 API key 在沙箱外注入,因此无法被外带
- worker 沙箱的网络出口被限制在 coding agent 的主机(bootstrap 阶段允许出网,但那一步不跑 coding agent)
实践结论:不要在承载敏感凭证的生产机上裸跑 deepsec。 要么用 sandbox 模式,要么给它一个干净的一次性环境。
六、上手
初始化
在要扫描的仓库根目录:
1 | npx deepsec init |
这条命令会引导你走完全部流程:选 AI 模型(带 benchmark 分数和价格对比)、选付费方式(你自己的 OpenAI/Anthropic key,或 Vercel AI Gateway),然后无人值守地跑完 —— 学习代码库、扫描、AI review。
它往你的仓库里只加一个 .deepsec/ 目录,所有状态和 finding 都在里面。
限成本
1 | npx deepsec init --max-cost-usd 100 --max-duration 2h |
出报告
1 | cd .deepsec |
后续扫描(在 .deepsec/ 里操作)
1 | pnpm deepsec scan # 快速 pattern 扫描,免费 |
自带 key(不依赖 Vercel 账号)
1 | npx deepsec init --model-auth direct --ai-provider anthropic --ai-api-key-env ANTHROPIC_API_KEY |
官方明确:deepsec 只存储持有 key 的环境变量的名字,绝不存储 key 本身。
如果 process 或 revalidate 因为上游额度/信用用完而中断,它会优雅停止并告诉你在哪充值,重跑同一条命令即可续上。
给 agent 读的文档
初始化之后,agent 可以直接读与已安装 CLI 版本精确匹配的文档:
.deepsec/node_modules/deepsec/SKILL.md.deepsec/node_modules/deepsec/dist/docs/
setup 报错时会把这些路径以绝对、机器可读的形式暴露出来。这个设计很贴心 —— 让 coding agent 自己读文档,而不是靠模型记忆里的旧版 API。
七、边界与风险(必须诚实说的部分)
1)成本是最硬的门槛,没有之一。 数千到数万美元不是营销话术,是官方文档。个人、小团队、开源项目基本与全量模式无缘。务必先设 --max-cost-usd。
2)项目只有 5 个月。 2026-04-30 创建,104 次提交。对一个要跑数小时、花数千美元的工具来说,成熟度是真实风险。而且 Vercel Labs 的项目定位本身就带实验性质,路线可能变。
3)默认路径绑 Vercel 生态。 默认走 Vercel AI Gateway,分布式执行依赖 Vercel Sandbox。虽然有 --model-auth direct 可以完全绕开,但主路径和最佳实践文档都是围绕 Vercel 写的。不想进这个生态的话,可用性会打折扣。
4)要当成有完整 shell 权限的 agent 对待。 官方自己说的。外部依赖和 vendored 代码存在 prompt injection 面。别在带生产凭证的机器上裸跑。
5)69 个 open issues。 对 8k star、5 个月的项目来说,这个数量说明迭代压力不小。考虑到单次运行成本高,踩到坑的代价也高。
6)全量模式的耗时和 CI 不相容。 这是定位使然,不是缺陷,但意味着你需要两套工具:CI 里用快的,定期用 deepsec 做深度体检。别指望它一个顶两个。
7)revalidate 是「可选」的。 README 里标着 optional,说它能降低误报率。考虑到 AI 审计的误报本来就不低,如果预算允许,这一步不该省;但这也意味着成本要再往上加。
八、上手建议(按这个顺序来)
- 先只跑
scan。 它免费、不用 AI,能告诉你候选点有多少。用这个数字估算process的量级,再决定预算。这一步别跳过。 - 第一次
init一定带上--max-cost-usd。 建议从一个你能承受全损的数字开始(比如 50~100 刀),看清楚单价和产出质量再放量。 - 先在一个中等规模、你自己熟悉的仓库上跑。 熟悉意味着你能判断它的 finding 有多少是真阳性 —— AI 审计的误报率只有你能就地验证,别一上来就在陌生大仓上花大钱。
- 用
triage做分级,revalidate降误报。 前者省后面的钱,后者提高结论可信度。预算有限时优先保revalidate。 - 敏感仓库务必用 sandbox 模式。
pnpm deepsec sandbox process --sandboxes 10 --concurrency 4,凭证留 host 侧、.git不上传。别在有生产凭证的机器上裸跑。 - 接 CI 的话用
process --diff。 那是 PR 门禁模式,只看改动文件,成本可控。全量模式不要放进每次提交。 - 把它当「一年几次的体检」,不是「每天的门禁」。 这个心智模型对了,预算谈判和排期都会顺很多。
九、一句话结论
如果你手上有一个跑了很多年、从没被 AI 认真翻过的存量大仓库,deepsec 是目前把「全量深度审计」工程化得最完整的开源选择 —— 但请先设好 --max-cost-usd,并且接受它是一次体检而非门禁的事实。
给团队的第一动作:npx deepsec scan(免费)跑一遍看候选点规模 → 据此定预算 → npx deepsec init --max-cost-usd 100 试一次 → 用 export --format md-dir 出报告,自己核一遍真阳性率。 真阳性率合格,再谈放量。