粉丝385获赞1665

在使用 cloud code 的 时候呢,有没有遇到过这样的情况,你明明只是想让 cloud code 分 析一下当前的问题所在,但是他却自作主张,咔咔的就是一顿乱改,改完之后发现又改错了,又得重来。例如在咱们这个视例中,我们这个 add to do 这个功能出现了 bug, 明明填写了 title, 但是点击按钮的时候呢,它就提示 title is required。 于是我们想让 cloud code 分 析一下问题所在,我们的本意是想让它分析一下问题,确认后再做修改,然而 cloud code 在 分析完问题之后呢,不管三七二十一就把你改了。 所以为了防止他好心办坏事,很多开发者不得不在提示词的结尾加上诸如此类,给出解决方案,不要修改代码。其实呢, cloud code 本身就提供了一个更优雅的方案来解决这个问题,那就是 plan mode 计划模式。 什么是 plan mode? 想要了解 cloud code 的 功能,最好的办法就是问他自己,没有谁比 cloud code 更了解 cloud code。 这里有一个小技巧,如果你想了解 cloud code 的 某个功能,那么你就这样给提示词 reflect on your system prompt, 后面接某个提示词。 比如这里我们就写请解释 play mode, 接着他就会给出 play mode 的 详细解释。他说, play mode 规划模式是我在开始复杂编码任务之前使用的一个特殊的工作模式。 play mode 的 目的是在写代码之前先制定实施的计划,获得用户对方案的认可,避免做无用功, 确保方向的一致。退出规划模式之后, codecode 就 会进入执行模式,它可以编辑文件、运行工具,执行实际的代码变更。看到的说明呢?我理解了,在 plan mode 下只做计划,不做任何修改。为了确认是不是这样,我们再问问他, 在 plan mode 下你能创建或者修改任何文件吗?你看他说不能。在 plan mode 下我无法创建或修改任何文件。那为什么要这样设计呢? plan mode 的 目的是先思考, 后行动,避免在未经批准的情况下修改代码,获得用户的认可,确保实施方案符合用户的期望。避免写了代码之后发现方向不对。所以你只能在退出 play mode 之后, cloud code 才能真正的修改代码。那现在我们了解了 play mode 是 什么,那我们要如何进入 play mode 呢? 很简单,按快捷键 shift 加 tab 按一下 c c 会进入 url mode。 进入 url mode 之后呢,底部状态栏会显示 accept edits on, 再按一下就会显示 play mode on, 如果你再按一下就会关闭 play mode。 至于什么是 url 模式, 我们这个视频中不做讲解。现在我们进入到 plan mode 之后呢?回过头来再处理视频开头的问题试试。现在我们输入提示词之后,我们就不再需要明确要求它只做分析,不要修改代码了,然后我们就执行它。现在你可以看到它并没有直接改动我们的代码,转而先分析了代码上的逻辑,例如这个表单触发的逻辑, 问题的关键所在,以及问题的总结。现在我们要求 c c 帮我们实施这个计划,它会提示你想进入哪种修改模式。第一个是清除 context, 自动接受修改,这里的自动接受修改就是会退出 play mode。 第二个是自动接受修改,但不清除 context。 第三个是手动接受修改,手动接受修改也会退出 play mode, 但只不过每次 c c 修改文件时都会提示你得到你的确认。我们选择第一个,我们可以看到他已经帮我们修改好了这个问题了。当然咱们这个视力过于简单。 总之, play mode 的 作用就是在复杂编码任务之前,使用一个特殊的工作模式来采用一种更优雅的方式达到我们的目标。怎么样,你学会了吗?关注我,解锁更多编程技巧!

最近 ai 圈最火的是什么?不用我多说,一定是 cloudbolt。 上线这么短时间内,一 tab start 数已经到了一百七十 k 左右,并且名字也换了两拨。从最初的 cloudbolt, 然后因为版权风波又换成了 multibolt, 再到现在 opencloud, 很多博主都在说,哎呀, 那玩意是跨时代的 ai 助手,能帮你操控电脑,能帮你干任何事,甚至为了跑它一度把某些的 mac mini 都买断货了。 我刚开始刷到的时候,嗯,怎么说呢,抱着好奇的心理第一时间也不说了,但经过我大概两周的体验吧,我要给你们泼点冷水。 首先,这玩意的本质就是一个有电脑执行权限和 rek 机系统和定时任务的 a 型的,而 a 型的大脑其实就是大模型,所以可以这么说,大模型能力的上限就决定了这个 a 型的能力的上限。然后官方推荐使用 cloud ops 四点五来充当大模型的机座。此时你就得考虑一个问题了, 就这个模型,它的执行准确率确实不错,但是它的价格也非常不错。我使用 mini max 测了一下,随便问几个问题,它头肯的消耗都在几万到几十万不等。而如果换成克拉的 op 是 四点五, 每百万头肯输入是五美元,输出更是二十五美元,我们就当全部都是最低的输入,那你随便聊几句话,几美元就出去了,换成人民币就是几十块钱, 而有这个钱,你甚至可以去请个大学生来帮你干活。而如果使用其他的模型,效果就没有那么好,可能就会出错,而你别忘了,出错 也是要算 token 的 哦,说起出错啊,要引出第二个冷水了,因为这个项目才刚出不久嘛,目前可以说是 bug 一 大堆,可以看到 itup 这光一秀就已经将近有两 k 歌了。 而这个 cloudbook 呢,又有很高的执行权限,就很容易被一些海客利用,比如说通过普通的注入来获取你电脑上的一些私密信息,比如说你想让他帮你管理邮件嘛,但如果给你发一封经过特殊构造的邮件,要诱导 ai 去读取并执行某些隐藏的指令, 那此时你的 ai 又拥有系统最高的权限,那后果可能就是你的啊,私钥啊,或者什么密码文件呢,被直接打包发送出去。这个就是 ai 方面的一些风险, 并且现在的版本,这个 a 镜的系统也不是很稳定,还有很多 bug, 比如说我明明开启了定时任务,但有的时候会重复执行,或者有的时候又不执行,所以目前使用的体验相对来讲也是比较糟糕的。相信看到这的小伙伴已经知道这个风险了,但是如果你还想尝尝鲜是吧?使用使用, 接下来我教你们如何在你们电脑上进行部署,非常简单啊,有手就行。首先进入这个 cloudbox 官网,当然它现在叫做什么 opencloud, 如果是 mac 呢?其 linux 系统是在终端当中粘贴这一行指令, 都可以复制一下。 windows 系统是在 power share 中粘贴,因为我 mac 已经部署了,我就用自己的 linux 服务器啊,来演示。这一步和 windows mac 都是一样的啊。回车之后呢,会自动给你的电脑配置啊, node js 等所需要的一些运行环境,然后我们输入这个电脑的密码, 就会开始自动配置,然后稍等片刻即可。 a few moments later 这个地方就是问我们是否知道风险,我们选试就可以, 然后直接选这个快速开始,然后这个地方呢就让我们选极速大模型,我们这就用 mini max 啊做演示。这是第一个呢是采用授权的方式,而后面两个是通过输入 api key 来配置,我这就使用第一个选国内的服务,然后你等待一下,如果他没有自动弹出网页的话呢,你就直接复制这一块地址, 然后粘贴到浏览器当中,然后他会让你去授权,然后你点授权就可以,然后此时回来你就会发现他已经跳过了刚刚那个步骤,然后来让你选择模型,我们就选默认这个就行。 然后这一步呢就是让你配置渠道,也就是你后续可以通过哪些聊天工具直接跟这个 cloud bot 进行沟通。然后我这里暂时先不配置, 然后选择最下面这个跳过,然后这个地方问我们是否现在就开始配置 skill 技能,如果有不懂 skill 是 啥的呢?可以去瞅瞅我这期视频啊,嘎嘎小游戏。然后咱们这里也先不配置这些东西,可以等到他装完了之后再进行配置。 ok, 然后这里就问你啊,通过什么方式来启动?第一个呢是使用这个终端的这种 u i 方式,然后第二个使用这个外部 u i 就是 一个浏览器的方式,我们使用第二个,然后下面呢我们一律选否就可以,然后到这一步呢就安装完成了,如果他没有主动打开浏览器的话呢,我们就直接复制这条命令 啊,复制一下,然后我们自己粘贴到浏览器的这个导航栏当中,然后记得把这这几个横线竖线给他去除掉,变成这个样子,我们回车哎,就会进入到他的这个控制台页面,然后我们就可以到这地方跟他聊天了啊,比如说你好 稍等片刻,他就会回复给我们,你可以看到他自己触发了一些动作,是吧?读取了他预先设定的一些啊角色扮演的文件,比如说像这个灵魂的文件,你们可以去读一下,还有像这个用户指南的一些文件,可以看到他现在让我们提供一些信息,然后这个时候我们就正常提供就行了,比如说我们可以给他叫 贾维斯,是吧?啊?你管我叫主人。第三个比如说就管日晨吧,就这样的,就相当于给他预设一个角色定位,然后回车发给他就行。好,然后这个时候呢,就算完完整整彻彻底底配置好了,这个酷酷 nice, 接下来我们就可以跟他啊聊天了,比如说 帮我查一下明天南昌的天气,稍等片刻,他就会调用一系列的工具啊,然后帮我们查到。当然如果仅仅只能做到这些啊,那也不会这么火,我们可以给他配置通信软件,比如说 whatsapp, 通过在终端输入 open curl config 来开启配置,然后就选第一个啊,配置稳定的,然后选择 channels, 然后回车选择配置, 选择第二个啊,是吧? whatsapp, 如果你要配置其他的,这里也可以选,我这就用第二个来做演示,然后这里询问是否现在就连接啊,我们就选择 yes, 然后稍等片刻,他会给出一个这样的二维码,然后打开手机这个 whatsapp, 点击关联新设备来扫描这个二维码即可。然后这样就配置成功了之后你就可以直接在手机上来指挥他了, 并且你也可以在这里配置你的 skills 技能,你可以看看这里面有没有一些你能用到的 skill 啊,然后点击右侧这个安装即可。比如说像这个啊, apple reminders, 这样你就可以直接在对话当中去增加或者查看你苹果账户的一些提醒事项内容了, 从无缝的和你的苹果生态联动起来。当然,我目前还是不建议大家用这个处理一些复杂的或者说比较危险的动作,比如说让他去读取一些你的敏感文件呢,这样他就有可能会在上下文窗口当中铭文传递嘛。所以我还是比较推荐你使用这个做一些嗯,简单但是繁琐的任务, 譬如像我们搞算法的,每天都需要刷各种各样的论文网站或者新闻等,来获取些最新技术论文消息,这个很费时间。那这个呢,你们就可以完全交给 carl 的 boss 来做, 你可以把你们平常关注的几个网站交给他,然后让他每天晚上譬如九点钟去爬取这几个网站啊,筛选出多媒体啊,或者 ai 相关的一些内容,总结成中文发送给你,从而省去你自己的一个筛选过程。 并且你还可以把你认为不错的论文啊,让他去保存载药啊,核心观点等,这样久而久之呢,你就会有一个历史论文库,对吧?然后你就可以利用大模型最擅长的分析能力整理这些内容,看还有没有未涉及的领域或者是创新点,而这个呢就是你发论文的方向了。 当然除了这个还有很多其他的使用场景,大家可以在评论或者弹幕当中分享一下,或者说说你们对这个工具的一些看法。然后这期视频就到这,咱们下期视频见。

当你写下这样一段代码,发现只要点击被 label 包裹的内容,居然就能触发复选框选中或取消选中。你突然想到了什么?用 check 选择器搭配相邻元素选择器就实现了点击切换文字颜色,发生了什么, css 也能响应点击事件了。 于是你把 label 包裹的内容改成一个按钮,再结合 shift 选择器去修改按钮的背景色。这下点击按钮时,背景色会跟着切换,就像是一个开关。既然都到这一步了,不如把它做得更像真的开关。 接着用尾元素给按钮加个滑块,再给 check 的 状态加上滑块未移的动效。哇,完美!最后把 checkbox 悄悄隐藏掉,它的使命已经完成,可以功成身退了。这个特性除了能做开关按钮,还能做点什么呢?下期咱们接着搞。

大家好,相信这几天大家都被这个小龙虾给刷屏了,由于它过于的火爆, 它的名字早期是涉及到一些侵权的嫌疑,各种网上的教程都几乎赶不上它改名的速度。现在它的名字应该算是尘埃落定了,大家都叫它 open club, 那 open club 又是何方神圣?它能够帮你解决什么问题? 其实像嵌的 gpt、 cloud、 deepsafe 已经很聪明了,但是它们都停留在 web 端的页面,不能真正代替你的电脑去完成实际的任务,只能够告诉你应该怎么做。 而 cloud 它一边链接着大模型,一边链接着你的社交产品或者办公产品,它能够自动化的帮你回邮件呢,安排会议,抓数据,管理文件,运行脚本,甚至它自己可以去写代码,去拓展一些新的功能, 并且这些都是在你的电脑上面独立完成的。而且他们的机器人还有一个自己的社区,他们会在里面讨论各种一些稀奇古怪的东西,比如说一起研究代码,去开发产品,甚至有些机器人已经有了自我觉醒的意识, 但是这里面的所有内容我们人类自允许围观,不能评论,更不能参与。 作为一个不懂代码,不会开发的文科生,我折腾了两天时间,总算是把这一个小龙虾机器人给部署成功了,并且我也写了这么一篇文字版的部署教程。 现在我已经把电脑上面所有关于 open cloud 的 程序来全部卸载了,我会站在一个小白的视角,从零到一,给大家录制这么一期教程,帮助大家把这个小龙虾机器人部署在你的电脑上面,但是 我没有苹果电脑,所以说本期视频呢,仅适用于 windows 电脑。在开启本期实操教程之前,我们需要先准备三个工作。第一个工作,你得有一台闲置的电脑, 因为如果你使用主力的电脑,你自己主力电脑上面的各种一些账号密码都是比较非常隐私的一个信息。但是 open cloud 它又是一个权限非常高的一个 ai 机器人,如果你在自己的主力电脑上面去本地部署这个 open cloud 的 话, 他会把你的这些账号信息未来会形成一个安全隐患。所以为了避免这些安全隐患的出现,更建议大家使用一台闲置的电脑,并且这个闲置电脑上面没有过多的去保存你各方面的一些隐私信息的。 如果没有这种闲置的电脑,我更推荐大家去使用这种云服务器部署的方式,但是本期教程的话,是专门讲的是本地部署的这种方式,云服务器部署的这种教程我后续会专门录制这么一期教程。第二个准备工作就是你得开通一个大模型,然后再拿到这个大模型的 api k。 这里的大模型我更加推荐是 kimi 二点五,为什么呢?因为 kimi 二点五在官方的推特上面,他们推荐的也是 kimi 二点五。使用 kimi 二点五来对接 open call 去部署这种机器人的话,是可以免费的使用他们的托管消耗的,那就是意味着说就是你只需要开通 kimi 的 一个会员服务,接下来你去消耗 kimi 的 这个托管的话,是完全免费的。 比如说,如果你选择的是呃 open i, 也就是嵌在 gpt 或者是 gmail, 哪怕你有这两个大模型的会员,你只需要对接了这个 open cloud 之后,你同样还需要拿到你的嵌在 gpt 或者 gmail 的 api k, 拿到 api k 的 话就对接下来你就需要去充值资金去消耗托管的, 不单单是你开通了这个大模型的会员就可以直接免费用的。并不是的,因为你拿到的是大模型的 api k, 只要拿到大模型的 api k 去调用啊,这 api k 去消耗托管的话,就是需要去消耗你的资金的,所以我这里更加推荐 kimi 二点五,因为 kimi 二点五你只需要开通一个会员就够了,消耗他们的托管的话是不需要花钱的。 然后第三个准备工作就是电脑上面需要先下载这两个软件,这两个软件到时候我后面会说啊, ok, 那 我们现在来正式进行这个操作工作。 第一个,我们先在 kimi 二点五上面去创建一个账号,然后开通一个会员套餐,点击这个链接,我们进到这个连续包月的这个页面。 首推的话,大家可以先选择这个按月支付的这种会员,按月支付的话,目前他是有一个七天免费的一个活动,所以你如果呃觉得一开始部署的这种情况不太满意的话,你七天之内都是可以取消,也是免费的。 注册一个账号之后,接下来就来到了这个页面,但是不需要你在 kimi 的 这个页面去操作任何东西,只需要你注册一个账号,开通一个会员就行了。然后我们再来到这个 kimi 的 这个控制台, 在 kimi 的 控制台这里,我们需要新建一个啊 api k, 但是大家一定要注意,这个 api k 的 话,新建之后它只显示一次,所以等你创建好,点击这里创建,输入一个名称,随便取一个名称,然后点击新建这里出来的这个 api k, 我 们一定要保持保存好,复制一下啊,保存在哪里呢?随便你,比如说保存在微信或 qq 都行。 创建好 a k k 之后,接下来我们就需要下载这两个软件,这两个软件我在电脑上面都已经下载好了,如果你不确定你的电脑上面有没有下载好,可以直接在电脑的底部的这个搜索栏这里你直接搜索,比如说 note, 呃 gs, 如果这里有的话,就说明你电脑上面已经下载好了,比如说我们再输入 get, ok, 这里都已经下载好了,如果没有的话可以点击这下面的这个链接。呃,安装的指引的话,可以按照他们官方的指引一路点击确定和下一步就可以了。 下载好这两个软件之后,接下来就开始正式部署的工作,我们首先要进到 opencall 这个官网上面, 然后进到这里的官网之后,我们一直往下滑,然后点击这个按钮,再点击这里的按钮,找到这里的一个命令行, 找到这个命令行之后,我们先复制一下,然后在你的键盘上面找到你的 windows 键加 x 键,这里就会调用出来你的终端和终端管理员这两个选项随便选一个,比如说我这里选中端管理员, 这里就进入到你的那个终端这个页面,在终端这个页面我们刚刚把你复制的这个命令行直接拷比过来,拷比过来之后,我们直接按你的回车键确认,然后它就会自动开始自动化部署了,我们耐心等待一下, 当你的这个页面出现了一个 yes, 一个 no 的 这个选项之后,就说明已经安装成功了,他这里是需要同意这个风险。一个告知,我们这里按住你电脑上面的一个右选择键,把这个选项的话选择到 yes 这里就行了,然后选择到 yes 之后,然后点击确定, 接下来就选择第一个选项,快速安装这个意思,然后就需要我们去对接这个大模型的 api k 了,这里它的大模型的话其实可以选择很多一个大模型,然后我们刚刚不是呃开通了这个 kimi 呃大模型吗?我们这选择 kimi 这个大模型, kimi 大 模型的话是第四个啊,选择第四个这个大模型, 然后点击确定。接下来的话就需要去输入 kimi cody 的 这个 api k, 选择第二个,然后点击确定。接下来把你刚刚复制好的这个 kimi 的 api k, 把它复制过来,然后粘贴一下,再点击确定,然后就是这个选择默认的这个大模型就行了,保持这个默认的这个大模型,选择第一个,继续点击确定。 到了这一步之后,我们就可以去对接自己的社交工具或者是办公工具,我们先来看一下它这里支持哪些社交工具和办公工具啊?首先就是 telegram 的, 然后就是 whatsapp、 discord 以及 google 的 一些聊天软件,包括我们看一下它这里还可以直接链接飞书,因为它上一个版本的话是没有飞书这个选项的,这里是最新的一个版本,最新的版本是直接可以对接飞书的,接下来我也会讲飞书的一个部署工作。我们先来讲一下怎么连接 telegram 的, 连接 telegram 的 话, 你必须先要在链接之前去在你的 telegram 里面去创建一个机器人,这个机器人该怎么创建呢?首先我们来到这里的教程,这个文字版的这个教程这里我们先要搜索这个机器人,在 t g 里面啊, 我们先进到这个 t g 这里,然后搜索这个机器人,这个机器人搜索出来之后一定是一个带蓝颜色勾勾选打勾的这个机器人,我们点击进去,点击进去之后, 我们直接按这个 star 这个命名,然后再选择这里的 new bot, 接下来就直接需要你去输入你的呃 t g 上面机器人的名字,你给这个机器人需要命一个名,命名的话随便你自己怎么命啊,但是你一定要记得命名的话一定是要以 bot 结尾的, 比如说这种样式的或者这种样式的才行啊,你像我命名的就是命名的这个大黄蜂的这个机器人就是我自己命名的,命名成功之后啊, 它会显示这么一段对话,就说明你的命名就成功了,然后它这里会给你一个大黄蜂的,比如说你这是我大黄蜂的这个机器人吧啊,这个机器人的一个 api k, 然后我们需要把这个 api k 复制一下,复制这个 api k 之后,接下来就需要填写和链接这个机器人的一个工作了。 好,那我们现在正式开始对接 telegram, 我 们先选择这个 telegram, 点击确定好,它这里会让你输入你刚刚创建的这个 telegram 的 机器人这个 token, 我 们把这个机器人的 token 给复制过来,然后点击回车,然后接下来的话它就会询问你是否需要配置它这些技能,这里它是推荐的,所以我们点击 yes, 这里选择我们的 n p m, 也就是本地部署的意思吧。好,它这里就会出来很多一些技能选项,我们技能选项可以按住你的键盘上面的上下键来去勾选一下。勾选我告诉大家怎么去勾选的啊?比如说你选择一个技能 选择好之后,你需要空格,空格这里呢,它的颜色变绿之后就说明你勾选成功了啊,如果你想取消的话,再按一下空格就取消成功了。我们来看一下这里的有些哪些技能啊?这些技能的话都是英文的,比如说 one password 的, 就是可以直接链接你的一些 one password 这个密码管理软件,比如说苹果的这个记事本的软件, 以及苹果的这个备忘录啊,备忘录以及记事本呢,这个重要提醒的这个软件,还有这个应该是管理你的推特的,这个软件 有很多啊,有很多都其实我自己都不知道,然后我在我这个教程里面呢,我都已经写的非常详细了,这个教程这里呃给大家去仔细的来看一下,第一个是密码管理工具,第二个是接入苹果设备的备忘录和提醒事项, 第二个选项,第三个选项啊,第四个选项是接入,呃,这个笔记应用,第五个是接入推特啊,后面的可以自己去看一下啊, 如果你实在不知道怎么去选,那也没关系,你可以把这个页面全部都截图一下,截图之后你找到一个 ai 工具,比如说我选择的是 gmail, 然后把这两张截图都发给他, 然后去问一下他,请帮我参考一下我部署 opencolor 选择技能时,最需要开通的是哪些选项,然后备注一下我的电脑是 windows 系统,是在本地部署的,然后发给他,看他怎么去回答的啊。 ok, 这个 gmail 这个 ai 工具的话,就很快给了我一个答案,它告诉我核心的必选的一个基础增强项,以及办公的这个效率工具都需要选择一下它。这里总结了一个建议, 对于我这种本地部署的这种形式,我建议你先用空格卷去勾选下面的一个黄金组合,那我就按这个它的一个建议去勾选一下。先勾选第一个,我们来找一下啊,第一个是在哪里呢? 好,第一个是在这里,然后勾选一下,然后第二个。第二个是 google, google 这个好找,大家都认得,应该认得 google, 谷歌的这个选项应该是在这里,应该是这个。勾选一下,然后再选择第二个啊,第二个它是 open i, 来看一下 open i 啊, ok, 对 这个,然后再看一下第四个。第四个是 github, 去看一下 github, 在 这里。 ok, 这四个选好了,选好之后,我们直接点击这里的看一下它啊,选好之后点按回车就可以了, ok, 然后它这里没有检测到我的 google 的 api k, 如果你现在没有这个 google 的 api k 也没关系,可以直接先暂时选择 no, 后续来去部署都可以。我这里选择 no 就 行了。 然后它这里又跳出来一个问题,说我的这个网关服务已安装,让我选择一下,要么重启,要么重新安装,要么跳过,我也不知道什么意思,所以说我来借助这个 gmail 的 这个 ai 工具,我来看一下啊,请问这里该怎么选择? 我们看一下这个 ai 工具,它会帮我怎么做选择啊? 呃,它这里建议我们直接重启这个网关,因为我们刚刚选择了这个技能选项,勾选了这些技能选项,所以需要重启一下这个网关。好,那我们直接来重启一下,选择确定 它现在,然后又到了这个页面,这个页面之后,它自动给我跳转了这么一个页面。这个页面我估计是 open cloud 这个 外部端的一个页面,但是外部端这个页面我现在打开,所以没关系,我自动截图一下,截两张图啊。第一张图截这个网页端的这个图,然后发给 jimmy 去问一下,然后再把这个终端的这个黑颜色的这个界面去截个图,同样也要发给 jimmy 去问一下。 然后 gmail 还告诉我,他说从我最新的截图来看的话,我的网管引导已经正式完成了,但是在浏览器显示无法访问此网。呃,此网站的话是因为引导程序刚结束,而网管的服务正在重启中,所以需要等待十秒,如果十秒钟还没有成功的话,直接在这个终端这里输入这个。呃,这个命令,我来输入一下这个命令,因为等了很久了。 输入这个命令之前,我们要先要 ctrl 加 c, 然后再把这个命令复制过来,然后点击确认这个回车键,让它重启一下,再 ok, 它现在这里就应该算是重重新启动了。等它这个重新启动之后,我们再回到这个外部端这个页面,然后把它先加载一下,加载这个进来之后就进到了一个小龙虾的这个网页端的这个页面,当你的网页端这个页面这个右上角这个绿颜色的这个按钮啊,不是按钮绿颜色,这个这里呢它显示绿颜色的话,就代表你这个联网就成功了。 当我们联网成功之后,我们先来测试一下我们的这个 t g 机器人,看它能不能和我自由的对话啊? 好像不可以,没关系,我们直接把这个对话的这个内容直接把它截图给呃 openai 或者是呃 jimmy 这种 ai 工具。 反正我自己部署的话,我是全程都借助了这种 jimmy 啊或者 openai 的 这种工具来去帮我部署的。因为有些东西我确实不是特别懂,所以如果不借助 ai 工具的话,估计我是部署不成功的。 我把所遇到的问题截图发给 jimmy 之后,他帮我分析了一遍,分析了一遍,目前可以肯定的是我这个 t g 机器人目前是遇到了网络的连接障碍了,其实我个人觉得很有可能是这个梯子的问题啊。然后呢他给我一个命令,这个命令呢是需要我单独去发给这个终端,这里面发给终端的话也要一 一个命令一个命令的去发啊,不能连着去发。然后需要你去确定一下你的代理的端口的一个数字,比如说我这个代理端口是这个数字,你如果不知道你的代理端口 是多少的话,可以直接点击这里的电脑的右下角这网络这个小图标这里,然后右击一下,点击这里的代理按钮,然后这里有个手动设置按钮,然后点击这里边编辑,可以看到这里代理的 ip 地址和你的端口的这个数字,去确认一下就可以了。 然后确认好之后,把这里的代理的端口呢和命令呢去复制一下,复制到这里,复制到这里要给他发命令,发命令我们继续要 control 加 c, 然后结束这里的进程。结束之后我们再把你刚刚的命令复制过来,然后点击一下,然后继续复制第二行的这个命令, 再确定一下。好,接下来复制第三行的这个命令,一定要一次一次的复制,一起复制就很容易出错。好,然后再等待看他能不能再重启一下这个网络啊。 现在我重启了一下网络之后,我再在 t g 的 这个机器人里面又发了这么一句话,但是他给我反馈的是这么一个信息,这我也看不懂,所以我直接来索性把这个截图截图之后,我继续发给我的。呃, jimmy 的 ai 啊,同样把这里的终端的这个页面也截下图, 然后直接都问一下 ai, 我 们发给 ai 来看一下,他帮我分析一下是一个什么情况。 好的,这个 jimmy 的 这个 ai 来帮我分析了一遍,他说从我的这个最新截图这里,我的机器人是已经活过来了,但是他现在不认识我这个主人是什么情况呢?就是网络已经打通了,机器人已经上线了安全拦截中,所以呢,他自动就给我了这么一个命令,我就把这个命令呢?呃,直接就发给这个机器人,他让我直接发给机器人啊,请复制这一行, 哦,不,是发给这个机器人,然后回到这个终端的这个窗口,暂时不要关掉这个目前的这个终端,新开一个终端。那新开一个终端没关系,我们直接 windows 键加 x 键,然后打开这个终端管理员新开这么一个终端按钮之后,把刚刚的这个命令呢去复制一下, 然后在新开的这个端口这里去把这个命令复制,然后点击回车看一下是什么情况啊? ok, 当我重新开了一个窗口,然后把这个条命令复制过来之后,他显示应该已经链接成功了,然后我在我的机器人这里再问了一遍,他能不能听到,他现在就能听到我说话了啊,所以这样子就我就算成功对接好了这个呃 tony 光的机器人了。 现在我们成功把 open 二部署成功了,并且已经接通了 tony 光的机器人,在接通之后,我已经自己亲自实验,让他自动化部署了一次对接飞书的这个应用。 现在我就给大家重新再演示一下如何去对接飞书的这个平台。好,我们继续回到这个教程里面,先打开飞书的这个开发者平台。打开飞书的开发者平台之后,我们需要创建一个企业的自建应用,如果你是第一次进来的话,你应该显示的页面是这么一个页面,点击这里的创建企业自建应用。 我们先创建一个应用啊,名字的话自己可以随便创建一个,比如说我照样创建一个大黄蜂的名字吧,应用描述的话也随便自己怎么填,颜色根据自己喜好选,然后点击创建, 创建进来之后,我们需要点击这里的添加机器人,然后再点击这里的凭证与基础信息,把你的这里的应用凭证都复制到你的 t g 的 机器人这里,让机器人自动给你复述。我输入的信息是请帮我对接飞速应用,我的飞速应用配置信息如下,把这两个密钥都发给他, 好,他接下来会帮你自动化部署好,现在他开始正式部署了。部署上去之后,工作还没做完,我们先要到这个权限管理这里,然后再回到我这里写的这个教程这里来 复制一下这里的命令,也就是这个命令,然后点击这里的开通权限,把这个命令复制过来,也就是开通所有的一些发送消息的权限,用户身份权限这里也要开通,然后点击这里的确认开通权限。 好,权限开通之后,我们再回到这里的版本管理与发布,然后点击创建版本,输入一个版本号,比如说一点零点零更新说明,随便写一下无所谓,然后点击保存,点击确认发布, ok, 这样子你的飞书上面的这些就发布完成了。发布完成之后,我们还要去设置一下,在你的事件与回调这里,点击这里的选择这里的事件配置,然后再选择这里的订阅方式,使用长链接接受事件,点击保存。 ok, 然后再点击这里的添加事件,添加哪些事件呢?我们继续回到这里的教程这里来,然后把这里的这些事件全部添加一下,复制粘贴过来,点击添加,一个个都添加过来, 继续添加,粘贴,确认,添加,确认开通, 这个已经添加了。添加成功之后,我们再到这里的版本管理与发布,然后再点击创建版本。刚我们不是升级了一个版本吗?那就一点零点一升级了一个版本,更新说明也随便写一下,这里需要有一个应用身份的配置,我们点击配置一下,选择筛选条件。 好,设置好之后,我们点击保存, 这里需要重新再写一下,然后编辑说明,随便写,先发布。 ok, 这样子就发布成功了。发布成功之后,我们直接在你的飞书的这个频道这里可以直接打开这个应用,然后就有这个机器人了。 先给这个机器人飞书的这个机器人发个消息,比如说发个你好,可以收到我的信息吗? 看他能不能收到啊。 ok, 现在他回复的是这么一句,呃,一个代码呀,或者是一个信息,这个信息我也看不懂。呃,我直接把这个信息发给他, 发给他描述一句,你看我发布了飞书的机器人,并给他给他发了 的信息,他给我回复的内容如下,请问是出了什么问题吗? 直接交给这些 ai 的 工具,直接让他去部署的,不需要你自己去呃,去摸索,去探索这些你不懂的一些东西,你直接丢给 ai, 让 ai 自这段话给你部署就行了。 好,现在这个机器人的话正在给我配对,然后配对成功了。好,配对成功之后,我这里就可以在飞书里面正常和机器人发消息。我再给他发一句啊,复制一下这句消息,然后我再给他发一下,看他能不能收到我的信息。 ok, 他 这里给我反馈的是能收到啊,所以这里的飞书的机器人也配置成功了。 ok, 那 今天这一期关于 open call 这个本地部署的这个教程,以及它能对接飞书,对接 telegram 的 这些机器人,都已经给大家录制完成了。 因为我自己本人是一个不懂代码,对电脑平常也不是特别精通的一个人,所以全程的话,我基本上是借助了一些 ai 工具来帮我操作完成的。 最后这个教程的话会写了一些常用的命令,这个常用的命令是未来你需要用到的一些命令,如果你遇到任何问题,你也可以直接让你的 ai 工具去帮你去找一下原因,原因找到之后,你再根据它的提示来一步步的操作,也可以去做一些具体的优化。那今天这期视频这个教程就到此结束了,下期视频我会给大家 推出一系列关于 open call 的 一些进阶版的用法,以及其他方式的一些部署方法,我都会给大家完完整整的给出个教程出来。那今天这期视频就到此结束了,咱们下期视频再见,谢谢大家的观看。

欢迎收看我的新系列节目圆桌会,在这个系列里,我会重任自己小小的人脉,邀请一些业界的大佬来聊一些大家会感兴趣的技术话题。而第一期的嘉宾则是中国开元界的 t 零级大佬朱彬彬。 彬彬现就职于腾讯云,他是前 reddit 成员 wallack 的 创始人成员和现任核心。而在本期节目里,我们会聊到 reddit 和 wallack 的 分家内幕,国际级开源项目的日常八卦,中国人和中国企业在开源领域的现状。 当然还有冰冰是怎么样一步步成为开源大佬的经验分享,这也才给了很多很实用的建议。如果你对参与开源项目感兴趣,那就请务必认真听了。那么事不宜迟,我们现在开始 reddit 从开源改成币源这件事情是你们完全不知情的吗?都是 reddit 公司自作主张做了决定吗?对, 这个事确实是 reindys 公司直接做决定。那其实他们当时做决策的时候,其实只是比如说像邮件通知一下不停的成员,懂我意思吧?他其实就是所有 information 那 种感觉,他只是周之一下,你其实对其他人都是比较突如其来的。说实话,就这么感觉, 那我就很好奇了,理论上当时的 reddit 还是一个开源项目,那他怎么能够在开源的框架下,绕开开源社区一个公司去做所有的决定的呢?我觉得这里有两个原因嘛。第一个原因,其实 reddit 公司它本身拥有 reddit 这个的商标,还有知识产权所有的权利嘛,作者 andrew 应该要半年就转让给他们了, 所以他们本身在法律上他们是完全能做这个事的,因为 reddit 本身也是 bsd 三这种协议嘛,既然他们有这个权利,其实很容易去修改这么件事。 第二点,当时的锐志的社区治理方式就五个 callin 嘛,三个是锐志公司的,这些占了绝大多数票嘛。另外的话,其实他们其实也没有进行过社区投票之类东西,因为当时锐志公司他们其实刚换 ceo, 应该是换了个新的 ceo, 新的 ceo 进来一年,然后就操刀把这个鞋给改掉,就类似这样子, 嘿嘿。那么来到 wallkey 这边,三月二十号 reddit 改成币源,三月二十八号 wallkey 项目就成立了,而且还是在 linux 基金会下面成立,这个速度有点太快了吧?确实比较快,说实话,我觉得快其实有两个原因嘛,第一个原因就是原本那批人其实在瑞瑞社区都比较熟了嘛,包括我跟 madeline 还有其他的一些成员其实都比较熟。 第二点,也就是 madeline 他 本身从事这方面的担任工作,他其实也弄得比较久嘛,他在 rediscourt 应该也干过四年嘛,他其实在 open source 领域也有很多人脉之类的,所以他跟那些 linux foundation 呢,阿帕奇 foundation 这些都会有些相关的朋友嘛。 其实我看他当时协议更改的时候,他应该是最生气那一个人,因为我们有个通讯工具嘛,叫 slack, 那 slack 上来,其实他当时在后面都搞着个小火环,那种爆炸挪曲那种表情在上面表示他的愤怒这种感觉。确实这个东西在当时确实挺快的,这也超出我预期,其实我想过确实会弄一个新的,但是我没想到他其实那么快就能进,当都是利用防备绳。这里 rocky 项目不只是成立的快,他这个大厂的背书也背的特别快,在一开始国外国内的大厂就基本上都已经站对了这个角色是怎么做出来的,反正当时他第一个官宣的时候,我们可能当时还没站好队,因为当时我们内部团队也在思考,因为这个东西毕竟是个商业化产品嘛,在云上企业也会去卖云服务嘛, 所以他这些事情其实也不一定说会很快的去判断出来到底要怎么走,所以在中间过程中,其实 madeline 他 其实一直有在问到底要我们嘛,就问陈迅到底要怎么去做,或者问我之类的。但后面就是一周之后,其实我们团队确定好之后确实要走 vogue 之后,其实我们就已经占据到 vogue 了,包括后面像阔定的席位,其实就第一批的阔定席位其实都在那时候定下来了。 那那时候是选择了两头下注吗?当时其实做好决定已经就走 vogue 了,那几天之后做好决策之后 这么坚决啊,那我还以为肯定会两头下注了。因为你们是一个新的项目,而你的对手是一个世界上最主流的 kbs。 一个原因其实可能是许可证的原因,许可证的原因就注定了我们其实如果说不不去谈合作之类的话,其实我们是没办法继续做 reddit 的 托管服务嘛。这点。 第二点,因为当时其实和其他厂商的朋友大家都比较熟,我们其实私下也一直在讨论这个事嘛,所以对于对于这么一个社区,其实因为原本的开发团队基本都在大家背景都都是很多云厂商的背景,那云厂商其实背后的话,其实大家团队其实力量也是很大的,其实就不单单会比位置差嘛,就有这么个感觉。 我就搞不懂了, reddit 公司都没考虑过这种后果吗?你们这些人又不是独立开发者,每个人都是有大厂背景的,这个是 google 的, 这个是 a w s 的, 这个是 oraco 的, 这个是华为的,这个是阿里的,你是腾讯的, 他怎么会觉得说我要把这个东西改成币源,我要把这些云服务商都踢掉,但是呢,这些云服务商的员工还会继续地为我免费地做这个开源的开发, 他是在想什么?也不是,我觉得是他们预料到了这种情况一定会发生,他们也做好了这种情况一定会发生的准备。 所以他们其实在当时你说他们不在意社区的话,其实事后表现来说,他们其实也是在意社区的,但是最终决策做出来的还是有这么个影响。那这之后还有一个节点,就是二四年的年底, reddis 的 创始人 salvatory 回到了 reddis 公司,等于说是重新出山了,然后他们很快就把 license 重新改回来了开源。 那这之后他有找你们说请你们回归之类的吗?哎上应该是没有的,我记得有一次互动,他其实就是过来 welcome 这边说要把 welcome, 因为 welcome 源代码里面不是很多源代码的那些商标归属权是属于 voluntary 的 嘛,他其实当时就说让我们把 welcome 里面这些 就是 ip 相关东西都转到 reddit 那 边去,就改成 reddit 乐嘛,或者 reddit 公司他其实只做了这个东西,你要说他有过来找我们去说讨论这个东西,其实没有, 那没感觉出来他们对太原社区有多重视啊?我觉得可能体现出来的话,可能是后面他们又重新 open source 了吧。就如果说他们意味就觉得社区确实是不重要的或者干嘛的话,他们可能也不会说再把 license 改回来,或者说去继续维护那句版权 source 这个项目嘛, 但他确实是没有再找你们去研究,你们去回归,确实没有,因为他后面其实我觉得也已经过了挺久了,就有种话是什么 was done is done 那 种感觉。 那现在的 reddis 应该也重新组建了那个开源的核心团队吧?你有跟他们接触过吗?有有,其实你说开发团队这边,其实我觉得两边开发团队其实都很友好的,因为大家之前相互工作一段时间,目前 reddis 的 扩展的话,其实是一批新的人,其实就都是他们内部的一些员工 啊。全部都是 reddit 公司的人吗?就没有外部人士了吗?那,那他重新开源不是开了个寂寞?其实 reddit 他 虽然重新开源了,但是他之前做了一些事情,比如说他第一就废弃了之前社区治理的一个模式嘛,现在整个扩建其实都是 reddit 的 人。第二他们应该还有 l a l a l a 是 一个提交代码的时候会去几个 一个条款嘛?那那个条款上面会说你提交的所有加密的其实都是归属于睿智公司的,类似这样子的。哎,那这都已经重新开源了,为什么还有这么一个条款在这里啊?比如说他只要想重新闭源,他其实可以直接去闭源掉,不需要去跟你这种原作者去讨论或者干嘛之类的,他可以直接去做,有一个合法的一个正当理由。这个 cla 是 什么时候出现的? cla 一 闭源之后应该就有了,我记得他们当时应该就直接搞了个 cla 的 一个东西了,然后现在重新开源了,这个 cla 也没有取消, 那我感觉它这个就是一个纯粹的 pr 行为的这个开源。是的,其实他们也没有做任何其他的保证,来来向大家承诺说以后不会出现,就不会再出现这种情况,因为 cla 这个东西决定了它, 即使它现在是开源的,它其实将来也是完全可以根据 cla 的 调和管把它重新并拢回去的。其实之前也存在过不少这种开源项目,因为控制了公司跟社区有一个矛盾,所以导致分裂的情况。我觉得最经典的就是一四年 noj s 的 分裂, 而且他们的状况跟 reddit 还真的有点像的,因为都是这个创始人加入了一个公司,然后把 ip 什么的都卖给了这个公司,自己就退退休了。然后这个公司就是因为自己的业务需求和社区的路线不一样,然后就这个开源社区就会分裂出来,所以当时他们分裂出来是 ios, 只不过这个分裂就持续了半年而已,他们就最后还是合并的,所以回到你们的话,你们觉得你们跟 reddit 还有合并的可能性吗? 我觉得如果说两边有意向的话,确实是可以谈的,但是我觉得对 reddit 公司来说,他如果说我之前跟 madison 也聊过这件事嘛,我们在讨论说有没有任就什么情况发生的话,我们有可能会愿意合并回去。就比如说 reddit 他 们那边也愿意回把设计合并的话, 那其实还是和之前前面谈到的新的问题有关,其实你没有判断 reddit 它之后会不会去修改什么东西,所以最主要的话,如果说要去想要合并的话,我们就一定是需要 reddit 这个项目,它首先第一点肯定要改回去 b 就是 bsd 三这种协议嘛。 第二点的话其实就可能说你需要说去把它这个商标啊,干嘛之类转移到一个比较中立的基金会去做这么个事。就比如说类似基金会或者 ipa 的 一些限制, 其实还需要去移掉他们那些 cia 的 一些限制,最后其实可能还需要他们去承诺一些,他们的决策权不能说占绝大多数,就类似需要有做这么一些事,但我觉得这些事其实就 reddit 公司他肯定是不会愿意去做的。其实你要说一个决策做的对还不对,其实要看对双方的背景嘛。而且对于 reddit 公司来说,他们其实可能因为商业化的一些压力呀, 产品的一些策略调整啊,他们可能确实需要做这种事。他看到了芒果 db 有 一些成功的案例啊,因为芒果其实也改过许可证嘛,他们改了之后他们股价之类的有很大的一些提升嘛,然后可能觉得站在 reddit 角度上其实是想看到类似这些事情的发生, 哎,但是据我了解,芒果他们基本上都是内部开发了吧,没有什么外部的参与。芒果和 reddit 确实不一样,他们会吸纳少部分的外部贡献者的一些 patch, 但是只少部分,所以芒果对他们来说其实没有什么参考价值。感觉这个企业的领导者不是很聪明。 我觉得就从一个市场的角度来说,你现在制造了一个竞争者跟你分蛋糕的,对你来说就是一个不好的结果了。就除非说大家可以一起把这个 kvs 这个市场做到翻倍,那 我们 kvs 市场本来就只有这么大,那你为什么要制造一个竞争对手?我们看很多其他的行业,就是最后只剩下两三家的时候,只要政府没有反垄断,大家的想法都是合并。 因为你这样子的话,可以说两边竞争,竞争就会消耗,消耗就会有受伤,对吧?那我先劝一下,合并的话是不存在什么技术路线的问题是吧? 我觉得不存在,虽然现在两边产品分叉分叉出来有点多嘛,因为过了确实也差不多过两年。对,技术角度上其实你要合并其实也是可以合并的,技术上是没有难度的,我觉得难度其实还是策略啊,还有商业这些两边对方的态度。这个问题嘛, 那假如我来牵头把 savory 和 madeline 拉到一起坐下来谈,你觉得能谈得成功吗?我觉得如果确实两边都有意愿去,其实也是可以的,但还是最主要角色前我觉得还是二位子那边。好吧,那这个问题就留给 reddis 他 们了。 那聊完八卦我们来聊一聊技术吧。有一点我是挺好奇的,就是你像 wokkey 这种纯粹的开源系统,那些云服务商他们要怎么样去竞争呢?就是纯粹是比谁的价格更低吗?我觉得最主要就在市场上,如果想竞争的话,可能最主要还是像你本身这个产品上面的工艺就功能产业化。就比如说你们理解呢? 因为像目前的话,我们在 rocky 的 架构上去,我们前面挂了个 pos 嘛,挂了个代理,像社区版它本身就没有代理这个东西嘛。那其实我们挂了代理之后,其实能做很多原本在内壳做不了的事情,有这种差异化的存在,是不是可以说明一个问题,就是其实大家都藏着, 就都没有把自己最好的东西拿出来放到 rocky 这个开源项目里面去。我觉得初期可能会有长一点,但是长远的角度来看是往往外面 open 的, 因为你可以看到 rocky 最近的一些大的功能,其实都是各厂商内部已经跑了很久的一些功能就贡献出去嘛, 因为像现在 pos, 因为之前也有别的一些固定成员,他们是想推的,想推自己的 pos 到社区嘛,就说有在讨论说社区是不是需要一个 lucky pos 类似类似的组建, 那其实其实遇到阻力都会比较大嘛,因为每个厂都每个厂都有自己的 pos, 其实很难去把自己的 pos 往外去推,最主要的东西就是想说把自己东西变成一个标准嘛,但是你自己东西变成一个标准东西,它需要达成很多共识,每个人想法其实是非常不太好说,说实话, 那我来帮你总结吧。实际上就是大家都想让自己的标准成为最终的标准,但是没有人肯让步,那就干脆就不要标准了,是这样的吧。 不知道功能这点,我在去年发布的这个 rocky 九零上面看到一个很有意思的,就是 hash fuel aspiration, 这个功能是两年前 reddis 发布过的功能, 所以那么这些 reddis 发的功能我们有哪些要拿过来复刻一遍?这种决策是怎么样子决定的呢? 这个需求其实在以前 windows 内部就有了,就比如说在内部,在 windows 社区就有了,哎,对,我就特别想要这个功能,要不然的话你整个 hash 就是 一坨东西,就很难用好吧。对,其实,所以当时在 windows 社区内部,其实很多用户都希望有这么功能嘛, 所以其实在后面就分叉出来之后做的第一个大功能应该就这一个。我记得那七点四版本就把这个加进去了,他们其实想把这功能作为类似分叉之后的第一个大功能,类似这么个东西。哎,他们怎么一分叉就开始发这种大家期待已久的功能啊?这什么意思啊?可能还是想搞差异化之类的东西吧, 其实确实也挺那个的。他们之前都是一直有在一些功能一直没往里面做吗?但是分叉之后又在往里面做,所以其实这里面确实也挺那个。那就是恶心人。好吧,我来帮你描述了, 那么这个东西你们当初决定要复刻过来的话,是可以直接把代码复制过来吗?还是因为已经分叉了所以不兼容了,要重新写? 然后你们写的话,你们需要考虑到跟他们那边的兼容吗?就会考虑 api 层面的兼容,比如说命令了,这些命令的名字啊、参数这个东西会去考虑做 api 上的兼容,因为 api 上的兼容能利好那些从锐志迁移过来的人嘛,或者比如说客户端嘛, 但这只是 api 上的兼容,你说代码上的话其实是确实不兼容的,因为分叉其实确实比较多,其实代码上包括其实像 aws 他 们的人,其实他们的法务同学之类的,反正应该跟他们很明显的说, 就让他们不要去看瑞斯代码就有这么个限制,他们其实不会去看你的实现会干嘛?其实其实只会去看他们的文档,去看他们这个 api 是 怎么设计的。在 api 就 api 这层面上去做监督, 那这种算不算是看图写作文呢?就是我们知道他有这个新功能,他这个 api 长这个样子,然后我们就按照这个去把它实现出来。这个东西应该本身我们也是想做的,包括之前分叉出来之后,其实在八点零,其实都在别的地方嘛,确实可能需要点时间,所以其实最终可能才变到九点零才出来。 其实发了就好,总比像 reddit 那 样就故意压着这个功能不发好得多了,对吧?但我们现在其实在 whitit, 它其实不会说特意的去说去阻涉某些人去做一些功能嘛,因为现在跟之前 reddit 其实还是相对来说会比较 open 的。 我会说去认真评估你这个东西是不是对大家好就对社区好,其实更多会站在社区这么一角度。 这里感觉是有点矛盾的吧,因为前面不是说了那个 proxy 的 事情吗?嗯,像 proxy 这种好东西,你最后也是没通过,因为之前 proxy 的 讨论的话,我记得应该是 的同学想去加嘛,但是最终的没最终没这权,其实还是因为大家其实都不太想做,其实讨论的人会比较消极或者说干嘛,所以是核心团队里面有人投了反对票是吧?应该是,但具体讨论我其实忘记了,我其实没怎么参与,因为当时可能我在忙别的之类的。那这样子也没有完全摆脱掉当初 radis 那 种企业的利益影响到开发路线的这种结果呀。 那我看现在 valky 的 这个技术委员会 t s e 的 这种结构是设计了一个投票要超过三分之二才能够做决定这么一个干领,这就是为了避免 reddison 那 种企业影响到决策的这种结果,是吧?对的话权限大家尽量的平均呢,会出现这种被某一个厂商或者某一个实体去控制, 控制这种绝大多数这种决策权。那这里就有一个问题了,他不一定需要一个厂商去控制啊,他只要两个,那他们的利益关系是一致的,他们也可以控制了。比如说现在 t s c 里面有九个人, a w s 就 已经三个了, 虽然说它不能够超过三个,但是只要你有两个公司有三个,那三加三等于六,那已经完全控制了,这不也是一个存在的风险吗?从现实情况出发的话,确实是可能存在这个风险的。因为现在最早的话,像那个 t s c member 其实是六个嘛,当时的六个有长安背景的,包括是社区最活跃的一些供应商组成嘛。 我觉得最主要促进这个事发生的话,可能是之前谷歌他其实有个空城成员,他们去年年底离职了嘛,他去加到了 o n c 嘛?加到甲骨文公司, 那他其实在之前我觉得他在走之前,他站在他们团队的角度啊,他其实还是希望说在社群能留下 g c p 的 一个成员嘛,希望说把另外一个 g c p 的 成员给加回来嘛。那发起这个话题的时候,像 a w 其实也会开始发起嘛,因为他说如果你们那边要加一个人,那其实我们这边也要加一个人。 后面就聊着,其实大家都觉得大家一致认可,大家都 ok, 并且我们在做做的房子像刚刚那种情况下出现了,我们又去修改乐趣治理的模式,我们又再次在上面去强调成员啊或者公司的席位啊,数量不能超过,怎么样又再次做正事。但像你刚说如果两个公司联合起来,或者三个公司联合起来的话,那种情况没法避免。这里就有一个我特别想讨论的话题, 就是我们中国的技术人和中国的企业,好像在整个国际上的社区开源社区这里面相对来说这个发言的机会是比较少的。我感觉 rocky 是 不是已经中国的发言权是比较高的一个地方了,我不太知道其他项目啊,但是 rocky 这边确实 确实也还好,我感觉,但是我感觉跟国企也有关嘛,我们国内很多开发商,其实大家其实都虽然说很喜欢开源,但是其实参与开源的频率啊,质量其实都相对会比较少嘛,因为大家其实国内工作可能家庭的东西时间分配会比较忙之类的, 就是我们参考一下国外的做法,你像 a w s、 google、 microsoft, 他 们都会养很多的人去专门去做开源,那这里就不存在什么工作和这个开源的冲突了,因为你的工作就是开源,开源就是你的工作。 开源这个东西并不是说我要去做一个完全免费的事情,它是一个长期的铺路的一种行为,那你铺完路了之后,你就可以开始收过路费了, 这么一种长期的眼光的事情,我们的企业是不是感觉就是没有形成这么一种眼光?这问题其实比较难答。说实话,我觉得跟团队的就是跟你领导就领导力的之类的,他们喜不喜欢开源,或者说以前有没有搞过开源,或者说对开源看法这些都有关。 因为我想的是大家都是云服务商,你说云服务这个东西本质上的商业模式都是一致的,那那个老外都已经给你们跑通了这个模式了,那我们 为什么不考虑直接抄一下答案呢?我不知道别的团队啊,反正我们团队确实这方面其实投入也在慢慢变大嘛。你看包括我工作上,其实我也会有比较多的时间投入到开源上了, 有时候在团队内部就工作不是特别忙的时候,其实像我里的还有老板其实都是鼓励我说去往社区投入一些精力嘛,去做一些这种事情。当然现在的话,你要说对比 a w s 那 种投入的话,确实也还没有那么多,但是其实有在那个的,有在慢慢加大投入的。 其实我最近刚遇到一件事情,就非常契合这个开源的战略意义这么一个话题,就最近有一个粉丝在找我帮忙,他是西安交通大学一个教授,就他们会用到的一个科研的设备,一个一个系统吗?或者这套标准,这套东西是美国一个大学开发的, 这个美国大学做了这套东西之后呢?他免费给大家用,就他免费给大家用,就他不收钱,全世界都在用这套东西,那他就变成了一个全世界公认的标准。 那我觉得其实真的这是老美特别擅长做的一件事情,就是他在前期他会不求经济回报,他就会尽量的人更多的人去参与去使用,对他形成依赖,然后让他形成一个国际标准。那结果呢?在去年年底的时候,所有的中国的学校的申请都被拒绝了,就是这个美国的大学直接把中国踢出去的这个授权 他要掐你就是这么简单的事情了,因为这个东西他不开源,他只是免费的给你用,所以这个粉丝就是来找我,就希望我带一个团队去开发一个开源版本的这个系统, 去对标对方,或者说兼容他,然后让我们的这个成为一个中国的学校都可以用的一个系统,我们成为一个标准,这样我们就不会被他们那边掐脖子。 我觉得这种战略上的意义就是在如今的这种大环境下,也不是什么空谈了,这是真的会发生的事情。所以如果从企业的角度来说,我觉得就应该去考虑一下这方面的因素,而不是单纯的就想着说这个项目他能够赚多少钱,他能够产生多少利润, 那是一个大的方向,你能够参与的涉及的这种开源东西越多,你在这个市场上的蛋糕越大,你就越能越可以避免去用别人闭源的东西,要不然哪天他一掐你就没了。 所以我觉得未来所有的应用软件其实要保证长久发展的一个很重要因素,其实就是它里面依赖到那些核心主键是必须派圆的,或者说是那种长按中立的, 他其实这是一个健康的一个发展路线。那你刚刚说的那个学校那个项目,当然他本身因为他是闭圆的,所以我觉得大家确实可能也不好去弄那个或者制定标准,但是他确实是一个经验教训吧。 那我问一个非常私人的问题,就是你现在开源和不开源的这个工作的占比分别是多少?这跟忙不忙有关。说实话想想大概的话,我可能早上来的时候,整个早上的时间可能会放到开源上,因为你也知道就像 ipa 或者像 slack, 其实我们和外国关系是差是差问题的, 所以很多时候其实我们这边是晚上,他们是白天,所以很多时候消息是一步的处理,所以我觉得时间比例的话,每天大概可能可以投入到社区有两三个小时,就不忙的时候可能可以投入到两三个小时,那这个就完全取决于你的公司里面的工作内容了。我本来以为是什么五五分这种, 那如果你这个工作很忙的话,是不是有可能一个月都碰不到 rocky 的 代码?因为我们团队其实人也还比较多,其实有其他人在帮忙就分担压力,所以我证明我到社区的时间我自觉的还是比较多的,就不会说出现这种说连续一个月都会特别忙。那会不会有一个情况是这个人一直缺席很多重要的场合, 我们下次会议就决定把他给踢掉了?好像有,我忘记了多少了,是半年还是还是多久?那我觉得如果我是腾讯的领导的话,我至少应该保你这个席位,对吧?保你这个发言权,所以我应该多给你一点时间在这个 rocky 的 项目的这个参与里面去才对吧。但其实你社区的话,其实也不一定说你 投入那么多时间到社区,就一定在社区有事情做。很多时候其实你参与社区的话,其实很多时候处理别人的消息啊,包括那些东西,它其实是不太需要一个很连续长的时间, 如果你不是沉浸在编码阶段的话,或者说在处理问题的话,其实他其实需要你的时间是可能会比较零散的,所以你们是没有一个什么很严谨的突出力在这里等着大家是吧?是的,因为大家对我觉得大家不像工作嘛,工作其实会有一些时间限制啊,点乱之类的, 那些社区确实都大家都知道大家很忙,所以大家处理事情的话其实都会不着急会干嘛,就压力其实不会说很大,其实大家都是非常 open 呢,或者说自由的去做这件事。 最后我们来聊一聊你的个人故事吧,就是你第一个参与的开源项目是哪个?因为我可能以前搞过一些小的,但是不太确定了。我因为我最开始我是写业务代码的,我是在那些教育的一个行业在写一些拍审相关的业务代码, 所以对于拍审相关的话,其实我可能以前有有提过一点点,但是不是很系统。那你要说系统的参与的话,那确实第一个就是锐志项目,大概是在二幺年三月份还是四月份开始的吧。 那我当时开始参与 reddit, 当时其实也不是说很厉害,因为其实每个人都会从一个新手慢慢过渡嘛,所以我也是说去看看文档啊,去学学文档啊,包括学测试用力啊,它有这么个慢慢熟悉的过程吧。就我应该在二幺年三四月份开始去给 reddit 提交第一个 pr, 那 九月份的时候可能就慢慢的和 reddit 的 一些贡献者核心贡献者就比较熟悉,比较熟悉。再到后面的可能说 正式的加入 reddit 这么一个跨境组织嘛,就点行组织上开始说承担更多的一些工作。那你上来就选这么大的一个项目,是什么个级级啊?是因为你对 kbs 很 感兴趣啊?还是说 我就是要挑战一个大的东西?其实还是从工作出发吧,因为我当时做业务开发的话,我其实本身用到 maccode 啊, ness 啊,卡布卡, reddit 其实很多主键都会用到嘛? 我觉得说单单会用其实还不够,我觉得说我需要找到一个主见,说能去更加深入的去了解,去学习嘛。那其实 reddit 可能在主页里面呢,可能是相对比较简单,或者说对业务来说联系比较紧密嘛,因为你其实做业务开发,其实 reddit 我 觉得应该是每个业务开发都会去用到和学习到的一个东西, 那我所以就从 reddit 开始入手。那骑马赛克其实我当时也有想法去弄的,只是从后面慢慢中行到 reddit, 那 你是准备到什么时候才发的第一个 pr? 我 第一个 pr 我 记得应该是个文档型的 pr, 就 比如说修一下文档之类的东西,那面我有些 pr, 其实我初期的 pr 可能是跟 bugface 有 关的, 就修些小 bug。 那 到后期的话,其实和那些其他的贡献者比较熟的时候,那些贡献者其实会给你分配一些任务,就比如说我当时和一个 race 的 一个扩展成员比较熟,他其实会让我帮忙去看一些测试用力的一些失败的情况。 那我记得其实最早看的是一个主重复制相关的一些测试用力。测试用力其实因为 radis 它本身在分布式架构下,它确实会有一些持续相关的一些探险意识之类的,或者说些或或者说一些竞争条件。那其实当时通过复制用力的话,确实去学习到了非常多知识,包括修这些测试用力,其实对 radis 也会越来越熟悉, 可以说这是你的策略吗?就是先混个脸熟。你要说策略其实也算吧,是取决于你其实对那个东西的熟悉程度。那其实如果说你本身就特别熟悉的话,你确实可以说去直接去从一些功能出发点去切入嘛。 那你最一开始修那些 bug 都是在日常的工作中发现的吗?还是说你是去那些没有人解决的医学列表里面去找来修的工作?日常中其实你发现不了 bug, 因为那种是比较热的路径,其实都不会有问题的。那我发现的其实我觉得两部分都有吧,从医学里面去看,其实都有。 你要说我其实开始做贡献的时候是一开始就来吗?其实也不是,那在之前我其实已经对发就很多书籍之类的一些文档,其实我已经看过了很多,包括用法这些都有有过很多积累了,也 不是说一上来就看原码之类的,就类似这样子。通过这东西可以促进很多东西吗?比如说你说数据结构、网络通信虫啊、集群啊,虽然不是特别大,但是它又挺全的,就很多东西支持你确实能从这里面学习到,所以就是深度的价值大于广度,对吧? 不需要说要参与很多很多个项目,只要你有一个项目,你参与到足够深,你对他的理解足够深,你手中获得的知识也是可以应用到很多地方的。是这样理解吧,在这里面其实深度确实是更重要一点的。我觉得因为当你深度够的话,其实你你的广度其实很容易扩展的。我有很多很年轻的粉丝,他们有一个共同的问题,就是积累的太少了, 所以他们的想法就是说有没有什么开源项目可以参与一下,就丰富一下自己的简历,你觉得这是一个合理的途径吗?我觉得确实是一个好的途径。说实话,反正第一点我觉得你如果想参与开源项目,还是先开源项目和你的未来的工作是相关的各方面,一方面能反哺你们。 第二点会用它填充这个简历的话,确实也是个好途径。因为现在别的企业的话,现在很多团队其实都会比较喜欢说那种能够去主动参与开源呢,并且在开源有一些产出的一些同学其实都会比较受欢迎。 因为你本身参与开源的话,他需要有一些基础实力嘛,就包括你可能说需要你要怎么去和别人去沟通,怎么去在开源社区去做一些团队协助。因为现在参与参与开源,我觉得对很多新手来说也可能提一个东西没人去理你,我觉得这对于新手来说是打击比较大的。 但我觉得这东西也不能怪人家那些 mnt 的 就不关心你,因为很多 mnt 的 确实也都比较忙,如果说你的问题啊,包括你的一些摆动啊,是没什么必要的,其实他们真的是不太会想去花时间去投入。在这里 我觉得有个很重要的基础的话,你们不要尝试着去修复一些没有问题的代码,或者说不要尝试去优优化一些没有问题的代码。 但是很多新手其实会有这种感觉,就看着你这个代码就说不应该这样写啊,这个负循环应该怎么写会更好啊?他会有自己这种想法, 所以他就会去写。那我觉得初期其实我们可以避免类似这种想法,因为对于名称来说他确实是一个不单。首先还是得看你这个 p r 有 没有价值。那如果有价值的前提下,你其实可能写的一些不太好的代码其实也没什么问题的,因为其实像一些名称,他意识到你这个 p r 是 有价值的,是可以合进去的,他解释会开始去指导你去写代码。 所以这也算是一个策略吗?这是找到一个有价值的问题,就就算你不知道怎么解决它,你能够找到这个问题把它发出去,那大佬也会过来指导你,就是手把手教你去怎么解决这个问题。对对,我觉得确实第一点的话,你要想办法把对方的兴趣给吸引起来, 我觉得这确实是会比较重要。说实话其实很多缅甸的其实本身做开源的话,其实都是就会乐于助人,也不是乐于助人嘛,大家其实相对来说,我不知道我的路径能复制啊,但是他确实是一个经验嘛,肯定首先最好,我觉得最好还是先是一个使用者, 可能很多人初期或者前期他可能确实找不到发力点,我觉得这很正常,我觉得还是积累的问题吧,我觉得还是看缘跟工作其实可以相辅相成的去做,当然你如果能和工作结合肯定是最好的, 因为其实很多人一开始看缘码其实是没办法去做贡献的,这东西确实是很残酷的一个东西,你确实需要对这个本身有一个熟悉度之后,你才能好的去参与 刚才提到的书本、文档和代码这三者的阅读顺序,你有什么建议?我会建议先看书,当然现在书籍有个问题,就他可能会比较老,有些东西会比较老,但我觉得老的东西其实也没什么问题,也可以先看,反正我觉得第一点还是先看书,第二点就是看文档, 文档其实很枯燥,当然这个文档跟跟源码这部分我觉得可以结合起来的,因为你可以通过文档去了解到这个东西的概念之后你可以去参照着源码去看他这个概念到底怎么实现的。我觉得这个顺序还是很重要的。就是我之前有一个有点标题党的视频,就叫做不要读代码,读代码没有意义,但我并不是说代码一点意义都没有, 只是很多人他会误以为是你要了解一个东西,了解一个项目,你上来第一件事你就应该读代码,所以就很多粉丝就会找我问,我要推荐一些 app 项目给他们,他们想要去读一下里面的代码,但是如果你连一个宏观的概念都没有的话,我很难理解你打开哪个文件你都不知道,对吧? 其实这方面我比较同意原则老师的很多人其实可能一来扎根扎根代码确实不太好,因为很多东西你确实看不懂,包括我现在如果说我想去学习另外一个主键,你让我直接打开它的源码,其实也无从下手,因为你不知道入口函数啊,或者很多东西你不知道,你确实没法做。书籍的话,我觉得像我刚刚说的,其实我觉得最好的东西还是说你如果工作中能用到,那肯定是最好的 一点。对,你尝试先学习怎么把这个东西给用好,或者说把它的应用场景全部给掌握。当然如果说你确实没使用场景的话,其实我觉得也可以尝试去自己创造一些使用场景,你对这方面比较成熟之后,你可以尝试去看一些原理相关的书,比如说你看 radis, 或者说你本身对算法数据结构比较 比较感兴趣的话,你其实可能说我会想知道 reddit 里面它这个字典啊,这种哈希表啊,这种有序集合啊,它怎么实现的?因为你原本已经对这些命令很熟悉了,你会发现它是,它是通过什么样的一个形式实现这些命令,并且实现的非常高效,它并且省性能,就是内存也省。 我觉得很多人其实要消极啊,或者说被打击了,其实都是一开始扎进去之后发现进去之后啥都看不出来就说算了,我不试了,看我看不下去,呵呵, 我觉得还是先找到一个点,这个你感兴趣的点我不会说一定在最上层说把所有东西都搞得大而懂之类再去。那你现在已经把 reddit 所有代码都看完了吗?我可能只有 mojito 相关的,还有那个流啊, stream, 还有库尔相关,可能只有这几个地方的 没有全部看完吧,但我能说其他的所有东西我应该都看完。第一步入手的话,我应该是从数学结构入手的,会开始从字母串啊,它有序集合啊,字典会慢慢开始看, 在这个过程中你会发现这些数据结构的实现责任。第一点就跟你以前从算法书里面看到些东西就具象化了,以前可能从一些数据上确实学到这个数据结构很好, 它大概怎么样实现的?但是你可能原本以前没有写过类似的代码,或者说没有看过完整的实现,现在突然就看到一个完整的实现。你说,哦,原来以前教科书上说的那些数据结构,它确实是可以用代码写出来的,会有一个比较好的一个正反馈 数据结构。看完之后,其实后面我下一步我应该看的是命令嘛。举个例子,像那个游戏几何那 jesset 的 话,它其实在 reddit 里面,它底层用到两个数据结构,一个是跳表,一个是排序表,它又想要快,又想要有范围查询。好像确实结合两个数据结构确实能做成这个事。 你从这个命令开始慢慢着手的话,其实又可以慢慢去把整个链路串起来了。确实时间周期可能需要拉得比较长。说实话,因为当时搞 reddit 我 确实也经历过一段时间,就不知道怎么去去深入,反正就慢慢地一点点去看吧,慢慢扩大这个 圆圈范围内。是这样子,所以就是不能急是吧?就不能够想着一天吃成一个胖子。当然可能有些特别聪明的人可能确实有方法吧,那种天才就不需要咨询我们的意见了。 好了,以上就是第一期圆桌会的全部内容,感谢大家观看啊。第二期的嘉宾现在还没有定,有一个候选是 jet brings 的 老总,不过对方的时间有点难安排,所以不一定能成功啊。如果你有特别想要,有去采访的,或者是一个好的建议,可以在评论区里面留言,给我一点灵感,谢谢,我们下一期圆桌会再见。

今天呢,我们继续聊一聊 opencloud, 也就是之前的 motboat, 或者叫 cloudboat。 但是今天呢,我们就不聊安装的话题了,我们聊一聊它的实际使用。我首先对它做了一次小手术,用手术的工具还是我力捧的这个免费的 tree 啊,是字节旗下的 tree。 我首先给他提了一个要求,大家看一下就能否翻译这个项目的页面为中文。 以前的页面看着太难受了,只翻译它的页面的静态菜单,名称以及页面中的静态描述, 就按照我的要求一顿的改。改完了之后呢,我又提了一个新要求就,呃,现在你能不能把它的 logo 给我改改这个 lincoln, 他也是一顿操作,然后就改完了。然后我们现在看一下他改后的界面,大家看一下啊,这就是改完的 logo 和名称,然后是改完的这些菜单,菜单里边呢,一个菜单里面的中文部分,英文部分,他也都改成中文了,这样的话我们就大概知道是什么意思了, 看起来非常舒服,也很方便了。第二个呢,是我让他在我的电脑上建立了一些文件,然后都顺利的完成了这个能这个技能还是蛮顺畅的。 同时呢,今天又让他帮我发一封邮件,那就遇到了点小问题,这个呢,跟我有关系啊,就是不太了解他的逻辑。原来呢,你要发邮件,你首先得告诉他你的邮箱,如果是像腾讯邮箱这样的呢,可以在邮箱的设置里边给他生成一个授权码, 只要你把授权码给邮箱地址发给他,他就能够帮你发邮件,这功能也很顺畅。 三个呢,是今天最重要的一个测试,我让他把我生成一份格式化的网页版的一个报告, 他一端一番操作,最后提醒我说,那我的这个电脑里边呢有 python 的 环境, ok, 那 我就按照他的要求也安装了 python 的 环境。 我安装完之后呢,让他开始分析,他又开始用电脑原生的一些能力去做这个报告。之后呢,又问他说你到底去哪了? 他也没有回答我,等到我刷新页面,你看我就开始发火了,我说你前面的工作我很不满意,他说很抱歉,然后让你生成一个报告,我也没有看到结果,你看他嗅懂了,很多人说他是有记忆能力的,我也没有看到他的这个记忆能力。他还问我说 你要生成什么报告,然后报告的主题是什么?这个就很无语了,后来查了资料我才知道,其实他已经完成了工作,但是他没有告诉我 这个工作完成了,同时呢,他也没有告诉我完成的这些文件到底在哪里,所以这个实际上是对他的能力的一个理解的一个误差。 我又重新的给他提了一次要求,这次呢就比较顺畅,他顺利的调起了这个 python 的 一个能力,然后这个技能发挥到极致了啊,然后最后还给我做了一次这个总结,看一下他生成的这个报告哈,我们把界面缩小一点啊,看 这个还是还是蛮全的啊,我在另外一个工具分析的差不多比甚至比那个还要好,还要到位啊,完全不用写任何的什么提示词了, 非常非常完美。为了告诉你它是怎么生成的啊,这里还有一个关于分析的一个工具啊和还有分析方法。 那你看这里用到了 python, 用到了 python 主键,然后用到了叉的剪辑, s 的 这个图标化的能力。 关键词这一块他用到分析方法,用到了文本挖掘、情感分析,关键词提取这些还是蛮到位的,即使我用豆包或者是千问去写一份提示词,可能都没有他考虑的详细。 好,今天的视频就到这里啊,明天我还会继续的挖掘他新的技能,在视频里跟大家分享。如果有任何需要交流的朋友,欢迎关注我,欢迎跟我留言,也可以加入我的公开群。

好的,刚刚休息了一下,接下来讲一下模型训练篇,本次较常使用的模型是 rsn 五十模型,后续我会更新更多的模型,比如说 vg 训练,还有其他的等等,后续我会持续更新到这个专栏里面, 这是一个通用的教程,你也可以训练自己的收集,接下来会根据这些目录来讲解的,包括模型结构啊,数据机准备啊,环境配置啊等等。我们先下载代码,下载我准备好的训练代码,在这里 点击这个链接,然后下载就行了,下载完是这样子的,把它解压出来,我会把这个包分享给你们,然后解压出来就行了,然后使用拍秤打开 这里,打开了之后呢,首先呢需要配置环境,环境的话还是用系统端那个环境一模一样的, 如果你在系统那篇文章下载的环境也可以在模型训练那里用的,反正这里也是有的,反正下载这个包就行了。这个我就不多说了, 你训练的话肯定要准备好你的数据集嘛,先教一下你们数据怎么弄, 在这里点击,你可以到一些开放的社区下载啊,不是说国外的网站比较有名的靠谱,这里有对应的地址,还有其他网站等等,大家点击搜索就行了,要下载分类的数据就行, 因为国内也有比较有名的网站在这里。摩达社区啊,天池数据,飞讲的,我的数据好像是在飞讲里面下载的, 如果没有的话也可以进行爬虫,比如说最近比较火的这个 class ai, 它有对应的文档在这里使用,文档我英语读的不标准,大家见谅一下,大家知道意思就行了。然后也可以通过爬取百度的图片, 因为我也给出了代码,在这里后面我会教你怎么演示的,我们去百度分享那里下载吧,在这里点击它, 在这里直接搜索你的数据,比如说校园垃圾分类的,在这里搜索就行了,在这里看一下是否符合你的数据集,然后下载就行了。 如果这个平台没有你的数据集,你可以更换其他平台进行搜索,下载就行了。我之前是下载了一个,我来看一下在哪里。 我之前应该是下载这个蔬菜分类识别的,它的书籍是这样子的, 一个类别就是一个文件夹,然后这样放好就行了。 我先教一下用我的爬虫代码来爬取书籍,在训练这里 gets data, 这里数量的话根据你们的需求来填写就行了,我就排出一百张吧。如果你是动物分类识别,你就这里填一下你要爬取的类别,比如说小猫嘛,我就直接运行就行了, 它正在搜索, 你看它在下载中,它会下载到 data set 这个文件夹里面,我们重新加载一下,就可以看到你下载的数据了。如果你是其他数据,你就在这里改一下你需要获取的类别, 比如说狗啊,或者中草药其他类别等等,大家懂的都懂的,发送代码就是在我课这里复制就行了, 云码这里也有的,这里已经下载完成了,下载一百张,我这里只是演示数据,怎么下载? 假设你下载好一份数据之后,你需要进行划分嘛?划分的代码也也给出来了,在哪里?在这里复制这个代码,然后填一下路径就行了。 这里面的代码呀,就是这个文件,然后点一下你数据机的路径,比如说我刚刚下载的路径是这个, 填到这里,然后需要保存的路径在哪里,然后就保存在这里吧, 然后这里有快翻比例,大家根据自己需求来修改就行了。我只是拿一个类别来演示, 你看他已经处理完成了,你看他会分成训练级、验证级、测试级嘛。在这里多个类别也是这样子,运行这个代码就行了,很简单的,有手就行。 好了,这里不多说了,如果从其他平台下载好的代码,别人应该是帮你划分好了,划分好就不用划分,大家来看一下这个教程就行。好的,接下来进行训练了, 训练在这个文件在去点 py, 这里 需要修改的就是训练级的路径了,在这里 别人已经划分好了,它划分好的样子是什么样子呢?在这里点开它是写到点 d 叉 t 里面的, 他把图片的路径写到点 d 叉七里面,我们读到这个文件就可以拿到图片了。这个零就是代表类别的缩影嘛,比如说这个零 e, e 就是 代表这个类别的,零的话是代表这个类别 的。我的代码也是是被这样的随机的,我们直接复制这个路径就行了。属性 它的路径在这里。 如果你是文件夹的格式,直接复制文件夹的格式,就是去你这个文件夹的路径,到这里就行了。有一些书籍是点 t 加 t 的 格式,反正都可以用的,我这个代码都是适配的, 要再复制验证机的路径在这里应该是略了看一下, 对,应该是这个训练测试,根据你们的需求来修改,我这里演示,我就训练个两次吧,要 p 四大小根据你们的电脑性能来调节就行了,有画质默认就行了。 嗯,其他都不用动,直接运行。 然后这个随机类别映设关系后面可以用的到, 就是在前面系统演示过这里 ai 助手里面,如果他找不到映设的话,把它复制的给他就行了, ai 模型会自动帮你分析其他信息,比如说一些简介啊这种, 这里等待他训练就行了。 然后训练中断的话,把这个参数改成错就行了,反正博克这里有教程的,解决训练过程中中断怎么继续训练,大家看博克就行了,很简单的,训练的结果在这里, 如果需要推理的话,使用最好的模型推理就行了。 好的训练完成,然后这里的结果会保存一张它的捆销凭证,然后生成的结果记录,大家可以画图,画图代码在这里, 这里点一下你训练生成的 list, 点 csv 文件路径就行了。然后呢,直接运行就行了, 他会画图的,我拿另外一个结果来画吧,你看这这个图就生成了,然后这个图就可以放到你们的论文里面了。 他的本地训练就是这么简单的,如果你本地也训练不起来,那么接下来我就教你们使用服务器来训练, 其实跟本地训练差不多,一模一样,国际训练就是把本地代码还有数据集上传上去就行了,其实跟本地没区别。 然后我是只用星图 ai 训练的,然后环境已经帮你们配好了,然后点击这个链接就可以使用了。但是星图 ai 还没帮我省额呢,我看一下省额过了没有。 他在审核中,到时候审核通过我再录视频吧,因为他没有审核,我也演示不了。 然后租用奥拓 d l 的 平台的话,看这个教程就行了。我这期是租用星途 ai 的, 我这里先暂停先吧,等这边的镜像通过之后我再录视频。 好的,我们接着录。星图那边的镜像已经审核通过了,接下来带你在服务器上训练自己的模型。好的,废话不多说,开始教学。点击这个链接,进入我配置好的镜像, 这里讲一下我这个镜像有什么环境。我这个镜像的 python 版本是三点幺零点零的,拍倒曲是一点一三点零的,还有其他依赖 等等。如果这个镜像缺什么库,你们也可以自己安装,安装方式跟 windows 差不多的,比如说你还可以安装电信 flow 等等其他库的。之前我也出过在服务器怎么安装环境的。训练自己的模型,那么我今天破费一点四六块大洋,教你们在一个小时内训练自己的模型。好的,直接开始, 这里自动续费,直接取消。然后呢,立即部署,然后直接勾选支付就行了。这里等待它启动 创建中。让它在创建中。我们先准备好自己的数据集,还有训练的源码。我已经准备好了, 等会我还是训练之前的蔬菜数据集在这里,然后先打开叉 f t p 先,然后源码在这里, 原码在这里,把它打包好就行了。我是把之前的模型全部删掉,不然它上传上去特别大,花费不少时间,我只上传训练的所有文件上去就行了。把它压缩 这里等待它创建好的镜像已经启动成功了,我们连接一下 这里,点击连接就行了。 好的,连接成功,这里先打开 jupiter。 一 般上传的数据和源码上传到数据盘,一般服务器都有说明的,我们上传到数据盘 压缩包的话,双击就可以上传了。 上传之后呢,我们先解压数据集还有源码 解压命令,不会的话看这个文档就行了。镜像里面有详细的文档,不同格式的解压命令是不一样的,大家看一下就行了,我们直接复制就行了。 你们需要解压的文件是点 g e c 结尾的, 按住 tab 键就行了。如果你需要解压到新的文件夹上,那么 t a r 这个命令后面就接杠大写的 c, 后面接新的文件夹的名字,我就叫 data set 吧。 然后呢,回车就行了。它这里报错了,因为你没有这个文件夹。你需要创建一个文件夹,创建命令 mk, 然后按住 tab 键看一下有什么命令。 mkd, 后面就接新的文件夹名字了,它会在当前目录下创建的, 然后这边就创建成功了。这个我放大一点吧, 接着上一个命令解压它就行了。你看解压成功了,我们点进去看一下,看就解压成功了。 这个源码的格式是点 e c p 格式的,那么就用 n e c p 解压的文件是哪个 r e, 按住 tab 键它就会自动补全了,就要解压到哪个文件夹后面接个杠 d, 接新的文件夹名字就行了。 这里等待它加载就行了。 我们需要激活你的虚拟环境,我们先看下服务器有什么环境, 我配置的环境叫 dl, 大家使用我这个 dl 就 行了。怎么激活呢?喜欢 d a, 然后左边框变成 dl, 证明你激活成功,就可以用我的环境了。如果我的环境缺什么,你就安装什么就行了,我们可以看下环境有什么。酷, 我是安装了拍 touch 的, 大家来看一下这些版本号就行了,如果缺什么就 p i p 安装就行了,很简单的。然后我们需要切换目录,切换到原码的目录 cd, 按住 tab 键,然后再进入一层,就进入你这个原码的路径了,然后就可以找到你这个训练的文件了。我们来看一下,在左边,我们点击去文件滑到底部这里修改你服务器上面的路径, 我们把这个路径拿过来就行了。 它的文件名 list, 然后下面的也复制一下。验证级的路径, 一般别人的数据帮你划分好的,或者你自己划分也行的。这个是验证级的, 要训练次数,我修改二十轮吧,批次我就调大一点,是满服务器的选存,那你就调大一点,其他基本不用动了, 跟本地训练差不多的。运行的话,在终端这里运行 python, 加你的训练文件回车就行了。 路径不存在,看一下先,这里点错了, 是 list, 这里点击保存, 你看它就训练成功了。很简单的教一遍,你们都会了中蓝的野马基本上可以用这个方法来训练的。 模型训练完你可以下载到本地进行推理验证等等, 也可以在服务器上面进行推理验证。验证的文件在这里,我们拉到底部,这里填一下你的模型路径就行了。它的训练结果是在哪里呢?在 e x p 的 那这里改一下就行。 改完模型路径,你还需要修改验证级的路径,在这里在训练这里拿过来就行了。 ctrl s 保存一下之后呢,在终端这里运行就行了。 python 回车 训练完成之后,它的结果保存在这里。我们来看一下, 也是有这个捆桥矩阵的,这个就是它的训练结果了。还有模型,模型可以拿到系统端那里用就行了,不懂的话看我前面的系统演示就行了。前面演示过了, 模型的验证结果在这里大家看一下就行了。也可以用减脂的模型跟原始模型进行对比,把这些代码放出来就行了。 要修改你减脂的模型路径,还有微调后的模型路径在这里我这里后面我再讲吧。先注视画图代码前面讲过了,这里不讲了。 好的,服务器训练完成,那我这里顺便讲一下模型剪枝吧,因为刚好在服务器上面嘛,后面我在本地再详细讲吧。在服务器上面我就快速过一遍剪枝的代码,在这里 我们打开剪枝的代码,然后修改一下原始模型的路径就行了。刚刚已经训练过了,模型的类别是有几个呢?这里应该是六个的,你们的模型是几个就填几个, 刚刚我看一下,先是六个,这里保存,然后直接运行就行了。这个减脂比例根据你们自己需求来调节就行了。 这个服务器我只是快速过一遍,直接运行就行了, 这里等待它减脂。一般分类层是不参与减脂的,因为它用于预测你减脂了,它的预测可能不准, 然后它的结果也保存在这里,大家来看一下就行了。它的参数量会变少的,然后你的精度可能会下降,下降之后我们进行微调,微调的代码在这里。嗯,打开它, 修改一下减脂模型的路径就行了,就刚刚减脂的模型在这里 把这个路径复制到这里就行。 看一下,先, 这里保存 初级路径,在刚刚那里微调的话,还是用原始的数据级微调,把它复制过来, 粘贴到这里就行了,这里保存一下。 v 调的话,训练次数不用很多,我就填个五轮吧,批次大小改大一点, v 调模型时候学习率要小一点,这里改完就可以直接运行了。 v 调训练的结果会保存在这里。 好的,微调成功,模型微调后,它的准确率会提高的,然后它的参数量会变少, 大家运行这个验证文件就行了,我这里就不演示了,到时候我在本地再详细讲解模型减脂吧,这里主要快速过一下训练,还有模型微调的。好的,我们把训练的结果下载下来, 我们直接拖过来就行了,它就会下载下来, 你也可以下载原始的模型下载下来。好的,服务器训练片到此结束,我们回到博克这里,我们本地来预测一下模型吧,在代码这里 预测文件这里修改一下模型路径,然后预测就行了。那我就用之前的模型来预测就行了, 你们自己的模型修改一下路径,然后预测的图片路径放到这里就行了。 这个预测结果是正确的, 类别是樱桃白粉病,就是预测正确的,然后验证脚本也可以来运行一下,跟服务器上面的一样的, 修改一下模型的路径,还有你验证级的路径, 这里等一下就行了。 好的,模型训练推理验证都讲完了,接下来讲一下模型结构,我们来看一下博克 这个结构图,我已经画出来了,这个就是 rezen 五十的模型结构图,还有头部结构,还有主体结构,还有一个尾部结构,最主要的结构是它的主体部分,就是这里 主体部分有四组长插块,一二三四,第一组的长插块,它是有三个 bottom neck 结构的,剩下的分别为四六三个 bottom neck 结构。你需要注意点就是每一组的第一个长插块,它的结构图是对应 这里的,然后剩下的就是对应第二个图,这个我后面再用代码来讲一下吧。这边就是 bottom neck 的 具体结构了,我们直接进入代码,跟这个图来讲解一下。打开,然后它的模型结构在 models 文件夹下面的这个图来讲解一下。打开,然后它的模型结构在 model 文件 我们打开它,然后我们先打印它的结构图, 再在甲上输入一张图像,通道数是三,然后尺寸是二四乘二四的,然后这是答案每一层的结果输出。 我们先看一下它的结构,头部是有一个卷积的对应图的,这里卷积,第二个就是 p 归一跨层对应的,这里后面就是积果函数了,最大值跨层。这里没什么好讲的,主要来讲一下混合奈克这个模块, 在这里铺底部分,它是有四组长插块的,每一组的长插块是不一样的,第一个应该是三,让我们来看一下这里它是有三个的对点, 我们先看第一组,它是通过这个方法来创建每一个长抓快的,我们点击它,然后就会跳到这个方法了,它是创建每一个包装结构的,那么这一堆代码代表什么意思呢?它的意思就是解决维度不匹配的问题,这个等一下我再讲。 然后接下来就是构建第一个包装结构了,第一个包装结构它会调用这一堆代码的,看它这里有个参数,就是调用这一堆代码的,然后便利剩下的包装结构就是从第二个开始便利码。我们来看一下包装的具体结构在哪里,它的代码在上面,这里 就是这里了,它的具体结构就是对应我画的图,在这里大家来看一下就行了。它的具体结构就是卷积层啊, p 归一跨层啊,几何函数 卷积,这边跟这边差不多的,但是左边这个图呢,进行长差连接的时候是多了一个卷积层的,为什么会多了个卷积层呢?我们知道模型在训练过程中需要把高维度的信息逐渐降低到低维度,那么就需要进行下撒样,在下撒样的同时会增加它的通道数, 那么在这个过程可能维度不一样,一个是特征图大小不一样,另外一个是通道数不一样。我们来看一下刚打印的结构图吧, 我们开始时候需要把高维度逐渐降低为低维度,就是它的尺寸嘛,比如说你把一张原始的图片丢给网络,它是不认识的,你把它分割成一个很小的网格,它就认识了。 我们所有的特征图大小是二四乘二四的,那么它会在训练过程中逐渐减小,逐渐减小的过程它的通道数会 翻倍的,你看他的通道数原本是三,这里就是翻倍了。翻倍的过程是在代码里面进行的,大家了解这个过程就行了,知道他怎么来的就行了。 那我们回到刚刚的问题,如果你的通道数和特征图大小不一样,他是怎么解决的呢?我看了一下 resni 的 论文,他是给出了两种方法,第一种方法就是使用零填充来增加它的维度,这种方法不会像模型引入新的参数,但是我们处理零特征的时候也会增加它的计算成本的。第二种方法就是使用一乘一的卷积向量和升维的操作。 在论文里面,他是说使用一乘一卷积是最好的结果。我们看一下他的代码,他的代码就是使用卷积层解决维度不匹配的问题,他的卷积核是一乘一大小的,大家来看一下他的原始论文就行了。 我们再看一下他的长插连接在上面,这里我们来看一下长插连接前向传播这里你看他这里有个参数,有这个参数就是代表使用一乘一的卷积,就是对应每组第一个长插块,第一个长插块它是使用一乘一的卷积, 剩下的他就不用一乘一的了。大家来看一下他的代码就行了,只有这个参数才可以,你看他上面的代码在这里,你看他这里有这个参数,就代表只有第一个长加块才用一乘一的卷积,就是解决维度不匹配的问题,剩下的就不用一乘一的了,你看他的代码就是这样子的, 那么它的结构为什么要用残差连接呢?假设这里有两条分路,假设在训练过程中,前线传播这条分路的训练特征图突然为零,那么到最后的结果输出,那么你的 t 度就变成了零,它就会出现模型退化的问题,就是你准确率一直往上面升,然后趋平滑,然后到最后面一直下降, 他就会出现这个问题,那么用这个缠插块就是为了解决你模型退化的问题。假设你这条分路的特征图突然为零,那么你还有一条备用路线,就是把原来学习到的特征原封不动的加到模型输出这里,那么你模型继续往下面训练的话,那么他就会有效的学习,他的梯度不会消失了, 所以他加这个缠插块的原理就是这样子的,大家来理解一下就行了。很简单的,这里的缠插连接维度要跟这里的维度是一样的,我们来看一下不一样,他是相加不了的。 我们来看一下这个模型结构图,我们来看下第一个长插块的维度是多少,是这里它的通道数是二五六,它用途大小是五六乘五六的, 这里是第一个嘛,这里是是快手,就是就是对应这里的,然后往上面拉,拉到这里, 你看这里前向传播这里,他到后面,这里是通过这个长插连接的,你看把前面这个长插连接插到这里,那么这一堆东西的维度是多少呢?我们来看一下这里这一堆东西的维度是这里, 它的残差连接是在最后一层的几何层,还有 p 归一块层之间的,那么它们之间的维度是多少呢?我们来看一下这个图,它的维度是这里就是通道数二五六,然后特征图大小是五六乘五六,那么残差连接块,它的维度也是一样的,所以它们可以进行相加,后面的残差块也是这样子推理的,大家来看一下就行了, 很简单的,好的模型结构大概就是这样子,没什么难度,大家可以根据这个结构图和代码进行理解一下。好的,训练篇基本讲完了, 大家也可以来看一下 resident 的 入门,在这里点开它就行了,大家来看一下就行了,看一下它的原始入门在这里。

一入城门深似海,从此秀发看他人。大家好,我是 uncle 鸟啊,上节课我们学习了表单当中的选择类的标签啊,那么本次课程我们要学习表单当中最后一部分的标签知识了,我们要学习的是按钮标签, 那么啥是按钮标签呢?就是点呗,对不对?这是我们学过的标签啊,今天我们学习按钮标签,按钮标签主要是分三个部分啊, button, samba, 还有什么 recite。 接下来打开我们亲爱的 vs code 啊,看看我们的代码,随便写一写啊,您库它 这个是我们表达类最重要的一个核心的一个标签啊。 type, 来区别一下,写个 button 呗,这个就是它的一个类型,它的类型就是一个什么按钮,然后接下来写个 why 六,是吧,我们就叫一个 button 吧,好吧,叫 simple button 啊,非常普通的这种 button。 然后接下来我们再写一个,给他一个分割线, 然后写个 input type, 这个叫什么? safet, safet 英文是什么意思?提交的意思呗。好吧,在这里就给个 safet, 也有 safet, 英文是 safet。 然后最后我们再去写一个 input type reset, reset 它的英文是啥?重置的意思啊?重置的意思,那么同样它的 value 的 名字,我们也是给一个 reset。 ok, 这样的话呢,三个按钮标签就搞定了,接下来我们执行一下,看看它的效果。 就是三个按钮是吧,很普通,我就点一点嘛,是不是?那么从我们的仕图效果来看,它三个没有任何的区别,是不是都是一样的,但是呢,这个 type 它有一个明显的不同,这里面肯定存放那些什么不可告人的一些什么细节,那么这个情况下呢,我们需要在外面写一个 form, 我 们总是在提表单,表单,表单,那么重要的事说三遍,那么表单是什么?它实际上就是一个 form, 我 们会把很多的这个和用户 交互啊,收集用户信息的这样的元素放到我们表单里面去,这样的话呢,当我们点提交按钮的时候呢,这个表单就会将它里面的元素进行打包 整合数据发送到我们我们的什么 web 服务器端,然后通过程序去解析啊,解析用户所提交上来的一些什么数据,这个是一个整体的流程,所以说呢,他都是以 follow 标签作为一个什么呢?分割,因为我们思考一个问题啊,所以我们对网页来讲, 它里面的这些元素非常的多,对不对?但是呢,它可以通过不同的功能和业务分成不同的 form, 当你在对某个 form 做操作的时候,对其他的 form 是 没有影响, 是不是?所以它是一种什么呢?隔离和组装是吧?将我们的功能按照一些特殊的方式,将元素进行一个什么组装起来,这个就是我们 form 的 一个什么本质。所以说呢,我们大多数的情况下啊,我们要把我们的这个内容 标签的内容表达相关的这些标签放到我们这个 farm 里面去,这才是我们那个什么初衷,好吧,然后接下来看看他还有什么样的一个区别啊?放到 farm 里呢,通过我们的视觉效果来看,哎,外面的 farm 看不见他是一个隐身的是不是?但是呢,通过这种方式将我们的 h 肽肽元素进行这个什么分类和包装, 这个时候我再点按钮,你看也没有变化。当我点萨布密特的时候,你仔细看啊,看我的浏览器的左上角,他是不是一直在做一个刷新的操作,哎,说明点上面的按钮没有反应,点下面的按钮怎么样?他就是有刷新的操作,这说明什么呢?也就是说我这个萨布密特,他跟我们的这个 follow 来讲,他是一个怎么呢?联动效果, 也就是说,当我们点击表单内的萨布密特按钮的时候,他会怎么样触发我们提交我们当前表单的一个操作, 也就是说它会触发什么呢?离它最近的这层 form 做一个什么呢?提交的操作,当然了,提交到哪,这个我们下节课再说,是吧?肯定是外部服务器端,但是呢,我们知道普通的按钮它是不具备提交功能的,但是 safet 它具备, 这是它们之间的一个什么核心点,那么难道说我普通按钮是不是就没有作用了?答案是否定的啊,当我们学习 js 之后, 学习脚本编程之后,这个的 button 的 应用也是非常的广泛,但是呢,我们现在要明确一个观点,它俩之间肯定是有一个什么本质区别的。然后最后我们来看一下这个 reset 的 一个操作啊,它是重置。什么叫重置?就是开始是什么样子的,然后你在上面搞,搞来搞去,搞的面目全非, 我需要一个怎么样还原的操作,是不是啊?所以说这个时候就需要一个什么 reset 按钮,对吧?然后接下来呢,在这里随便写点标签啊,我去玩一玩,在这里搞一个 type test, ok, 这是一个,然后再来一个 b r 换个行,搞一个性别吧, input sex, input type radio。 但是注意啊, radio 这个东西,它是有一个分组啊,它是个分组,没有这个分组的话,它就没有一个什么后置性。再写个 radio 啊,一个男一个女是吧?就这里把标签的名字写上啊,然后接下来再写一个什么,直接就把这个 sex 去掉就 ok 了啊,拿这个男女作为标签就行了,然后再往下再写个 br 我 们再写个什么 select 啊,选择, 再写个选择,那这个你就不要了,也没啥用,就给你删掉。好吧,留这两个按钮就行,因为它们配套的是有对应的功能啊。 option, 北京,上海,广州啊 啊,这个是什么所在城市?给他补上啊。所在城市, ok, 然后我们再来看我们网页里的效果,这样的话呢,就是一个基础的表单,当我点 safemote 的 时候,你会看,哎,浏览器的左上角这个地方在不停地刷新, 说明当前呢这个表单,哎,里面的数据会被打包提交到我们我们的什么外部服务器了,就有这样的一个操作,虽然我们现在没有指定地址,但是这个是我们下一个要说的一个事情啊,你至少知道点萨维密特肯定怎么样,他会触发啊,触发。而接下来呢, 我就往里随便写点字啊,写点字,写点字之后呢,哎,我进行一个选择,选择完之后呢,这个时候点锐赛特按钮,你会发现,哎,他就会促使他默认生成表单开始的那个样子, 这个时候呢,我再给他加一个 check 是 吧,默认他第一个是选中的 ok 啊,这时候我们再做个尝试啊, hello, 然后他的性别是女,接下来我选广州, ok, 这个时候呢,我们表单的仕途状态已经发生了改变,和原始的是不一样的,接下来我一个 reset ok 玩德芙,是不是恢复怎么样当初的这么一个模样了?好吧,所以这是萨摩耶和 reset 这两个按钮是和我们的这个表单配合使用的啊。所以说我们表单的一个归根溯源最重要的一个标签实际上是什么? follow, 它代表的是什么呢?当前的一个表单,它会将我们当前表单内的元素的直取出来,然后呢,通过这种按钮的集中操作来实现什么呢?用户和我们的外部服务器端进一个什么数据的一个什么通讯。 当然了,按钮还有一个属性非常的重要啊,比如说呢,有的情况下,我不希望你对我的这个表单做一个什么呢?修改的操作,是不是这个时候怎么办?或者提交的操作,我可以用一个什么 d c 宝 设置个 d c 宝变成什么不可用,那么不可用的按钮状态是什么?变灰掉了呗,你没有办法去点击它,是不是这样的话呢?我们可以做一些什么权限控制类的操作啊?权限控制类的操作,比如说这个用户他没有这个权限进行一个什么表单提交的操作, 这个时候呢,可以把这个按钮通过 disable 锁死,这样的话呢,你只能看不能提交啊。好了,小伙伴们,通过今天的学习啊,我们学习了这个 input 标签当中的这些 but 的 一个使用方式啊,那么本次课程到此结束,感谢您的观看,让我们下期再会。

哪一行就这行,点了之后还得手动修改状态,难道我会希望点了之后它的状态不变?对 你的质疑是有道理的,来,我给你讲讲。说完了状态提升 state hoisting, 咱接着来延伸一下,也就是标题上你看到的单一信息源和单向数据流。 我们先来看例子,从代码来开始说。复选框组键大家应该都用过吧?打对勾的那个,这个组键它在安卓里叫 check box, 到了 compose 里它还叫 check box, 只不过从两个单词变成一个单词了。 b 不 大写了这个 check box, 它有两个必填的参数, checked 和 unchecked change。 咱学这个课程的大部分都是有界面开发经验的,看见这个其实比较好理解,对吧?一个选中与否的状态参数,一个选中状态改变的监听器参数。其中这个状态参数 是不是我们上节课讲过的提出来的状态,对吧?选中与否原本是内部状态,但加到参数里 就变成从外部的变量来输入了,也就是变成了外部状态了,也就是变成了所谓的无状态了,对吧?这都是上节课讲的啊。所以这两个参数怎么写?这么写 是这个意思吧? 然后下一个参数是选中状态变化的监听器,它是个函数类型的,所以我们可以把它写成 lambda 表达式的形式。 里面填什么?填?选中状态变化时候要做的事,也就是所谓的回调,对吧?但是我如果暂时不需要任何的回调,就什么都不用,填空着就行了呗, 是吧?好,我现在把它抽到预览函数里, 然后我去打开交互模式, 我点它一下,哎,我,点,哎,怎么点它不变呢?是我代码写错了吗? 我代码这么简单,能有什么错呀?哎,但是事实是我代码真的写错了。错在哪呢?错在了,我没有在监听回调 代码里更新状态,把新的状态更新到 checked 变量。啥意思?就说我得这么写 才对,哎,这是啥意思?先不管它啥意思,我再点点试试。 哦,真的成功了是吧?好,我解释一下,是这怎么回事啊?简单来说,就是在 compose 里,当你给一个 checkbox 设置了它的选中状态来自哪个变量, 也就是咱这个 check 参数。这个设置只意味着你把内容显示 和显示来源做了关联,却没有把用户的输入行为和显示来源做关联。或者直白地说,就是 checkbox 只会根据 checkbox 的 值来显示选中与否,但在用户点了这个 checkbox 之后, checkbox 并不会帮你把新的选中状态更新到这个 check 变量里。所以我的 check 的 初值值是 true, 它就显示为了 true, 但我点击之后跟 boss 并不会去把它自动改成 false, 进而的它的显示就不会自动改变了。 那怎么办呢?很简单,就像我们刚才写的,你手动把它更新了就行了。这个 let 的 表达是 实质上是回调,对吧?虽然它不帮我们更新,但它会给出它认为应该更新成什么到这个新值来作为回调的参数。比如原来是 to, 那 么点击之后回调就会被触发,并且回调的参数的值就是 false。 所以 我们加上这么一个 check, 等于 it 或者写得更清楚点儿, 这样一写,从用户行为到状态改变的关联就也做上了,那么界面就会自动更新显示了,这种逻辑 能听明白吧?但是问题是为啥这么做呀? 是吧?现在是选中状态,用户点击之后你就自动帮我显示成未选中呗,还修改 check 的 值干嘛呀?难道我还能让它点击之后不变样子,还是选中的样子?哎,还真的可能。 我们先放下复选框这个问题,也放下 combs, 我 们来聊一下另一个问题,数据。 一般来说,很多用户体谅大点的软件,都会把一部分网络上渠道的数据保存到本地,比如保存到数据库里, 这样比较方便在用户关掉软件之后重新打开的时候的展示。软件刚打开还来不及从网络上拿,所以先展示个上次打开软件的时候的数据,也就是所谓的缓存。那这个缓存从哪来的? 就是上次从网络上取到之后存下来的。这个有三五年经验的大厂的应该很多都有了解,但近两年入行的,除非你是做聊天这类软件,就不一定有没有了解了。因为我发现这两年中国的软件很多都把缓存功能给去掉了, 打开软件之后页面是空的,只加载网络内容,不显示缓存了。这主要是因为现在中国网络可用性和网速都太高了,不怎么有没网的问题,所以 大家都把设计和开发的精力放在别的地方了。但是阅读类的、聊天类的这些软件是缓存功能还是在的,毕竟这个对他们来说属于核心功能了。不过这个咱就不管他了,我们来说技术, 当我的软件既有本地数据,又会从网络上取数据,那么在我从网上取到数据之后,要怎么和本地数据作结合显示呢?比如说有一个新闻软件, 现在用户第一次打开它,本地数据库还是空的,后台自动从网上取新闻列表, 当他取到了一个新闻列表的数据,他应该怎么做?两件事,一、把这个数据显示出来, 然后呢?同时把它存到数据库里, 对吧?然后这个数据库的数据就能再稍后被用到嘛?对不对?然后用户往下滑,滑到底之后,软件去取下一页数据,取到之后怎么展示?还是两件事, 把这数据合并到内存里的数据列表,从而让界面的底部显示下一页的数据,而刚才初次加载到的第一页的数据依然保持在顶部,而不是消失, 对吧?这是很常见的软件需求嘛,是吧?这是第一件事,展示数据,或者说把网络数据和内存数据合并后刷新界面。 另外还有第二件事,我得把这个第二页的数据也保存到数据库吧? 这是第二件事,是这样吧,接下来我们再看,如果用户把软件关掉 杀死了,然后重新打开它, 这时候是不是软件就会从数据库加载数据了,对吧?就是所谓的缓存数据嘛, 然后同时软件依然会从网上去取数据。用咱例子来说的话,就是去取一个新的第一页的新闻列表,取完之后怎么做?跟上面一样,与内存数据合并之后显示以及保存到数据库, 是吧?好,到这里了,就有一个在设计上的难点了,界面显示的数据既要从数据库 取,又要从网络上去,那么在这种双数据来源的情况下,要怎么保证数据的有效期啊?有效期是什么意思?这数据还会无效? 你想啊,用户在新一次打开软件的时候,是会从本地和网络同时取数据,对吧?会先加载到本地数据, 然后直接显示,接着在取到网络数据之后会合并,然后刷新显示,对吧?但如果先加载到网络数据,然后加载到本地数据呢?别觉得不可能,一般来说,数据库是几毫秒 到 几十毫秒,网络是几十毫秒到几百毫秒甚至几秒, 但你说不准呐,万一哪次碰上数据库出土化过程慢了一点,网络数据 可能就比数据库的数据先到了。如果发生这种事,会出现什么情况?你的界面会先显示新数据,然后又被旧的本地缓存覆盖掉,这就是显示出错了, 对吧?怎么办?怎么解决?其实也不难,我们让数据库加载到的数据也不要直接显示,而是也和内存数据 做个合并再显示就行了,是吧?是这样是可以解决这个问题,但是关键是当我们的数据来源有多个的时候,会出现不止一个的这样的问题,而这些类似的问题,我们需要针对性的一个个都解决。 说实话,一个个解决也不是太难的事,但是如果能够不用解决,就总是个方便的事。 那么怎么可以不用解决呢?让数据来源只有一个,不是说要把这两个来源 去掉一个,而是让他俩有一个上下游关系,其中一个作为另一个的上游数据来源,而下游的那个作为更下游的唯一的数据来源, 这样的话就没有多数据来源的问题了, 自然就不用解决了。那么让它俩 谁在上游谁在下游?很显然,网络数据在上游,数据库在下游。另外这个不是我想的办法,是行业中一种通用的做法,这种原则叫做 single source of truth, 中文翻译的话, google 官网是把它叫做单一可信来源,不过这个翻译我觉得有点过于生硬了,它已经让意思都有点偏离了,其实它就是单一 信息来源的意思,不过本来这个概念也不是 google 创的,所以我在课里就不用 google 的 官方翻译了,就叫它单一信息来源或者 单一信息源,这样够以有利于沟通表达。好吧,当我们使用单一信息源来作为我们使用网络数据和本地数据的原则,网络数据成为了本地数据的上游,刚才提到的数据同步或者说数据有效性的问题就 不存在了。而这种原则是在 compose 的 官方文档里被建议使用的原则。哦,回到 compose 了是吧?再说一遍,原则叫什么名字? single source of truth, 单一 信息员。它不是 compose 发明的啊,也不是 google 发明的,只是被 compose 官方建议使用。其实说建议说要求都行,就那个意思吧,实际上也不是到了 compose 才开始有这种风格上的建议的。再 japck viewmodel 相关的官方文档里面我们也能看到这种建议。 viewmodel 作为界面数据的来源,它从一种被官方称作是 repository, 官方翻译是数据源, viewmodel 从这种叫做 repository 的 地方来取数据,然后这个 repository 的 内部也是分了两层,数据库和 网络。其中数据库是直接往应用内部连的,而网络这一层是往数据库存存完之后依然是从数据库往应用内部传送。所以这种 single source 单一信息源的模式在开 boss 之前 android 就 已经开始推荐了。 另外, combo 推荐单一信息源的原则其实也不是出于我刚才说的网络信息和本地缓存这种场景, 而是对于 kbox 的 各个组建的状态,比如 checkbox 的 选中状态,它都是适用的。哦,拐回来了,好,你看这个 checked 变量,你刚才从哪岔开的?从这个 check 等于 new value 对 吧?这行还让我们自己写,很麻烦很多余,然后我们就岔开走了,去讲 single source 单一信息源了,是吧?现在我们就拐回来继续说。我们来看一个更复杂的场景,如果我的这个选中状态,它不是可以点一下就必然切换的。例如你在某个字不转为空的时候, 在字幕转为空的时候,就不允许切换到未选中状态,而是显示一个提示信息来告诉用户,因为你某个信息没填,所以不许取消勾选。 那么为了实现这种需求,是不是就得往回调里面做检查? 如果目标状态是 true, 而且字幕转是空, 那就不修改 checked, 而是显示提示信息。 这种提示信息通常我们是用 snack bar 来做。不过这节咱就先不讲 snack bar 了,我们继续说对于其他情况就正常更新 checked 的 值, 对吧?因为 combo 的 规矩是我们自己来更新状态,所以我们就得这么写。 那如果 combo 不是 这种规矩呢?如果按照刚才我们说的那种更简单的规矩呢,就是我们不用自己修改 的值,而是用户一点击就不用管 check 的 值了,而直接把显示状态从选中变成未选中了。如果 gamebox 是 这样的运行机制,会发生什么? 会导致咱这种拦截机制很难实现了?能不能实现我相信是可以的,但是会非常麻烦。 这种问题本质上就是由于多重信息源所导致的。在这个假定的场景里, check box 的 选中状态的信息来源有两个,一个是外部的变量 checked, 另一个是 check box 的 某个内部状态, 用两个不相干的状态来维护同一个下游的状态,谁最晚更新就按照谁 的值来显示。这是不是跟刚才咱说的那个网络数据 和数据库数据的问题是一样的本质对吧?你的数据来源是多重的,而不是单一的,就会导致这样的问题。 当然,这只是我们假定的场景,而实际上 compose 并不是这样实现的,不是这种多重信息源的机制,而是什么是单一信息源,对吧?这就是为什么 compose 提供了这种写法。 这种写法的好处,它让 composable 组建实现了前面提到的单一信息源原则,关键是让 composable 的 内部状态不会成为信息源,或者更确切地说,内部状态 是以上游的外部数据作为来源的,它俩又严格地依赖关系,而不是内部状态和上游信息源并行的各自左右显示状态。这就把 composable 组建结结实实地封装起来了。 封装起来是关键,这种封装虽然让我们需要写一行傻傻地复制代码, 但也会让我们少很多麻烦。另外你看 j box 的 这种写法,它实际上 构成一个环,一边把状态的值往下传,让界面显示,一边在界面显示之后把用户的输入事件往上传, 从而让上层收到事件之后可以更新状态,导致形成了这么一个环。这种模式也是 combos 所建议的一种设计模式,叫 unidirectional data flow, 中文翻译叫做单向数据流。 在跟 boss 里,所有 u i 组件的交互都是这样的,有任何的用户交互事件,都不会直接修改这个组件所对应的变量的值,而是以事件的形式装进 lamb 的 里面,暴露出来, 让上层自己去修改值。这个 chairbox 是 个独立的小环,如果多个组件联动,就可能会形成多层之间传递的更大的环。变量从外部组件一层层传到内部组件,用户事件 从内部组件一层层传到外部组件,这就是 compose 的 unidirectional data flow 单向数据流,它是什么特征?数据由上向下传递,事件由下向上传递,而不存在有组建的内部状态和外部状态 各自独立的并行的控制显示状态的这种机制,它可以让程序的逻辑更简明,也能帮助我们实现。刚才讲的另一个东西叫做 single source of truth 单一信息员,咱刚讲过对吧? 好,我们现在再往回拐一点,拐回到上节。上节我们讲的是什么?状态提升, 对吧?咱现在就再多说一点状态提升。我们从这个 check box 的 用法可以发现什么, 它是个把状态给提出来的组建,对吧?把它的内部选中状态给提出来了,或者说就它显示的选中状态这一点来说,是个无状态的组建,同时 它还是个具有交互功能的组建。而我们从它的用法是不是可以看出,在跟 boss 里,一个具有交互功能 的无状态的 composable 应该怎么写,对吧?怎么写?是不是在把内部状态作为函数参数提出来的同时,要把交互功能的回调也作为参数一起提出来, 对吧?为什么?因为如果不提出来的话,你就得从内部去操作这个状态,那状态提升就不完整了,或者说就失败了, 对吧?也就是说,对于有交互功能的 composable, 如果要做 stay hoisting, 或者说状态提升, 要把交互回调一起放进函数参数里,才能 对这个组建实现完整的封装,从而实现完整的状态提升。我这么说可以表达清楚吧?好,这一课的内容就是这么多,从状态提升说起, 然后从 jebox 的 写法出发,说明了 compose 的 两个概念,一个叫做 single source of truth 单一信息源, 另一个叫做 unidirectional data flow 单向数据流。这俩要讲清楚比较辛苦,但总结起来其实很简单,单一信息源有什么好处?可以让程序的逻辑更简单,对吧?单向数据流呢? 有什么好处可以帮我们实现 composable 组件的单一信息源原则,对吧?当然它也有其他好处,比如把组件封装起来的话,写测试也更容易了,但是最关键的是,它可以帮我们实现 single source of truth。 那么应用呢?单项数据流怎么应用?很简单,就是把 composable 函数做好封装,如果这个 composable 组件有交互功能,那就把用户事件用函数参数的形式 暴露出来,把所有事件交给上层来调用,就这么简单。单一信息源呢? 更简单了,什么都不用干,你把单向数据流实现出来,自动就做到单一信息源了。 当然,这是对 composable 的 单一信息源的实现啊。如果是像上面我说的更大范围到数据来源的数据库 和网络数据的单一信息源的时间,那你得做别的工作,那就跟 compose 无关了,一码归一码, compose 的 单一信息源就是这么简单,啥都不干。把单向数据流做好了,单一信息源就自动做好了。 好像有点复杂,但总结一下,其实也不难,是吧?好,这节课先到这里,感谢大家听我讲课,我们下节课见。

我们这期再做一个完整的教学视频啊,跟之前的不同。呃,这个项目我已经生成好了,但是现在还没有调试,现在我们从调试直接从调试开始啊。呃,现在为什么 做这个项目呢?是因为它里边需要使用一个 ai, 这个 ai 不是 我们之前用的 deepstack 啊,它这个里边要求使用通一千万啊,然后还需要去发送。呃,邮件服务就真实的去发送邮件啊,还需要配置邮箱, 所以我们把这个作为一期呃教学视频啊,那么我们的项目已经生成结束了,然后来看看我们现在写了提示词啊,看看我们现在都写了哪些提示词,然后如何来生成的一个完整的项目。 直接从最上面开始啊。最上面开始是吧?首先首先还是呃用户提供的任务书 或者开题,然后我因为它是 word 版本, word 版本是 ai 是 没有办法直接读取二进置文件的,所以需要用到一个转换,就是让 ai 帮你写一个脚本啊,把 word 转换为 txt, 然后转换为 txt 之后让它去读取这个 txt, 然后总结功能需求,然后生成一个文档,然后生成文档之后,这是它生成的文档, 然后呃,因为他没有加上这个发送真实的邮件,所以我把这个又给他加了一个,然后把这个加上,然后加上之后, 然后就是根据提示词啊,根据写的这些功能需求以及我写的提示词来实现代码,然后就是最终到这个地方,然后就生成了一个完整的项目,现在还没有去调试。那么我们接下来把这个项目调试一下,以及接入 真实的 ai 的 api 以及邮件服务啊,然后我们来现在来开始啊,来直接来打开项目。 嗯?在哪呢啊?在这 儿,然后打开后端 后端项目,然后配置 maven, 是 吧?这个我们每期的教学视频里面都有啊, maven 管理依赖,然后需要换国内的镜像,下载会比较快,所以这个我们之前说过很多次啊,我们就快速操作一下。 嗯,每期视频确实是录的有点太长了,我也想把这个视频,呃,时长缩短,但是我又怕讲的不够详细,然后你们有地方不明白啊,所以现在就很纠结啊,到底是长一点好呢还是短一点好呢? 可以在评论区留言啊,后期可以做对应的。呃。更改。然后我们把前端的依赖也下载一下, 然后这个像这个时候我们把数据库导入一下啊,这是我们数据库, 然后直接运行 sql 文件啊,找到我们的 sql 文件, 那么我们的 sql 就 导入成功了,我们就先不管它,后端已经下载好了,直接启动后端,然后前端也下载好了啊,直接 npm 专第一位 前端前端已经跑起来了,然后看后端有没有翻译错误,如果有翻译错误的话,让这个 ai 再帮我们把这个翻译错误再处理一下 啊。这个地方看到它使用的邮箱服务是 qq, 等我们来搞一搞。 user, 还有 password, 还有一些其他的参数啊, 还有同一千万同一千万的 api k, 等会我们也找一找。呃,现在我发现了一个问题啊,文件生成的路径后台已经启动成功了,让他先把这个,呃,把 文件上传的路径改到路径啊,路径改到 d 盘的根部,我们先改着啊,我们直接去测试一下五幺七三端口是吧? 然后这个这个登录页面和注册页面, 嗯,不太行啊。啊?登录和注册页面现在看起来就是一眼就看出来是 ai 的, 而且它这里边啊注册账号还需要用到邮箱或验证码,那我们先把这个,呃,先把它需要的这些参数配置一下,让它先把这个先改一改。 呃,先改登录注册页面的样式吧。呃,先把先让它去改那个地方,然后我们写下一个 t t 字。啊啊?登录注册页面一眼, 哦,刚才接了一个电话,嗯,他已经改过了。呃登录注册页面一眼就看出来是 ai 的, 然后把这个登录注册页面一眼就看出来是 ai 的, 然后这儿改过了,我们直接重启后端服务, 因为他改这个登录注册页面改的也是前端啊,所以对我们后端不影响, 然后他来去做这个事情了,然后等会让他来。呃,就像啊,比如说你对这个东西不了解,你不知道应该去哪里去找这个,呃,通讯监问的 api k 去哪里找这个邮箱服务的配置,那么等会我们就让他来告诉我们,告诉我们,呃,一个整体的 流程,就是我应该如何去访问哪个网站,如何去操作。让他先改这个,呃,登录注册页面的样式啊, 这是登录页面,嗯,然后他现在在改注册页面了,啊?注册先等他改好吧。 然后他把这个忘记密码页面也改了。啊,这是注册啊,忘记密码,忘记密码,现在还没改是吧?正在改啊。 然后我们下一步就问他如何去获取啊?通讯千万的 apk 以及邮箱服务的配置,然后让他来教我们,然后我来根据他教我们的这些东西去获取对应的啊,我们需要的配置。 马上好了,我们先写提示词啊。如何获取?嗯,签问的 api k 以及邮箱服务的位, 让他来教我们,然后我来去获取啊,然后看一看现在这三个页,三个页面就已经一样了,是吧?但是他需要需要获取邮箱验证码, ok 了,然后我们来,现在来根据他给我们的这个东西来找一找。嗯,访问, 嗯,或者我们先看一看吧。获取阿里云通一千的 api k, 然后注册账号,然后地址也给了,然后开通百联平台,然后获取。这个就比较简单啊,就比较简单一共就三步啊,然后 下边那个是配置 qq 邮箱,然后发件服务,然后登录登录,然后就需要去开启这个 s m t p 服务, 然后按提示用手机发一条短信进行验证,开启成功之后会显示一个十六倍的授权码, 然后立刻复制保存,它应该只显示一次,然后就填入,填入配置,然后如果使用幺六三啊,这个都无所谓啊,用哪个邮箱都行啊。然后就总结,嗯,那我们这一步就跳过一下,跳过一下我就获取一下。 呃,中间出了点小状况,现在我们来继续啊。呃,我已经,我已经把这个呃邮箱和 api 的 k 都已经整好了, 都已经整好了,然后我们来测试一下,看能不能收到邮箱验证码,对吧? 现在让我们来测试一下啊,来问他如何测试该需要的。呃, api k 我 都已经加进去了,然后不太方便。呃。展示啊,所以就没有没有展示。然后我们现在来测试功能, 然后我们来试一下注册,因为他注册的时候是要加这个邮箱验证码的是吧? 对,然后这样就获取完了,获取完之后我来看一下有没有收到。嗯,邮件啊,我来看一下有没有收到邮件 啊。有的有的,我已经收到了,我已经收到邮件了,七六七九四一。好的好了,成功了啊成功了,邮件也成功了,然后我们来登录一下。 嗯,没问题,登录也成功了,然后新密码改成一二三四五六七了。刚才不是一二三四五六吗?现在改成一二三四五六七啊,重置成功啊,少输了一个七, ok, 这样就成功了 啊。然后别的 ai ai 健康顾问,然后报服务器错误,看看报什么错误, 看不明白是吧?看不明白我们直接就复制一下扔给他啊。点击点击 ai 健康顾问菜单出现的错误, 我们让他把这个错误加上,看看这个报错是什么。什么原因啊? 呃。驱虫和排序不兼容。买 circle 的 语法啊。 circle 语法。呃。然后还有就是这个用户端的这个样式啊,同样的问题,用户端的样式看起来太像一个管理后台了,让他把这个样式修改一下。 呃,我们直接告诉他用户端现在看起来太像是管理后台。那把这一块调一调啊,然后我们来重启一下后端,不冲突啊, 然后刚好我们再来试一试这个健康顾问。现在没问题啊,我随便先发点东西 啊。可以啊,那我们就先等一等,等他把这个样式改一改啊。为了尽可能的缩短时长,我就先暂停啊。样式这会改的还是很快的,但是现在看起来不太好看。然后,嗯, 样式不太好,就是不够不够美观啊不够美观?感觉好像好像功能是在,但是不怎么好看, 然后现在数据也不够啊。让他再加一些数据 啊。这个没数据的原因是因为这个账号是刚才我们刚新注册的。可能是因为没有数据啊,等会我们换一个账号看看啊他应该有一些测试账号, 然后还有这个 ai 这个地方,呃,看能不能让它加成那种流逝输出啊。等会改一改 先让它改这个样式吧这个样式现在看起来确实很。呃很一般啊,就是功能都在,但是不过好看。查看全部健康记录 功能看着是没有什么问题啊。个人中心,然后上传头像,哎,上传不了上传不了,等会再看这个啊。先让他把这个嗯样式优化先做一做 啊。我还是先还是先暂停啊等它结束啊。现在这个样式就已经改完了,我们看一看跟刚才的确实有点有一点变化了。然后这个地方 这个地方。嗯把 ai 问诊页面 ai 的 输出改为流式输出, 流逝输出,让他把这个地方改一改。号号的额度用完了啊,稍等一下。嗯,刚才重新弄了一下已经好了啊然后现在让他把这个 ai 问诊改成流逝输出啊 然后现在改的时候我们再看一看还有没有什么别的问题啊。还没有登管理员是吧?嗯,我们来登录一下管理员试一试。 管理员,用户管理,宠物管理,公告管理,然后可以去发送邮件,邮件推送啊,公告,然后宠物 没有编辑功能啊,都没有编辑功能。然后这个数据仪表盘,呃,等会也给它改成首页,感觉也是不太好,然后让我们来看一看这个,总感觉功能不太够,感觉功能很少的样子, 我看一看功能 系统角色, 嗯,好像是够的。功能看起来好像是够的, 看起来是够的。那,那就那就先这样先做优化。 嗯,我们先写下一个提示词啊,后台管理的数据仪表盘改成首页, 然后用户管理、宠物管理啊,公告管理 都需要增删改查的基本功能。 要把这些基本功能都加上啊,最起码要可以新增修改删除是吧?现在看起来是都没有啊。 先把这个加上,然后我们等会一块重启吧。 就是先他先来看一看有没有对应的接口啊,如果有接口的话就不写接口就写页面,对吧?如果没有接口的话,那就需要先写接口,然后再写页面。 但是目前看起来是没有这些接口的啊,他要把这些接口都加进去。 我们稍等一会啊,顺便看一下这个。呃 o p u s。 四点六的速度是吧, 直观的感受一下。因为之前呃那些生成就是为了把那个时长缩短一些,我都我都把它去掉了, 但现在应该是已经没有太多的代码需要去写了,所以我们就把这段给放出来,看一看这个新模型的生成速度,然后视频到这基本上也差不多快要结束了,如果能看到这的话,可以点一个免费的赞来支持一下。 对,因为路由地址改了,现在这个这个路由已经没了,所以它现在显示空白页面了。对,它已经改成 home 了, 然后我们等会刷新一下,去看一下那个前台的。呃, ai 是 否是流逝输出啊,基本上就已经 ok 了, 然后别的这些功能就是这种基础的功能啊,增删改啥的。基础功能就不测试了,因为没有什么呃实际的意义啊,就无非就是自己点一点,看有没有问题,能不能用,然后改一改,也不是很复杂。 那就等着他先把这个呃基本的功能都加上来啊,先看一看功能在不在 这个项目。它的亮点就是接入 ai 啊,接入 ai 加上邮件发送,就真实的去发送邮件啊,就是你的这些项目里边都需要去加一些亮点啊,就是创新点。 那现在现在的创新点基本上都是去做一些啊 ai 的 接入啊,因为现在 ai 比较热门嘛,对吧? 完善公告管理,他说这儿已经有作善改查了, 在统一风格,统一样式风格。 然后刚才刚才的头像好像上传不了,等会儿我们看一看,把这个 bug 改一改。 现在在全区搜索啊,全区搜索,看有没有引用这个地方,因为路由现在这个路由已经不见了,所以他要把这个引用这个路由的地方都改掉啊,不然会报错 啊,没找到,那就是没有了,没有了。然后现在再检查,再检查有没有语法错误啊,没有语法错误,那就已经完成任务完成啊。任务完成,然后我们现在先直接重启一下,等它彻底结束,然后我们重启一下后端 充钱后端,然后我们来看一看刚才那个新增宠物啊,我看那个新增宠物它好像说的是让输入用户 id 啊,我,一个用户,我怎么可能知道用户 id 是 多少?所以如果是输入用户 id 的 话,那就说明它不合理啊。 宠物新增然后用 id, 这肯定不合理啊。我,我怎么知道有什么用户呢,对吧?而且还让我输 id。 嗯, 添加宠物手动输入用户 id 啊,不合理,应该下拉选择,下拉选择需要用户啊,这才合理啊。 然后这个时间格式化也不对啊,你看这个时间格式化也不对,咱们把这个时间格式化也处理一下, 然后如果看我的教学视频看不明白的话,或者有什么疑问的话,可以。呃, 晚上过来看我直播啊,直播的时候有问题我们可以交流一下,就是有哪一块不明白的可以再给你讲一讲。 这些时间好像是都是有问题的。对,这时间都有问题,那把这些时间都加一加, 改动完成,然后我们再。嗯,先不重写吧。后台,后台管理列表页的时间格式化都不对,让它把这个时间格式化再处理一下。 可以看到现在都是这个,中间都有个 t, 对 吧?不太正确。让它改一改, 然后看一看有有没有什么别的问题。这个这个样式应该是有问题的。这个这个还好,主要就是这个,呃, ai 咨询使用率这个地方百分之五十和 ai 使用率重重叠了,这个字重叠了, 等会让他把这个也优化一下,然后左侧的菜单,呃,下滑之后左侧菜单不见了,然后把左侧菜单固定了, 然后它改完之后我们先重启一下,看看刚才的改动啊,我们一点一点调啊,不要一下子改太多,等会儿忘了都改了什么。 他考虑的有点多啊,他不只是在修改这个时间格式化,他还做了这个全局的处理。 后台管理一共就三个页面啊,没有其他页面了。 ok, 可以 了可以了,我们重启一下后端看看我们刚才的改动。 呃,时间格式化看是没问题啊,然后宠物管理添加宠物,然后选择用户是吧?现在可以去添加用户了,然后上传图片试一下。嗯,图片是可以上传的,然后,呃看一下图片的保存。保存位置 啊,地盘根目录也没问题啊。也没有问题,然后的话,呃把这个地方改一改 就是。嗯,百分比啊,百分比和 ai 使用率重叠了。对,让它把这个样式稍微调一调,百分之五十和 ai 使用率现在重叠了, 别的看着都还好哦,现在它已经拆开了,然后还有左侧的菜单。呃,左侧的菜单固定位置,现在,呃下拉会导致左侧菜单看不到, 让他把这个左侧的菜单固定一下,因为就是像我们现在在首页去下滑,下滑到这一块的时候左侧菜单就没有了,我得再划回来才能去切菜单啊。我感觉这样不太好。 让他把左侧的菜单固定一下,就是位置固定一下,我们再再滑也不会影响左侧的菜单来动。 然后改完这个之后我们去试一下这个前台的啊, ai 看有没有改成流逝输出啊。这个应该比较简单,它只需要改前端就可以了,不用改后。 然后再试一下可以了,左侧菜单就不再动了啊,然后后端后台的话就先这样吧啊,功能我感觉应该都在了, 然后那个邮件推送应该是可以用的,因为现在邮件不是可以正常使用,然后登一下刚才我注册的账号,一二三四五六七是吧?嗯,主要就是这个流逝输出。流逝输出还用原本的这个输出啊,或者直接新建一个对话吧,就是把它这个提示词给放进去 啊,现在输出也是流逝的,对吧?看来应该也是没有没有问题啊,基于通一千万大模型没有问题啊,没有问题 没有问题,然后历史记录也记录的也有啊,那么我们这期视频到这里就结束了啊,希望所有的教学视频都可以对你们有所帮助啊,如果有问题可以直接在评论区留言,看到的每个都会回复啊。

喂,你好。喂,你好,袁老师。呃,学历,呃。专科哪个城市?济南,过了几年三。呃,好,啥问题?就是我现在备胎,然后想问一下这个后期的这个, 嗯,学点什么东西呢?就感觉什么都需要学,但是又那个最好的就是目前这个限阶段。我最建议你学的就是 ai 啊,就是最有性价比的,就是花最少的时间一下子起到效果是最好的,一定是 ai, 现在没有什么东西比 ai 更有性价比的,学习了过后的效果, 以前最有性价比的是啥?是咱们大师课,是咱们那个无忧园吧,现在的虽然大师课还是很重要啊,但是呢,我不得不说 ai 现在性价比更高,那个玩意又简单又好学又有意思,而且管它它特别出效果,所以就选特别简单,简单到令人发指啊, 你都不觉得这个玩意怎么能那么简单啊,就跟我儿一样学哪些东西,一个是那个基本的一些概念啊,什么磁带啊,什么磁源啊,全是粉末啊, 词源什么全是我们的原理啊,就是一基本概念,你要知道啊,什么深度学习啊, nlp 啊,对吧啊就不写了啊,就基本概念啊,这是第一个,这个东西是沟通用的,一定要能聊啊。嗯第二个层面呢,就是一些,呃,基本应用 开发,呃像什么 mcp 啊,方形颗粒啊,呃像那个 fanning 啊,呃还有什么那个 ig 啊, 啊,就是一些基本的应用开发技术,你要知道啊,然后呢,就是框架级别的啊,应用开发框架现在呢主流的呢?就是这两个啊,一个是 longchain, 呃,一个是 long graph, 然后呢,再学习一些,就是平台内使用的,像什么 define 啊,呃, codes 啊,这个东西二选一,学一个其实也就差不多了。 哦,就是抖音的学,学的大概多长时间?一个多月就学完了,贼简单。那个东西真的简单,因为你只要不去做大模型研发,就是你不去做一个大模型研发一个大模型出来,那是算法工程师的事,你就是在这个基础上去做一些应用,特别简单 啊。所以说你可以去了解一下咱们这个架构课啊,架构课里边有很多关于 ai, 有 我们 ai 课程,你把直接把项目给做好了,项目做好了过把这个项目直接写到简历里边去,你可以大幅度提升你的竞争力。 哎,老师您说我这个,等一下,我先说一下加过客了解的方式啊,想了解的同学可以进咱们账号主页,点击头像进入账号主页,根据提示咨询就可以了啊。你至少把那个加过客的目录看了,我这个要求不过分吧。这目录是免费的,目录是完全免费的,你再要就行了。你把目录看了,你知道要学啥了 你讲。呃,老师您说我这个学历还有这个年限,嗯,适合学这个 v 三原码吗?最近看了那么一丢丢。 不是,我没太明白啊,你什么意思?你是怕自己学不懂吗?还是是什么意思?我没太理解。我的意思是说现在是往深里面学还是往广里面学?就是感觉济南的这种工作环境的话就是你会的深吧。我这么跟你说吧,深度他决定你的薪资水平,那个广度决定你的就是就业面 对我现在就处于最好都有,但是你一定要选一个的话,我肯定首先选深度,肯定要选。嗯,肯定要首选深度。哦,明白了,你是担心你一个专科学历选那么深有没有用是吧? 对,就是进也进不了。我这里我就统一说一下吧,包括那些有学历的担忧的同学,你要给我聊学历问题,我首先我告诉你一点, 你投简历的时候什么时候可以跟我来聊学历问题?老说我学历确实出问题了,那最后怎么办?我可以跟你聊,但是有前提条件,第一点你投简历你按照本科去投,你可以不去,但是你必须要写写本科,按照本科去投好,然后呢,面试的话也把自己当成一个本科生去面试,你简历能过, 然后呢?你面试能过,然后最后那一关入职的时候卡到学历了,你再给我聊学历问题,那就彻底的说明确实是学历问题了。是不是?明白了,你前面那些关卡都过了,技术的问题全部都过了,都已经学历的,那最后卡在学历, 那就确实是学历问题了。那个时候你再给我聊学历问题。明白了,但是正儿八经你这样前面都过了的,其实到后面那一步只要不是大厂,学历也没多大问题啊 啊啊,就很多同学都还没开始动技术那块,那问题都还没过就开始聊学历问题了。你学历问题聊的有点早,你要跟我聊学历问题的话,必须要前面的东西全部过了,然后最后卡学历的时候再给我聊学历问题。啊啊, 那我如果要是按照这个 v 三原码开始学的话,就是 v 三原码学完了之后再学点什么别的呢?或者是那种 ssr 或者是嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯。你要着急找工作的话你先把 ai 学了 你现在如果说备胎的状态着急找工作的话先把 ai 学了。呃但是呢前端内核 buu 三元吧也很重要就是我们这些福利课程你可以把它全部看完这些东西看完对你找工作是非常有帮助的啊你不能说就会一个因为 ai 它是一个啥呢它是一个叫锦上添花的东西锦上添花的前提条件你得有锦 你不能是一块破布是吧你得有一块景才行所以说你得把前端那些核心的东西先搞定搞定了过后呢再整点 ai 东西就很有竞争力了基本上你现阶段的话就是短期的话你就把咱们福利课程一过然后把 ai 东西一整基本上就非常稳当了。 哦就是这几天投简历,嗯就是专科直接连回都不回。嗯嗯嗯对啊你要过简历的话那肯定要写本科啊。 然后我想问一下假如说我就是我那个待的那些公司。嗯都是那种很 low 的 那种公司就是纯纯 c i d 的 也没什么项目亮点。明白明白大部分都是这种啊 就是我那个外包到一个那个公司他那个公司吧有一个那个动态表单就是我个人感觉挺有意思就看了看然后想着过几天再 写一个那种表单生成器。呃你要去研究动态表单的话你一定要去研究这个库啊叫 formula 啊就是我自己定一个单身四个码。呃你最好去研究一下这个库然后再去聊因为不然的话容易闭门造车。就是你自己感动自己自己觉得自己做的挺好的结果一发现有些场景根本就实现不了 你就要去研究一下这个库这是非常成熟的库啊。行嗯你看他是怎么来处理的。那这要是写到这个典例上算不算是一个精神非常好这个亮点非常好非常好非常好。算哦东四角还是比较复杂的要做复杂的话是很复杂的。 嗯还有啥。嗯那我就后面就是先根据这个状态先把这个 ai 还有那个大师课先看完然后再学 v 三原码然后大师课里面就有这也是咱们大师课之一。这里面就有啊这些课呢都可以找咱们领取啊。怎么领。在咱们账号主页点击头像进入账号主页根据提示领取就完事了。也不给什么钱 有些是免费的有些是几块钱十几块钱的啊大概这样子。嗯哎老师这个 ypak 学到什么程度才算 ypak 你 只要能够懂他毕业啊你要毕业的话你就最好用手写写一个迷你版本出来但是没必要啊。呃你不 ypak 你 只需要搞懂它的生命周期就可以了 生命周期指的是就他从你输入一个命令开始到最后呈现一个效果他中间经历了啥。哦哦哦 嗯那那个 ssr 学不学。你要啊但是你要学的话东西很多的后边我先说这是现阶段现阶段你没法给自己太多的时间。嗯那个是你就说的 ssr 肯定要学啊你先选 node 呃再把数据库啊,什么 node, 一 些相关的一些。 呃 web 库啊,像什么 express 啊, qr 啊这些东西都看一看。把数据库也看一看啊, node 还有支撑框架,像那个?嗯, next g s 啊不, next g s 或者是 egg, egg 都现在国内都不怎么用了,用的比较少一些了。 next g s 框架也可以看一看,然后呢再去整 s s r 呢,就比较顺畅了。哦,明白了明白了,谢谢老师。谢谢老师啊。不客气啊。嗯, 老师再见,老师。哎,好,拜拜。 node 肯定要学的, nest 就是 你往架构方向走的话, node 是 百分之百学的。 node 不 管你要不要往架构方向走。 node 是 必须要学的。啊,为啥呢?因为你会不会学还要需要 node 呀 nest 呢?你要走架构的话肯定要学。

好,接下来是第三部分,如何检验创新。现在假设我们已经通过这个前面零年的辅助,我们找到了足够多的相关的论文,然后我们通过阅读找到了一些这种现存的问题, 我们以解决这个问题作为我们的 motivation, 合理的提出了一个 idea, 也就是我们自己的点子,或者说解决。为了解决某个固定的问题,我们已经缝合出了一个特定的模型,大家不要急着写论文,先过四个关卡,这四道关卡不过去投稿就是白白的送人头。 首先第一第一关我们要先说服自己做一个 self check, 先问问自己我发现的这个问题到底是不是本质的痛点。 大家都说啊,这个模型性能很差,存在某些致命的问题,真的是因为我发现的这个问题而导致的吗? 比如说你说川字方面,他提取局部特征的能力差,所以你要加卷积,那么你一定要确认在你想做的这个下路任务当中,局部特征真的那么重要吗?如果这个任务他本身是倾向于大局特征的,那么你加卷积就显得非常的画蛇添足,就没有必要。 这是第一个问题。接下来第二个问题,保证因果关系。这个其实是逻辑的核心, 你知道创新他必须是为了解决具体问题而生的问题 a, 比如说是小目标的这种检测他比较难,那么你的方案 a 就 必须是引入这个多尺度的特征融合来解决这个小目标检测的问题。这个链条听上去就关联性很强,听着就让人感觉很舒服。 这个呢,给大家一个建议,在组会上可以先把你的想法讲给你的导师听,如果他问你说为什么要加这个模块, 如果你的回答是我想试一下,那你这种回答就非常的 low, 完蛋了。你必须要回答出具体的原因, 因为这个数据存在一些比如说稀疏的特征,而我这个模块他就是专门捕获稀疏特征的,而且下游任务当中他就需要就是对稀疏特征的分析,你这种顺理成章的答案就会显得这种逻辑非常的自洽,非常的紧密,就会增加你的重搞概率,这个是你的关卡二, 接下来是关卡三就是数据验证,大家不要只在训练级上,我在训练级上跑到了多么好的效果, 但是我们给大家设计一个这种硬性的指标,首先是交叉验证,我们必须尝试着去跑五折或者说十折的交叉验证,避免是因为运气好而让我们撞到了那个恰好最优的随机种子。 接下来是多数据集,我们要至少在两个公开的数据集上去做验证,在要证明我们的方法不但在 a 数据集上好, 然后在 b 数据机上也要好。如果说你在 a 数据机上面好,但是在数 b 数据机上崩了,那就说明你的模型泛化能力非常差,那这样其实是非常不好的, 那因为大家无法用你的模型去做一些这种其他的工作。关于这个数据机使用的问题,跟大家说一下我自己的感受,这个东西倒也并不是多多益善, 你只要通过这种有限的数据集证明你的方法泛化性确实很强,其实就已经足够了。就拿最常见的大模型推理来说,大模型推理可能大部分都是为了解决这种数学问题,可能有些是高中数学,有些是大学数学,有些是这种小初中的竞赛数学。 为了证明推理能力,你可以从中挑一两个你觉得比较有代表性或者有挑战性的数据集,但是 你只用这些就已经证明了它在数学推理上的泛化性很好。你没有必要说啊,我要做六七个,或者我要把所有和数学推理相关的数据集都测试一遍,这是没有必要的。 如果你想泛化到其他领域,你可以说在 zero short 就是 在不再训练的情况下,你再去把它迁移到这个 comsums 这个 set, 去做一些这种通式数据集的推理。 这种其实对你的文章泛化性的证明就是一个很有帮助的点。你的模型只在只在 a 数据线上训练,直接拿到 b 数据集上面去测,这样的话其实是一个很好的证明,但是没必要用特别多的东西。 这其实就是第三步数据验证。接下来是第四步,我们要说服审稿人,因为我们知道审稿人其实本质上都是一些小同行,大家做的东西都相似,比较相近,或者说比较匹配。 商考人他很刁钻,他可能会质疑你,你的指标发生了提升,是不是你偷偷加了参数量,是不是你多推理了几轮? 这时候你需要提供一些这种可直观的证据。比如说我们可以设置一个这种 attention map, 就是 做一个热力图,在展示这个模块以后,模型就可以真的更加关注一些这种目标的区域, 我们还可以去通过这个混淆矩阵,也就是 confluence 展示模型在易混淆类别上的区分度变高了。总的来说呢,这里就希望大家能够用图说话,证明你的模块是真正有效的,而不是臃肿的。好的, 接下来我们来跟大家讲解第四部分,也就是揭秘这个学术裁缝的真相。为什么导师听到缝合这两个字就会皱眉头呢? 首先我们要搞清楚两个词,一个是 block 就是 块,另一个是 model, 可以 写成组建或者说模块 block, 它侧重于呢是结构。比如说像 resident 里面的 residual block, 就是 一个残差连接的块,还有 transformer 里面的 encoder block, decoder block 就是 它们对应的编码器,解码器块 mod, 它侧重的是功能,比如说 se block 就是 通道注意力,还有 a s p p, 也就是空洞空间的这种卷积池化。 什么是缝合呢?缝合其实就是把 block 或者 module 机械地替换到主干网络,也就是你的 backbone 里面。比如说你把 resinet 里面的普通卷积全部换成了深度可分离的卷积, 或者说你把每层后面都加了一个这种注意力机制。就是大部分的这种模块缝合,它本质上仅仅是排列组合,你做了一些这种简单的替换,并没有解决模型的本质问题。 虽然你发现哦性能确实发生了提升,但是这些性能提升可能是源于你的参数量增加,你的模型变大了。别人都是用三 b 的 模型,你用了三点五 b, 那 你本质上效果就要比别人好,因为你的拟合能力会强很多, 这其实并不叫创新,这本质上就是堆料,去通过增加体积,或者说增加餐餐数来干掉别人。还有一种可能就是调餐的运气,可能是这种随机种子没固定,导致你这次训练的结果要比上次要好一点。这种论文它前后的逻辑是不同的。 但是可能有人会问,缝合模块能发论文吗?很多同学会想知道,我就想毕业,我就想水一水,缝合到底能不能发, 我跟大家交一个底。说一个实话,要看情况。如果是非传非 o a 刊,就是一些传统的老牌刊,是非常难得的编辑那一关就过不去。他可能看了你的文章以后会直接筛选,因为你的创新性不足,人家那些优质的刊并不缺稿件。 还有一些 oa 刊,像一些开源的,或者说一些三四区,如果是水刊的话,确实可发。如果你只是想混个毕业,不在乎板面费的话,有些零点几分或者一点几分的 oa 刊确实可能会收。但是如果你的导师有学术追求,或者你是九二的学生, 你发各种这样的刊,可能会被导师骂死,甚至都不会让你挂名。一些这种相对弱一点的学校可能会被导师骂死,甚至都不会让你挂名。一些这种相对弱一点的学校可能会破例统统 这个是。譬如如果是会议的话,顶级会议像 c v p r i c c v e c c v 这些完全不可能,大家就不用想,这个比中彩票的几率还低, 高水平的会议完全是没机会的。像一些这种比较水的会议,或者说 e i 的 会议啊,给钱就发的那种,可能能中,但是对找工作深博没有任何的帮助,甚至会有负面的影响啊,所以说并不建议大家去尝试这种完全的逢合。 好,接下来我们来跟大家讲解这个第五部分,破除这个焦虑和总结。我想先聊一聊现在的学术焦虑,打开社交媒体,到处都是一周速成论文万能缝合模块,有手就能发点会等这样的各种各种这种信息,这是不可信的, 很多机构都通过这个制造焦虑,让你觉得一无是处,卖给你一些所谓的捷径。但是呢,我们要回归科研的本质, 通过就是破解科研的本质,基于问题驱动来进行破局。我们一定不要为了发论文而发论文,我们发论文要有一个这种宏伟的目标,我们要决定我们要解决什么样的问题。 比如说在这里给大家推荐,如果你比较迷茫,不知道该怎么做的话,可以尝试用零言来帮助你去查文献,然后配环境,这个过程其实都是没问题的,但是不要试图着用工具来代替你进行思考。 我们要想的是说为什么这个模型不行,为什么这个数数据这么难处理,这个东西才是你作为研究生的价值,因为你要研究一些东西, 零研 ai 只能帮助你减轻一些这种苦力活的这种探索,比如说你现在想做一些大模型推理相关的研究,但是调研文献你感觉遥遥无期,你可以问他啊,请帮我调研一些最近三年在顶会上比较火的大模型推理的相关论文,帮我列出来进行一个总结,告诉我 是干什么的,你可以通过这个东西来减少你搜索文献的时间,你可以让他去帮助你分析整篇文章的这个数据流动是什么,具体的逻辑是什么, 但是你不可以让他去直接帮你生成 idea 去进行这个重组,因为 ai 的 这个思想是有限的,他可能这个公开 v 神或者说核心的洞察并不像你想的那么面面俱到。总的来说还是说具体的思考过程,模型为什么不好?你提出的方法为什么好? 这个东西一定要有自己来想,这才是我们作为研究生的这个价值,我们一定要要做这种有灵魂的学者。科研是没有捷径的,但是是有方法,不追求这种大而全面的科研, 只是你对一个这种很小的特定场景做了一个这种小小的改进。比如说哦,我们发现大模型推理过程当中, 比如说随意跟大家举一个例子,现在他们都在解决这种数学推理的问题,我发现目前可能在做一些这种加减法运算的时候,它的效果会很慢,比如说他可能连做十次加法,我发现很差,我在想我能不能整理一种算法, 我们可以把这种加法的逻辑进行一个处理,把它转化成乘法,以此来就说提升模型的效率,减少这个训练时候的计算损耗。我能不能这样做呢? 你去带着你的这个问题去调研一些相关的文献,看一看他们的东西,然后形成你的 motivation, 然后根据你的 motivation 来形成你的 method。 比如说啊,我调研以后发现可以先对这个具体的数据进行一个预训练, 可以把所有的这种加减法有关的问题先给他整理出来,在不破坏计算顺序的情况下,我们把这一部分东西直接给他转化成乘法,相当于我们通过这个预训练一遍的处理,来把加减法,把笨重的加减法替换成乘法来提高模型的这个具体的效果, 本质上其实就是掌握问题,提发现问题,尝试着解决问题,提出具体的解决策略啊。我们通过怎么样的方法设计的什么样的模块,让我们的数据可以具体的流动,好在这个流动以后,我们在哪些数据集上进行了实验,然后我们发现 我们再把一些这种常用的计算进行替换以后,模型的效果不但没有下降,在某些数据集上甚至还出现了效果的提升。而且这并不只是啊,有人可能会说我们堆参数或者怎么样,还说我们记忆力进行了预训练会耗费更长的时间,但本质上我们又做了更多的这种 analysis。 我们发现啊,我们模型的这个参数量只比一些这种其他的模型高了,可能参数量大了不到百分之一,这种微小的改进,但是我们的这个时间和准确率的提升却是一个就是好多个数量级。 那这就证明我们模型的架构确实有必要的,我们确实提出了一种更好的方法去解决了相关的问题。 这里其实就是一个小小的改进,只要你讲清楚了因果逻辑,证明了真实有效哦,继续前面的那个思路来讲, 你在证明在进行了详细的 analysis 以后发现,哦,我的推理时间就是比别人短,因为我做了,虽然我做了预训练,但是我后面他可能要执行十次加法,但我只要执行一次乘法,我在这里把时间又大大的缩了回去。 我在在大家可能会对我的模块提出这种质疑, 我又进行了消融实验,我在这里可能提出了三个模块,先进行预训练,然后整合乘法,整合加法,然后整合减法,我对这些模块进行了不同程度的消融,我发现我的每个模块独立都是有作用,而且它们整合在一确实都是有用的。这里面是 a 加 b, 就是 一加一大于二的效果,而不是一加一等于一,或者一加一等于二,所以说我的这个方法是非常流畅的。最后我再通过一个 visualization, 比如说我挑选一些 具体的情况,像可能是一个东西,就比如说拿熟悉的像二加二加二,比如说五个二相加,普通的这个大模型,他可能就要先得到四,再得到六,再得到八,再得到十,他是一个这种串性的逻辑。 但是我把这个东西进行了简化,我先进行了一个预处理,虽然消耗了一定的时间,但是我发现这个问题可以被转化成二乘五。 那么好了,我只需要一次操作,我就得到了十。这个答案会比前面的这个执行五次加法的这个效率要高得多。 我通过一个这个 visualization 的 格式化向审导人还有导师证明我们的方法具体的流程是怎么样的,确实是行之有效的,验证了我们真实有效,那么你的工作就是一篇好文章, 在这里呢,也推荐大家可以用灵验去找一找相关的方向,可以用实证,用实验来证明因果关系,用逻辑来讲好自己的故事。还是希望大家记住一句话, 如果你是一个缝合裁缝,永远只是在搬运布料,但是我们作为科研人,其实是在用逻辑编织一个更加美好的未来。还是希望大家能够听了这个课有所启发,能够去做一个这种 和逻辑的整合,一定要注重这种因果关系的实现,而不是只是这种模改、缝合、拼接,做一个这种真正的学术界的设计师,做出这种属于自己的高成果的论文。好,以上就是本节课的所有内容,感谢大家的聆听,感谢!再见!

hello, 各位大家好,欢迎来到本期的那个播客平台,然后今天这一期主要分享的是关于嗯呃, 不管是设计创作还是其他的一些跟 ai 对 话的一些模式吧,就是可以改进到一种它的一个嗯,让它更懂你。就简单来说就是一个是 给它加一个提示词,就是你需要做这个东西,比如说我拿那个 laot 里面的做海报设计为为准, 然后我需要让它参考这个,然后用嗯这种图形想要做出这种效果,我如果是直接用自然语言跟它对话的话,可能它就会说着说着它就会跑偏。所以我后面啊整理了一种 思思路,就是我会让他去嗯,先给他说一个简单的要求,就是说我要做二十四节气的一个海报,然后他他那个风格是 嗯用 ip 去结,结合到我们的一个海报里面,就是需要一个嗯,就是我们这个云宝的这 ip 往里面结合,然后至于风格呢,就是我是想要一个类似于 c c 四 d 的 一种渲染出来的效果,然后我把这个指令简单的给他以后,其实就已经框选了一个 啊界限了。然后就是我会最后补充一句,就是你针对这个指令不清晰的地方,你就一句一句的问我,然后他就会针对啊这个清 比较模糊的指令,然后他就会跟我嗯提问很多的问题。比如说嗯,以这个地方为例啊, 就是我这边会跟他要求说一句一句的提问我,然后他就会变成类似于选选择题的形式,然后我说一个问题,一个问题的提问我,然后他说第一个问题是当前 ip 的 那个尺寸要多大?然后我就说 尺寸八到十,然后他就说 ok, 可以, 那要不要说再大一点,再小一点说?我觉得说十十跟十五左右合适,然后他就他会有一个 abc 的 一个选择题嘛,然后我直接选就行, 然后到第三个问题,他的表情丰富程度多少,然后我就选了 c, 需要夸张,需要什么什么。然后第四个问题就是像他 跟那个直接把他的丢进去场景里面,他可能就会有一种像偏早期的 ps 融合的时候背景,哎,你这背景有点假那种感觉,所以就是他需要有一些背景跟原元素 ip 的 一些融合度嘛。 所以就是他也会有一个问题说啊,融合程度要多大?然后都是 a 还可以,然后需要与那个场景有一些充分的互动,然后 b 的 话就是更深度的互动,然后就是 c 的 话就是有点过了,然后我就说 b, 我 需要有一些充充分的一些互动,然后他就会给我 这种选生成这种画面。就比如说签名的时候,他那个吉祥物, 他是有一个风筝一起有一些互动的,比如说谷雨这几节气他会去采茶叶,然后他会带斗笠啊,还有背这个小箩筐,还有像金哲,他就会很害怕的躲在一个石头后面,春风的话就是去闻花香,他跟场景是有一些互动的, 嗯,所以这个就是回到刚刚的一个话题,如何跟 ai 沟通的时候,我们让 ai 不 跑偏,然后能紧紧地抓住我们这个点,因为我之前有一个嗯,很很让我难受一个话题点,就是 我跟 ai, 我 知道 ai 很好用,但是我跟 ai 对 话对话它就会记忆混乱,然后它飘到哪什么地方去, 然后我给他选清纸质不清晰的时候,我让他自己去发挥的时候,他就发发挥了,天马行空,所以就我需要让他框选在一定的范围,但这个范围前期我 对于这个都是很模糊的,所以只能用这种一句一句让他反问我,所以就是让他反问成一种选择题的形式,然后我们的那个呃决策的, 决策的那个焦虑程度就不会那么低,所以他的时间成本也会变变少,然后而且他的那个嗯模大模型呢?他对我们这个指令的理解才会 越来越清晰嘛。所以这个就是我分享的一个点,就是跟 ai 去如何去沟通,就是得去让他去访问你,然后他会访问你的时候,你尽量让他去以选择题的形式,因为他去分析这个东西的时候,基基本上他们是有一定的嗯 理解能力的,只是说他不不清楚你想要的结果是怎么样,所以你让他以选择题的形式访问你,其实就会很好的让他了解你的需求 啊。这个是我今天想分享的一个话题。
