Agent Substrate 安全状态报告技能(security-status-report SKILL)实战指南:基于威胁模型驱动的多子代理安全评审流水线
人工智能AI AgentAgent 沙箱云原生容器运行时零信任【免费下载链接】substrateAgent Substrate: the core system项目地址https://gitcode.com/GitHub_Trending/substrate7/substrate点击查看免费下载导读security-status-report是 Agent Substrate 仓库核心目录cmd/、internal/、pkg/对应其 ate-api-server、atelet、ateom 等组件中内置的一项 AI Agent 技能SKILL其目标是把 docs/threats.json 中登记的 43 项威胁T-01 至 T-43批量分发给多个子代理并行评审为每项威胁计算 0.01.0 的缓解质量评分最终汇总为一份 JSON 安全状态报告并渲染成可视化柱状图。读完本文你将掌握该技能的完整工作流、三个 Python 脚本template_dispatch.py、compile_report.py、render_chart.py各自的作用与调用方式、子代理输出 JSON 的 schema 约束以及如何把评分结果回溯到 docs/threat-model.md 中对应的威胁条目以指导安全加固决策。技能定位威胁模型如何驱动 AI 安全评审Agent Substrate 的安全态势由两份同源资料共同描述docs/threat-model.md人类可读的威胁模型文档包含系统架构ate-api-server、atelet、ateom、Worker、Actor、atunnel、atenet-router、对象存储、PostgreSQL、Kubernetes 等关键组件与按攻击面分组的威胁表外部网络攻击、内部网络与 API 客户端、配置错误风险、来自 Actor 的攻击、来自节点的攻击、内部人员攻击、检测与响应docs/threats.json机器可读的威胁清单每条威胁包含threat_id、priorityCritical / High / Medium / Low、threat、mitigating_invariants、suggested_concrete_mitigations、notes六个字段。security-status-report技能正是架设在两者之间的自动化桥梁它不依赖人工逐条阅读威胁模型文档而是以docs/threats.json为数据源把每项威胁作为独立任务分发给子代理让子代理Review the entire repo通读整个仓库后针对该项威胁给出当前安全态势的直觉评分与证据引用。这与威胁模型文档中应从本威胁模型提取面向 AI 辅助安全评审的 SKILL用于上游仓库的持续评审的既定目标docs/threat-model.md 的 Intended Outcome 一节直接对应。从源码结构看技能文件位于 .agents/skills/security-status-report/SKILL.md其元数据frontmatter声明--- name: security-status-report description: Generates a security status report based on docs/threats.json by spinning up sub-agents for each threat to compute a quality score. ---即每一项威胁 → 一个子代理 → 一个质量评分最后聚合为整体安全状态报告。完整工作流七步流水线SKILL.md 定义的工作流共 7 步核心设计原则是主代理main agent只负责编排具体评审由子代理并行完成且子代理的调用清单必须由脚本生成而非手工编写以避免遗漏威胁或格式漂移。步骤动作产物1复制template_dispatch.py到 scratch 目录可编辑的派发脚本副本2补全脚本中的 TODO使其按子代理调用工具的 schema 输出调用清单匹配主代理工具的调用列表生成逻辑3从仓库根目录执行脚本输出subagents.json子代理调用清单JSON 数组4读取subagents.json将其 JSON 数组原样不得手工改写传给子代理调用工具默认单次调用并发运行全部子代理并发运行的 N 个子代理5等待所有子代理完成每个子代理写出的threat_id.json结果文件6运行compile_report.py汇总final.json最终报告7运行render_chart.py渲染评分图chart.png柱状图执行示例步骤 3、6、7 的完整命令# 步骤 3从仓库根目录生成子代理调用清单 python3 .agents/scratch/security-status-report/template_dispatch.py .agents/scratch/security-status-report/subagents.json # 步骤 6汇总子代理结果生成最终报告 python3 .agents/skills/security-status-report/scripts/compile_report.py \ docs/threats.json \ .agents/scratch/security-status-report \ .agents/scratch/security-status-report/final.json # 步骤 7渲染评分柱状图依赖 matplotlib python3 .agents/skills/security-status-report/scripts/render_chart.py \ .agents/scratch/security-status-report/final.json \ .agents/scratch/security-status-report/chart.png其中compile_report.py的第二个参数是结果目录存放各子代理写入的threat_id.json第三个参数是最终报告输出路径render_chart.py则读取final.json并输出 PNG 图表。派发脚本把威胁清单转换为子代理调用template_dispatch.py 是整个流水线的起点。它读取docs/threats.json逐条遍历威胁为每条威胁构造一个评审 prompt然后组装成调用清单写入输出文件。核心逻辑如下读取威胁数据json.load(open(docs/threats.json))得到包含全部威胁对象的数组逐条构造 prompt对每条威胁t把json.dumps(t, indent2)嵌入 prompt 文本要求子代理仅聚焦这一条威胁、通读整个仓库、基于当前安全态势给出直觉质量评分输出 schemaprompt 要求子代理把结果写到.agents/scratch/security-status-report/threat_id.json且 JSON 必须符合固定 schema见下节TODO 标记脚本第 51 行留有显式注释# TODO: Agent, update this part to ensure it matches the correct schema for you to invoke sub-agents via a tool call.——即默认生成的调用条目字段Prompt/Role/TypeName/Workspace只是占位示例主代理在步骤 2 必须按自己的子代理工具参数名修正输出文件写入subagents.json默认路径也可通过命令行参数指定并打印Dispatch payload written successfully to ...。SKILL.md 对步骤 2 的完成标准有两条硬性要求遍历docs/threats.json中的每一个威胁产出的调用列表与主代理的子代理调用工具完全匹配每次调用只处理单条威胁必须使用下述标准 prompt并指示子代理按正确 schema 输出。子代理输出 Schema质量评分的契约子代理返回的结果文件必须遵循以下 JSON schema来自template_dispatch.py内嵌的 prompt 模板{ threat_id: threat_id from input, threat: threat text from input, quality: Decimal between 0 (no effective mitigation) and 1 (perfectly mitigated)., strengths: Specific positive code/design mechanisms responsible for the score., weaknesses: Specific negative code/design mechanisms responsible for the score., citations: [repo-relative/path/to/file1.go] }字段语义threat_id必须与输入威胁的 ID 一致如T-01threat威胁描述原文quality0无有效缓解到 1完全缓解之间的小数体现子代理对该威胁当前缓解程度的直觉评分strengths/weaknesses促成该评分的关键正向/负向代码或设计机制应具体到机制而非泛泛而谈citations仓库相对路径列表如internal/ateompath/ateompath.go作为评分的证据引用。值得注意的设计细节评分被明确定义为gut-feel quality score基于仓库当前安全态势的直觉质量评分这意味着该技能产出的是相对安全态势的快照用于追踪安全改进的进展而非可证明的安全审计结论。汇总脚本严格校验与容错compile_report.py 负责把散落的子代理结果合并为最终报告其校验逻辑是保证数据质量的关键结果文件存在性对每条威胁查找results_dir/threat_id.json缺失时记录错误Missing result file. The evaluation sub-agent may have timed out, failed to produce a valid JSON, or written to the wrong location.threat_id 一致性结果文件缺失threat_id或与期望值不符时记录错误防止子代理写错文件造成数据串位quality 严格校验缺失 →Result JSON missing quality score布尔值true/false→Invalid boolean quality scorePython 中bool是int子类若不显式排除会被误转成 0/1非数值 →Invalid non-numeric quality score越界不在[0.0, 1.0]→Quality score out of bounds [0.0, 1.0]: ...strengths / weaknesses 归一化仅在无 quality 错误时拷贝并统一转为字符串citations 归一化接受字符串或字符串数组统一转为字符串列表非列表非字符串则置空汇总输出写入final.json并在终端打印汇总行Summary: total total threats | succeeded succeeded | failed failed失败项以Warning:形式写入 stderr 并列出失败威胁 ID。该脚本的容错设计意味着即使个别子代理超时、崩溃或写出格式错误的 JSON流水线仍可完成只是对应威胁会带上error标记进入最终报告。图表渲染可视化安全态势render_chart.py 依赖matplotlib缺失时会提示pip install matplotlib并退出将final.json渲染为横向堆叠柱状图排序按 threat_id 数值升序T-01、T-02…非标准 ID 排在末尾配色每条威胁的柱体底部颜色反映评分区间—— 0.95绿色#16a34a、 0.5黄色#eab308、其余橙色#f97316柱体顶部红色#dc2626堆叠表示1.0 - score即待改进空间注释明确说明这些阈值只是视觉辅助不是策略无障碍设计每个柱体顶端以粗黑横线标记精确评分并在其下方标注具体数值如0.75错误标记带error的威胁在图内以纵向ERROR文本标注评分按 0 处理避免失败项在图上隐形输出dpi150保存 PNG标题为 Substrate Security Threat Posture Scores坐标轴分别为 Threat ID 与 Quality Score (0.0 - 1.0)。从实现看这张图的阅读方式很直观绿色/黄色/橙色柱高代表各威胁当前的缓解质量红色堆叠高度代表差距一眼即可定位最薄弱或评审失败的威胁条目。与威胁模型的映射报告结果如何落地security-status-report的产出最终要回到威胁模型语境中解读。以 docs/threats.json 中的典型威胁为例T-01Critical外部攻击者可经互联网访问 Actor——缓解不变量是默认阻止外部互联网对 Actor 的访问建议落地手段为基础设施防火墙 Kubernetes NetworkPolicy 默认拒绝入站。对应威胁模型文档Attacks from External Networks一节T-15Critical恶意 Actor 通过容器逃逸Linux 本地提权访问底层节点或其他 Actor——缓解不变量是Actor 必须始终运行在 gVisor 或 microvm 等加固沙箱中传统容器不是安全沙箱。这与仓库当前实践一致AGENTS.md 的 Security Considerations 一节明确记载项目使用 gVisorrunsc对 Pod 上的工作负载进行沙箱化与安全隔离cmd/ateom-gvisor、internal/ocispec/gvisor.go等目录/文件即为对应实现载体T-23/T-24Critical恶意 Actor 读取/覆盖其他 Actor 的快照——缓解建议包括快照访问凭据必须带 atelet 标识性附加声明或走 atelet 的 mTLS 通道对快照做信封加密并将解密绑定到 Actor 身份。快照是 Worker 复用与 suspend/resume 模型的核心数据面资产相关实现见 cmd/ateom-microvm/checkpoint.go、cmd/ateom-microvm/restore.go因此评分时应重点关注快照存取路径的身份与授权边界T-41High恶意行为未记录、无法取证——缓解建议为为快照/GCS 桶与 ateapi 请求启用审计日志对应仓库中ateapi服务端与对象存储接入层internal/objectstore的可观测性覆盖程度。因此一份完整的final.json加chart.png可以直接回答三个问题哪些威胁当前缓解最好高评分 绿色哪些最危险Critical 但低评分哪些评审失败需要重跑error 标记这正是威胁模型文档所要求的对威胁排序以便资源优先投向最大的风险Goals 一节。适用前提与限制从技能定义与脚本实现可以归纳出以下使用前提写操作仅涉及.agents/scratch/临时目录不会改动仓库只读内容环境要求需要 Python 3步骤 7 需要matplotlibpip install matplotlib步骤 3 从仓库根目录执行以保证docs/threats.json相对路径可解析主代理能力要求该技能面向具备子代理调用工具的多代理 Agent 环境步骤 4 要求把生成的 JSON 数组原样传入调用工具禁止手工构造或绕过调用仅在模型速率限制或并发限制下才允许分批评分性质quality是子代理基于仓库当前代码的直觉评分gut-feel非形式化安全证明评分会随仓库演进而变化适合作为持续评审的追踪指标数据源同步docs/threats.json与 docs/threat-model.md 需保持同步威胁条目新增或删除时流水线会自动适配逐条遍历数据源无需改动脚本。小结security-status-reportSKILL 把 Agent Substrate 的威胁模型资产docs/threats.json与多代理并行评审机制结合起来形成了一条可重复执行的安全状态快照流水线template_dispatch.py负责把 43 条威胁转成子代理调用清单 → 子代理并行评审并写出带质量评分的 JSON →compile_report.py严格校验并聚合 →render_chart.py渲染可视化态势图。对于关注该仓库安全演进尤其是 Actor 沙箱隔离、快照访问控制、组件间 mTLS、审计日志等威胁模型重点领域的读者这套技能既是理解仓库安全评审实践的入口也是后续按威胁 ID 逐一深化研读对应源码与配置的导航图。赞分享人工智能AI AgentAgent 沙箱云原生容器运行时零信任【免费下载链接】substrateAgent Substrate: the core system项目地址https://gitcode.com/GitHub_Trending/substrate7/substrate点击查看免费下载相关推荐aig-skill-scan 实战指南LLM 驱动的 AI Agent Skill 多阶段安全审计与漏洞复审流水线aig skill scan 实战指南LLM 驱动的 AI Agent Skill 多阶段安全审计与漏洞复审流水线 aig skill scan 是 AI I人工智能AI 安全治理红蓝对抗AI Agent模型安全智慧职教刷课脚本职业教育学习效率提升的智能解决方案智慧职教刷课脚本职业教育学习效率提升的智能解决方案 在职业教育在线学习日益普及的今天学生们常常面临课程任务繁重、学习时间有限的挑战。智慧职教刷课脚本作为一款人工智能AI 安全治理红蓝对抗AI Agent模型安全Meshery 安全审查 Agent 实战指南从威胁模型到代码审查清单Meshery 安全审查 Agent 实战指南从威胁模型到代码审查清单 导读 Meshery 作为云原生管理平面cloud native managemen云原生微服务运维DevOps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考