刚面试一个八年扎瓦老开发,简历上写着精通高并发,优化过千万级流量系统。我问他,现在有一个典型的 i o 密集型服务,需要处理大量的数据库查询和外部 api 调用。 qps 五零零零,你怎么设计现成模型?他毫不犹豫用现成尺啊, 根据 cpu 核心数和 i o 时间比例算最佳现成数,比如核心现成一千,最大两千队列用 sigma。 我 点点头,继续追问,好, 那如果每个请求都阻滞等待 i o m, 这两千个县城都在等待县城上下文切换,开销多大你知道吗?如果某个外部接口响应变慢,县城池迅速占满,导致整个应用瘫痪,你怎么隔离?他想了想, 用 histrix 那 样的县城池隔离不同的依赖,用不同的县城池。我接着问,那如果泵发再高一倍到一万 qps, 你 打算开多少县城?每个县城 emb 的 占内存,光是县城占用的内存就要十 gb, 你 的服务器扛得住吗? 如果告诉你有一种技术可以让你轻松创建几十万个虚拟县城,每个开销微乎其微,堵塞时不会消耗操作系统资源,你会用它吗? 他一脸茫然,吱吱呜呜的说,虚拟县城是,是携程吗?这就是很多老 java 工程师的认知盲区,守着传统的县城池模型,用物理县城去硬扛高并发,却不知道 jdk 二一已经全面普及的虚拟县城,彻底颠覆了 i o 密集场景的编程模型, 八年开发还是没有与时俱进啊。面试到此结束,如果这道题目你也不会回答的话,我整理了让大厂 hr 沉默的必考题库,包含 jvm 夺命连环问 spring 灵魂八谷高并发必杀场景、 radis 深度陷阱点个赞,评论区甩六六六,打包带走 nice! 今天我花三分钟带你摸清虚拟县城在二零二六年的实战三部曲,别再让你的县城池堵塞到怀疑人生。第一版斧,场景识别什么时候该拥抱虚拟县城? 虚拟现成不是万能药,但它专治 i o 密集型的疑难杂症。完美匹配大量阻设操作,如 rest api 调用数据库访问文件读写消息、队列消费用虚拟现成,你可以直接写同步代码,不用硬啃 webflex 的 响应式编程,性能依然炸裂。 不是场景, cpu 密集型任务,虚拟现成并不能加速,该用多少 cpu 核心还是多少。此时传统现成池加定型流更合适。 迁移成本,如果你的框架和中间件已经适配虚拟现成,只需把 executeer 换成 executeer's new virtual thread protask executeers, 其他代码几乎零改动。 记住口诀, i o 秘籍,无脑换虚拟计算秘籍,继续用物理。第二版斧,迁移手术 三步让你的老项目跑上虚拟现成,不用重构,不用学习新 api 三步完成升级,升级 jdk 和框架 jdk 二十一加, spring boot 三点二加,确保内嵌容器支持虚拟现成 替换县城池所有 new thread 或 executeers new cache terseflame 全部换成 execters new virtual thread per tasker。 每个任务都会创建一个全新的虚拟县城,用完集坟清亮高效。测试关键路径 虚拟县城在遇到 cyclonized 或 native 方法时,会固定到在体县城,可能导致堵塞扩散。 检查代码,把 secondes 换成 reentrant lock 或 java 点 util 点 concurrent 的 并发工具,避免盯住问题。进阶技巧,用 thread dot off virtual dot name unstarted 定制虚拟县城,还能用 thread bundle 统一管理。 第三版斧,监控与调优,别让虚拟县城变成黑盒儿。虚拟县城数量可以轻松突破系统县城上限,但监控和调优不能缺位 观测性, jdk flight recorder 已经支持虚拟县城事件,可以监控虚拟县城的创建。挂起恢复使用 jcmd 或 jdk mission control 查看虚拟县城站定位。阻测点 限流垄断,虽然虚拟县城清亮,但后端资源仍然是有限资源,配合信号量或阻测队列做限流,防止瞬间百万请求打爆数据库连接池县城局部变量, 虚拟县城支持县城局部变量,但数量多了会占用内存,可以用 scoped value 替代。 thread local jdk 二十一家引入的 scoped value 专门为虚拟县城优化,用完即释放内存更友好。 记住,虚拟县城只是县城,不是银弹,端到端的容量规划才是王道。看到没有?好厉害呦! 这套从场景识别、平滑迁移、监控调优的虚拟县城实战方法论,是二零二六年 java 高级工程师的必修课。别再让传统的县城池模型限制你的系统吞吐量。最后,你的项目开始用虚拟县城了吗?有没有遇到盯住问题或者框架不兼容的坑?
粉丝2162获赞8532

我试用了几天 openai 新推出的这个 codex 整体使用情况,我是,我觉得我是非常满意,然后用户体验非常好, 尤其是针对那些不喜欢迷你行工具,或者是不知道怎么用 ide 的 那些,给你们看一下这个界面哦, 他这个里都是以文件夹形式,一个项目就是一个文件夹,然后这个文件夹下面你可以跑多条任务,我为什么要出来用呢?你在一个窗口下面,你布置了任务, 你可能还会有些其他的问题,你和他进行了探讨,等你这个上下文过长以后啊,整个模型它的召回率就会比较低, 这就是我们说的那个上下文污染。现在按照这样的方式,他其实已经在引导你,告诉你说,呃,你的一条任务就在一个窗口里面跑,在一个对话窗口里面跑就行了, 然后你可以开多个对话窗口去一个分别执行。还有一块我觉得是比较有特色的,是 openai 做了一个,现在看上去我感觉就是一个给我的技能商店, 然后每一个 skill 你 就可以直接一键安装,安装完成了以后去聊天窗口你就直接可以用,刚刚装好了就在这里就能看到,这个实在是太方便了,然后你不想用了,或者是你觉得不好用,你就直接卸载掉, 这个我真心觉得怎么说,我觉得这应该才是一个软件真正该有的样子吧。然后它的编程我做了一个简单的小测试啊, 因为我看网上有很多人已经测试过了,然后都说速度很快,但我不知道为什么,我这里设置的,我就让他帮我创建一个 to do list 演示程序,然后这是一个很基础的软件了,很基础的一个小的需求了, 但是他应聘的时间你看 work worked for 七分十七秒,我对这个数据, 对这个时间我感觉挺震惊的,然后我就赶紧跑去拿 claus, 四点六跑了一下,一分十七秒就跑完了。那反正我觉得我对 codex 的, 我对它的模型的能力其实是认可的,因为原来我也是在 cursor 里面,经常在 cursor 里面去用 codex 五点三,这个用 codex 五点二,那时候没五点三的时候就用五点二去 改一些比较顽固的 bug, 所以 我对 openlight 的 模型能力从来不怀疑,只是说原来 curses 里面有我没用而已,就没有用官方的了。然后简单说一下这个软件的一些小配置, 这边有个开关建议把打开,因为他可能运行的时间比较长,你电脑可能会睡眠,导致程序运行中断,这个打开了他就能保持你电脑一直处于一个唤醒状态。然后这边是这样模式的话,呃,你可以 相当于你下指令以后,你可以补充你的指令,或者是嗯,他朝另一个方向去思考。这两天反正应该有。我没仔细看他的更新的频率,但我前两天用的有的 bug, 这两天就已经没有了。 我之前这里他会弹出选择框的时候,那个选择框选完了,但是那个选择框不消失, 反正我今天用了一天,我也没发现有这个问题,应该是已经修复了。总结一下,我觉得这次这个格式化界面真的给人耳目一新的感觉。我习惯了格式扣的,但是我用这个我还是觉得用的很爽, 用户体验非常好。格式扣的里面看时间长了我觉得也就切来切去,我切的也很头疼, 我还是强烈推荐大家去试用一下。无论你是做 webcoding 也好,还是说你做一些文案类的工作,我觉得这个软件都非常非常适合你。

hello, 大家好,我是温特妙,我们来体验一下 openai 刚刚发布的 gpt 五点四,它的一个全新的功能啊, computer use, 我 们来看一下它的一个官方网址。啊啊 啊,在通过 codex app 或者是 api 的 话呢, gbt 五点四它是支持原声操控电脑的这个能力的,并且它是 openai 的 首个支持这个能力的一个通用大模型。 比如说它是可以呃,通过打通过就是打开其他的 app 来执行一系列的啊,复杂的一个工作流。比方说它可以帮我们打开, 打开微信 app, 帮我们来回复微信消息,帮我们来那个整理微信消息啊,比如说它也可以打开可用浏览器啊,比如说 打开一个玩游戏的页面,帮我们来玩这个游戏啊,他也可以帮我们比方说,呃,打开我的一个 b 站页面,来帮我回复用户的私信和那个评论。 然后他还可以啊,就是打开一个网站,比如说打开 pinterest 的 网站,按照我的一个要求,帮我来找找我需要的一个图片。 ok, 那 我们直接上手体验一下吧。哦,还有一个,还有一个升级啊,很大的一个升级,他的一个上下文从那个四百 k 升级到了 em 啊,也就是说他的一个上下文能力是之前的一个二点五倍。 好,那我们现在就直接来体验一下啊,我们直接创建一个空的文件夹啊,给大家看一下,我在这里创建了一个可用 sof 文件夹啊,我先把这些之前的内容删掉啊,创建一个空的一个文件夹就可以了,然后通过这个 ai 的 啊添加新项目,把这个文件夹添加进来,添加进来之后呢,在这里面直接和他聊天就可以了啊,比方说我,嗯,跟他说啊,帮我打开可用浏览器访问聘锤斯特网站 啊,搜索猫咪的一个图片啊,然后帮我,嗯,挑选一张好看的图片保存在当前文件夹啊,我这个需求没有准备啊,比较含糊。 嗯,我检查一下, ok 直接发给他啊,比较含糊,没没没有,就是说让他给我挑选一个嗯,什么风格的图片啊?但是呢,因为 我把这个这个打开啊,但是因为它是通过浏览器打开的啊,就是 pinterest 的 对吧? pinterest 的 这上面我已经登录了的,所以的话其实它打开的这些图片都是和我的偏好是很一致的 啊。然后如果大家第一次使用这个功能的话呢?嗯, 他是他是这样的,给大家讲一下,第一次使用这个功能的话呢,他会要求一系列的一个权限啊,你把权限全部给他就可以了啊。然后你这个模型的话呢,你必须要选嗯, gbt 五点四啊,或者最新的模型也都是可以的啊,因为 gbt 五点四是第一个 首次支持啊, computer 柚子的这个 open ai 家的一个大模型啊。 然后这边的话呢,还可以选择速度,速度的话呢,选 fast 的 会更加快啊。 ok, 他 在帮我来找图片,帮我保存啊。然后,嗯,还有一个地方要注意啊,就是如果大家第一次用的话啊,比如说我现在是 让它打开 core 浏览器来帮我做一些任务啊,对吧?它里面会涉及到一个脚本,脚本的一个使用,脚本的一个使用的话呢,我把这这个这个放到这边啊啊,涉及到 ok, 他 又问我要权限啊? ok, 给他啊,涉及到脚本的一个使用的话呢,他需要还需要在 chrome 浏览器的一个上面的一个菜单栏里面啊,在这个显示页面 开发者,对吧?这里把这个也勾上允许 apple 事件中的 javascript 啊,就是说允许, 呃,允许 code x 在 浏览器里面来执行这个脚本指令啊,这样的话它的一个任务会完成得更加顺利一点。 ok 啊,等他来操作啊,因为因为还因为他这还是第一个版本吧啊,所以的话呢是有点慢,执行速度是有点慢的啊,他已经拿到了一个原图地址了啊,然后他你看他用过用这个刻指令来 把这个图片保存到我们当前的一个文件夹啊。 啊,正在执行啊,其实它就是通过一系列的脚本来完成这些。呃,电脑操作的啊,所以它的一个通用性是很强的,就是说它是支持所有的一个 app 的 啊,像有些 app 比如说微信 app 啊,微信 app 不 可能去开放这些 api 给他的。那他是怎么做到的呢?他是通过一个打开微信 app, 然后他去截一张图,截图之后他会来定位到他所需要的一个功能区域,然后再模拟鼠标点击去实现对应的一个事件。 ok, 已经处理好了啊,他给我保存了一个这张图片啊,那我们再来看一下他的一个其他的能力啊。嗯,比如说 我想让他来帮我回复 b 站的一个评论啊啊,然后这个这个的话呢,我为了方便,我不希望我每次都告都给他讲一堆东西,所以的话呢,我一开始我就告诉他, 我让他来帮我创建 agent 点 m d 文件啊,因为 code x 在 执行任务的时候,每次他都会来读这个文件的啊,这样的话,我一些重复的话我就不用给他说了。我告诉他 啊,这是我的 bilibili 啊,我告诉他啊,帮我打理 bilibili 用户的一个回复与私信,然后这是用户的一个回复页面啊,把这链接给他啊,防止他不知道在哪里。因为他是一个通用的一个大模型吗?他需要处理的信息太多了,太广泛了啊,他可能不一定 知道这个回复页在哪里啊,并且如果,如果他不知道的话,他去找的话会费很多功夫,所以我直接给他 啊, ok。 然后呢,我又让他完善了一下,我让他每条回复啊,让他更新一下 id 字母 d, 每条回复要带上尾缀拜扣的 x app gpt 五点四啊,这样的话,用户收到这个回复的时候,知道这条回复不是我发的, 然后每条回复呢,要写到日记里面去啊,这样的话呢,嗯,就更加他做的什么事情我都知道啊。然后他给我更新了,更新好了之后是这样子的啊,这样子的,其实我也没有看,我也没有看,你看工作方式,他给我讲讲好了啊, 他已经默认我已经登录好了的,他默认我已经登录好了的。然后呢,回复的一个原则,他也写好了,我想改的话,我在这里改也可以啊,但是呢,我没有做任何修改。 然后呢,比如说涉及到垃圾信息的话呢,他要先征得我的同意再回复啊,包括这些什么一些邀约啊,一些乱七八糟的东西啊,都都得这样子。 ok, 那 那那现在的话我就可以让他来执行任务了啊,比方说我, 我让他来执行,帮我回复最新的评论啊,打给他把这个小窗打开,这样我我们大家可以来看他是怎么怎么怎么操作的 啊,你看他直接用我给他的链接打开了,打开了,他来看第一条评论是哪一条啊?他先来确认一下, ok 啊,他已经,嗯他,他说然后啊,因为这个评论我已经回复过了啊,我之前让他执行过一次啊,所以的话,你看他还很聪明,他说 这个评论他已经回复过了的。日记记录在这里啊,我们来看一下看一下这个日记啊,日记的话其实在这里啊在这里啊,本人是 u x 设计师,然后您代码基础想学习 web coding 啊,这些可以学习吗?然后 他给我的回复就不是我自己的回复,他说可以学啊,并且你有这个 u x 背景是很有优势的啊,这这么一些 东西啊。啊,那那那我们再,再来继续啊,再来继续,来给大家看一下他的一个玩游戏的一个能力。 code x 啊,玩游戏的一个能力啊。 ok, 我 们还是继续用用这个画好了啊,直接新开一个回话啊,在这里帮我玩一下可用打开的扫雷游戏啊。我,我现在打开的是一个扫雷游戏,我让他帮我玩一下 啊,同样,我为了方便大家观看的话呢,我还是把这个拖到这边来啊,把这拖小一点好了。这样子啊,这是一个扫雷游戏, 看一下它啊,它现在的话呢,它处理这些任务是很慢的,因为因为这是它的第一个正式支持 computer use 的 一个版本嘛,它的速度是很慢的, 但是呢,我觉得就是以这个状态发展下去的话,到下一个版本那我感觉他都可以去做那个,他都可以去代练了啊,就就比方说我们开很多个页面,对吧?让他帮我们在游戏里面来打金币, ok, 然后呢,其实我我我觉得可以这样子,就是每次他成功帮我们执行好一个任务之后呢,我们让他帮我们更新一下 啊,或者如果像我这个项目我都没有创建一些 md 啊,这玩游戏的项目,你可以让他创建一下 md, 帮他更帮你更新一下,这样的话呢,他下次就会少踩很多坑,不然的话你看他在, 他在他的脚本在一个一个执行啊,他执行了很多脚本,他都是尝试性的去实现这个任务,他得他可能得从一百种方式里面 找到一种合适的方式才行啊。但是你更新了 index dm 低了之后呢?后续的话他直接就拿他的成功的方式放在最前面啊,他可能一直接拿第一种方式一试就成功了就可以了。 你看页面变量隔离比预想的要严格。他还他还讲出来这个任务啊,他遇到了什么问题啊,他要怎么解决,都是完完整整的在这个思考过程中说出来的。 ok, 然后然后等一下的话呢,我还让他帮我来回复一下微信消息啊 啊,他要确定一下当前的一个盘是不是新开的,到底是已经玩到一半了还是新开的,如果是玩到一半了,可能他再要看一下当前的一个局势啊,当然我这个盘是新开的, 你看他执行了各种脚本文件啊,其实大部分脚本文件都是都是,都只是一个试错。 嗯,等他,等他完成, ok 啊,他终于理清了终于理清了啊,已经在扫雷了, 读取展开后的局面开始解啊,又在开始解这个,解这个雷了 啊。其实好像,好像,我如果把它变成超高的话,像还快一点啊变成超高好像快一点。为什么呢?因为它的一个思维更会更加神秘一点啊,它解决问题会快一点,只是回复变得慢一点而已。 嗯,你看他通过他不需要做图像识别了,他直接瞬间给你打出来,因为他之前他在尝试用图像识别来解这个问题,但是实际上的话呢,因为我们打开的是网页嘛,他可以直接通过 就是读源码的方式,因为网页它是可以,对吧?在 chromium 里里面,你是可以通过检查通过 f 十二检查来获取网站的一个源码的啊,所以它已经直接报文完成了。 ok, 我 不用开下一局了啊,我,我可以再让他帮我玩一下飞机大战啊, 帮我继续玩飞机大战这个游戏 发送, 然后我,嗯,我好像不能多操啊,这里有一个问题不能多操,因为他他他要打开对应的一个页面啊,所以的话,如果我让他这会帮我回复微信消息的话呢,可能不是很方便, 但是可以给大家看一下啊给大家看一下啊,微信消息啊,回复微信消息。我也是新建了一个 index html 的, 但是我说的非常简单,我直接让他帮我创建 index html 文件用于回信微回复微信 app 啊,他就已经创建好了对吧创建好了之后呢我同样让他就是每条回复都带上尾缀啊,并且啊写上日期啊对吧然后嗯你看 啊帮我回。那他这样这样子啊写了啊 ok 完成了 action dm d 了之后呢我让他帮我回复啊回复的话呢其实是已经回复成功了的啊我我重新开个绘画框。 嗯那我这边玩游戏的把它停掉好了啊停掉 帮我打开微信 app 然后定位到第一条绘画框啊然后回复里面的消息 啊用高算了啊因为这个东西应该主要是涉及到一个图像识别 发送吧啊发送把这窗弹出来啊。因为 啊 ok 他 在思考啊然后他要处理微信消息和处处理核核循消息还不一样啊。因为因为处理核循消息的话他是通 啊他打开了处理核循消息的话呢他是可以通过脚本通过那个读取网页的一个原码来执行一些任务的但是呢他要去 操作微信消息的话呢他有一个问题啊微信是不可能开放这些 a p i 的 微信 app 的 话对吧?那他只能去通过一个图像识别啊,通通过图像识别的一个 窗口。哦哦等一下等一下停止一下啊停止一下有个坑啊。因为因为我现在在录视频我是我是有打开了多个窗口的啊我我我是有多个 屏幕所所以的话呢他他默认打开的屏幕是在第二块屏幕啊对对对,他帮我挪过去了啊我重新给他说啊。嗯微 微信 app 的 话就在当前屏幕处里啊不要挪到其他的屏幕去 啊。因为我这个是特殊情况所以我给他解释一下啊。 ok, 那 不然的话,他给我挪到了另外一块屏幕,我录视频的话,大家就看不到了。为了方便演示一下, 你看啊,他的话,他的执行操作会非常慢啊,因为他打开了之后呢,他得通过 截图的一个方式,他得通过截图的方式来获取当前屏幕的一个信息。 然后呢,他截完图之后呢,他又得通过 ocr 文字识别啊,来识别对应的一个文字来定位到对话框啊,包括包括如果你让他在指定的群里面回复也是可以的,指定的群里面,他可能会定位到这个搜索框来搜索这个群 啊,搜索好这个群之后呢,对吧?他他进每进入一个新页面,他都得进一次,就是视觉啊,进行计算机视觉来识别这个信息啊,所以的话会非常非常慢,所以给大家简单演示一下啊。 啊,他还是要拉到我的我的这个麦克屏幕上去啊,大家可能看不到啊,可能会看不到啊,等一下,等他回复好了,我我我再给他拉出来 啊,已经可见了啊。啊,因为因为我,我现在大家看到的屏幕的话是副屏啊,他,他目前的话我没有跟他讲清楚。卧槽,他已经在掉我的鼠标了, 那我鼠标不能动啊,我鼠标不能动, 等一下啊, 这个是会有点麻烦的, 因为因为微信这种 app 的 话,它的一个隐私保护, 隐私保护它是做的非常那个做的很严,所以的话会麻烦一点啊,如果,比如说,如果让我们让它打开 xcode 啊,去执行一些操作的话呢,它会快很多很多 啊。你看啊,这是他的一个操作流程, 他会,他会执行各种脚本啊,打开搜索框,粘贴完整打开, 他发了一条消息,但是发错了发了一条消息,但发错了啊 啊,之前的话我有测试过,就是他是发的消息是对的啊,可能是因为我的这个屏幕的一个原因,我可以给大家 展示一下。好了啊,因为,因为我现在是双双屏,双屏话可能有点问题,我把它停掉,停掉我给大家展示一下啊。嗯,我让他回复一下啊 啊,比如说他在一个,他在我的一个微博 qq 的 群里面给我回复了一句这样的一个话 啊,比如回复了 open ai, 呃,已经发布了 chat gpt 啊,什么什么拜扣的 xapp 五点四啊,这个话就是他回复的, ok? 呃,那我们 就是今天的一个分享,就到这里感谢大家的一个观看啊,欢迎大家一见三年啊,对我的视频鼓励,感谢感谢。

我把可乐扣的变成了黑心老板,专门压大扣单词写代码,结果效率翻了,成本还降了。如果你想彻底解放双手,那么我这一套工作流的方案一定可以帮到你。使用可乐扣的扣单词这类工具久了, 慢慢的就想让他们自己长久运行,但又怕写偏或上下文爆了。针对这个需求,我设计了一道可乐扣的监督扣单词的工作流,今天就把这套工作流以及设计思路分享给大家, 不仅仅是个方案,更是一种思路,大家完全可以拿去改成适合自己的方案。我先讲解一下这个思路,大家如果不想听这部分,可以跳到这个时间点直接抄作业。 我自己的情况是有切尔克 ppt plus 可以 使用扣带子,同时还有质朴的扣领 part 会员可以被摄到可乐扣的中使用。 gmail 我 也有,但是 gmail 的 c u i 我 个人感觉体验不太好,所以这里就使用卡拉扣的以及扣带子。 总结一下就是智普的扣令牌栏额度非常多,我基本上没有碰到过限额的情况。可乐扣的功能非常多,非常齐全,但有时会出现过着完成任务的情况。扣袋子则相对稳定一点,但模型对我来说相对较贵,所以要省着点用。 我这里的策略是让可乐扣的来充当监督者,让扣袋子去干活。关于扣袋子模型,我建议使用切的 gpt 五点二 mini, 但 扣袋子后缀官方说法是专门针对边层和代理任务优化,但我实际拆下来干活效果不太理想。 medium 类似于 auto, 你 也可以选择 high, 但是最好不要选择 x high 我 之前试过,效果是真的很好, 但是一天就跑完了,一周的额度,钱包真的收不住。最近出的五点三扣袋子也可以试试看,速度是真的很快,但多多少少也存的 爱的、偷懒的情况。决策分工是可乐扣的充当监督者。扣代词则是工人,这里使用两个 a 级的进行工作,最大程度上防止某些作弊。一个只负责写,一个只负责验收。整个流程开始于我使用扣代词生成的一份 open spark 偏更题案,这些题案会被转化为 test m d 中的具体代码是将列表。每当需要执行一项新任务时,可拉库尔就会启动一个 sub agent, 使用 codex e x e c 调用 codex, 然后使用自按语言调用 open spark。 open spark 最好是 零点二一点零版本,因为在新的版本, open spark 的 工作流就重构了,也支持自按语言调用,但使用的是 skills。 出发后续我研究一下怎么配合到这个工作流里。 托马斯在写完代码后,他必须制作一个可复现的测试方案作为完工凭证。 c u i 任务他必须提供一个智能化的测试脚本。 g u i 任务则提供一份 m c p 的 操作方案,可劳克勒会亲自运行脚本并进行验收。对于 g u i 任务,他会严格按照流程调用 payload m c p 辅 物,驱动浏览器并抓取截图作为证据,确保代码不仅写了,而且真实可用。只有当可拉库的亲自确认测试方案运行通过,且手中的证据链完整无误时,他才会执行一系列的确凿操作。在 tasks md 中勾选任务,更新 feature list, 点最省的 pass 状态,直接 get 提交存档,将日期写进 progress 点 t s t。 如果遇到技术卡点卡拉扣的,会利用 ctrl 七或浏览器搜索工具自主寻找解决方案,便知道 ctrl 进行重试。 我最在意的就是防止 ai 跑偏以及 ai 假装完成的任务。为了解决这个问题,我设计了一个双保险机制,分别是用 tasks m t 记录过程, 可使用 finisherlist 点击率记录结果。我们先说 tasks m d, 它是给人类以及 ai 件的文件,包含具体的任务以及详细的需求和实施步骤。我们先使用 codex 进行一个完整的体验, 可靠的会在这里记录具体的验证命令、截图路径和报错日期。如果有阻碍, codex 只能在这里写。具体的问题是什么? 是由当可拉扣的执行验证后,由可拉扣的写通过,确保我们知道代码是怎么出来的,而不是凭空变出来的。 有的过程还不够,我们还需要一个绝对理性的验收机制,就是 file list 检测这个解释给 ai 的 使用的。这里不记录任何过程,请关注任务是否通过完成了。它是一个结构化的交付清单,所有任务默认状态全是 false, 只有到某个任务真正被验证无了,它才会变成出。那么这两个文件是怎么配合,以此来防止 ai 作弊的呢?核心就在于标签印刷和单向流程。首先是标签印刷,我们在 tasks m d 里的具体任务后,会打算像简号 r e 这样的标签会对应 for list 点击层里 id 为 r e 的 功能条目。其次是单向的流程,可拉克的必须先在 task 四 m d 里跑通代码,拿到缺少的 pass 证据,然后才会去 for list 里面去更改状态。 首先是安装可拉克的和 code, 这个就不列据了,安装奥巴斯 bug 这里要说一下,最好是零点二一点零的版本 使用这个命令安装 open spark。 然后回到项目目录,使用 open spark 抽象化加项目,然后再把它的这些提示给复制到扩展词里面。 首先是 palette m c p, 可以 让可乐扣的去检验 g o i 界面,选自动化确认浏览器并收集证据,再配一个 control 器,遇到卡点时能查资料,浏览器搜索 m c p。 我 这里使用的是这幅的档案,你也可以换成其他的。大家可以去我的簿客或 知乎 app 上,也可以去云盘上进行下载复制,下载后就是这些内容了。 skills 大家可以配置到它们的根目录或者是项目目录,配置到项目目录的话直接粘贴过来就可以了。 skills 这里一共有三个,两个是给 cosys 用的,第一个是 使用采访式反问,把我们的需求和 ai 界的对齐。第二个是生成 fairlist 点 jason, 最后一个则是给可拉克的一道卡点石使用的。为了让这道流程跑起来,我们需要覆盖和新建几个配置文件。首先是 windows 八 pro pro 点 o d 需要添加的 windows 的 位置在这里, ios 的 就是这个,直接在这个 step 六后面添加内容。下面则就在项目目录里面的 openstack 文件夹下的 project dmd 的 末尾添加这个。它和上一个的目的都是为了让 openstack 生成的 test dmd 符合我们的要求。 这里需要着重说一下更改 open spark 端口, 点 m d, 则需要在输入 open spark int, 也就是说实话命令后再更改,否则会重置掉。下面则是在项目目录下完全覆盖 colocode, 点 m d, 目的则是为了明确 colocode 的 身份以及任务流。最后则需要新建一个自定义命令,位置则是在这个 新建一个昂迪脚本,这是我们自动化的核心,它定义了克拉克的如何自动循环调用 codex, 同时也避免了我们重复输入。下面则是重复流程了,先打开 codex, 使用自然语言作为一个变更体验,例如为我这个项目添加一个支持夜间模式自动切换的 openstack 体验。然后再使用 skills openstack 劝解 interviewer id, 让模型通过采访的方式引起我们的需求对其需求。这里的 id 是项目目录下的 open spark 文件夹劝诫词文件夹下的当前提案的文件夹名称。再用 open spark future list id 这个 skills 让模型创建一个 future list addition。 最后就是打开查找 code, 输入斜杠 monitor open spark codes id 就 可以开始工作了。本期视频到这里就结束了,视频创作不易,还请您点赞、关注、支持。如果您有任何问题,欢迎在评论区交流讨论。

现在的模型基本上都是两百 k, 但是你在编程的时候到底用了多少?这个你有仔细去看过吗?今天我给大家分享一个怎么样去设置 cloud code 的 一个上下文查看窗口,这个不像 code x 它会显示这个上下文, cloud code 它是没有默认显示上下文的,只有到最后的百分之十的时候它才会显示。 第二个点就是给大家分享一下我今天踩的一个坑,因为我总感觉做一些稍微大型一点的项目的时候,他的上下文窗口特别的窄,因为我可能做一些稍微大型的项目的测试啊,或者说修改的时候,我想要去拿到足够的上下文,可能就是五轮对话或者十轮对话,他就要压缩上下文了。所以说我就详细的看了一下他的 contacts, 给我震惊到了, 可以看到我这是一个新的对话,他两百 k 的 上下文,我有效的使用空间只有百分之六十四点五不到, 而且是我优化过后的,我把 mcp 删到只剩下了一个 playwrite 的 mcp, 因为我要做这个端到端的测试,所以说留下了这个 mcp。 在 我没有进行优化的时候,比如说在它这个 memory fails, 它里面包含了很多这种嗯规则的文件夹,因为我之前安装了蛮多的黑客松他分享的 cloud code 配置的项目, 所以说我可能就安装了很多这种东西,大家一定安装的,一定要删掉,不要堆很多。我之前启动的时候, 新对话它的这个自由空间就只剩下了百分之四十多,相当于我只有九十多 k 是 有效的空间,其他的全被什么 m c p 记忆文件塞满了,并且它这个记忆文件还跟那个记忆文件还不一样,它其实就是你的一些命令行的一些东西,它会全量的加载。 我们来详细看一下,它的系统提示词包含了四 k, 然后系统的工具就包含了二十二 k, 然后它还要保留三十三 k 的 百分之百分之十六点五的不能侵犯的空间,因为它要做这种上下文压缩,所以说这一部分空间它是直接给你砍掉了的,所以说不管你做什么,它至少有五十多 k 的 上下文是你完全用不了的。 所以说这个点大家还是要知道一下,特别是你的 m c p, 你 的工具,你的这种规则记忆不要写太多,写太多会影响你的上下文,这都是我优化过后的,它有百分之六十四的上下文还可以用,这个是一个特别巨大的坑,特别是 m c p, 别堆一大堆 m c p 上去,你的 contacts 打开来一看, 你这个个 m c p 如果说上了两三个,肯定你这个 m c p 在 十 k 以上了。 ok, 我 们今天还是给大家分享一下这个看上下文的一个项目,但是它这个是到百分之八十二的时候,就基本上是到了它要压缩的上下文,它是按照两百 k 来计算的,不是看按照这个有效上下文来计算的。 所以说大家看在七十的时候,其实就要思考把现在的任务做一个归档和这个总结了。你可以直接告诉他,你的上下文不够了,我准备要压缩你上下文,你有没有什么需要记忆的或者收藏起来的东西,因为我是用的 team 模式,我会专门去给他创建很多,比如说这个是后端的,然后我会让他去把这些文档给记录下来, 然后这个这种一二一的测试的,这种是代码的主要 leader 成员的,然后我会让它记下来,所以说我到七十五 k 的 时候,我基本上就会让它做收尾了,因为你如果不收尾的话,你上下文压缩了之后,它很多信息就丢失了,下一次执行的任务它效果就非常的差。这个就是那个项目 cloud h, 它其实就很简单,首先是你的项目,然后它是什么模型,然后对应用量的上下文调用的工具调用了哪些也有,然后使用了哪些子智能体也有,但是它对这个 team 模式是支持的比较少的, 同时它这个用了哪些 team 它也没有显示,但是它可能后面就慢慢会更新,然后代办事项这种 task 和 to do list 它都会去写下来。 然后安装也是很简单,直接安装这三个,如果说有问题的就可以直接把这个文档发给他,让 cloud code 去给你做安装。但是它有一个比较好的一个点哈,就是它这个是热启动的,只要你安装好了之后,你所有的都不需要什么重启啊这些它直接就可以完全显示。 然后配置的时候,大家也可以把它这个功能全部配置上,因为它这个并不会增加这种托管的消耗,所以说它都是按照钩子这种脚本的方式来做的,做的这种总结,所以说不用担心,直接使用就可以了。 ok, 最后也可以说一下,或者打一个广告,我们几个朋友去做了这样的一个中转,可以大家一起去拼这种二十 x 的 账号,这样的话基本上就不会有被封的风险。如果说大家有用量用的比较多的,也可以点我主页沟通一下,但是如果只能用这种 二十美金的,这种一个月只能做二十美金,其实就完全没必要哈,你如果能用掉这种五 x 的 以上的,可以可以联系我。 其实就是我们几个朋友去搭了这样的一个类似于中转站吧,因为现在很多中转我们自己使用的时候发现反正他有点掺水,然后又不是 cloud code, 所以 说还是蛮大的问题的,而且很容易封号。如果你在国内用的话,你只有去搞个云服务器,在国外这样会稍微好一点,并且他这个 cloud code 是 真的有点痛苦,他还要 连做机制,就是你一个 ip 搞爆了的话,其实你上面的所有账号都废了,它基本上都会给你连连做全部封掉。呃,这也是现在给大家很大的诟病的,但是从实际使用下来还是 cloud code 的 效果会更好,像欧帕这些再多智能体啊,这种使用其实都是 cloud code 的, 会效果好很多, 这也是很痛苦的一个点。但是国内的一些小模型,它模型的性能还是不够的,特别是你在调用一些子智能体,或者说 skills 的 触发上面还是国外的 opus, 它的效果要好很。

嘿,作为开发者朋友们,如果你正在用 ai 做项目,那接下来这两分钟,绝对能让你的工作效率原地起飞。咱们来聊聊一个核心功能, codex 子代理。好,咱们直接说痛点,你有没有感觉,项目一大, ai 的 日制和代码就堆成山,那个上下文搞得特别臃肿? 结果就是 ai 反应越来越慢,给出的结果质量也开始掉链子。我懂,真的那种感觉太让人头疼。 那怎么办呢?其实解决思路很简单,别再让你的人工智能像一个厨师那样手忙脚乱地想同时做八道菜了。咱们换个玩法,把它变成一个高效的后厨团队,请四个厨师,每个人专心做两道菜。 你看,就是 codx 子代理 sub agency 的 魔力,让工作并行起来,效率自然就上去了。那么,用子代理和不用核心区别到底在哪?咱们来扒一扒 来看这张图,对比一下。左边是一般用户 bob, 他 呢?把代码审查、安全检查,所有任务一股脑全扔给主代理,结果就是一个任务卡住,所有都对等着,又骂又容易错误。再看右边的高手 sally, 他 就聪明多了,给每个任务都分派一个专门的子代理, 这些小助手在后台同时开工,互不干扰,主聊天框干干净净,这小吕简直没法比。而且啊,这里最妙的一点是,当这些子代理在后台拼命干活的时候,你的主代理是暂停的。这意味着什么?意味着你的主对话界面永远清爽专注,再也没有乱七八糟的信息干扰你了。 听起来是不是很爽?别急,用起来也超级简单。来,这是你的三步操作指南。第一步,最简单粗暴的方法,直接用大白话在聊天框里下命令就行, ai 会自动给任务创建独立的运行空间。第二步,如果你有些任务要反复做,那就创建一个点 t o m l 文件配置, 别被这名字吓到,它就是个简单的文本文件。第三步呢,就在这个文件里写清楚子代理叫什么,干什么,用哪个模型,你看,就这么几下齐活了。 当然了,想让你的子代理团队稳定又高效,那这四个黄金法则你得记牢了。记住这四条,第一,低 call, 让他们各干各的,互补影响。第二,单一职责,一个子代理就干好一件事,把它干到极致。第三,结构化结果,要求他们按你指定的格式交作业。最后,也是最重要的失败隔离, 绝对不能让一个子代理的失误把整个系统给带崩了。最后,给大伙一个超级实用的建议,你根本不用从零开始,网上有大把开源的,到滔墨子代理库,直接去社区里找你需要的拿过来改一改就能用,这不就是咱们开源社区的魅力吗? 好了,现在轮到你了,动动脑筋,你第一个想创建的子代理是什么?是让他帮你做代码审查还是自动生成文档?快在评论区分现你的想法,我特别想看看大家的创意。

ok, 哈喽,大家今天给大家讲解一下 cloud 点 md 它本质上是个什么东西啊?以及怎么样去设置配置。你的 cloud md 可以 发挥出 cloud code 它最大的一个功能,这里面当然不仅仅限于 cloud md 啊, a, 零点 md, 用 gmail 或者是呃, codex kimi 都是 ok 的。 ok, 那 咱们先说一下它这个底层原理是什么样子的? 呃,首先就是你看这张图啊, calco 它每次启动绘画的这个时候,它会加载三个东西,首先是它自己的系统提示词,然后是 cloud md, 最后才是你一个你发的这个消息提示词。那 cloud md 呢?它不是系统提示词,它是一种叫做上下文注注的一种机制。 那这里面你看我旁边写了一个遵循率的百分之七十,什么意思?就是这个 context may or may not be relevant。 呃,这个 cloud md 他 有可能相关,有可能不相关,就他并不是每次一定都会遵循这个,如果你的 cloud 他 会自己判断,他觉得如果他会自己判断,那如果你说这个提问提了个问题,跟你的项目没什么关系,他可能就不会用 cloud md, 或者是你 cloud md 长期不更新,已经完全的 不不适配了,那他也不会用。另外就如果你 call 点 b 写的太长了,那他也不是,就是每次强制执行,那他就会就会呃,降低这个相关的概率,同时差前面会影响到他,可能也会忽略掉 ok, 就 他这个层面的啊。然后我们看一下这个也是概率性的,然后我们看一下 call 点 call 点 b 他 应该怎么怎么写,应该写什么。那写的话你包括这三个东西,一个是 y word 还有 h, 那 y 它的话就是设计理念,因为后面我会讲 ctrl d 这个东西,它不只是能当一个地图用,它也可以包含你自己的设计理念去啊在里面。所以说 你这个 y, 它就包含说为什么要这么做,然后为什么我们怎么去设计一个 folder 的, 我们这个项目是怎么样去运行的? y 要写上,那除了 y 之外还有号号的话,它更多就是说怎么去做这个事情,或者说你自己的一些常用的命令啊,验证的流程啊,代码规范等等都可以加在号里面。 那 word 的 话就是整个你的项目的一个地图,类似于呃定,就是很,就是什么,比如说你的技术站用了什么,用了什么技术站呢?呃, cloud 去哪找东西啊?这些都可以在 word 里面去写。那很多人就犯了一个错误,就是他觉得 word 和 y 写上, word 和号写上就够了,他没有写写 y, 因为他觉得,哦,我好像让这个 cloud 知道怎么去做,要做什么就行。那你没有必要知道为什么要做这个事。但其实这个也挺关键的,因为我们说的 word 和 这个 y, 它并不能包含所有的这个情况,有一些事情,有一些时候,呃, cloud 和 y 它并不能包含所有的这个,那这个时候它就需要用, 因为我的号里面没写,他这时候就要用 y 里面的这个设计里面他自己去推这个情况该怎么处理。所以说这个 y 呢,他是能呃一个原理性,他可以让 cloud 去推理什么时候该用什么东西。 ok, 然后下页看一下,对,这里面就是讲了一个这个井号这样的一个用途, 就是你每次也不用完全自己写这个,或者自己更新好的 md。 有 的时候你在工作的时候,比如说你想起来一个什么或新创的文件,你告诉他在哪,那你怎么快捷去弄一下?你就用这个加一个井号,然后后面直接开始输入内容,比如说我这里写了 always use bind, 或者是这个什么什么东西在在什么地方等等等等,具体情况自己定义。那你自动写入 color, 帮你自动写入,它会让你选择级别,个人级在这里面项目级在这里面个人级就加个 logo 的 md, 项目级就没有这个 logo 啊。 ok, 看一下,下 一个就是一个跟 color md 相关的一个命令啊 inet, 那 它干嘛用呢?就如果你的项目还没有 color md, 或者是别人的项目它没有 call 点,那你用个 init, 它就可以扫描你的这个结构,什么什么 package json, 什么目录结构,一点 m d, 这些扫描以后,它会帮你写一个 call 点 m d 出来。或者说如果你的 call 点 m d 长期没有更新,它也会帮你写一个啊 call 点 m d 出来。对,但这个,呃,除了这并不是唯一的一个方式去下载设置你的 iphone id, 后面还有两种方式,其实有无限种方式,后面再讲两个稍微高级一点的用法。呃, init, 它会把你的整个文件夹都给扫描到,所以说如果你的文件夹里面有很多无关的东西, 他说已经过时的东西,你最好在自己那个里面那个 copy 里检查一下,因为有些东西他已经不需要了。那你把这个 copy 这个目录写太长了,其实也不好,会影响上下文,所以他写完以后你自己去查一下,有些东西不要了,你自己要不能随时清,要不然就是 copy 里面你要写好 ok, 下面这个是一个 illustrator pattern, 这个就是一个用 cloud md 然后来调度的一个方式。我们刚才不是说了吗, cloud md 里面要写一个 y, 就是 说其实你是可以操纵你的整个项目去如何配合如何用的, 所以你可以跟通过 color md, 然后来定义你和这个 color 的 一个写作方式。那这里面一个比较常用的写作方式,就是一个 illustrator 这样的一个写作方式,它是什么样的一个形式呢?就是,呃,首先你需要一个 illustrator, 他 是一个协调者,他不去执行执行任务,他只是负责问题拆分,任务拆分,然后去委托给不同的 agent, 然后 agent 他 去执行,以后呢?产出以后他交给 verify, 就是 一个验证者加查作业的,然后如果 ok 的 话,那去 下一个任务,如果不 ok, 那 就再反过来再去重复委托。那你在 ko 的 m g 里面要干要干嘛呢?就是定义好整个的这样的一个配合的方式,所以他这时候就不只是一个目录了,他还需要定义这种配合的方式,你要让 ko 知道,每次你分配一个任务,他都会这么去做。 ok, 然后这个是 ajax groupflow 这样一个 call 点 b 的 使用方式,它的结构是这样的,首先有一个 呃 call 点 b, 然后你要设置几个不同的 folder, 一 共是两个 folder, 一个是 directive, 一个是 execution, 两个 folder, 那你要在 cloud 点 b 里面约定好就是怎么使用一套系统,使用方式就是这样的。首先,呃, directiff folder 里面它放的全都是纯粹的文字, word doc 文件告诉他,告诉这个标有任何代码,告诉 你,告诉这个 cloud 的 某些事情,约定好你要怎么去做。呃,当然这里怎么去做的话,你可以像写 sql 点 b 那 样,一个步骤 face 一, face two, 步骤一,步骤二,然后, 呃,有什么样的边边界,有什么的输入啊什么的输出都没规定好。呃,当然有一些复杂工作的话,比如说像是如果用 nba 的 话,那有的时候需要需要去跑一些脚本的,比如说你要去爬虫或者连个 api 这些东西。那 我们把这个这部分纯执行这部分放在一个 execution folder 里面执行这个 folder 里面,这个 folder 里面就只放那些 python 的 脚本,各种各样的那种执行执行的代码。为什么要这么设置呢?因为 directive。 呃,它这个里面 它是完全的灵活性,让大模型去做决定的,但大模型决定的话,它还是有一定的概率的属性,有一定的确定性。但是这个 execution folder 里面,它这些脚本是确定性的,是稳定的,而且是非常非常快速的。 呃,这样就既平衡了一个呃创造性,同时又平衡了一定的这个稳定性,所以叫 energetic workflow。 那 中间这个 oxaction 它是干嘛用的?它是中间一个过渡层,也就是 他像一个项目经理一样,每次从九幺 k 里面看要做到什么,要做什么任务以后,他就把这些任务,然后准确的去调用对应的这个工具,然后去呃综合,然后去完成。对,然后他还有一个功能,就是确保你在整个这个工作流他能呃 有一定的这个叫做鲁棒型。就是说如果你这个工作里头他比如说某次降维 a p p 失败了,那他应该返回一个什么样的一个信息,或者是嗯 应该进入另外一个分支。当然还要说一下,就是呃你可能运行几次有发现更好的方法呢?他也可以帮你去去更新这个脚本等等。 首先总而言之就是整个这套互动的方式都是在 call 点 m b 里面写好,然后告诉在 call 点 m b 里面告诉他说,呃这个 folder 里面放的什么,那个 folder 里面放什么?你到时候去里面找就 ok 了。

你让 cloud 指挥 codex 干活,任务一复杂,最先乱的往往不是实线,而是上下文。 simon wilson 点的很准, sub agents 最适合代码库探索和多步骤计划,因为单个 agent 装不下那么多脏活。 今天我把这层拆给你看,顺便讲清它怎么接近 agent teams 和 ccb。 复杂任务的问题不是模型不会做,而是读代码,找证据,做修改都塞进同一个窗口, 官方文档直接点名。 sub agents 特别适合代码库探索和多步骤功能计划这种天然并行任务。把这些步骤拆开后,主代理只处理结果和决策,上下文才不会越滚越乱。 codex 现在内置三种子代理, default 都得, worker 专注执行和修复, explorer 专注读代码。 这不是三个窗口同时聊天,而是不同角色先分别完成任务,再回到主县城统一汇总。 simon wilson 的 观察很准,这套模式已经成了 coding agent 的 通用结构, agent teams、 ccb code、 sub agents 不是 一回事,而是三层结构, agent teams 解决,上层协助 ccb 解决, cloud 到 codex 的 任务分发, sub agents 解决, codex 内部再拆执行。 前两层决定谁来指挥,最后一层决定 codex 自己怎么改。如果你之前就在用 ccb, 让 cloud 负责拆需求定边界,审结果,现在它终于能更细地指挥 codex 了。 cloud 不 再只把任务扔给一个 codex, 而是能明确要求 codex 先拉 explorer 查,再拉 worker 改。你还能写自定义 t o m l 代理,但先记住三件事,显示 spawn 六个线程一层深度 token 也会更高。 这项更新的意义不是 codex 多了个按钮,而是 coding agent 开始进入角色分工阶段以后,谁还让一个 agent 一 口气查证?改验慢指是副作用,更大的问题是它会越来越糊。

好,各位小伙伴们,大家好啊,县城和晋城我们都讲差不多了,接下来我们要对县城和晋城来做一个总结。首先县城和晋城从定义上就有本质上的区别, 县城是依附在晋城里面的,没有晋城就不可能有县城。县城是不能独立存在的,它是在晋城中 调用 cpu 资源的基本单位。那么系,那么这个进程是什么?是由操作系统在创建进程的时候会给你分配资源,所以进程是操作系统中分配资源的最小唯一单位 啊。一个进程默认他一定会有一个也现成了,这个现成呢?我们把它称之为当前这个进程中的现成,是吧?那么你可以在当前这个进程中还可以创建多个其他的子子现成, 那这样子其实就是在一个县城中就有很多个县城了。那下面这张图整个这个蓝色的框代表一个进程,每一个红色的箭头代表一个进程,但其中有一个进程一定是主进程,其他的全部都是子进程。你还可以有很多其他的红色的箭头。 这就是从定义上来说有进程和进程不同的地方。接下来我们从它的工种上的一些区分,这样字体变大一点。 那第一个进程之间是不共享全质变量的,我们只能是要进程时间进行通信,就是一个进程中一个进程,我想把数据发送给另外一个进程。可以的,那用两种方法,一种是使用这个愧, 第二个是使用判好第二点区别,其实后面这句话还没有,没有是说其实在第二点说了,县城之间是可以共享全变量的,刚刚我们就试了的,但是也要注意资源竞争的问题, 就其实就要注意什么?注意你这个局变量可能被多个县城去使用和做计算,那么使用和计算的过程中有可能会出现什么出现脏数据的问题, 当数据问题其实就是所谓的资源竞争的问题,那么解决办法呢?就是采用复制所或者现成同步啊。三、创建进程的资源开销要比创建现实的资源开销要大 啊,这个之前其实我们就讲过的,因为创建进程需要干嘛?需要首先对于附近城所有的存据变量进行拷贝,第二个还要 由操作系统去申请分配新的资源。四、进程是操作系统资源分配的基本单位,这句话我们经常读,县城是 cpu 调度的基本单位, 县城不能独立运行,必须存在于进程中。那未来我们在企业真实的做这个分布式开发的时候,其实大部分情况下是多进程中再有多现成,其实大部分情况下多现成和多现成是合在一起用的。 好吧,我们给大家画一个图,是未来真正的分布式计算,或者是什么所谓的集群,他解决方案都是这样子的,我们假设我们用这个 blue 蓝色来代表进程,这是一个进程,这是两个进程, 以此类推,后面还有第三个进程,第四个进程,明白吗?那这次两个进程都是干嘛?都是同一个东西?比如说未来我们在做项目的时候啊,我用到这个一 w w s g i 的 服务,那么这个服务实际上是不是同一个服务里面他有多个进程的, 那这里面假设我用两个进程来模拟好,在一个进程中他又有很多个进程了,每一个进程都有好几十个进程, 这样子你可以看出来了,实际上整个分布式计算或者集群是采用多进程以及每一个进程中,每一个每一个进程中的多现成的方案去解决的,所以进多进程和多现成几乎是合在一起用的。好,接下来我们再继续。 多进城开发比单进城多县城开发稳定性要强。这句话啥意思?就是如果你采用的是单进城里面的多县城去开发,好管理一些。好什么好管理?尤其是 由于是单个进城,所以你的所有的县城都可以共享全据变量,那我共享全据变量的时候非常方便,不会出现我数据拿不到的问题。 是不是好了,多进程开发为什么稳定性要弱一些?因为多进程开发之间你要想共享数据是做不到的,你必须是通过 通过这个传输,通过管道或者通过退引来不断的进行数据的交付。因为这个进程和另外一个进程同时攻,同时做一件一件非常重要的事情,他们之间一定要相互发送数据的 好。第三点,优缺点,进城的优缺点是优点,可以采用可以充分的驾用 cpu 的 多核。缺点,资源开销大,因为每一个进城都要独立的分配资源啊,县城的优缺点是优点,它的资源开销比较少,缺点是不能使用多核。 所以为什么前面我说了,在真式的分布式编程或者是这个集群中,是多进程和多进程是综合在一起使用的,因为这样每一种的优点和现成的优点以及进程的优点都充分被利用到了。 好吧,当然这里面刚刚说了,多进程之间的编程是很麻烦的,是需要考虑通信问题的, 因为其实多进程是要解决,是要解决什么事情,往往是解决同一件事情,同一件事情你要告诉对方,我解决到哪里了,对方也要知道,那你解决到哪里,而我要从哪里开始去,去继续做计算, 所以他们之间要不断的进行通信,这个通信就会带来一些额外的开发的消耗。好,那关于多进程和多县城我们就讲到这了,你要记住美进程和县城的一些特点以及他们的区别。好,谢谢大家,再见。

今天只讲一个事,二零二六年编程模型的终极对决, openai 的 codex 五点三对战 antropica 的 opus 四点六。 这绝不是一篇简单的软文,我们基于代码、通过率、架构、理解力、多模态转码等五个硬核维度,完成了这次全网数据的聚合评测。视频开始前,先直接给结论,这两个模型的差异根本不是好用难用的问题, 而是战略方向的选择。你是需要一双快到极致的手,还是需要一个能深度思考的脑?先看最底层的硬参数, opus 四点六是个不折不扣的算力怪兽,估算参数量高达四万亿,走的是重型混合架构。相比之下, corex 五点三就是个精巧的轻量级选手,一点八万亿参数主打猫易专家混合。 这种架构差异直接体现在了账单上, opus 的 价格比 codex 贵了整整十倍以上,也就是说,用 opus 生成同样一段代码,你的成本是 codex 的 十倍。 这就是为什么很多团队只敢在关键时刻调用 opus 的 原因。再来看记忆力,这里的水分最大, codex 标称两百万上下文,听着吓人,但实际上它是靠 r a g 解锁技术凑出来的,本质上是把书翻得快,而不是记住了。 稍微复杂点的跨文件逻辑他就找不到了。而 opus 的 一百万上下文是实打实的 true long context, 他 是真把代码读进脑子里了。 能不能记住五千行代码之前定义的一个变量?这就是剪辑和阅读的本质区别。到底谁更能干活?看数据,在学 makeel 这种单纯的代码补全考试里,两家都是九十多分,基本没区别, 都接近人类极限了。但是一旦到了 s w e bench, 也就是让 ai 去解决 github 上真实的一手时,差距瞬间拉开了。 codex 的 解决率只有百分之三十一,勉强及格,而 opus 飙到了百分之五十八, 这是碾压级的优势。简单说,写个 hello world 谁都会,但要修复一个跨三个模块的并发症,还得跨 opus。 最后是速度,这直接决定了你的使用体验。 codex 每秒能飙到一百八十个头啃, 跟机关枪一样,你在 a d 里敲代码几乎感觉不到延迟。反观 opus, 每秒只有四十五个头啃,慢得像个老教授在打字。 这个巨大的速度差决定了他们的命运。 qdax 适合做你的实时聊机,帮你补全括号和变量,而 opus 只能放在后台去做那些不需要秒回的深度思考任务。聊聊具体的编程语言。这里面偏科现象非常严重, 先看系统级编程,特别是 rust 和 c 加加。在这个领域, opus 是 绝对的统治者。 rust 社区有个共识, codex 根本不懂什么是借用检查器,它写的代码看着像 rust, 但一翻译全是生命周期错误, 你得花大把时间去给它擦屁股。而 opus 不 仅能搞定复杂的 e book track, 甚至在 c 加加里,它能帮你做模仿原编程,优化内存布局。简单说, codex 是 在模仿语法。只有 opus 真正理解了内存安全的哲学,但是 战场一转到 web 前端和 python 脚本,局势瞬间反转。在 rex, next js 或者 py torch 这些生态里, codex 就是 神, 因为他吃过了海量的 n p m 包和 stack over 代码,他对这些流行框架的肌肉记忆极强,写代码的感觉就像直接从你脑子里倒出来一样顺畅。反观 opus, 在 这里就显得太墨迹了, 他经常会过度纠结你的 python 类型,提示写的规不规范,这种不必要的严谨会严重打断你的开发思路。 所以做 web 开发不要犹豫,直接用 codex。 最后是数据库和基础设施运维这块千万要小心。我们在测试中发现,一旦 sql 语句涉及到五层以上的嵌套查询,或者编写复杂的 kopinata's helm charge, codex 经常会产生幻觉,编造一些根本不存在的数据库字段或配置项,这在生产环境是致命的。 而 opus 被很多数据库工程师称为救命稻草,它不仅不瞎编,还能准确指出你的缩影为什么失效,并帮你重写查询语句。想保住数据库,还得靠 opus。 现在的编程不仅仅是打字,还要能看图。我们仍给他一张 figma 截图,要求生成 react 代码 box。 四点六的表现令人发指,它不仅还原了像素级的阴影和圆角,甚至自动把重复元素抽象成了独立的组建代码,直接能进生产环境。唯一的缺点就是慢生成一次要等一分钟, 而 codex 五点三只要三秒钟就能出结果。但看代码你就崩溃了,全是硬编码的内连样式颜色也不对,所以做快速原型用 codex 真要开发上线,还得等 opus。 但这不仅仅是模型强不强的问题,更是你用的顺不顺手的问题。 openai 最大的底牌是它跟微软的深度绑定,在 vs code x 里, code x 五点三是原生集成的,它有个独家功能叫幽灵文本。这东西很邪门,它不是等你敲完代码再补全,而是预判你的意图。比如你刚在写测试文件名,他后台就已经静默把测试逻辑写好了,你一回车,代码直接砰的一下全出来了。 这种零延迟的跟手感,目前只有 codex 能做到。 opus 没法拼速度,所以它走了一条完全不同的路。 在 ctrl 二点零或者 win serve 这些第三方 id 里, opus 四点六主打的是全库深度审查,你可以直接选中一个几十个文件的文件夹,右键让 opus 重构, 它会花个十来分钟把所有文件扫一遍,然后给你一份详细的代码变更清单。这是一种异步的工作模式,你下完指令去喝杯咖啡 回来,他已经把最难啃的骨头给你啃完了。这种架构级的重构能力,是那些追求速度的小模型想都不敢想。聊完好不好用,咱们得聊聊更严肃的事。安全。根据一份流出的金融行业内部备忘录,不少大公司是明确禁止在核心业务里用 codex 五点三的。 最大的雷就在于数据回流。简单说,他有时候会莫名其妙的吐出别人的私有代码,这在法律合规上是过不去的。而且他在写 aas 或者 rsa 这些加密算法时,特别喜欢用那些已经过时的老库,写完了还不给任何安全提示, 对大厂来说,这简直就是上限及漏洞的定时炸弹。相比之下, antropics 旗下的 opus 四点六就稳得多了,因为它内置了极其严格的宪法及 ai 护栏,它不只是在被动携带码,更像是个随行的安全审计员。 如果你让他写一段可能导致 cto 注入的代码,他不仅会当场拒绝,还会一针见血的指出你现在的代码库里哪里还有类似的漏洞。虽然他写的慢,价格贵,但这种自带审计能力的特性,却是让很多需要处理敏感业务的技术高管睡得着觉了。 如果把这两个模型比作员工,格列斯五点三就是那个 l 四级别的高级工程师,他手速惊人,各种流行框架信手拈来,非常适合快速清理零碎任务。 但他容易为了赶进度走捷径,所以你得盯着点,别让他带崩了代码质量。而 oppo 四点六则是标准的 l 六级别首席架构师,他干活慢条斯理,但方案都是深思熟虑过的,安全性、 扩展性一步到位。虽然他很贵,干小活也显得啰嗦,但这种大局观和思考深度是不可替代的。 面对这两个极端,目前最聪明的做法是混合模式。你在 id 里写代码时,默认让 codex 五点三跑时是股权, 利用它的毫秒级响应维持你的开发新流。而一旦涉及到架构设计、复杂逻辑重构,或者 那个修了半天也没头绪的奇怪思锁,赶紧去侧边栏呼叫 oppo 四点六。简单说, codex 负责你的手,也就是执行, opus 负责你的脑,也就是决策。这套组合拳打下来,才是目前编程效率的终点。

好,各位小伙伴们,大家好,接下来我们开始讲死锁的问题, 死锁的问题也是由上节课我们讲的那个物质锁造成的,就当你的锁很多,或者说有一个锁没有被释放,那么其他的县城抢不到,那我们之前说过了呢,大家所有的县城都会在这堵塞着,那所有的县城都在这堵塞着,就叫死锁,就这么简单 啊。死锁的意思其实就是县城,很多的县城不是一个,有可能是一个县城一直在等待对方释放锁 啊,但是对方永远不释放,就是出现了死锁的问题了。死锁问题其实就造成了整个应用程序就全部暂停了, 所有的线头都在这等待着,那就不能再处理其他的任务了。死锁问题是尽量的不要出现的,我们接下来让写代码,让大家体会一下这个死锁是什么样的一个情况。好,先说一下需求, 根据下标在列表中去取值,保证统一时刻只有一个县城去取值。那这啥意思呢?我们有一个列表 啊,这个列表里面我们只允许一个县城每次从列表中取一个值,而且同一时刻只有一个县城取,取完之后你就释放,然后交给下一个县城去取。好吧,是这个意思啊。回到我们的 python 中,接下来我们新建一个新的泰文文件,零五做问题啊, 我们先把该导的导入一下, read, read 好 好,然后呢,我们还需要 lock, 然后接下来,呃,我们就先 lock, 先定一个,定一个锁, 创建一个锁,这就创建好了。创建好之后呢,我就定一个函数,把需求写一下,而需求就是根据下标,每一个县城是根据下标去获取列表中的值,但是我们有个要求,同一时刻只能有一个县城去取值。 定一个函数,这函数呢?叫 get 啊,那个 e n e。 好, 那你要给我一个下标叫 index, 那 我接下来我首先去获得锁, 对不对?那么就是,呃, lock 点 a c 奎,好,然后接下来如果你获得锁之后,接下来我们怎么做?接下来我们就要从它在,我们在上面也定一个全局变量吧,定一个 my 下线吧。 九,谢谢,我就写这么一个列表号,那他要从列表中去取值的呗。那从列表中去取值的话,我们就肯定是要做一个判断,因为有可能你取的这个,你根据下标去取值,取值的话,很有可能下标越界了,对吧?判断,判断下标是否 越界,那怎么判断呢?就是 if 你 这个,所以你根据这个所以来取值,你这个所以如果大于等于 my list, 就是 我们这个列表的长度,对不对? l my list 如果你大于等于这个 my list, 那 就意味着下标是越界的,对不对?好,我们就给他一个提示,下标越界了,你完入的下标是加个花括号加 f, 那你传入的下标的就是我们这个 index, 对 不对?由于你这个下标越界的话,那我们能能能拿到值吗?拿不到,拿不到话呢?我们,那我们直接 return, 对 吧? return 呢? return 负一吧,因为没拿到,没拿到值的话我就负一,那也不好,我们至少就 return 吧。好,我们任何值。 ok, 好, 其他情况下,如果你拿到值了,拿到值的话,那我们这个我们这个 v 就是 结果,就可以通过 my list 中括号把 index 传进去,因为你下边没越界的话,你直接从这里面去拿,对不对?拿出来之后呢,我们打印一下, 一样的当前线乘,取到号值,划号过去了,就是我们这个 v 吧。哎,取到值之后呢,我让它,我模拟一下,我让它 time 点 sleep, 离休眠,零点零点,零点三秒,零点四秒都可以。好,我们这个 time 要导进来啊,进来啊,然后接下来我们再释放锁 点 release 指示放松,那么这这样代码呢?我相信大家应该都能看的,不难啊。 好,现在呢,我们再通过卖函数,我们做循环,呃,采用多个县城,然后 in branch, 我 们用多个县城,我们用二十个县城。好,然后呢?接下来每次每次循环创建一个县城,这个县城要怎么创建呢?直接 thread, 然后 target, 这,这,这是我们刚刚的这个 get value 函数,这个函数呢,是要传参,所以要指定 x, x 是 个圆组,传什么参数呢?下标,那我们下标就基于这个 i 好 不好?每一个 每一个县城就根据这个 i 这个下标去取值,当然了,它只有一个值,所以美音就里面得用逗号加个逗号啊,然后接下来 t 点 star, 那 这样的话,其实循环了二十次就创建了二十个县城,对不对? 我们写创建二十个县城,对,模拟多县城分别列表里取值操作。好,那其实他们都调用的是这个 get value 函数,是二十个县城都是调 get value 函数,那这个时候我怎么区分是哪一个县城呢?那我们在这里可以打印一下, 打印一下当前县城是谁,对不对?当前当前县城,县城是包括括起来,这里面怎么去打印当前县城呢?其实我们有一个函数,我们有个函数叫 叫 thread, 有 一个函数这个函数在这,这是 current thread, 导进来, current thread 其实就是当前县城,就当前县城就是 current three。 好, 我们跳这个函数吧,跳完这个函数,其实当前县城包括他的一些包括他的默认的名字都会打印出来了。打印出来之后呢?我们我们放到这句话中格式化一下,好吧,就是让大家看的更清楚一下。 好,可以了,代码写完了,写完了之后我们来运行一下,一运行就会出现什么问题呢?就会出现来,我的程序在这一直暂停不动, 各位,我们这二十个县城在这一直暂停不动,看到没?对不对?但事实上它已经已经有几个县城已经拿拿出一些值了, 对吧?你看这里面当前县城是 thread 杠一,对不对?这这个这个监控里面的内容,其实就是那个 current thread 那 个函数打印的结果, 好吧?写得到的结果,对,你可以理解为就是当前县城一,县城一取到一个值是一,然后县城二取到一个值是二, 对吧?县城三取到一个值是六,那好像前面几个县城取到的值都没问题,对吧?一二六嘛,对吧?然后县城四取到值是八,县城五取到值是十九,对吧?然后县城六, 他说下标越界了,你传入的下标是五,对,县城六,他要取下标为五的那个值,可是这里面列表中有没有下标为五的值了?没有, 对吧?超出了,所以就要越界了,那越界完之后就堵塞了,说白了其实就是死锁了,因为这里面是包括后面的所有的县城都堵塞了,这个就是死锁了。那为什么出现了死锁了?我先把它这个终止一下, 你等,你等多长时间,他都不会主动的去终止,你要自己手动点两色的按钮。为什么会出现死锁呢?是因为当第六个县城,由于他的下标是越界的,所以他进入到,进入到了十四行这个条件里面去, 进到十四行条件里面去之后呢,打印了这么一句话,然后呢直接返回了。那么前面我们讲过 return 这个这个这句话这个关键词是代表整个函数全部退出,是不是啊?而且这个函数 return 后面的代码不管的都不执行的直接退出了, 对吧?那后面有一个什么代码呢?后面有一个非常重要的第二十行的代码,类似这行代码,也就是说后面的这个二十行代码,他并没有去释放锁, 就第六个县城,他拿到这个锁之后,进到函数里面,进到函数里面,由于他既直接满足了十四行的条件,所以他在十六行的时候直接退出函数了,退出函数这时候他没有释放 这个锁,因为他原来已经抢到这个锁了,才会执行十二行以及十四行,但是他又没有释放。由于第六个县城没有释放,所以其他的县城第七个、第八个、第九个,这后面所有的行程都在这 第,都在十一行这里卡着不动,好吧,为什么卡着不动?因为剩下的县城都没有抢到锁,因为只有一把锁,然后呢 这把锁被第六个县城抢到之后呢?他一直没释放,造成这么现象对不对?那么解决办法我相信大家应该马上知道了对不对?在 return 之前,不管你有没有下边越界,在 return 之前,那我也释放一下吧,对吧? log 点 release, 这样的话不就 ok 了吗?好,我们再运行一下, 在运行完之后呢,你发现就不会出现死锁问题了啊,对不对?那其实是从第六个县城开始,后面的县城全部都是越界的, 对吧?越界之后呢,它也能够释放锁啊,所以不会造成死锁的问题。明白,这是一种解决办法, 就是你千万千万注意在函数中有这个 return, 或者是抛出什么什么异常。对,还有抛出什么什么异常,也是会造成这个。呃, release 函数没有被调用到,或者 release 常用代码没有被调用到, 知道吧?但是呢,前面我也给大家讲过,有一个位子语句是不是可以,可以不需要我们程序员来来手手动的去释放锁的,对不对?所以接下来我们在这个代码基础上套一下,还有一种解决了。这解决方法是什么?尽量的使用位子语句,不要再使用原来这个。 好吧,我把原来这个删掉。第一,接下来我们这个叫第二种。那么第二种这个代码呢,其实要改造一下,在这个地方就要改造,怎么改造?使用 word 语句对不对? with 外号,然后其他代码都得缩进 是吧啊?缩进之后,当然这个 release 你 就不需要了,因为我们使用 with 语句就不需要手动 release 了,包括三十二号,这个 release 也不需要了, 其他代码都保持不变。好吧,你看这样代码也简洁了,是不是啊?然后我们接下来运行,看他出现死锁的问题没?第一县城一直到第五个县城全部拿到了,第五个县城后面的县城全部没拿到,对不对?对吧?你看我们使用位子语句,其实他不管你里头有没有 return 还是没有瑞特,他都会帮我们去释放这个锁。所以各位讲到这大家应该明白了,未来你没办法在使用复制锁的时候,优先尽量使用微子语句, 这个微子语句在之前我们也讲过的,他的主要目的就是为了帮助我们去释放资源。好,那关于死锁问题和死锁的解决方法,这里我们就讲完了,谢谢大家。再见。

什么是线程上下纹切换呢?线程在直线过程中会有自己的运行条件和状态,也称为上下纹, 比如之前所说到的程序计数器占用信息等。当出现如下的情况的时候,县城会从占用的 cpu 状态中退出。第一点,主动让出 cpu, 比如调用了 sleep wait 方法等。 第二种,时间片用完,因为操作系统要防止一个县城或者进城长时间占用 cpu, 导致其他县城或者进城饿死。 第三种,调用了阻塞类型的系统中断,比如请求 io 线程被阻塞。第四点,被终止或者结束运行。这其中的前三种都会发生 线程切换。线程切换意味着需要保存当前线程的上下文,留在线程下次占用 cpu 的时候,恢复线程,并加载下一个将占用 cpu 的线程上下文,这就是所谓的上下文切换。 上下文切换是现代操作系统的基本功能,引起每次需要保存信息,恢复信息,这将会占用 cpu 内存等系统资源进行处理, 这意味着效率会有一定的损耗,如果频繁的切换就会造成整体效率低下。所以在使用线乘池的时候,线乘数量的设置一般和 cpu 的核心数有关。

好,各位小伙伴们大家好,上节课我们教大家啊,其中第一只方法来创建了一个县城,剁了一个累加一的计算,计算了多少次了? 五亿次,那我们发现两个县城只使用多县城,反而没有单县城快,对不对?原因就是因为有 g r l 的 所存在。这好我们接下来给大家讲一个新的知识点。第二点,设置首付县城是什么意思?默认情况下,前面我们说过,组县城都是等待 所有的子县城结束之后,主县城才会真正结束的。当然了,我这句话其实应该在什么时候讲?是在主县城的所有银行代码都已经结束了之后, 主县城的最后银行代码都结束了之后,那么这时候他还不会结束,他会等默认情况下会等待他的所有的子县城执行完了,他才会结束,对不对? 好,他 python 在 进程启动之后,会自主创立一个主县城之后使用多县城机制,可以在此基础上来进行分枝,分枝进入子县城,这样就产生了子县城了。 子县城启动起来之后,主县城默认会等待所有的县城执行完成之后再退出。 那这回到我们的拍唱代码中,其实我们通过上节课已经验证了的,我们如果这个地方不加交印,其实主线程一直到他的作废一行代码三十二行执行完成之后 就进入了等待状态,等待什么?等待他的下面的子线程全部完成,那么才真正退出,明白吗?除非你手你通过交印函数让我们的主线程 主动的处于一个在某,在在哪一行代码处于一个堵塞状态,这个轴影我们讲多进程的轴影是一样的,所以在多县城里面的这个轴影我就不再详细给你指出了。 ok 啊,我接下来给大家说了,首付县城,首付县城,其实你先了解这个概念之后,接下来我们才讲首付县城的概念。首付县城就是说我们可以将子县城设置为首付县城。 记住守护线神只是针对子线神的,此时主线神任务一旦完成,所有子线神将会和主线神一起结束,就算你的子线神的代码还没有完成,也是强制让你这个子线神也结束, 这样的县城就称之为叫首富县城。这随着主县城结束,子县城强制结束的县城就叫做首富县城。啊。这句话你还没听懂,我再讲一次, 就是假设我想给这个子县城设置一个特点,什么特点?他跟着我们的主县城结束一起结束,不管我这个子县城还有没有代码,没有执行,我不管, 只要主县城一结束,我就跟着结束,那我这样的子县城就叫做首付县城。好吧,那设置首付县城有两种方式,第一种,在创建县城的时候,指定一个, 指这指定一个参数 demo 等于处。好吧,或者在你启动之前,在你 dong 四大之前单独给这个 demo 设置为处,这两个都行。好,那我们回到这里来,我们给大家试一下, 我们现在还是采用多县城的情况,这个是单县城,单县城我出声,县城啊,这个单县城我先出声,把原来的这个多县城打开。现在这两个县城是守护县城吗?不是,播的情况下,大家都知道的是主县城,如果我们不加交友,主县城会执行完他的代码,说白了就执行完他的任务。 执行完三十四号这个任务之后,其中三十四号是他的任务,主县城任务的最后一行代码, ok。 哎呦,这个时候可能有一些基础比较差的小伙伴们可能不太明白,老师这个主线城到底是哪些任务?其主线城就执行的是从从这开始 导入定义一个函数,是,这不是第二个函数,这是定义一个函数开始执行。十九行,二十行,二十一行创这个县城,二十二行再创这个县城,二十五行把第一个县城启动,而是二十六行把第二个县城启动。三行得到一个结束时间,三十四行 这个主线绳代码到三十四号就结束了。 ok, 一 结束,那他他并不会套,你看主线绳还在, 对不对?还在他,但实际上,实际上他已经执行完三十四号了,因为他打印出这句话了,他要等待他的子线绳结束完之后,他才会真正结束, 这是默认情况下。好,那,但是,但是,我现在假设啊,我把这两个县城设置为首部县城,加个仓速就可以了,是加在外面加,这,这也提示人数表示首部县城的意思啊,一样道理,这 在这粘贴啊。这个时候你会发现一个特点来,我们在运行其他代码,不动,在运行走,你看,结束了,哎,这个红色按钮不见了。 ok, 主线城执行到三十四号之后,主线城直接结束。那老师,主线城没了,子县城还在吗?不在了,子县城也不管他有没有任务要执行,他也会结束了,即使我们的子县城累加一夜累加两亿五千次,他根本就没有雷加瓦, 但是由于主县城直接退出,造成他的所有的守护县城也直接停止了,谁没有吗?这就是守护县城,那守护县城这是一种设置方法。那还一种设置方法是干嘛?是写在炸来基础在斯大之情建成已经启动了,他就没办法再设置了。 这个大家好理解,就好比说我们这个工厂里面出了问题了,但是我们这辆车已经正在生产了,那没办法修改,无非是把整个摄像线停掉,对不对?这一个意思啊?也就是说你如果在这样设置,那你就要在 start 之前提点, 对吗?对吗?等于那和这种写法是一样的。好吧?好,那这就所谓的守护现场,那你到底什么情况下设置守护现场? 你自己要根据需求来决定。总而言之,老师教大家了,就是首付县城是什么意思?你要心里知道就行了。未来在企业开发过程中,你真的需要说这个子县城我要把它强制干掉,因为我发现主县城结束了, 那你就可以采用这种首付县城的方式,好吧? ok, 好, 那这节课我们先到这,谢谢大家,再见。

前两天在 x 上面看到一个很不错的讲 cloud 的 文章,里面学到几个小技巧,然后这些技巧我都做了一些图,让大家今天把这个文章深度的拆解一下。看完这个视频以后,你应该对 cloud 的 使用方式能产生一些新的这个见解。 第一张图是关于精确指令,以及为什么它的必要性在于什么地方。然后就是一个上下文管理的一个一个部分。那首先是上面这个是模糊指令, 比如说有人他说帮我写个程序,那下面那个是精确指令,比如说你跟拍算说我要一个计算器,可以支持加减乘除,那两边的结果会有什么不一样,而且又是模糊的这条路呢?代理,他会开始 发散思维,他会开始猜有时候是什么程序呢?是要做游戏,是要做工具,是要做一个网页,他研究各种干的可能性,那上下文就会被很多无关的信息去填满, 等真正要开始干活的时候,脑子里面就会上下文就会塞满了各种各样的垃圾,容易混的,容易出错,因为上下文对于表现是直观重要的。那下面这方面如果你用非常精确,同时不知道精确,有人可能以为这个提示词是越多越好,但其实每多一份一部分提示词,尤其是多很多无关的这种文件 图片,那是会非常影响上下文的。所以提示词的重点不是多,而是要精确、精准。只要你把目标精确了,要精确了,上下文很干净,执行呢会非常的精准。你可能会问,有的时候就不知道具体要做什么,那怎么办呢?其实很简单,你要把研究和实现分开,你先让代理帮你调研,也 就是开启 plan mode, 确定了方案之后再开启新的计划,把具体需求再去给到他,这样的话脑子里面只有需要的信息,没有噪音。因为实际上很多人 他不进行上下文管理的,他会有先计划再去实行概念,但他在计划的时候,大家都知道,计划的时候会不断的调整我们自己的一个思路,一个方案,所以说会有很多冲突的信息,所以到时候计划完以后,一定要把这上下文清除一下,或者是做好一个 plan 点 md 自己的实验方案方案以后再去让他去执行, 不要让那些多余的信息污染上下文。 ok, 我 们来看下一张。 ok, 这一张讲的是一个三代理的一个对抗系统,这张图什么意思?讲的是让代理之间互相的制约的一个技巧,他 ai 代理他有一个特点,他会想去讨好你, 比如说你让他去帮你找一个 bug, 他 就真的会去给你找一个,有可能有的时候其实没有 bug, 但他可能会给你编造一个,因为他的目标就是讨好你,在你这里得到高分,那怎么办呢?就你要用他这个讨好你特性,你要反过来对付他,这里面有三步,第一步就是你要派一个 bug 发现者, 就是你跟他说找 bug 是 有分的,越严重分越高,那他就会拼命的去找他,把所有可能的这种 bug 都给你列出来, 但这里面可能有真有假,有可能出现幻觉。那第二步呢?再去派一个对抗者,你告诉他说你推翻一个 bug, 你 就得分,但如果推翻错了,你要扣双倍的分,那他就会去拼命的反驳,顾虑他被扣分。最后你要找一个裁判,让他来判定谁对谁错,那猜结果怎么样?三方打压之后筛选出来的就是这真实的一个 bug, 这就是利用他们 a 阵的之间想去讨好你的这样一个 bug, 这就是利用他们 a 阵的来去帮你做这个事情。 ok, 让我们看一下下一步他这个图呢,讲的是一个规则和技能的一个迭代的一个关系,或者说是怎么去调教你的代理。你说你看这里面一开始我们都裸机起步,没有配置什么样的规则或者是 skill, 就 像刚来的实习生一样,他什么都没有,你手把手教他做很多事情,但是慢慢告诉他,这个不要做到规则里面要怎么做能写到 skill 里面,或者是要连什么样的一个外部服务,那规则告诉他是别干什么,或者是要连什么样的一个外部服务,那规则告诉他怎么去做某些事情。 所以说这里面其实是一个是一个循环的过程,因为规则多了,他会有矛盾,技能多了,如果技能之间有冲突,他做事的方式也会打架。所以如果你的括号代码你括号在 md, 他 随着你做项目做不断的添加新的规则,然后他可能会从原来的一百多行不断的添加新的 规则,然后他可能会从原来的一百多行不断的膨胀到几百行成上千行。那还是我们刚才说的上下文管理这个部分, 它的点 m d 本身,它会当做一种类似于你可以列成系统题的词吧,然后注入到上下文里面,所以如果呃到点 m d, 它变得很臃肿,它有几万行,几千行,那对于上下文是一个非常糟糕的事情,而且它里面可能充斥着各种各样矛盾的东西,所以一定要去定期的去清理合并, 把存在矛盾的地方解决掉,把过时的去删除掉。那个文章里面它写的是一个叫做 spa, 你 想象一下啊,去定期的给你的单个项目进行一个排毒, 因为随着项目的推进,总会说变得越来越臃肿,总会是矛盾越来越多,所以要定期的把这些矛盾清除一下。 ok, 下一个是什么? 我们讲一下这个任务终止的条件。这张图就讲的是一个很多人会忽略的问题,代理不知道什么时候去停止工作,你看这块代理,他非常擅长去开始任务,但你让他实现一个空壳的一个函数,然后就跟你说完成了他,其实他不是说他故意偷懒, 而他也不知道你具体完成了是指什么意思。那怎么办呢?需要给他设置一个终点线,这里面我分两两边去看一下,你要明确告诉他什么情况下可以停,什么情况下才能完成。这边这条这块,呃,这边就正确这样一个做法。测试通过了吗?没有通过的必须改通过了。那好,截图验证一下, 设计符合预期派行为对不对呢?如果都 ok 了才算,那才算真正的任务完成。通过进阶一点,你可以写一个 task contract 点 m d, 也就是类似一个叫任务合约的东西,在这个任务合约里面明确列出说这个任务他要做什么,任务做完以后测试怎么写 截图,要验证什么?毕竟他需要跟着这个 contract, 跟着这个代理的任务合约,他需要一项一项去检查,全部都达标以后才能收工。所以说就要记住测试通过加上截图验证, 这才算是任务真正完成。而我只是口头的说一句啊,把这个做完就把这个做完,它需要一个明确的关键词,一个明确的 rubric, 一个评分表, ok, 这是第五。这个其实还是讲的是一个 ai 讨好的一个特性延伸出来的事情,就是因为 ai 它会讨好我们,所以说我们要提置词的时候要用一个中性的提置词,你看这边啊,你说帮我找找这个代码里的 bug, 那因为他代理他会去迎合你,他就会拼命找问题来,如果代码就没有 bug, 他 可能会给你编一个出来,这个就是他设计特性导致的,你让他找,他会给你找 bug, 那 就算没有的可能也会给你捏一个。 所以说想避免这个事情,你就要用一些中性的,你会因为让他不为了找 bug 而找 bug。 呃,比如说怎么说呢?你看这边跟他直接说分析代码逻辑报告,你的发现这句话就是非常的中性,他没有预设说这边本来有一个 bug, 而是客观的让他去分析,可能有好的地方,可能有坏的地方,也有可能没有什么坏的问题,那他就会客观的分析,然后发现什么他就说什么。给你举几个例子,比如说有一些诱导性提示词啊,找 bug 和分析代码报告,发现这就是一个有一定偏向和一个完全中性的一个对比, 或者是你可能会说这个什么有问题吗?或者是帮我优化一下是吗?那这些都是有一定的诱导性,当然一般可能来说结果不会有很大的影响,但是也会有诱导性。 ok, 最后咱们快速回顾一下今天咱们讲的五个技巧。 首先一个还是上下文管理,这里面要做到两点,一个是精确的指令,另外一个就是研究跟 q 开始编码那个部分要做一个分离, 题词的标准就是要少而精确,而不是多而复杂。还有就是多代理对抗,就是让代理之间他们互相去制衡,然后筛选出更高质量的这样一个代码, 但这里面他用的就是一个这样一个可以叫三权分立的这样一个体系。那第三个就是规则和技能,这边呢,随着我们编程的 项目去的深入啊,肯定会规则越来越多,这个是没有问题,但是一定要去定期的去筛选一些规则,筛选一些规则和技能,把一些冲突的还有不需要用的规则都去除掉,进去做一下排毒任务终止条件这块,你需要明确的告诉我们的 ai agent 什么地方 做到什么程度,有哪些指标任务算是完成,那这里面你可以通过测测试解任务合约,还要截图验证这样的一套方法,明确任务终止的这个时间。 最后一个就是 ai 的 讨好的这个问题,建议你去用中性提示词,同时在问问题的时候不要预测结果。这五个技能,其实五个方法其实都是可以立马就用的,大家可以去马上去试一下,还有什么小的这种技巧,欢迎大家分享。

强烈推荐大家去使用 open ai 的 ai agent 编程助手的终端 codex, 甚至你可以用 codex 来修复龙虾中的 bug, context 加 openclaw, 简直是天作之合,完美的搭配。而且啊, open ai 在 这个点上还真的是比较大方的, 如果原来你是 openai 的 plus 或者是 pro 会员订阅用户的话,在 codex 上面会给你配备一定额度的 token 的 使用配额。 大家好,欢迎来到玲姐说一 i 这期视频啊,我们聊聊同步在 windows 上线的 codex 的 使用,非常推荐,之前其实他在苹果的终端也上线了,所以我在这里给大家做一波强烈的推荐。 原来你在使用 cloud code, 同样的二十美金或者两百美金的这个订阅计划。大家知道那个配额啊,是很不够用的,稍微干点活就不能用了,就要另外买 token 了。但是 codex 使用的配额还是相对比较充沛的。 open ai 你 花二十美金每个月的订阅啊,给你整个的配额还是挺多的,又可以聊天,又可以申图,还可以用 sora 每天大概十到三十条的 这个使用条数,同时你还可以使用 codex, 现在苹果用户和 windows 用户都可以使用了,赶紧在电脑端把它下载下来。这个编码助手啊,也可以说是 cloud code 的 平替, 当然叫平替啊,也不太合适,我只是说 cloud code 在 这个领域上面我之前讲过,它做过很多刻意的练习,解决过很多开放性的生产任务,所以它整体的位置是行业老大的位置。我说这个领域啊,不是说呃,所有领域 是在这个生产工具的 call 顶的领域啊,它是属于引领的位置,而且它也一直在定义行业的标准,包括大家熟知的 m c p, skill, co work 等等的工作方式。但是呢, codex 这一波的上新呢,确实是有它的创新点在里面的,它用户的交互界面体验比较好, 对于那种比较厌恶命令行的这种交互方式的用法会特别的丝滑。它会有自己的特色,比如说像工作数这样的任务的并行的方式啊,我觉得对于多任务并行啊也特别的友好。另外使用它你基本不用付出 额外的成本和费用,更重要的是加持上了它最新的五点四的模型。 五点四最重要的一个优化是什么?就是它加强了在 computer use 上面的能力,也就是这个 agent 的 编码助手,它有更强的执行操作和理解的能力,相当于它的闭环能力更强了。 所以听到这里,是不是已经迫不及待去微软商店下载 codex 了?这期视频我会给大家介绍 codex 的 特性,以及如何从零到一。使用 codex 我 会给它几个实战任务,看看它这个过程中会遇到什么 bug, 怎么执行解决,会不会有翻车的情况。 如果你是苹果用户呢,直接在 app store 里面去下载就可以了。如果说你是 windows 用户啊,你是 win 十及以上的用户, 你就直接在微软的这个 microsoft store 里面直接下载就可以了,它的整个的下载安装非常丝滑,你就按着它的引导一步步完成就可以了,这里我就不做深入的演示了,这个就是 codex 安装后打开的界面, 是不是一股熟悉的味道扑面而来,特别像 try gpt 的 聊天窗口,对于那种使用命令式的交互窗口,仍然有一些抗拒的。这份使用者 codex 我 认为是一个非常好的选择。 在这里啊,你可以很好地过渡。我就结合 codex 的 使用,从零到一实操,给大家也讲讲 codex 的 使用特性。 首先啊,在设置这个地方,点开,大家在这里登录自己的 try gpt 的 账号,同时在这里可以很快地切换你经常使用的语言,英语或者中文都可以。在这个地方会显示你这个账号的额度, 它是通过两个维度限制你,一个是五小时的使用量,还有一周的使用量。如果说你真的做很多深度密集的 这个使用任务的话,我觉得这个额度可能还是不够。但是对于大部分的使用者而言,我认为这个额度啊,已经比 cloud code 要大方很多了,基本你们都是够用的。 在出事安装的时候,在这个地方,现在我已经弹点掉了啊,就是它会弹一个窗口让你安装这个沙箱。 这个专用的沙箱也是 codex 针对 windows 的 一个设计,有这样的沙箱,让它的整个的命令的执行在一定受控的环境里面,也可以有效地保护你系统本身运行的文件, 就按照它默认的配置去选就可以了。在下面这个位置啊,可以更改权限的范围,除非你非常笃定啊,给它完全的访问权限, 大份情况下建议使用默认权限。另外,在模型这个位置,可以选择不同类型的模型。 现在比较推荐初学者使用的是 g p t 五点四,因为五点四是一个综合型的模型,它既有理解能力,又有推理能力,还有 computer use 的 能力,还有 coding 的 能力,它是一个综合型的模型。另外呢,如果是针对专门的 扣顶的工作,可以选择五点三 context, 它是针对 context 这个环境和 context 的 任务,专门进行过优化的这么一个模型。 在这个地方,推理强度一般默认是高,也可以选择超高,当然这个背后所消耗的 token 数就会不一样。另外在加号这里啊,你可以去上传文件和照片, 这里就会有很多的玩法了,又可以对一些多模态的内容啊进行加工,比如说对视频进行剪辑。同时在这里可以调它的 speed standard 和 fast。 这里啊,我觉得它有一个做得很好的地方,相当于它在用户体验侧的一个优化,它这里有一个计划模式, plan 模式。其实这个技巧呢,我在之前给大家教学 chain 这个软件的时候,也会讲过类似的技巧, 只是说他现在把它单独拎出来了,对于这个功能进行了优化。你在做一些项目的时候,你可以先计划,先和这个 gpt 去沟通, 这个项目怎么规划,它的框架是什么,怎么设计,计划完了之后再开始执行 coding。 所以 从这个层面来说, context 它的定位啊,其实分为三层,第一层它是一个代码助手,它可以帮你写代码,解释代码,审裁代码。第二层,它是一个工程型的 agent, 它可以帮你去识别 bug, 修 bug、 提 pr 等等。而且它还可以做很多并行的任务, 比如说我在这里有个任务啊,你点击这个右击鼠标,在这里啊,它就有一个特色,叫做派生到新的工作树,叫做 walk g, 就是 你在做一个项目的时候,当它出现问题的时候, 你会发现可能有好几个东西要修。如果做过生产实践,你会发现啊,你修 a 的 时候, b 也在修,那么它们有可能把 a 修好了, b 又出了问题,就是它会出现相互的交叉污染这个情况。有了这样的 work tree, 你 就能够并行地进行很多工作任务,那么你发现没有,你的效率就提上来了。 codex 的 第三层,它还是一个电脑操作型的 agent, 比如说我刚刚讲的剪辑视频这样的任务,或者说其他的这个文件名批量命名的任务,整理会议资料的这样的任务,它其实都是电脑操作型的, 它也是一个电脑操作型的 agent, 这是我对 codex 这个 agent 工具的三层的理解。当你需要新建一个项目的时候,可以点击这个位置,这里点击 add project, 新建一个项目文档,然后在里面呢点击这个新县城。 同时呢,它这里有一个功能啊,叫做自动化,你可以让它定期的帮你制作一些任务,那么你就可以设置一些定时任务,比如说让它每天定期的帮你去搜集某个领域的专业信息,或者定期的跑一些这个整理文件文档的这么一个信息 等等等等。这里需要关注的一个点就是它的权限问题啊,你给它开多大的权限?当然它这里也少不了最近最流行的 skill 技能 这个板块我在 cloud code 的 这个视频里面讲过,它也是类似的,你看它这里,它的官方 skill 里面放在最前面的也就是 skill create 创建一个新技能的技能, 你在这里可以去调用它的技能啊,它不是那种命令的交付窗口。比如说你想要用这个 figure 码,你就可以点击这个加号,它就直接帮你安装了这个 skill。 如果说你想用这里面的视频生成工具,你就可以用这个 sora 生成视频的技能,并且啊,你想生成新的技能,点击右上角的新技能, 这里呢,它就自动调用了 skill creator, 你 就可以跟它去交互聊天,告诉你你要创建怎么样的技能,然后它帮你进行封装。并且啊,如果说历史你用的是 vs code 这样的终端,你也可以同步很好地去打开对应的项目, 很好的平移切换到这里。而且我自己用下来的体验,它会比 vs code 更好用一点。所以对于 vs code, 我 觉得大家可以放一放,然后平移切换到 context 这个终端来使用。下面我就讲一些具体的实操的案例来启发一下大家,可以用 context 做什么任务?它有哪些魔力?效果怎么样?好,我们进入任务实操,我先给他一个任务,我让他给我批量修改文件的名称。在这个文件夹里面我放了五条视频,这个视频是我 youtube 上面已经剪辑好的成品视频。 现在他的命名啊,只是有日期的标签,是没有主题的,我希望他能够基于这个视频的前六十秒所表达出来的内容抽取主题,把这个主题加上日期,对这些文件进行批量命名。 在 context 里面,我就把我的要求和希望达到的结果告诉给他,这里是我写的提示词。在任务的进行过程中啊,因为我们对它进行的是一个有限的授权,在一些关键步骤上面,它会来询问你的授权和意见。 比如说这里啊,它问你是不是直接就对这些文件名进行重命名了,你可以回答是,或者一直允许,或者是告诉他如何调整。这里啊,我就允许是 在这个思考过程中啊,他也会说,从命名的这个动作是越过沙箱的一步,可以看到,在这个过程中,你的文件,你的系统内的东西是比较安全的,这也是我比较推荐大家使用 context 的 一个原因。同时在这个任务跑的过程中啊,我再同步地开一个新的项目,新的县城, 点击这里的 add project, 创建一个新的文件夹, orange cad game, 然后选择这个文件夹,这样我就进入了一个新的项目文档。我现在想做的这个任务是类似这个经典的 flappy bird 的 这个网页小游戏这样的开发,把这个游戏的主角形象换一下,把那只经典的黄鸟 换成一只橘猫,飞行员稍微做一个调整。但是整个游戏的框架和逻辑啊,还是去参考 flappy bird 的 这个设计。在这里啊,我就把这个游戏的要求放到这个 context 里面。 注意啊,这个游戏的要求的需求文档和整体的项目框架,我也是让 g p t 给我写的,为什么我会这样操作呢?其实这也是一个技巧,因为虽然 open ai 在 codex 上面的配额还是相对比较大方的, 但是如果你要做比较极致的生产任务,这个配额可能还是不够,所以我就尽量可以省一点,把前面的需求设计和构建的这个阶段蓝图规划的内容交给 gptchat 去聊,用五点四 thinking, 这样子相当于前后的模型,是前后连贯的这么一个状态。先把需求沟通好, 然后呢,再回到 context 里面,在这里面我们还可以再极致一下,再细划一下,打开这里的计划模式,让它再给我规划一下这个游戏开发的任务。这里的推理功能,我选择一个超高,然后点击发送, 在右侧,这里就可以看到不同的项目文档,不同的县城,它们就在并行。如果说你比较关心的县城呢,你还可以使用这里的这个钉钉一下,它就会置顶在前面,这样子你关心的核心在修的一些 bug, 重点在做的项目就在最前面。使用了这么多款 编程助手的终端 app, 我 自己的感觉 projects 是 我整体用下来觉得最丝滑的。这里帮我把整个的开发计划规划出来了,包括需求理解,文件结构,关键接口,七步 mvp 开发计划,以及最后的验收,还有第二阶段的功能等等,都包含了。 他问我是否实施此计划,我点击确认实施。哎,这个文件夹从命名的任务已经完成了,他告诉我每个文件分别从命名了什么,而且他这里还讲了这个转写的逻辑是什么。前六十秒他识别出了 这个视频主要是讲什么内容的,然后提炼出的主题是什么,然后把这个主题加上日期格式的转写,变成了这个新的命名。我们打开 d 盘看一下, 欸,都命名好了,完成的很棒哦,以后这种批量重复的工作啊,都可以尝试交给 codex 来使用。当然对于这个 codex 这个工具啊, gpt 对 它的定位,还是说把它作为一个 agent coding 的 工具, 你要尽量让他做他擅长的工作。再回过头来看,他的执行路径是比较清晰的,因为他扫描发现我这台计算机没有装离线的音频转文字的转写的工具,这个不可用, 所以他就通过工具把这个视频的前六十秒进行抽帧,核心去保留底部的字幕区域。因为我的这个视频啊,有时候也会有这个背后贴了这个 ppt 的 信息,所以他会同时用 windows 的 ocr 去读这个字幕,以及 ppt 的 标题和页面的文字 综合来形成对这段视频主题的判断。最后呢,再把它整合成新的文件名,并且啊,它强调这次的授权仅在这个指定的文件夹里面进行操作,不能够碰其他目录的文件。 整个过程流程清晰,权限的边界也很清晰。这个任务其实对于 codex 都是非常简单的任务啊,我给他上一个高的推理权限,实际上也是有点大炮打蚊子的感觉。我想表达的是可以用 这个工具去执行以往我介绍的在其他终端的其他任务都是可以的,它的能力上限啊,和智能程度还是比较高的,甚至你可以用 codex 来修复龙虾中的 bug。 context 加 openclaw 简直是天作之合,完美的搭配。这个游戏的任务它完成了,总共花了十七多分钟,给了我这个试跑的链接。这个试跑的链接啊,就存在我的 d 盘里面的项目文档里面一个 html, 我 们在浏览器里面打开这个界面啊, 空格,点击上升穿门就得分,我们开始飞行试试。哎呦哎呀,碰到柱子了,再试一下。哎呀,还挺难的,再试一下。哎呀,这个有点难通过呀。 一分,哎呀,一分,结束了, 得两分。哎呀,得两分,这是我的最好成绩了。以上就是 context 的 介绍和实操,它可以帮你写项目,写代码,也可以帮你修 bug, 提 pr, 还能够做电脑的 computer use。 你 打算用它来做什么呢?欢迎在评论区分享你的想法,我们下期再见!记得订阅玲姐说 ai 的 频道哦,拜拜!

接下来我们开始讲第二种创建现成的方法,跟我们之前讲第二种创建进程的方法是差不多的, 那需要继承写一个类,去继承 siri 的 这个类,当了继承 siri 的 这个类的时候,一定要重写 index 方, unique 函数以及 run 函数。为什么要重写?等会儿我们再讲代码的时候给大家说。好, 那接下来我们回到我们的拍叉中,好给大家演示一下怎么样去创第二种方法,去创建一个现场,好在一样的新建一个新的批文件,这个名字其实我们在值钱的代码上举行拷贝,这样速度快一些。我们把多进程第二种创建进程的方法啊,我把它复制一下,粘贴到这一栏。 啊,我们这样,你看创建进程的代码全部干掉,不要, 包括这个 time, 单词也不要了哈,那这边是一个干嘛?是一个专门吃饭的一个现场的 pro 啊。 three 的 名字改一下啊,它继承了负类是叫 three。 three 的 这个负类是来自于我们的标准库的一个叫 three d 啊,导进来了,导进来之后,那一样的需要重写一个函数, 至少要重写一个叫 in 的 函数啊,那我这里继承 three 的, 继承这个 in 的 函数的时候也是要加这句话是必须要有,因为创建县城其实是由负类的,负类的是 three 的 这个类的 in 的 函数来帮我创建现场。 好吧,好,这里是传了一个线上的名字,当然实际上你还可以传其他线索,这个如尔其实才是你这个县城真正要调用的任务,或者是要执行的任务,比如说你要执行的任务是执行时,呃,答应六次吃饭,这里面我们还是需要他,否则了会出现宝宝的异常。 其他地方实际上不用懂,你看非常简单,这是定义自己的一个类去继承一个 seed 的 类,那么我现在写的这个类就是现场那一样道理,如果你写第二个现场,也是自己写一个 类 seed 的 这边也是一样,继承完 seed 的 之后,二十一行还是要留着,其他地方可以不变一样的。那现在我们要创建一个啊,一直 seed 的, 还有一个 word, seed 创建完之后,我们可以传各自的名字哦,这 t 一 和 t 二, 其后面的这四大也是没什么变化。一样的交易是不用加,为什么?因为我们现在暂时不需要让我们的主线成堵塞,但这个交易你到底要不要加,其实就看你要不要让你的主线成在这堵塞,你看跟和我们之前讲的多进程的执行多人物是差不多的。 好了,那这个案例是非常简单啊,是第二种方式来创建多县城。好,我写个数字一,第二种好像是创建多县城,跟我们之前第二种方式来创建多进程是差不多的啊。接下来我们再回到文章中,我们继续往下讲。 接下来我们要讲一个全新的指点,也是一个比较拿的指点,是现场安全。现场安全是在未来做项目过程中,项目经理或者是程序员大家都喜欢谈的一个问题,叫现场安全。其实在很多 python 的 书本中是没有这个概念的, 因为我们这个课程是针对大家未来可能在企业中啊去工作,所以我们会把这把这个工作中可能项目经理大家都谈的这个概念,拿出来讲现场安全,那什么叫现场安全?别把这个名字啊搞的 就有歧义了,你感觉好像是这种跟网络安全有关系,其实没关系的,找这个现场安全,不是说你写的程序不安全,不是这个意思,这个现场安全是针对某一个变量,尤其是全剧变量来说的。好吧,来我给你解释一下。嗯,县城之间是可以共享全剧变量的。为什么?因为 我们前面讲过,进程是分配资源的基本单位,一个进程可以分配一块独立的内存空间, 那这个进程里头的多个县城就可以共享这一块内存区域。由,由于他可以共享整个进程所分配的这一块类型区域,那当然是可以共享 全局变量的,因为这个全局变量就在内存中。好,那当多个县城同时访问一个对象的时候,当然这个对象我刚说的是全局变量的对象,知道吧? 不管如何计算,如果刁难这个对象的行为都可以获得正确的结果,那么我们称之为这个对象对大,这我们称之为这个对象对,对县城来说是安全的,那如果出现了脏数据,则县城不安全。 后面这句话可能不好理解,多个县城同时拿着一个局变量这个对象去做计算的时候,不管你怎么去启动多少个县城,或者说你要计算多少次, 最终计算的结果是正确的,那么我们把当前这个变量对当前这个多县城来说是县城安全的,也就是说这个变量不会受多县城的影响。 哎,出现错误的数据,这个称之为叫现场安全。那假设我采用了多线程之后,或者说我调整了计算的次数,那这个时候造成的最终计算结果是错误的,那我们把它称之为叫出现了脏数据。记住数据出错了,我们换一个专业术语叫脏数据, 那如果出现了脏数据,我们就称为这个县城不安全。但这个县城不安全是针对这当前这个全域变量来说的。对,所以县城安全或者县城不安全,它其实是说的在多县城下 去访问同一个全距变量,或者说计算同一个全距变量,如果结果是正确的,就是县城安全。如果县城如果最终的计算结果不是正确的,那就是县城不安全。就这么简单,县城不安全其实就一地产生的脏数据, 那么产生脏数据的原因是当一个县城在对这个全剧变量的数据进行修改时,修改的一半,那另外一个县城读取了未经修改的数据,又进行了修改,那这个时候是一定会产生脏数据的。 好吧,当然这个脏数据你也想避免怎么办?那我后面会讲,要可以使用两种方法,一种使用交引,一种使用锁。好。那到目前为止,我给大家去介绍了什么叫县城安全,以及什么是脏数据。那接下来我要用代码给大家去实现一下这个脏数据是怎么出来的,为什么要出啊? 等会我们再给大家详细的取例子说明啊。回到我的拍叉中,我还是一样在当前这个多县城的包里面新建一个新的 p r 文件,取个名字,我们叫县城安全零三回设。 那这里首先肯定需要用到一个全句变量,我先把这个现成的导入进来,我们这样导 thread, import thread 啊,这里面我先定一个全句变量,这个全句变量我叫 g number, 一 开始不等于零啊,接下来我定义两个,我要做一个。什么需求啊?我这是做对这个 g number 进行哪一家 需求是写一下。对,采用两个线分别分别对,对这个集南宝就是这个大局的变量来进行累计加,累计多少次了?我们是一样的,比如说累计加一百万次,每个县城都加一百万次,累计加万次。哈, 那首先我们写第一个县城他要调动的任务,这个任务呢,我们叫散难包一啊。接下来套主体的代码非常简单,没有特别难的地方。既然他要累加一万次,那我就 f 循环, f 循环 i 一 round 包括起来里面就写,哟,不是一万啊,是一百万次。这里写没错,看起来四个零,前面加一百,对,没错, 那这就是累加一百万次。好吧,那怎么个累加?那就是 g number 小 数 number, 当然了,这个是一个全句变量,对不对?全句变量我们之前讲了,在函数里面使用外面的全句变量,有先要干嘛? 加上一个 global g 小 数 number, 你 这个时候我们才是 g number 加等号,否则你是如果直接直接使用 g number 加等号呢?实际上是是加这个局部变量的,我们一定要加在前面加 global 才行。加等号 e 等号,是不是累加一万次,一百万次 啊?否,循环结束之后了,我就打印一下这个结果,这是现成一累加之后的结果,这个结果我用这个变量来替换一下啊,就是累加完之后,那这个 g number 肯定是 累加了多少次,这里面是是有的,他的值是可以改变的啊,这是现成的,第二个现成的其实是一样的代码,完全一模一样。好吧,只是把这个函数名字换成叫,呃,叫二 啊,就是为了做一个区分。接下来我们采用这种,由于我定的是函数对不对?所以我采用第一种创建现场的方法啊。首先是创建一个 t 一 现场,等于留一个 seed, 这个 seed 留一个 seed 其实就是说习惯了,其实就是创建一个某个类的对象。好吧, 好,指定它的,它就等于这个 sum number 一, 当后面这个括号要去掉,因为它没有传餐,所以后面这个 x 也不需要写了,这样写就可以了。好吧, ctrl d 它第二个线程去调用第二个函数。 好,这是两个线程啊,现在我们要 t 一 t 一 和 t r 分 别启动去了, t r 也是加一个四大。好,可以了。 最后他加完之后,我们应该可以理论上来说两个县城各自加一百万次,也就是说第一个县城从一加到了一百万, 那么第二个县城也是从一加到一百万,是不是? ok, 来,我们来看看效果,来运行一下。走,你发泄,对吧?哦,当然这个叫先生二,的确是我这个地方忘记改了,对不对?第十九行这个地方要打印的是先生二离开之后的结果,但没关系,这个不影响大家的看这个数字,那这个数字很明显不对啊, 你像第一个现成,他加了一百,确实加了一百万次,因为他这负循环就值循环了一百万次,但是为什么加完之后的结果是一百六十八万八千六百九十五了?很明显感觉好像你这个不是循环了一百万次,而是循环了一百六十八万次。 那你看针对我们这个全聚变量及难保在采用多现成的情况下,他最终计算的结果对不对? 不对?我们把我们把它称作这出现了脏数据,这个数据不是我们理论上来说应该出现的素质,对吧?这感觉好像我们代码就有问题一样,但事实上我这个代码非常简单,不可能有问题。 确实他就只循环了一百万次,每一次循环的时候了累加一对,所以循环一百万次之后,降完之后,理论上来说这个应该就是一百万,因为他算零开始累积,但是事实上的结果是一百六十八万八千六百九十五。包括第二个现象也不对,你再执行一下,这个数字又有变化,你看 对,那第一个现象看起来是对的,但第二个现象又有变化,看到没?各位出现脏数据是每一次你运行 都出现一个不一样的错误结果,这就是表示出现了脏数据。那为什么会出现这个脏数据?其实在我的文档里面其实给大家讲了原因是因为当一个县城在对数据进行修改的时候,修改了一半,另外一个县城读取了未经修改的数据并进行修改了。 好了,回到我们的代码中了。现在我们这有两个县城对不对?他们俩启动之后分别去拿到这个全聚变量记,济南堡这边就累加一,很有可能第一个县城他累加到一百的时候,这个现象可能已经开,刚刚刚刚开始启动, 他也拿着这个济南堡,这个时候他拿过来的济南堡是县城一,已经修改到了一百了,已经把他累加到一百了, 那么这个时候十八行他就从一百开始累积变成一百零一。但事实上你的第二个现成才干嘛?才只是第一次循环了,是一百万次循环中的第一次循环了, ok, 这个其实就打个比方,就是假设银行里面出现的脏数据也是这样子的,一个是存钱,一个是取钱,同一张卡,比如说我现在拿着这张卡去存钱,存了一千块钱, 在存的过程中,存的一瞬间,告你的老婆拉着你的卡去另外一个银行的柜机里面去取钱。 假设我刚刚存钱的时候,我刚要把钱存进去,一存进去之后,那我肯定先夺取我的余额,假设我的余额是一万啊,我还没开始存,我老婆那边他取了一千块钱, 取六块钱,我不知道吗?是吧?好,那我接下来就开始存,存的时候呢,由于我存了一千块钱,所以是在我原来独取到一万的基础上,加上这一千块钱,对不对?那最后我的余额变成多少了?是一万一千块钱, 对吧?但事实上我的余额应该不变才对,因为你存了一千块钱,那边同事又取了一千块钱,那这其实也是出现了脏数据。在银行柜台里面用了多台机型,他肯定也是是并发的,那并行或者并发的时候, 很有可能会出现脏数据,那出现了脏数据,我们把它称之为叫线圈不安全的。好,那这个怎么解决的?我们了解了这个脏数据以及现场安全这几个概念之后,接下来我们要聊考虑一下怎么解决这个问题。 解决这个问题的把,不是我一把两个办法啊,一个往下拉,一个是线程等待通过交引,第二个是通过腐蚀所, 好吧,因为说白了其实什么其实造成我们出现脏数据原因是因为两个县城同时在争抢一个局的变量资源,那么两个县城在同时去操作这个变量资源呢?肯定会出现脏数据的。那现在我要干嘛?要把它进行同步? 进行同步或者通过复制锁,同步复制锁我们应该支撑就叫同步锁 好,两种话都行。我们先通过交引,交引是完全要两个线绳同步了,这一个线绳直线完之后再直线下一个线上,跟单线绳直线还是差不多的。那怎么做?就根据我们前面所学的交引去做,那我 t 一 先去启动,启动完之后我用 t 一 点交引, t 一 点交引就会造成什么?造成主线绳在这堵塞,补线上堵塞, 主线上一阻塞,那它实际上阻塞到 t e 这个县城直线完成之后还会继续往下走,对不对?才会继续往下走,其实才会执行二十八号,才会执行二十八号的意思就是说 堵塞完成之后才会启动第二个线上,那这不就是先执行完第一个线上,再执行第二个线上,就这意思,那其实就是变成两个线上的同步了,两个县城同步运行啊,那接下来我们来运行一下,这个时候就不会出现脏数据了,你看, 对,马上数结果了,你献身一累加之后的结果是两百万。为什么是两百万?因为献身二是在第一个献身也计算完之后,而且结束了, 在这个基础之上,然后进行累计一百万次。当然是两百万次啊。那第二种方法是使用复制锁。那复制锁我们后面下节课马上就要讲了。好,这节课先到这,谢谢大家。再见。

cloud 和 codex 到底有什么区别?为什么 web coding 用户离不开 cloud? 传统程序员却钟爱 codex? 看完这个视频你就懂了。 大家好啊,今天来聊聊程序员都在用的 ai 编程工具。先说 cloud, 它是 entropic 的 模型,采用 dance 架构。什么是 dance? 就是 每次推理,所有参数都参与计算, 这让它像一个高度整合的大脑,上下文连贯性特别强。为什么 vlog coding 用户更爱 cloud? 因为 vlog coding 用自然语言描述氛围和意图,需求往往很模糊。比如你说做一个像 notion 一 样的笔记 app, cloud 的 dance 架构能保持输出的一致性和细腻感,不仅功能正确,还有设计美感,不会出现割裂感。 简单说,如果你是创意探索,做产品原型, cloud 是 首选。再说 codex, 它是 open ai 的 代码专用模型, 采用 mo 架构。什么是 mo? 就是 混合专家模型,把乾坤网络拆成多个专家子网络, 路由器动态决定每个 token 激活哪些专家,这让他特别适合模块化、精确的代码任务。传统程序员在 ide 里修 bug, 核心需求是精确、可验证、快速迭代。 codex 的 专家专精设计,让他在处理 bug 描述时 能精准激活相关领域的专家,模块化处理能力很强。但要注意, codex 不 太适合大规模重构,因为它太谨慎了,效率会比较低。简单说,如果你是生产级 bug 修复, codex 是 首选。 其实很多人已经发现了,这两个工具各有各的好,与其纠结用哪个,不如把它们组合起来用。我的经验是, bot coding 脑报阶段用 cloud 做创意和规划, bot 修复阶段用 codex 做精准定位和修复。 现在像 cursor, wind surf 这种 ide 都支持多模型切换,你可以随时在 cloud 和 codex 之间切换。就像你有两个不同特长的同事,一个擅长创意设计,一个擅长精准执行。程序员也可以这样指挥不同的 ai 工具。 好啦,总结一下今天的内容, cloud 的 dance 架构让它成为 web coding 用户的最爱,输出一致细腻,适合创意探索和产品原型。 codex 的 mode 架构让它成为传统程序员的 bug fixing 利器, 精准高效,但不适合大规模重构。不同的场景使用不同的模型结合起来用效率最高。如果你觉得这个视频有用,记得点赞关注我们下期见。

面试被问现成词就卡壳,线上写错两参数,直接 o o n 背锅。这条视频两分钟把现成词给大家讲透,面试加分!线上不踩坑,先破一个百分之九十加万人都搞错的致命误区。很多人以为任务来了,核心现成不够就开新县城,到最大不够再进队列,这就大错特错了。 jdk 原生现成词的真实顺序是,核心县城满了,先把任务塞进队列,队列也满了,才会去开新的临时县城,直到达到最大县城数。 就这一个顺序搞反,你在面试官心中的专业性直接大打折扣,线上的话直接就是事故了。接下来是面试必问的七大参数核心,每个参数一句话讲明白,顺便告诉你怎么配不踩坑。第一个,核心现成数,现成时里长期存活的正式工, 空闲时也不会被回收。 cpu 密集型就配 cpu 核心数加一, i o 密集型就配 cpu 核心数乘二,别瞎设零或者超大数。第二个,最大现成数,现成时能容纳的总人数,正式工加临时工决定了你最高的病发处理能力,绝对不能设成 in tiger 点 max 六,不然分分钟给你创建上万现成,直接 o m。 第三个, 空闲存活时间,临时工干完活多久没新任务就会被开除,默认六十秒,非核心场景不用狭隘。第四个,时间单位存活时间,单位没啥好说的,别把好秒好秒搞混就行。第五个,任务队列核心现成满了之后,任务队列的等候区,重点必须给队列设容量上限,用无界队列的话, 任务无限堆积,内存直接爆掉,噩梦!这是生产环境最高发的事故。第六个,县城工厂用来给县城起名的, 别用默认的。线上出问题,日子里面全是铺二杠一,输了杠一,你根本找不到是哪个县城词出的问题,排查到你哭。第七个,拒绝策略,县城词和队列全满了,新任务来了怎么办?四种策略,别瞎用 核心支付下单业务用 corner runs policy, 让提交任务的县城自己执行,绝对不能丢任务,非核心日期上报业务用 discard policy 直接丢,不影响主流程。 接下来给你们画三条生产环境铁律,碰了大概率背锅。第一条,绝对不要用 excutter 去创建默认限程词,不管是 new fix 路由否还是 new catch 路由否, 要么是无界队列,要么是无限最大限程数,高明发下必出 o m 阿里开发手册早就明令禁止了。第二条,必须按业务做限程词隔离别所有业务共用一个限程词,一个非核心业务出问题,把核心业务拖垮,到时候你哭都来不及。 第三条,现场时必须加监控,现场数、队列积压量、任务执行时间,这些指标必须监控起来,别等线上崩了才后知后觉。最后给你们一个面试高分绝杀技巧,面试官问你现场时, 别上来就干巴巴背参数。你先讲县城词的核心设计目标,县城附用管控并发统一管理,再讲执行流程,再拆解参数。最后结合你自己的线上采坑经验或者调优案例,直接和其他背景的人拉开差距。最后给你们一句口诀,牢记一辈子不忘核心满了进队列,队列满了开最大,最大满了走,拒绝参数全靠业务配 你们面试被县城词哪个问题拦住过?评论区打出来我挨个解答,觉得有用,点赞收藏关注我,下期讲线上调优实战。
