ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

8种方式用CEL策略引擎精确控制AI智能体行为:OpenBot终极指南

8种方式用CEL策略引擎精确控制AI智能体行为:OpenBot终极指南 8种方式用CEL策略引擎精确控制AI智能体行为OpenBot终极指南【免费下载链接】OpenBotOpen-source AI coworkers that each get a computer of their own: a browser, files and tools, with every action decided before it happens and recorded after. Bring any AG-UI agent.项目地址: https://gitcode.com/gh_mirrors/openb/OpenBotOpenBot 是一个开源 AI 同事AI 智能体平台每个智能体都拥有自己的电脑——浏览器、文件和工具而它的CEL 策略引擎能在每个动作发生之前做出裁决、在发生之后留下审计记录。本文将带你用 8 种方式精确控制 AI 智能体的行为从永远不提交表单到定时任务不许碰终端让智能体既聪明又守规矩。一、CEL策略引擎是什么动作先审批后执行CELCommon Expression Language是一种轻量级表达式语言。OpenBot 用它来描述边界规则核心思想写在 server/src/computer/policy.ts 的开头一家公司想要的边界是一句话——永远不要在我们域名之外的页面上点击写着 Submit 的东西。表格只能表达你想过的形状而表达式语言能表达你真正想过的东西。整个流程只有五步详见 docs/architecture.md智能体发起一个工具调用点按钮、写文件、跑命令、调 MCP 工具服务器网关从自己保存的页面快照解析出目标元素——而不是相信智能体说它点的是什么用当前策略对这次动作做 CEL 表达式求值无论放行还是拒绝都写入一条审计记录只有裁决为放行时动作才会真正到达那台电脑。裁决逻辑集中在 server/src/computer/policy.ts 的evaluateActionPolicy函数中网关的执行入口在 server/src/computer/gateway.ts。二、如何快速上手两分钟配置OpenBot策略方式一环境变量。在 .env.example 中找到AGENT_COMPUTER_POLICY它是一个 JSON 对象包含mode、deny拒绝规则数组和allow放行规则数组三个字段。文件内自带一条可直接启用的示例规则拒绝提交表单取消注释即可生效。方式二管理界面。打开后台的Boundaries边界页面app/src/routes/_authed/admin/boundaries.tsx你可以在enforce强制执行和dry-run试运行之间切换逐条添加/删除 deny 规则一键套用内置预设如Never submit a form永不提交表单、Never type into a password field永不输入密码框、Stay off social media远离社交媒体。预设本身就是具体的 CEL 规则例如永不提交表单的规则是(intent activate contains(element.name, submit)) || ((tool.name computer_key || tool.name computer_type) key Enter)注意它同时封住了两条回车门独立的按键动作以及输入文本后自动回车的动作——因为表单在任意输入框按回车都会提交。三、8种方式精确控制AI智能体行为规则可以检查的属性context包括tool.name调用了哪个工具、intent这次动作的意图、bot.id/actor.id哪个智能体、谁在操作、page.url/page.host当前页面、element.ref/element.role/element.name/element.type目标元素、key要按下的键、file.path/file.name/file.extension目标文件、command要运行的命令原文、mcp.server/mcp.tool/mcp.effectMCP 调用、initiator.kind/initiator.id这次运行的触发源。1️⃣ 拒绝优先deny 列表永远压过 allow求值顺序是先 deny 后 allow任何一条 deny 表达式为真动作立刻被拒不管 allow 写了什么。这条优先级规则保证收回权限永远不会被更宽泛的授予权限规则反杀运营者才能安心推理自己禁止了什么。2️⃣ 默认拒绝沉默意味着什么都不许做策略缺失时按拒绝处理allow为空时什么都不能做。OpenBot 出厂默认显式写着deny: []和allow: [true]放行一切、禁止为空而不是靠隐式默认值——智能体能做什么必须永远是有人写下来的而不是系统猜的。配置了策略但 JSON 写错时服务器直接拒绝启动限制规则绝不会悄悄退化成宽松行为。3️⃣ 失败封闭fail-closed规则写错了只会更严不会更松一条写坏的 deny 规则→ 当作拒绝处理宁错杀不放水一条写坏的 allow 规则→ 不产生放行效果表达式求值结果不是 true/false比如把 deny 列表误当成标签清单、写了个纯字符串→ 同样按坏规则走失败封闭路径。引擎还会把每次表达式出错大声写进日志悄悄出错的政策比明显拒绝的政策更糟。4️⃣ 试运行模式dry-run 先看效果再真拦截mode有两个取值enforce拒绝即拦截dry-run照常裁决并记录审计但一切照旧放行。这让管理员可以对着真实流量写规则、观察审计轨迹确认无误后再一键切换到强制执行。正如源码注释所说没人敢开启的治理功能不算治理功能。5️⃣ 按意图规则管效果而不是管工具名intent字段回答这个动作做什么效果而不是调用了哪个工具。可选值包括activate点按、type输入、navigate打开页面、read查看、read_file/write_file/list_files工作区文件、read_tool/write_toolMCP 工具、run_command跑命令。运营者脑子里想的是不许激活任何叫 submit 的东西而按钮可以被点击、回车、空格三种方式激活——用intent activate一条规则就把所有激活路径都罩住了。6️⃣ 按元素规则页面事实以服务器快照为准element字段来自服务器自己抓取的页面快照而不是调用方声称它点的是什么。这意味着不许点 Submit这条规则无法通过给按钮换个名字来绕过——这是策略与装饰的本质区别。配合page.host还能写出只在自己域名外禁止某操作这类精准规则。内置contains()与matches()两个字符串函数均忽略大小写让never click submit顺带抓住标注为 SUBMIT 的按钮。7️⃣ 按文件、命令、MCP规则管住工作台里的另外三扇门文件file.name、file.extension被拆成独立字段就是为了让你直接写不许碰 *.env、不许碰 credentials/ 目录而不必在 CEL 里做字符串手术命令command存命令原文可以写deny: contains(command, rm -rf)或者干脆deny: intent run_command宣布我的智能体不配终端。源码也提醒你匹配命令文本是过滤器不是边界——真正的边界是跑命令的那个容器MCP 工具mcp.effect由服务器拿自己公布的工具目录交叉校验得出且失败封闭——凡没被确证为读的一律按写处理一条deny: mcp.server jira mcp.effect write就能说任何人在 Jira 上都不许改任何东西。8️⃣ 按触发源规则有人看着可以跑没人看着就不行initiator.kind回答是什么触发了这次运行person有人在场、deployment、routine定时任务凌晨三点无人值守、handoff智能体交接。它与actor.id动用的是谁的授权是两码事。于是这条规则变得可写deny: initiator.kind routine intent run_command意思很清楚智能体在大伙眼皮底下跑 shell 没问题但无人值守的定时任务碰终端就说不得。四、历史回放新规则上线前先预演一遍写边界规则往往是盲写——管理员敲下一条 CEL 规则保存后才知道它到底会命中什么。OpenBot 的做法是把审计历史当裁判候选策略会被逐条重放在历史动作上重放用的上下文与网关当初裁决时逐字段一致见 server/src/computer/policy-dry-run.ts。回放报告DryRunReport会告诉你扫描了多少条记录、新策略下会多拒绝多少条wouldRefuse、会多放行多少条wouldAllow、以及具体是哪些动作的裁决发生了变化、命中了哪条规则。规则先彩排再上台这正是治理功能敢被启用的原因。五、相关文件导读想继续深挖这些文件值得收藏策略引擎核心server/src/computer/policy.ts历史回放与试运行报告server/src/computer/policy-dry-run.ts动作网关裁决 审计的执行入口server/src/computer/gateway.ts后台 Boundaries 管理页app/src/routes/_authed/admin/boundaries.tsx架构文档含属性清单docs/architecture.md策略环境变量与示例规则.env.example引擎行为测试用例server/tests/computer-policy.test.ts六、写在最后OpenBot 的 CEL 策略引擎把信任问题变成了规则问题先审后行——每个动作过网关裁决再落审计拒绝优先、默认拒绝、失败封闭——沉默和错误都只会让人更安全意图、元素、文件、命令、触发源多维度写规则——从永不提交表单到无人值守不许碰终端8 种方式覆盖智能体行为的每一扇门dry-run 历史回放——新规则先试错再上岗。把仓库克隆下来仓库地址见上文项目信息用 Docker Compose 拉起你的 AI 同事就有了一台装了门禁的电脑。【免费下载链接】OpenBotOpen-source AI coworkers that each get a computer of their own: a browser, files and tools, with every action decided before it happens and recorded after. Bring any AG-UI agent.项目地址: https://gitcode.com/gh_mirrors/openb/OpenBot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表