拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Deepsec 扫描工作区 Agent 配置指南:读懂 AGENTS.md,驱动编码代理完成项目接入、扫描与自定义匹配器

Deepsec 扫描工作区 Agent 配置指南:读懂 AGENTS.md,驱动编码代理完成项目接入、扫描与自定义匹配器 应用安全漏洞扫描人工智能AI Agent【免费下载链接】deepsecDeepsec is a security harness for finding vulnerabilities in your codebase powered by coding agents项目地址https://gitcode.com/gh_mirrors/deeps/deepsec点击查看免费下载本文面向使用 deepsec由编码代理驱动的代码库漏洞扫描工具的开发者与 AI Agent。核心讲解 deepsec 扫描工作区.deepsec/中的入口文档AGENTS.md它如何告诉编码代理“该读哪些文件、执行哪些操作”以及围绕它的三个常见任务——为项目配置扫描SETUP.md INFO.md 流程、注册新项目init-project、编写自定义匹配器。读完本文你将掌握 deepsec 工作区的文件契约、Agent 协作协议与底层实现能够在自己或团队的仓库里复现这套“Agent 辅助安全扫描”工作流。一、AGENTS.md 是什么扫描工作区的 Agent 入口deepsec 是一个“以编码代理为核心”的漏洞扫描工具开发者在自己仓库内创建一个.deepsec/工作区deepsec 用正则匹配器免费的scan阶段 AI 代理process阶段支持 Claude Agent SDK / Codex SDK来发现安全问题可选的 Vercel Sandbox microVM 用于大规模并行。.deepsec/AGENTS.md是这个工作区里专门写给“编码代理”看的入口文档。它的全文核心只有一句话这是一个 deepsec 扫描工作区。每个已注册的项目在data/id/SETUP.md都有自己的设置提示setup prompt——当被要求为某个项目做设置时请打开对应的那个文件。换句话说AGENTS.md本身不承载具体项目的安全上下文它是一份“路由表”把代理引导到正确的、按项目隔离的指令文件并给出三类常见任务的标准操作路径。这也解释了为什么工作区的 README 会把它的角色描述为“Pointer for coding agents”见 .deepsec/README.md。为什么需要这份文件多项目隔离每个项目deepsec、my-app……的上下文存放在data/id/下代理需要按id打开正确的SETUP.md与INFO.md而不是靠记忆或猜测。上下文可提交、可继承data/*/中的INFO.md、SETUP.md、files/*.json逐文件调查缓存都签入 git团队成员和 CI 共享同一份项目上下文CI 可以只重新调查 PR diff 涉及的文件。与 SKILL.md 分层SKILL.md是 deepsec 的“产品技能文档”在哪里找文档、如何回答常见问题、Agent 原生初始化协议而AGENTS.md是“本工作区如何使用”的操作提示两者配合使用。二、工作区目录结构速览要理解AGENTS.md中所有路径的含义先看工作区布局来自 .deepsec/README.mddeepsec.config.ts Project list (one entry per scanned repo) data/deepsec/ INFO.md Repo context — checked in, hand-curated SETUP.md Agent setup prompt — checked in, deletable files/ One JSON per scanned source file — checked in (the investigation cache; CI reads this) project.json Absolute root path (gitignored — flips per machine) runs/ Run metadata (gitignored — pure churn) reports/ Generated markdown reports (gitignored) AGENTS.md Pointer for coding agents .env.local Tokens (gitignored)其中两个文件是AGENTS.md反复指向的核心路径作用是否提交data/id/SETUP.md每个项目的 Agent 设置提示告诉代理“读 skill、填 INFO.md、可选加匹配器”是设置完成后可删除data/id/INFO.md项目上下文信任模型、认证形态、威胁模型、需要标记的模式、已知误报每次扫描批处理都会自动注入 AI 提示词是手工精选维护data/id/files/*.json逐文件的调查缓存FileRecordCI 依赖它实现增量调查是data/id/project.json目标代码库的绝对根路径每台机器不同否data/id/runs/、reports/运行元数据、生成的 Markdown 报告否deepsec.config.ts项目清单每个被扫描仓库一条记录是.env.local各厂商 TokenANTHROPIC_AUTH_TOKEN、OPENAI_API_KEY、AI_GATEWAY_API_KEY、VERCEL_TOKEN等否一个真实的例子本仓库工作区已注册项目deepsec目标为..即仓库根对应的 .deepsec/data/deepsec/SETUP.md 和 .deepsec/data/deepsec/INFO.md 就是AGENTS.md中data/id/SETUP.md、data/id/INFO.md的落地形态。三、常见任务一为项目配置扫描SetupAGENTS.md给出的标准流程是读取data/id/SETUP.md并遵循它按 SETUP.md 的指引先读node_modules/deepsec/SKILL.md安装后位于工作区内再从目标代码库整理内容填入data/id/INFO.md。展开看 .deepsec/data/deepsec/SETUP.md它给代理下达了更具体的指令1. 阅读 deepsec skill安装完成后skill 位于.deepsec/node_modules/deepsec/SKILL.md。它把每个文档主题映射到node_modules/deepsec/dist/docs/下的一个文件。SETUP 要求至少精读getting-started.md、configuration.md、writing-matchers.md其余可略读。这些文档在仓库源码中对应 docs/getting-started.md、docs/configuration.md、docs/writing-matchers.md。2. 填写 INFO.md50–100 行的精选上下文INFO.md会在每一个扫描批处理中被自动注入 AI 提示词因此 SETUP.md 明确给出了长度预算与写作规范总长度 50–100 行。过长的上下文会稀释扫描器提示词窗口里的信号。目标是回答“如果评审者没读这些会漏掉什么”而不是穷举枚举。每个小节选 3–5 个代表性条目不要罗列所有文件、辅助函数或调用点——选模式。用公共名称命名原语如withAuthentication、auth.can()、isTeamAdmin不写行号任何列表中的路径不超过 5 个。跳过通用 CWE 类别内置匹配器已经覆盖 “SSRF”“SQL injection”“XSS”。要覆盖项目特有的东西内部认证辅助函数、自定义中间件名称、分支特有的桩代码、有意公开的端点。每节只写一段短段落或 3–5 条短要点不要两者都写。这些规范也固化在init-project的模板里见 packages/deepsec/src/commands/init-project.ts 的infoMdTemplate模板预置了五个小节What this codebase does、Auth shape、Threat model、Project-specific patterns to flag、Known false-positives。参考素材的阅读顺序SETUP.md 推荐目标仓库的README.md→ 任何AGENTS.md/CLAUDE.md→package.json或go.mod、pyproject.toml等→ 5–10 个代表性代码文件入口点、认证辅助函数而不是一次完整的代码浏览。本仓库填充完成的示例见 .deepsec/data/deepsec/INFO.md——它开篇就是信任模型Trust model明确列出哪些输入是受信任的、真正的信任边界在哪里这正是“项目特有上下文”的典范。3. 设置完成的收尾SETUP.md 末尾会给出设置完成后由用户执行的命令pnpm deepsec scan --project-id deepsec pnpm deepsec process --project-id deepsec并注明设置完成后该 SETUP.md 文件可以删除。四、常见任务二注册新项目init-projectAGENTS.md给出的命令是deepsec init-project root它会脚手架化data/id/并打印/写入新项目的设置提示。具体来说实现见 packages/deepsec/src/commands/init-project.ts向上查找最近的deepsec.config.ts依次尝试deepsec.config.ts、.mjs、.js、.cjs找不到则报错并提示先运行deepsec init项目id默认取目标根目录的 basename可显式传--idid 必须通过严格白名单校验见下文写入三样东西并更新配置data/id/project.json经由ensureProject自动探测githubUrldata/id/INFO.md占位模板带“设置未完成”标记data/id/SETUP.md按项目生成的 Agent 设置提示向deepsec.config.ts的projects[]中追加{ id, root }条目。其中向配置文件插入项目记录依赖一个约定标记// deepsec:projects-insert-above。insertProjectIntoConfig会在这个标记上方以相同缩进插入新条目如果标记缺失init-project会直接报错并给出手工添加的替代写法{ id: my-app, root: ../my-app },本仓库工作区的配置即为此产物见 .deepsec/deepsec.config.ts其中root被规范化为 POSIX 分隔符..以保证跨平台Windows 贡献者不会产生..\foo\bar这种难看且 diff 嘈杂的相对路径。项目 id 的合法性约束从源码结构看id会流向路径拼接、沙箱sh -c插值、git 提交信息等多个下游调用点因此所有入口统一经过 packages/deepsec/src/resolve-project-id.ts 的严格白名单/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/即字母/数字开头只能含字母、数字、点、下划线、连字符最长 64 字符且不能以分隔符开头。这能一次性拦下..、路径分隔符、shell 元字符和空白字符。如果工作区配置里只有一个项目--project-id可以省略自动解析一旦添加了第二个项目就必须显式传--project-id id否则会因歧义报错——这与 .deepsec/README.md 中的说明完全一致。五、常见任务三编写自定义匹配器AGENTS.md对自定义匹配器给出了一个非常重要的约束只在一个真实的 true-positive 向你展示出值得保留的模式之后才去写自定义匹配器。也就是说不要投机性地添加匹配器等待一个确凿的真实正例出现再把它固化成检测模式。操作入口是node_modules/deepsec/dist/docs/writing-matchers.md仓库源码对应 docs/writing-matchers.md。工作区中的自定义匹配器放在.deepsec/matchers/下并在deepsec.config.ts中通过插件机制注册。本仓库提供了一个完整范例 .deepsec/matchers/archive-extraction-untrusted.ts它针对“tar/zip 解压到磁盘但缺少显式条目路径校验”的场景CWE-22 CWE-59即 Zip Slip / Tar Slip 家族具体动机是 deepsec 自身的安全模型packages/deepsec/src/sandbox/download.ts会把从远端 Vercel Sandbox 收到的 tarball 解压到本地data/id/镜像而按威胁模型沙箱返回的任何内容都是攻击者可控的——内置的rce匹配器能命中spawn调用但不会推理归档条目路径它用一组正则识别tar -x、execSync tar x、tar.x/extract、unzipper.Extract、extract-zip、decompress、adm-zip extractAllTo等解压模式同时带一个“边界提示”抑制机制如果在解压调用约 6 行内出现path.relative(...).startsWith、realpath、path.normalize(entry、onentry等校验特征则跳过这是为了削减明显噪声属于“不完美但有效”的启发式匹配器跳过*.test.*/*.spec.*与.d.ts文件避免测试数据和类型声明产生误报。注册方式见 .deepsec/deepsec.config.tsimport { type DeepsecPlugin, defineConfig } from deepsec/config; import { archiveExtractionUntrusted } from ./matchers/archive-extraction-untrusted.js; const deepsecPlugin: DeepsecPlugin { name: deepsec-internal, matchers: [archiveExtractionUntrusted], }; export default defineConfig({ projects: [ { id: deepsec, root: .. }, // deepsec:projects-insert-above ], plugins: [deepsecPlugin], });这里也印证了INFO.md信任模型里的一句话deepsec.config.ts经由jiti加载packages/deepsec/src/load-config.ts从中加载任意代码是设计使然——这正是插件机制工作的方式它不是沙箱边界。六、参考资料SKILL.md 与 dist/docsAGENTS.md最后给出两类参考资料deepsec skillnode_modules/deepsec/SKILL.mdpnpm install之后存在。仓库中的源文件是 packages/deepsec/SKILL.md其中包含完整的“在哪里找文档”清单与“如何回答常见问题”映射表例如“如何安装/初始化”→“getting-started.md”“deepsec.config.ts里放什么”→“configuration.md samples/webapp/deepsec.config.ts”以及面向非 TTY Agent 会话的初始化协议先用npx deepsec init --plan --output json查看只读计划再按需执行npx deepsec init --yes --model-profile value --output jsonl把每一行输出解析为 JSON遇到needs_input时把消息与动作展示给用户而不是自行编造补救方案退出码 2 表示需要输入、3 表示触发了成本/时长边界。完整文档包node_modules/deepsec/dist/docs/包括getting-started、configuration、models、writing-matchers、plugins、architecture、data-layout、vercel-setup、faq。仓库根目录 docs/ 下即这些文档的源文件。七、实践要点日常命令与安全边界把AGENTS.md的流程串起来一个工作区的典型日常是来自 .deepsec/README.mdpnpm install # 安装 deepsec 与 skill pnpm deepsec scan # 免费阶段仅正则匹配 pnpm deepsec process --concurrency 5 # AI 阶段代理逐文件调查 pnpm deepsec revalidate --concurrency 5 # 复核显著降低误报率 pnpm deepsec export --format md-dir --out ./findings # 导出报告其中scan是纯正则、免费process是 AI 阶段默认在 Opus 上约 $0.30/文件。--project-id在只有一个项目时可省略多项目时必填参见上文第四节。工作区还把团队已评审并有意接受的残余风险记录在 README 中值得在接入时一并了解CodexsandboxMode: danger-full-access见 packages/processor/src/agents/codex-sdk.tsCodex 内置沙箱会拒绝约 7% 完全合法的只读命令cat/sed/rg而被拒绝的工具调用会静默破坏裁决结果因此项目选择禁用其沙箱以保证调查可靠。安全做法是本地对不信任的目标默认--agent claude-agent-sdkCodex 优先走deepsec sandbox-all的 Vercel Sandbox microVM 扇出路径确需在宿主机直跑 codex 时只针对“你本人也愿意亲自执行其内容”的仓库。commitAndPushData的脱敏是尽力而为而非绝对可靠见 packages/deepsec/src/data-commit.tsscrubCommittedDataDir()会删除SECRET_SLUGSsecrets-exposure、secret-in-log、jwt-handling、env-exposure等 8 个对应的 snippet并对残留片段做CREDENTIAL_RE兜底扫描不通过则拒绝提交。它的已知缺口是不在SECRET_SLUGS里的新机密类匹配器可能漏过脱敏正则也覆盖不了所有凭据格式如 Terraformdata块里的长明文 token。因此约定新增机密类匹配器时同步把其 slug 加进SECRET_SLUGS且不要在没有核对SECRET_SLUGS与匹配器清单packages/scanner/src/matchers/index.ts的情况下把commitAndPushData指向公共数据仓库。结语.deepsec/AGENTS.md是 deepsec 工作区里一份小而关键的路由文档它把编码代理引导到按项目隔离的SETUP.md/INFO.md定义了“配置扫描、注册新项目、编写自定义匹配器”三个标准任务的执行协议并把 skill 与完整文档包作为权威参考。配合init-project的脚手架实现、resolve-project-id的严格校验、以及 README 中坦诚记录的已接受风险你可以在任何仓库复现这套“代理辅助漏洞扫描”的工程化流程——从首次pnpm deepsec scan到多项目、自定义匹配器与 CI 增量调查的完整闭环。赞分享应用安全漏洞扫描人工智能AI Agent【免费下载链接】deepsecDeepsec is a security harness for finding vulnerabilities in your codebase powered by coding agents项目地址https://gitcode.com/gh_mirrors/deeps/deepsec点击查看免费下载相关推荐Deepsec 扫描工作区实战指南在 .deepsec/ 中配置、运行并维护 AI 驱动的代码安全扫描Deepsec 扫描工作区实战指南在 .deepsec/ 中配置、运行并维护 AI 驱动的代码安全扫描 .deepsec/ 是 Deepsec一个由编码 A应用安全漏洞扫描人工智能AI AgentncmdumpGUI网易云音乐NCM格式转换完全指南解锁音乐播放自由ncmdumpGUI网易云音乐NCM格式转换完全指南解锁音乐播放自由 你是否曾在网易云音乐下载了心爱的歌曲却发现在其他播放器或设备上无法播放这种格式限制应用安全漏洞扫描人工智能AI Agent在 Novu 仓库中落地 deepsec从零配置一套正则 AI驱动的代码安全扫描工作区在 Novu 仓库中落地 deepsec从零配置一套正则 AI驱动的代码安全扫描工作区 Novu 是一个以 Nx monorepo 形态组织、含 Ne后端消息路由前端通信AI Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表