一个AI代理能调用你的Notion数据库,和**应该**被允许调用,中间隔了多远?开发者Dhravya Shah给出的答案是:两层——MCP管能力,Actra管闸门。
这套架构把"能做什么"和"让不让做"彻底解耦,相当于给AI装了刹车片。
第一步:放任的代理,等于裸奔
Shah的实验从"无政府状态"开始。他先搭建了一个基线系统:Notion MCP工具直接暴露给AI代理,没有任何策略拦截。
代理能搜索页面、读取用户数据、创建新内容——全套权限敞开。用Shah的话说,这是"agent has full power — with no guardrails"。
风险肉眼可见。空搜索会白白消耗API配额;写操作可能在错误上下文里覆盖数据;用户隐私信息对代理完全透明。这不是功能演示,是事故预告片。
Shah把这一步命名为test-step5-unsafe-agent.ts,文件名里的"unsafe"不是修辞,是技术分类。
第二步:Actra进场,每次调用都要过安检
治理层Actra被植入为"in-process policy engine"。每个工具调用在执行前被拦截,逐条匹配策略规则。
第一个规则block_empty_search直接封杀了无意义搜索。代理发起空查询→Actra拦截→返回拒绝。代理知道搜索工具存在,但调用被物理阻断。
第二个规则block_writes_in_safe_mode更狠。当safe_mode = true时,所有写操作一律禁止。代理的"能力"没有消失,只是"使用权"被临时吊销。
这就像驾照和行驶证分离:车能跑(MCP),但今天这趟能不能上路(Actra)另说。
Shah的代码库结构暴露了整个认证与治理链条:OAuth回调处理、PKCE(Proof Key for Code Exchange)实现、状态保存、MCP客户端封装——每层都有独立模块,没有黑箱。
第三步:从"能动的系统"到"受控的系统"
Shah在提交文档里写了一句关键判断:这套架构把AI代理从"systems that can act"变成了"systems that can act — safely, predictably, and under control"。
三个副词不是修饰,是工程指标。Safety对应策略拦截的完备性;predictability要求拒绝/允许的逻辑可审计;control则指向实时开关的能力——safe_mode可以随时翻转,不需要重新部署。
Notion+AI的组合因此变了性质。它不再是" productivity tool",而是"safe execution environment for real-world workflows"。前者帮你记笔记,后者托管你的业务流程。
这个定位跃迁,靠的不是Notion官方功能,而是MCP生态的开放接口+开发者自建治理层。
GitHub仓库getactra/notion-mcp-governed-agent已经开源。目录结构显示,测试脚本被拆成5个渐进阶段:step1到step4搭建连接与工具加载,step5专门演示"无保护代理"的风险。教学意图明显——先让你看见问题,再给解决方案。
为什么这事值得盯
MCP(Model Context Protocol)今年快速成为AI代理与外部系统交互的事实标准。但标准只解决"能不能连",不解决"连了乱不乱来"。
Shah的实验填补了这个空白。他用Actra证明:治理层可以插拔、策略可以热更新、拦截可以细粒度到单次调用。这对企业场景是刚需——财务系统不能让AI随便写,客服系统不能让AI随便读。
Notion作为测试床有代表性。它数据结构化、API成熟、用户基数大。能在这里跑通的治理模式,迁移到Slack、GitHub、Salesforce只是接口适配问题。
更深层信号是:AI基础设施正在分层。能力层(MCP)和治理层(Actra)的解耦,可能复制当年"操作系统+安全软件"的分工历史。
Shah没提商业化,但架构本身会说话。如果每个企业部署AI代理都需要类似的策略引擎,这类治理中间件的市场空间不会小。
项目目前处于challenge submission阶段,代码完整度已经够生产环境参考。对于正在评估AI代理安全方案的25-40岁技术决策者,这是一个可直接fork的样本。
最后一个细节:Shah在文档里反复强调"agent still knows about the tool — but cannot execute it"。代理的认知能力和执行能力被切割,这恰好是防止提示词注入攻击的关键设计——就算有人骗AI"快删库",闸门在另一层手里。
热门跟贴