好,然后我们来讲一下这个Codex Lulers体系构建与代码可控性治理。那这个的话其实也是一套这个细节的一个规范啊。这个就更加的这个细利度了。前面那个我们说的这个规范的话,主要还是指的是整个项目的一些大的一些规范啊。比如说目录啊,结构啊,是吧。它就相当于一个代码地图。 那这个Lurus的这个规范的话 它就更加的细了 这个是用来去控制 哪些命令可以在沙箱外去做一个执行 这个就偏执行类的 也就是说比如说我们在这个 跑一些代码的时候 跑一些case的时候 做一些自动化测试的时候 那自动化测试的话 可能涉及到命令就比较多了 有可能会删除文件 有可能需要调用工具 等等的啊 就个人关系的权限都会有 所以Codex专门设计了一套 叫Lulis的一套组件啊 专门就是用来干这个事情的 那这个里面的话啊 很好理解就是什么呢 那在这个里面 你可以建一些这个Lulis啊 比如说我们就直接在这个 这个里面啊 我们就找个项目吧 嗯 看一下啊 这个里面的话 相当于 我们要可以加一个规则 做一个什么呢 就是杀向外运行的话 需要先提示用户确认 也就是说我们可能要执行一个 GHPR的一个命令 然后这个命令的话 可能要去干嘛呢 要去分析一些仓库是吧 获取一些这个信息 所以这个里面的话 当他执行这种命令的时候 我们需要有用户去做一个确认 所以这个里面 事实上 他就是要做一个什么呢 授权的一个管理 那比如说我们现在就是在这个里面去建一下 然后我们在这个里面 比如说这个项目下面 先建文件啊 比如说我就建一个点lulus 然后把下面这一堆翻过来啊 翻过来啊 然后在这个里面的话 我们可以看一下 首先我们进入到洛伊的这个目楼里去 进入到洛伊 好到这个里面然后进入到codex 然后你就直接问他 当前项目有哪些 glueless 你就直接问他有哪些具体的这个规则是吧 然后他会自动的去分析啊 他会去找 所以他优先级的话 他会去扫Lulis的这个目录吧 这里还不行 我们建了这个点Lulis的这个目录文件以外 我看一下 还要建一个.lulus的目录 不然的话加载是有问题的 所以这个里面我们得加一个 还得建个目录 建个文件夹 然后把这个.lulus给它拖进去 然后再重启一下 然后再去问它 然后这个里面 他会去加载这个Lulis 你看他把agency.md的内容 也输出出来了 看一下lulis 嗯 哎他这个这里个规范没有输出来 项目生效的lulis dd驱动 他他把这个lulis理解成 agents.md了 看一下有没有办法给他调整一下 嗯 这里要去激活一下啊 lulus 看一下这个目录 lulus 下面有一个点 lulus 然后我们 执行一下这个命令看一下 ghprvu 原因是当前仓库的gitremote没有指向github助期 那其实我们可以换一个项目 prodx 我们找到那个项目 用这个开源项目来测试一下 把这个项目导下来啊 git clone 首先我把这个项目拉下来 因为这个里面要用github的项目 我上面那个是gitty的一个项目 所以我首先要把它给它导进来 看这个项目有点大啊 反正这个规则的意思就是 大家在执行一些命令的时候 就是你可以去指定哪一些各个命令 是需要用户授权的 因为我们默认的话 其实有一些命令啊 它需要授权 有些是不需要授权的 那么大家可以去配一下 就是在某些命令下 需要去触发授权 也就是大家可以针对 我们当前执行的一个命令的话 做一些细地图的权限管控 就加一个规则 因为涉及到一些危险动作的时候 就需要用户来确认 确认完之后再去做处理 所以我们在这个点 Codex里面去加这个规则的话 就意味着什么呢 我们可以去做一些权限的一些细节管控 就是做一个这种审批 就相当于大家在这做这个 整个的一个 各种各样的命令管理的时候 你可以下一些细流的一些管控 有一些 这个命令的话 给他加一下 是吧 加一些权限控制 然后这个里面啊 我们可以配置哪些东西呢 比如说啊 它是有一套规范 比如说这个partner 匹配规则 比如说pr 就是你有pr的一些命令 然后这个decision 这个是做一些具体的命 动作的一个执行 比如说允许 或者拒绝 或者怎么样 一个是不提示 直接在沙厢环境下面去执行 然后是提示 就每次命中都要确认请求 然后这个forbidden是直接拒绝了 就这种命令就不允许执行了 比如说RM跟RF这种删除文件的 我们就不管它了 这个完了 然后我们现在去切换到这个 看一下 切换到codex 这个项目里面去 然后在这个项目下面的话 我们建一个 把那个移动过去 刚刚有一个lulus 把这个移到这个下面去 好现在已经移过来 移过来之后 我们再切进去看一下 codex 好这里面 然后我们再去执行刚刚的一个指令 比如说我们来分析一下 当前项目的 Loss有哪些 他默认读的也是这个agents.md 他不能夹载内容 这就这么来就问他 当前项目的 有哪些内容 我看这样来问行不行啊 他会去找这个文件啊 他是有一个匹配规则的 就比如说Codex想在沙箱里面去运行 GHVU开头的命令 但是需要后续的批准 精准匹配啊才可以 所以说不匹配 比如说我们现在来整这个看一下 你看现在是不是需要用户来确认是吧 这个是不是我们那个规则生效了 这里面是不是就需要用户来确认 是吧 来确认一下 你看这个是以执行 然后我们再来执行这个看一下 你看用这种命令 一旦匹配上了 他就要确认 然后不匹配的 我们来也来确认一下 看一下这个是不是就不会授权了 这个还是要确认 这个也是要确认 只是说这里面 就是相当于一些一个逻辑 要做一些处理 但是我们看一下这个上面那个规则 因为他网络访问 所以还是需要授权 其实这个不匹配的话 不匹配的话就必须 然后再分析一下 看一下刚刚那个规则是什么 呃 GHPRVU会匹配 GonRepo不会匹配 因为他不是以精准的GHPRVU 不匹配会怎么样 怎么样 我们就看一下 他这个规则到底是怎么样的 他说是不会命中 点Lulis这个规则 但是我们实际还是看到那个是吧 看一下他这个细节 他说的是不会命中 但是因为还是会涉及到一些网络权限 还是会有一些提示的 你看啊 因为这个命令需要访问GitHub网络 所以在当年黄金下 还是会要求额外授权之行 所以正常来说 按理说他没有匹配就不需要做授权 因为你要访问网络啊 所以这个就还是要做授权的 那我们最近这个依旧需要授权 你看这里面需要确认一下 还是需要收取 也要涉及到访问网络啊 所以这个规则这个里面的逻辑就是 啊我们整个 他不一定就说严格按照这个来啊 他还要根据当前的环境来决定 这个里面到底有没有其他的一些权限需要去申请啊 所以说你写在这里的话 如果说这个里面啊 并不需要额外再去申请其他权限的话 这个命令执行就执行成功了 他不会弹出那个还需要你确认的那个过程 所以具体得看一些场景啊 这个大家回头也可以去试一下 如果他但凡没有涉及到网络访问的话 这个我们其实是OK的啊 所以整个Codex 他的一个处理逻辑的话就是 他会先去加载我们整个Lulis的一个目录 是吧 那加载完之后的话 他会读取到里面的这个点Lulis的一些文件内容 然后的话 这个里面他也分全局的 还有这个项目的 就有用户级别的 整个全局的 也有按照项目来分的 在某个项目下面去点Lulis 这个都是OK的 跟我们前面讲的那个 嗯 就是一个匹配 在这个里面 比如说我们可以匹配pr命令是吧 然后decision 就我们前面讲的不提示 然后提示 然后或者是直接阻止了 那比如说大家 其实你可以在这个里面去改 比如说现在是提示吗 你直接改成forbidden 然后你再去执行看一下 比如说在这个里面 我们先退出去 再执行codex 然后再直接执行这个 命令 看一下他会怎么样 你看 当前 看一下会不会被拒绝啊 啊 因为这个是网络访问啊 这个是另外一个权限申请啊 跟刚刚那个还不一样 看一下他最终会不会被拒绝啊 你看现在已经在加载那个 点录了死了 看一下他最终会不会被拒绝掉 还是有这个结果 这个是前面咱们做了授权 一次性给他加进去了吗 正常来说应该是给他拒绝了 我现在已经有一个forbidden了 我再退出去啊 再看一下 看我切换这个premission看一下 然后测试review 我切换这种模式看一下 然后再置信 看一下他需不需要确认 他说GH因为网络杀箱受限 他会按照他这里提升的权限 他那个杀箱是没权限的 是直接给他锯掉的 但是的话他要重新做一个提权 所以这里面他最终还是可以的 你看他这个只是查询 他没有涉及到修改的风险 所以这里面默认给他放行的 看一下 在这里大家去改的话 你其实看不到什么效果 他其实杀箱给他阻止了 但是的话就是 我们还是可以有一个提权的过程 这个是他设计的 就是这个样子 你看他这个是网络网络权限啊 然后不要告诉我之前 告诉Codex 他其实内部是已经拒绝 但是这里会有个提权的操作 所以大家得看距离的一个情况 然后我们还可以加一些不同的一些参数是吧 然后去做一些匹配啊等等 那这个里面的话就是 我们基于这个Codex 可以去做一些这个 评估一条代运行的命令的时候 他会把命令 他的一个参数 做一个比较啊 那在内部的话 Codex会把命令 看作一个参数列表 比如说一些这个 不同的这个参数是吧 比如说这个 EKCVP这种参数的方式 然后去做一个这个接收 就是他会有这么一个机制 好 然后是sharewrapple 与复合的一些命令 这个是用来干嘛的呢 这个就是我们还可以包装一下 就是我们在lulis里面 我们可以把整个命令做一个包装 什么意思呢 就是你现在要执行多个命令是吧 那我现在想把这个做给打包 比如说提交文件删除 整个做一个打包 那么在这里面的话 就相当于 它单次操作的话 相当于把整个mini做一个执行 就这里面我们可以做一个封装 然后Codex的话 它什么时候可以去拆分一些脚本 比如说 这个里面 一些纯字面量的一些单词 不包含变量展开的这种情况 或者是一些 只通过安全运算服务的一些 这个场景 或者是一些 这个 不同情况的 比如说下面这个 一些有规则的 是吧 就都是安全的这种场景 这个时候的话 他就可以去 加一些这个 一些 做一些安全的一些拆分 比如说把这些命令 做一个拆分 所以他会分别用你的LULUS 去评估每一条命令 并且以最严格的 这个结果为准 然后这里面的话 即使你允许这个partner 然后执行这个 你写了这个东西的话 那他也不会自动放弃 因为这个RM和RF 是一个非常危险的一个操作 因为这个命令比较危险 所以他会单独评估 所以你写归你写 但是Codex他自己也有一套 内置的一套规范 所以这种危险命令的话 你混在一起的话 就违背了他的一个安全指令的一个要求 所以大家会发现 你不是你写所有命令 他都会给你放行的 他也要去看情况 这个是Codex 他可以做一些安全脚本的一个拆分 然后的话Codex 他什么情况下不会去拆分脚本呢 比如说我们已经加了一些重令像的一些东西了 加了一些替换的表达式了 或者做了一些环境变量的一些复制了 或者加了一些通费符了 那这个就不会尝试去解析他 因为它本身就代表 它的执行的一些关键点 是一些规范 所以它就不会去拆分 然后同时的话 它就直接把它用过来 直接去运行的啊 所以它也不是说你写了 它就会帮你去拆分 那它也要去看情况 所以这种处理方式意味着 你就是在可以安全拆分的时候 Codex会按照单条命令 逐项的去评估 在不能安全拆分的时候 就是按照 更加保守的一个方案 去做一个贫固 然后弄完之后的话 我们也可以去做一些测试 比如说我们把这个命令 加到这里来可以看一下 就是你可以去看一下這個規則到底有沒有生效。 比如說我們這個規則,我們可以把它加進去。 你看这个里面就找到了啊 什么 Codex Default Check 当前的这个用户目标 但是我们没有这个规则是吧 这个当前用户目标没有建那个规则 所以这个里面我们得改一下啊 这个就是当前目录的 Lulis 点Lulis 这里我们就指定当前步 然后来评估一下它的一些变化 来看一下 PowerShell可以复制执行的一个命令 你看他帮我们把命令做了一个优化 来我们退出去执行一下 这个里面有一个问题 Codex 你看这个是他匹配的一个规则是吧 匹配的规则就是我们可以看得出来 这个里面的话就相当于不被允许啊 这就是他要有这个结论 他可以分析出来 我们去执行这个命令的时候 他给的这个决定就是拒绝了啊 这就是测试规则文件 到底有没有写的有没有问题 他默认的话会帮你输出一个 JSON格式的这么一个规则出来啊 所以这个是我们做测试用的 然后包括一些这些规则的一些语言啊 是吧 比如说 大家可以去看一下 专门有一套语法啊 叫这个Specific的这么一个语法 你看这个是专门的有一套规范啊 大家可以去看一下 怎么来写这个东西 是吧 大家可以去看一下 他是专门有一套规则语法的 他是采用了这种方式 去写规则的 大家可以去参考一下 这是它的一个使用说明 它的语法看起来有点像Python 但是设计目标的话是安全执行 所以Lulis的一个引擎 可以在不产生副作用的前例下 去运行它 比如说它不会去触碰文件系统的一些逻辑 所以这个里面 大家可以去看一下它的一个细节点 这个我们可以去