好,然后我们来讲一下这个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的一个引擎
可以在不产生副作用的前例下
去运行它
比如说它不会去触碰文件系统的一些逻辑
所以这个里面
大家可以去看一下它的一个细节点
这个我们可以去