扫描AI代理检测其危险能力
速览
该项目提供一种扫描AI代理的方法,旨在识别其可能存在的危险能力,如自主获取资源或绕过安全限制。通过评估代理的行为潜力,帮助开发者预防风险。该工具或将为AI安全领域提供一种标准化检测手段。
AI 深度解读
背景
随着 AI Agent(智能体)在金融、医疗、供应链等关键领域的快速部署,这些自主执行复杂任务的程序正在获得前所未有的权限——读取数据库、调用 API、执行 shell 命令、甚至转移资金。然而,传统的安全模型往往假设 Agent 是“可信”的,一旦被授予权限便无法约束其行为边界,导致多个真实事故:Agent 意外删除生产数据、自动批准高风险操作、或者绕过人工审核链。社区迫切需要一种能够默认拒绝(deny-by-default) 的治理框架,让 Agent 仅能执行明确授权的动作,且每一次决策都留下不可篡改的加密签名审计轨迹。
MakerChecker 正是为填补这一空白而生的开源工具集。它由同名公司发布,在 Hacker News 上以“Show HN: Scan your AI agents for dangerous capabilities”形式展示,旨在让任何基于 LangChain、Claude SDK、CrewAI 等框架构建的 Agent 都能被安全地“上锁”与“审计”。
核心内容
MakerChecker 提供三层独立可选的治理能力,共同确保 Agent 仅在授权的角色和技能范围内运行,且无法自我批准高风险操作。
1. 扫描与分类:mc scan
通过一条命令即可扫描当前 Agent 已经具备的危险能力,并将每个动作归类到真实的安全事故类型中:
npx @makerchecker/scan .
它会标记所有“后果性动作”——删除数据、转移资金、运行 shell 命令、窃取机密——并对照真实安全事故命名,甚至可以用 --fix 自动生成治理代码。扫描过程完全在本地执行,数据不会离开机器。
2. 嵌入式治理:@makerchecker/embedded
在代码中引入治理控制器,对所有工具调用进行拦截。核心概念是角色(Role) 与技能(Skill)。
- 定义技能(如
place-order@1),并指定风险等级(如high)。 - 定义角色(如
agent、risk-desk),并为角色授予技能。 - 默认拒绝(deny-by-default):未授予的技能自动被拒绝。
- 定义 Agent(如
trader)并绑定角色。
示例代码:
import { createGovernor, GovernanceDeniedError } from "@makerchecker/embedded";
const gov = createGovernor()
.defineSkill("place-order@1", { riskTier: "high" })
.defineRole("agent")
.defineRole("risk-desk")
.grant("risk-desk", "place-order@1") // agent 未获得该技能
.defineAgent("trader", "agent");
const placeOrder = gov.governedTool("trader", "place-order@1", (order) => broker.submit(order));
try {
await placeOrder({ symbol: "BTC", qty: 10 });
} catch (err) {
if (err instanceof GovernanceDeniedError) console.log(err.code); // "skill_not_granted"
}
高风险技能被分配给另一个角色(如 risk-desk),使得 Agent 永远无法自我批准自己的操作。每一次决策(允许或拒绝)都会提交到签名审计日志中。
3. 自托管服务器与审计台
当需要更持久、可查询、防篡改的审计记录,以及人工审批收件箱和审查控制台时,可运行自托管服务器:
docker compose up
服务器启动后包含 Postgres 数据库、API 端点(localhost:3000),并提供两个 API 密钥:一个管理员密钥(用于 Agent 认证运行),一个审查员密钥(用于人类审批者批准/拒绝操作)。
审计日志采用 Ed25519 签名 + 哈希链结构:每个事件是 RFC 8785 规范化 JSON 的 SHA-256 哈希,并通过 prev_hash 链接到创世事件。任何一行被修改,验证都会失败。可导出捆绑包,任何人在离线环境(无需数据库、无需信任原始流程)即可验证:
npx @makerchecker/proof-verifier verify bundle.json
4. 即插即用连接器
MakerChecker 提供直接集成到现有框架的连接器,支持 LangChain、Claude Agent SDK、TypeScript/Python SDK 等。在 SDK 模式下,governedTool 会通过代理会话将每次调用路由到中央服务器进行授权和记录。
5. 真实示例
项目附带多个医疗和金融领域的完整示例,展示 Agent 在人工审批门后的安全运行:
- 药物警戒案例处理:Agent 分类不良事件报告,但需医学审查员签名后才能发送 15 天紧急监管报告。
- 医疗设备投诉分类:监管官员在草稿报告生成前决定是否可报告。
- 肿瘤患者准入:Agent 处理福利匹配,但未经专家签名无法提交共付注册。
- 每日现金对账:财务 Agent 处理交易,但遇到异常门时需现金主管签字确认。
6. 许可说明
- 服务器、Web 界面、共享库:AGPL-3.0。
mc scan、@makerchecker/embedded、SDK、连接器、示例:Apache-2.0(可自由嵌入闭源 Agent)。- 商业(非 copyleft)许可:联系 [email protected]。
关键要点
- 默认拒绝(deny-by-default):Agent 未明确获授权的技能在调用前即被拒绝,而非事后追责。
- 角色-技能模型:通过角色分离高、低风险操作,Agent 无法自我批准高风险动作。
- 加密签名审计链:每个决策(允许/拒绝)都经过 Ed25519 签名 + SHA-256 哈希链,确保不可篡改,且可离线验证。
- 零安装扫描:
npx @makerchecker/scan .可直接扫描现有 Agent 的危险能力,数据不离开本地。 - 框架无关:支持 LangChain、Claude SDK、CrewAI 等主流 Agent 框架,并提供即插即用连接器。
- 自托管服务器:提供完整的人工审批收件箱、审查控制台,以及可导出的审计包。
- 真实案例覆盖:包含药物警戒、医疗设备、肿瘤患者准入、金融对账等高风险场景的完整示例。
- 开源许可灵活:核心治理工具包(Apache-2.0)可自由嵌入闭源产品,AGPL-3.0 部分面向服务器端。
意义与影响
MakerChecker 的出现标志着 AI Agent 安全治理从“静态权限控制”向“动态可审计、可证明的细粒度治理”迈出了重要一步。在传统 API 安全模型中,应用通常拥有“全有或全无”的访问令牌;而 Agent 的自主性使其可能执行一系列不可预见的连锁操作,MakerChecker 通过 角色-技能分离 与 默认拒绝 机制,从根本上限制了 Agent 的“越狱”能力。
其核心价值在于可证明性:加密签名审计链使得任何第三方都能验证 Agent 的执行历史是否符合预期策略,而无需信任运行环境。这对于金融、医疗、监管等领域至关重要——合规审计不再依赖日志完整性假设,而是具备密码学强度。
此外,扫描工具 mc scan 降低了安全评估的准入门槛:开发者无需手动审查所有工具调用,即可获得一份按真实事故分类的风险清单。--fix 功能自动生成治理代码,将安全实践嵌入到开发生命周期中。
MakerChecker 的设计理念也呼应了业界对“Agent 护栏”的迫切需求——随着 Anthropic、OpenAI 等公司推出更强大的工具使用能力,缺乏治理的 Agent 可能成为“自动驾驶的蠕虫”。通过开源并提供 Apache-2.0 许可,MakerChecker 鼓励社区采用并贡献,有望成为 AI Agent 治理的事实标准层之一。
