返回

文章详情

展示HN:扫描您的AI代理以检测危险能力

Hacker News2026年7月6日 13:17

为AI代理提供的开源安全层。默认拒绝执行、人类审批以及加密签名审计记录——因此您的代理仅运行被允许的内容,并且可以证明无法批准自己的工作。网站 · 现场演示 · mc scan · 文档 您的代理在现有框架中持续运行(LangChain、Claude SDK、CrewAI)。MakerChecker在每个工具调用前作为检查点,后面作为签名账本:代理仅通过角色执行,仅运行被授予的技能,无法超出其限制,且无法批准自己的工作。🚀 快速开始 1 — 扫描您的代码 找出您的代理可以独立完成的事情,按风险分类。无需安装,数据不会离开您的机器:npx @makerchecker/scan。它标记每一个重要行为——删除数据、转移资金、运行shell命令、外泄秘密——将每一个行为与其相似的真实事件名称进行对比,并可以使用 --fix 为您编写治理代码。→ packages/scan 2 — 保证其行为 导入控制并包装任何工具。现在代理只能运行其角色被授予的内容——一个未被允许的调用在执行之前就被拒绝:npm i @makerchecker/embedded 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") // 代理未被授予——默认拒绝。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" } 高风险技能分配给单独的角色,因此代理永远无法批准自己的工作——每个决策,无论允许还是拒绝,都会提交到签名的审计日志。→ packages/embedded 3 — 与审计员合作?第二步已经生成了签名日志。当审计员需要持久的、可查询的、抗篡改的记录——加上人工审批收件箱和审查控制台——请运行自托管服务器:docker compose up 每个决策都经过Ed25519签名并进行哈希链处理:更改任何行,验证会失败。导出一个集合,任何人都可以离线验证——无需数据库,对生成过程不信任。→ 全部服务器设置如下 这三个独立的包——mc scan、@makerchecker/embedded和服务器——实施相同的控制并编写相同的签名审计格式。可以单独采用任何一个。🔬 受管控的使用案例 代理在人工门控后进行重要工作的可运行示例:药品不良反应监测案例处理——代理对不良事件报告进行分类,但需要医疗审核员在加急的15天监管报告传输之前签字。examples/pv-icsr-processing 医疗器械(MDR)投诉分类——监管官员决定报告的可报告性后,草拟报告才会生成。examples/mdr-reportability-triage 肿瘤学患者准入——代理处理福利匹配,但在没有专家签字的情况下阻止提交共付报名。examples/oncology-patient-access 每日现金对账——财务代理对账交易,但在现金官员签字之前锁定于异常门控。examples/daily-cash-reconciliation 🔌 与您的框架集成 插件连接器管理您已有的工具:LangChain → packages/connector-langchain Claude Agent SDK → packages/connector-claude-agent TypeScript / Python SDKs → packages/sdk · packages/sdk-python 当您运行服务器时,SDK的governedTool通过代理会话对每个调用进行集中授权和记录:import { createClient, governedTool, GovernanceDeniedError } from "@makerchecker/sdk"; const client = createClient({ baseUrl: "http://localhost:3000", apiKey: "mk_..." }); const { session } = await client.proxy.openSession({ label: "recon-run" }); const match = governedTool(client, session.id, "recon-preparer", // 评估角色授予的代理 "txn-match@1", // skillRef: 名称 @版本 (输入) => matchTxns(input), ); await match({ statement, ledger }); // 如果被拒绝则抛出GovernanceDeniedError await client.proxy.closeSession(session.id); 🖥️ 自托管服务器(可选) 当您需要在多个代理之间进行集中执行、人工审批收件箱和审查控制台时,运行完整网关。docker compose up会启动Postgres、位于localhost:3000的服务器和种子的演示,打印两个API密钥——一个是管理员密钥(您的代理认证运行),另一个是官员密钥(人工审阅者批准有门控的操作)。种子的药品不良反应监测流程停在医疗审核门控,请求者作为自己的审批人被拒绝:export H= 'authorization: Bearer mk_... '

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡