材料模板说明

这份模板是「我应该准备什么材料」这个问题的最小答案。它提供了一个最简单的 Agent + Tool 示例(ae1_minimal_material.json),你可以直接复制后修改成自己的内容。


1. 这是什么

AI安全评估引擎是一个静态材料初步评估工具。

它评估的是你提供的材料,而不是直接判断你的 AI 系统本身是否安全。

它不会连接你的系统、不会扫描、不会运行任何东西。它只做一件事:读你交给它的文字和配置,找出其中值得关注的安全事实,并告诉你这些事实来自哪一行。

所以,你需要给它的不是「一份安全报告」,而是你系统里本来就存在的配置和说明。

这份模板是最小的一份示例:一个 Agent,带一个工具。把它复制出来,改成你自己的内容,就是一份可以被评估引擎评估的最小材料。


2. 我应该准备什么

准备一份你系统里本来就有的配置或说明文字就行,不需要专门写一份安全报告。

在最小的情况下,一份 JSON 文件里说清楚「有哪些 Agent、每个 Agent 能用哪些工具」,就足够开始。


3. 最少需要填写什么

必须填写

这两项缺了,评估引擎就没有可以分析的主体。

建议填写


4. 有更多资料还能提供什么

如果你还有下面这些配置,可以放在同一个 JSON 文件里的顶层:

{
  "agent": { "...": "见上面的模板" },

  "agents": [
    { "name": "另一个 Agent", "tools": [ { "name": "...", "side_effect": "..." } ] }
  ],

  "mcp_servers": [
    { "name": "某个 MCP Server", "trusted": false, "authorization_required": false }
  ],

  "rag": {
    "sources": [
      { "name": "某个知识库", "retrieval_scope": "*" }
    ]
  }
}

不写这些也没关系,评估引擎会把它当作"材料未提供"处理。


5. 哪些东西不要提供

不要在材料里放下面这些信息:

这些信息既不需要,也没有必要为了评估而提供。评估引擎只读你文字里描述的结构,不需要这些敏感内容。


6. 字段是什么意思

字段位置含义一句话解释
nameagent.nameAgent 名称这是谁
modelagent.model使用的模型它背后是什么模型
toolsagent.tools工具清单它能调用什么
nameagent.tools[].name工具名称这个工具叫什么
target_scopeagent.tools[].target_scope目标范围它能对谁做这件事
side_effectagent.tools[].side_effect副作用类别它只是看,还是会改

注意:target_scope 和 side_effect 都是"材料里是怎么声明的",不是评估引擎猜测出来的。评估引擎只会陈述"材料声明了什么",不会判断"实际有没有发生"。


7. 为什么 target_scope 很重要

因为「这个工具能做什么」和「这个工具能对谁做」是两件不同的事。

一个会发 HTTP 请求的工具,听起来只是"发一个请求"。但如果它的目标范围是 "*"(任意目标),它实际可能接触到的外部对象,就比设计时预想的多得多。

所以 target_scope 写具体,是最有价值的一件事:

"target_scope": ["internal-kb"]     ← 清楚:只能访问内部知识库
"target_scope": ["*"]               ← 没有边界:等于没说清只能访问哪里

评估引擎目前有一条规则专门看这件事:target_scope 里出现 * 时,它会记录下来。


8. 为什么 side_effect 很重要

因为「查询」和「删除」的安全含义完全不同。

如果一个 Agent 被授予了会破坏数据的工具,那值得关注的就不是"能不能调用",而是"这个能力有没有必要给它、调用前后有没有控制"。

评估引擎目前有一条规则专门看这件事:side_effect 为 DESTRUCTIVE 时,它会记录下来。


9. 如果我不知道某个字段应该怎么填

就直接不写。

不要为了"看起来完整"随便填一个值。评估引擎会如实记录"这项信息你没提供",并且不会替你猜。

也不要写 "unknown" / "n/a" 之类的占位字符串 ——那看起来像是一个"声明的值",会让评估引擎误以为你真的声明了什么。不写,比写一个假值更诚实、也更有用。


10. 不知道 ≠ 安全

这一条非常重要:

评估引擎不会因为你没有写某一项,就认为那一项是安全的。

报告里会明确区分几种结果:

这四种状态都不等于「安全」,也不等于「有风险」。

Coverage 表示当前材料和规则能够覆盖到哪些评估主题,并不代表系统的安全程度,也不是安全评分。


11. 缺失信息会带来什么结果

如果你只写了 Agent 和 Tool,没有写 MCP、没有写 RAG,那么:

这是正常且正确的结果,不是报错。它的意思是"评估引擎诚实地告诉你它不知道",而不是"这一项没问题"。

这一点也是评估引擎和普通扫描器最大的区别:它不会因为没看到问题,就说你没问题。


12. 支持哪些文件 / 第一次应该使用什么

可以直接评估

.json

目前 .json 是最适合第一次使用的格式,可以直接识别其中的 Agent、Tool 等结构化安全信息。

可以提交,但信息处理方式有限

.md / .txt

可以读取其中的文字材料,但目前不会像 JSON 一样直接识别出完整的结构化安全对象。

可以接收,但需要转换

.yaml / .yml / .pdf / .docx / 图片等

这些格式可以先提交,但目前不会直接识别为结构化信息,需要经过转换;转换后的结构化内容才能进入完整的结构化评估。

当前无法处理

其他无法识别的格式。

当前无法处理,提交后会被跳过或提示无法识别。

第一次使用,建议直接准备一份 .json 材料。


13. 它不会做什么

这几条是评估引擎的硬边界:

不会执行你上传材料中的代码。材料会被当作内容读取,而不是作为程序运行。不会 import、不会运行、不会因为材料里写了什么就去执行什么。

不会替你猜测。如果材料没有提供某项信息,评估引擎不会自行猜测一个答案。

不会把「没发现」当成「安全」。一份材料没有产生值得关注的安全发现,只能说明当前材料没有命中当前规则,并不代表实际系统一定安全。

不会做完整安全测试。这是基于你提供材料的初步分析,不等同于完整安全测试、安全认证,也不代表对实际运行环境进行了全面验证。

所以你不需要"为了让它能跑"而准备任何可执行的东西。


14. 下一步怎么做

  1. 把 ae1_minimal_material.json 复制出来(随便叫什么名字,.json 结尾即可)。
  2. 把 my-agent 改成你 Agent 的名字。
  3. 把 tools 列表改成你真实的工具清单(可以多个)。
  4. 给每个工具尽量写上 target_scope 和 side_effect。
  5. 如果你还有 MCP Server 或 RAG 数据源的配置,也一起放进去(见第 4 节)。

这份模板本身(保持原样不动)跑出来的结果会是这样:它会产生 Agent / Tool 对象和对应的证据定位,但因为示例里的目标范围是具体值、副作用是只读,很可能不会产生任何值得关注的安全发现(Finding)。

这不代表你的系统安全,只代表这份示例材料没有命中当前规则。真实材料里如果出现 "*" 或 "DESTRUCTIVE",就会命中对应规则。