Semia — AI Agent 技能安全审计工具
在不执行技能的前提下,扫描并审计 AI Agent 技能文件中的命令、网络调用和敏感读取,让你在信任它之前看清它究竟能做什么。
按维度查看评分与理由
证据显示:README 明确声明'读取 skill 为数据、绝不执行',SECURITY.md 给出完整威胁模型(禁止执行目标代码、外泄文件/凭据、伪造审计产物),pyproject 声明零运行时依赖,CI 使用只读权限和 SHA 锁定的 actions。扣分点:分析器核心源码未在证据中出现,'绝不执行'属于文档断言而非可见实现;修复(repair)会改写 SKILL.md 但未见确认门控;skill 文本会被发送到第三方 LLM API,README 未明示这一数据外流;API 密钥仅以环境变量说明,缺敏感性指引;无回滚/卸载说明;归属仅到 RiemaLabs 版权层。
证据显示:README、SECURITY.md、pyproject、CI 相互一致(0.1.3、Alpha、pre-1.0 支持策略),CI 覆盖多平台并做 wheel 安装冒烟测试与 zipapp 可运行性验证,合成循环有重试与元数据。扣分点:面向用户的失败消息文档缺失,仅从测试代码可推断存在 LlmSynthesisError;Soufflé 等外部组件的可用性/打包仅被提及未展示。
证据显示:面向开发者和技能审阅者的场景清晰,支持 CLI 与 Codex/Claude Code/OpenClaw 三种宿主,CI 覆盖 Linux/macOS/Windows 与 Python 3.11/3.12,SECURITY.md 划定明确的范围与威胁边界。扣分点:插件 SKILL.md 触发文本未在证据中,触发精度无法核实;实际运行环境对 Soufflé 的要求未说明;ADVANCED_USAGE.md 被引用但未提供。
证据显示:安装说明非常完整(pip、三种宿主的 shell 与交互两条路径),Apache-2.0 全文加 SPDX 和 NOTICE 引用,项目结构、产物表格、贡献流程(DCO)和安全响应目标(3/10/90 天)齐备。扣分点:无 CHANGELOG,仅有 pyproject 版本号;已知局限仅在'mypy 宽松基线、pre-1.0'中零散体现;无 FAQ;维护责任依赖文档承诺而非可见的发布历史。
证据显示:输出设计出色——report.md 按严重度排序且每条发现锚定源码行,SARIF 2.1.0 可直接进 GitHub Code Scanning,JSON 供程序化消费;仅 synthesize 需要 LLM,其余三阶段确定性执行,成本边界清楚。扣分点:所有效果声明均未在本次静态评审中执行验证;审计质量取决于 LLM 合成的准确性,这一风险的量化说明缺失。
证据显示:'每条发现回溯到具体源行'是产品的核心设计并贯穿 README 与 SARIF 用法,'确定性接受边界'明确区分 LLM 生成事实与经校验事实,测试展示了证据匹配率等校验指标。扣分点:引用的 arXiv 论文与 CI 徽章无法在本次静态评审中独立佐证;核心实现文件未提供,主张与推断的分离只能达到文档层面。
- 扫描时会把被审计 skill 的内容发送到您配置的第三方 LLM API(OpenAI/Anthropic 等),审计敏感技能前请确认这一数据流向。
- '绝不执行 skill 代码'为文档声明,本次为静态评审未执行验证,请在隔离环境中首次试用。
- semia repair 会直接改写 SKILL.md,使用前请自行备份或纳入版本控制,仓库未见回滚机制。
- semia scan 需要 LLM 凭据(或宿主 Agent),纯离线/无密钥场景下 synthesize 阶段不可用。
- 项目处于 pre-1.0(0.1.3,Alpha),检测规则与 API 可能变动,且无 CHANGELOG 可供追踪。
- 发布者为未经核实的仓库身份,引用的论文与检测有效性声明未经独立佐证,安全决策不应仅依赖本工具的输出。
这个 Agent 能做什么,适合哪些场景?
Semia 是一个针对 AI Agent 技能文件(如 SKILL.md)的安全审计工具。它把技能当作纯数据处理,绝不执行,通过 prepare → synthesize → detect → report 四个阶段,产出每一条都锚定到具体源码行的证据型报告。其流水线中 synthesize 依赖 LLM(支持 OpenAI、Anthropic、DeepSeek/OpenRouter/vLLM 兼容端点,或本地 Claude Code / Codex CLI 登录),其余阶段完全确定性、无需 API key。若通过 Codex、Claude Code 或 OpenClaw 插件运行,宿主 Agent 自身即可充当 synthesize 步骤,无需额外密钥。报告默认输出 report.md,可按需导出 SARIF 2.1.0(适配 GitHub Code Scanning)或结构化 JSON。项目还提供 semia repair 命令,基于 Datalog 规则追溯违规根因并让 LLM 生成 SKILL.md 补丁。底层技术已在 arXiv 论文(2605.00314)中描述,代码以 Apache-2.0 许可发布。
semia scan ./some-skill 一条命令完成:prepare(规范化技能文本并生成稳定行锚点)→ synthesize(调用配置的 LLM 提供商提取行为事实)→ detect(Datalog 规则评估得出 findings)→ report(按严重性排序写入 .semia/runs/<skill-slug>/report.md)。semia report 可将结果转为 SARIF 或 JSON。semia repair 读取既有扫描结果,追溯每个违规在 Datalog 规则中的根因,再让 LLM 生成修复后的 patched/SKILL.md。作为插件安装到 Codex / Claude Code / OpenClaw 后,可直接对宿主 Agent 说“Run Semia audit on ./some-skill”,宿主 Agent 充当 synthesize 阶段,捆绑的 semia.pyz 负责确定性的 prepare/detect/report。
- 安全团队在引入第三方 Claude Code 技能前,先静态扫描其隐含的 shell 命令、网络调用和秘密读取,作为准入评审依据。
- CI 平台工程师在技能 PR 中接入 SARIF 输出,让 GitHub Code Scanning 直接在 PR 上标注审计结果。
- 个人开发者在安装社区技能前,用 semia scan 快速判断该技能是否会读取凭据或发起意外网络请求。
- 插件用户(Codex / Claude Code / OpenClaw)在对话中直接让宿主 Agent 对某技能执行审计,无需自行配置 API key。
- 技能作者在发布前用 semia repair 自动生成 SKILL.md 安全补丁,或为违规内容添加明确的安全约束。
这个 Agent 有哪些优点和局限?
- 每个 finding 都锚定到具体源码行,报告可验证、可溯源,而非模糊的信任声明。
- 仅 synthesize 阶段需要 LLM,prepare/detect/report 完全确定性,可在离线或无需 key 的插件模式下运行。
- 同时适配三种宿主 Agent(Codex、Claude Code、OpenClaw)和 CLI 两种形态,SARIF 输出直接对接 GitHub Code Scanning。
- semia repair 提供“发现问题→自动生成修复补丁”的闭环,不只是检测。
- scan 模式下必须配置至少一个 LLM 提供商(OpenAI/Anthropic/本地 CLI 登录),否则 synthesize 阶段无法运行,存在 API 成本。
- 目前仅覆盖 Markdown 格式的技能文件(如 SKILL.md),不审计其他类型的 Agent 工具或代码。
- 修复质量依赖 LLM 生成补丁,检测虽确定但行为事实提取仍有 LLM 不确定性(项目用 Datalog 接受边界缓解)。
- 作为较新项目,社区生态和规则库成熟度未知,需自行评估检测规则覆盖面。
如何安装或部署这个 Agent?
CLI 方式:pip install semia-audit(需 Python 3.11+)。作为宿主插件安装:Codex — codex plugin marketplace add berabuddies/Semia,并在 ~/.codex/config.toml 中启用 [plugins."semia@semia"] enabled = true;Claude Code — claude plugin marketplace add berabuddies/Semia && claude plugin install semia@semia;OpenClaw — openclaw plugins install clawhub:semia。若用 CLI scan 而非插件,需先配置 LLM 提供商凭证,例如 export OPENAI_API_KEY=sk-... 或 export SEMIA_LLM_PROVIDER=anthropic && export ANTHROPIC_API_KEY=sk-ant-...。
如何使用这个 Agent?
CLI:semia scan ./some-skill 进行完整审计,结果落在 .semia/runs/<skill-slug>/;semia report .semia/runs/some-skill --format sarif 或 --format 导出机器可读报告;semia repair .semia/runs/some-skill --from-skill 或 semia repair ./some-skill(一步完成扫描+修复)。模型可用 --model <name> 或 SEMIA_LLM_MODEL 覆盖。插件方式:在宿主 Agent 对话中直接要求“Run Semia audit on ./some-skill”,无需 API key。