大家好,很荣幸能够在这里和大家交流一下 coder 相关的一些技术以及实践啊。 呃,刚刚在开场前,我们主持人调研了一下现场有多少人用过 coder, 我 看举手的还蛮多的。那我也问了一下,呃,现场有多少人用过 c l i 的 很少,用过 c l i 的 也很少啊?那今天我给大家简单介绍一下这个 c l i 啊,就是 呃,可能因为 id 呢是已经发展了好多年,大家对于编码的第一界面已经比较熟悉了,那 c l i 这个呢?大家可能更多的是说,哎,我的运维场景下可能会有些实践。那今天呢,呃,我就呃给大家介绍一下 c l i 这个产品,我们从构思一直到发布,再到它的一些应用场景。 呃呃,简单做一下自我介绍。我的花名,呃,我的,我的真名叫谢吉宝,然后花名叫唐三。呃,目前在 co 的 团队主要负责呃 co 的 c l i 以及呃 spec 驱动的一个任务尾派。呃,这么一项功能。那么今天会先从 c l i 给大家介绍 啊,然后再去介绍一下,就是基于 id 和 c l i 如何来做 spec 驱动的异步任务尾派。 因为今天的议题呢,呃,交换了一下顺序,本来是我们前面会先介绍一下我们的端啊,我们主要的端是 ide, 然后除了 ide 之外呢,我们也刚刚发布了 java 插件,然后呢第三个端呢,就是我们的 c l i 啊,然后今天因为临时我们交换下顺序,所以说我就先从 c l i 开始介绍啊。 呃, c l i 是 什么啊?我们为什么去做 c l i 这个产品?其实在 code 呃最开始出现的时候,我们只想做一个 ide, 然后 ide 出现之后会发现其实这两年整个 ai coding 领域发展变化非常快,就是以前大家可能认为是 copilot 啊,可能更多的时候代码我们用 ide 写代码,只是用 ai 来做代码补全, 但是随着 ai 能力的增强,我们的 agent 能力也逐渐增强了。 agent 能力增强之后呢?呃,大家使用 agent 占比就越来越高了,那我们也在思考啊,就是如果仅仅是用 ide 啊,那么大家只在 ide 里使用这个 agent, 是 不是就束缚了这个 agent 的 能力啊?比如说像很多后端同学,他可能多年来一直使用 gerbeans 相关的 ide, 那 如果要是没有这个能力的话,那他要放弃 gerbeans, 就是 放的 gerbeans 本身这些习惯来去使用扣带 ide, 对 吧? 那我们在思考能不能让这个 agent 能够走到用户的这个工作场景中去。所以说我们就说基于后端很多用户的呼声,我们推出了 j b 插件,让大家可以在 j b 院子里面也能够用到我们的 agent 能力啊,整个 code 的 智能化能力。 那同样呢,在 c l i 里边,有很多用户也是说我不用 id, 我 用 c l i 或者是我用 emacs 等等其他的 相关的这些工具,那么能不能也用抠的了智能能力那因为每一个端我们都像 id, 像截屏这样去做的话,整个成本是非常高的,所以我们在想能不能我们采用一种被集成的方式,把我们的 a 的 能力开放出来, 那最开始的时候我们思考的是,就是显而易见的想到的是 api, 通过 api 这种能力开放出去,但是通过 api 这种能力开放出去有个弊端,就是 在企业级集成场景里面, api 是 ok 的, 但是在用户在开发阶段使用 api 的 成本是非常高的啊,这个就不方便,那我们在想,那如何降低用户使用 api 的 成本呢? 那其实 c l i 里面有个东西叫 g u i termite ui, 对 不对啊?在这里面集成,它本身就是一个很轻量级的 agent 的 一个外壳,那基于这个外壳再往上去扩展,它就能够去把我们的背集成能力,可以在用户的电脑上,可以在用户的 c i c d 流程里面,可以在我们的 server 端上做集成。 基于这个思考啊,我们就开始推出了 c r i 的 一个工具。那推出 c r i 其实还是回到核心本质啊,我们要把 cold 的 智能带到用户的工作场景中去,所以我们面临的第一个问题就是如何让它更加的智能,像 ide 中一样智能 啊?第二个问题,那么它就要清亮,因为我们已经考虑了背集成已经呃,用户可能有一些工作场景,已经占了一些工作载了,那么我们和它在集成的时候就不能占用太高太高的一个这个内存的比例 啊。第三呢就是生态,生态什么意思呢?就是我们既然讲了除了 c l i 里,我还可以集成到你任何的工作场景里面,比如说啊,现在除了这个像 vs code 家族的一个 id 之外,还有像 z 的 id 对 不对?还有可能 emacs, 像 win 啊等等这些用户,那他们在使用的时候如何去集成?那我们要能够和这些生态打通啊,让他们也能够用上 code 的 智能能力,这就是我们做 c l i 的 一个初心。 那在 c l i 我 们做的是第一步讲到背集成,讲到生态的时候,首先就考虑到全端覆盖啊。今天 cold 家族的这个产品体系,基本上已经做到了全端覆盖,我们有 ide, 有 jade 编辑,有 c l i, 通过 c l i 又能拓展出很多的背集成。 那么在操作系统方面,我们也是做到了 windows、 mac 和 linux 的 全端覆盖,包括像芯片,像 armb 芯片和叉八六芯片,我们也都做到了全端覆盖。 同时呢,因为 c l i 能够被集成,被集成呢?那它就不一定只是跑在用户的本地啊。甚至有些人说,哎,我平时喜欢不喜欢让开发环境来污染我的工作环境,对吧?那我喜欢在这个 docker 里面开发,那我们也支持你可以把 c l i 直接 apply 到 docker 里面,在 docker 里面跑这个任务,并且我们做了内置的一个集成。 那还有人说,哎,那既然这么方便,我想多开几个 c l i 运行任务,那我们天然的就支持了内置的 work tree。 get work tree 的 能力 啊,你不用了解 gitworktree 是 怎么样的事情,你只需要在 cli 里面执行啊,查看 jobs, 创建 jobs, 我 们就会自动帮你去创建 worktree, 把你的代码 copy 过去,然后帮你去执行任务,执行完了之后让你来合并 啊,那甚至呢,还有 k 八 s, 那 这个其实是我们现在还没有正式对外开放的一个能力,在我们内侧的一个能力,这个也是用户呼声比较高的一个啊。用户说,哎,我用我的电脑开发的时候 啊,因为我连的是我的应用的测试环境,那我的测试环境因为是微服务的吗?因为分布式架构,所以说我们有很多依赖的啊,那些体系他在我们测试环境里有了,那我本地和这个网络联通,我只要起我自己的服务,就能够让整个网络联通了。 但如果我在另外一个沙箱里面去跑的时候,或者是一台测试机上跑的时候,那网络如果不通,那这套生态体系就没有了。举个例子,比如说我这我是做一个电商交易的,那他已经把他部署上去了 啊,部署上就在那上面跑着了,我只要能和测试环境打通就可以了。那这时候如果我们单纯的孤立的起一个网络隔离的沙箱来运行这个任务的时候,那这个任务是没法和这个用户的信息联通起来的, 这样子就不方便。那他说我们现在测试环境里面本身就是 kbs 的, 能不能我在生成代码的时候直接跑到我们 kbs pod 里边? 我们现在也在内测这个功能,这个功能上去的话,其实就一键把你的代码直接扔到你们的测试环境的沙箱里面去生成,然后直接在测试里面去测试验证,然后最终提到我们的代码仓库里就可以了啊,这是几个场景的覆盖。 那还有说,那既然有了 ide c r i, 我 在使用的时候如何去做取舍啊?其实这个也非常好取舍啊,就是你习惯用什么就用什么 啊,我们一般而言是这样子,因为 ide 呃,发展了几十年啊,程序员基本上写代码的第一界面就是它,所以它是我们在日常工作中最大的切面,所以能想到的场景第一优先级你会,你会想到就是用 ide 来进行开发 啊,那么 ide 里面提供了非常强大的这个编辑能力, debug 能力等等一系列的集成能力,那在 ide 里面这些都可以完成。所以在深度开发的时候,我们首选的一定是 ide 啊,包括我们的 ide, 包括大家熟呃熟悉使用的 index, 那 结合了插件也可以完成这些操作。 那还有一些操作呢?大家可能是完成一些轻量级的验证啊,这些轻量级的任务的时候,他说我不需要启动 ide, 尤尤其是大家使用。 呃,接着院子的时候,知道这个启动其实还是蛮负担蛮重的,对不对啊?无论是 cpu 内存占用率还是蛮高的,那有的时候你说,哎,我想做一些小的验证,或者像运维 devops, 我 想写一些测试脚本的时候,我可能根本就不需要启动这么重要的 id 的 时候,那这个时候你想到的可能是命令行, 那以前的命令行呢?因为不够智能,所以大家要记一堆参数,然后就拼,然后就搜 google, 可能效率比较低,但是今天如果有了 c r i 的 话,其实你的整个终端就变得智能了。 那么当你有这些场景的时候啊, c i, c d 流程啊,或者是 devops 脚本呀,或者是其他的一些想的想法的验证啊,或者一些小的 feature 的 修复开发,以及 bug 的 修复啊,都可以直接不用打开 id, 也可以在终端把这个事情搞定了啊,这就是整个一个使用场景, 那 c r i 有 哪些使用方式啊?啊?其实它的使用方式啊,非常简单,因为安装呢,就是一行命令啊,一个 curl 命令, curl 之后下来我们一个脚本,我们的脚本会自动把它呃安装到你的机器上啊,这就是整个一个安装, 那安装完了之后就涉及到一个使用,使用分成两类,一类是呃交互式的,一类是非交互式的。 交互式的很简单啊,就跟这个呃,这边这个图是一样的,你只要安装完,然后敲 code, c l i 就 会进入到这么一个交互式的页面,大家不要觉得这个页面是黑色的啊,然后密密麻麻写了一对英文字母啊,就它就很复杂。其实不是的, 它跟大家用的现在所有的 ai 产品的聊天框是一模一样的,只是它的呈现形式是这种在终端里面呈现出来的, 所以大家只要关注这个区域就好了啊,你平时使用 ai 那 个相关的产品,比如说像这个呃,我们的千万 app 呀,或者是大家用的 chat, gpt 啊等等这一系列的,你平时问问题可能就是随便发一句啊,然后跟他聊天,对吧?那今天你在这里面也是一样的,你只要在这个框里面 随便说你想说的话就可以了啊,任何一话,你到这边就跟他聊天一样啊。那,那一般而言,你安装它可能是主要目的是为了写代码呀, delete bug 呀,或者是修复 bug, 对 不对?那你描述的话,可能都是自然语言,就在这个框里描述就可以了 啊,这就是呃负担上啊,大家不要觉得,哎,这个框这么复杂,其实很简单,就这么一个框, 那么会了这个功能之后啊,那么 ai 回复给你的怎么去回复呢?其实跟我们用微信啊,用 qq 聊天也是一样的,对不对?你说完了上面就回复你了,比如说这个例子,就是我跟他说了个嗨,那他就回复了啊,他跟我也打了个招呼,然后他告诉我,他具备什么样的能力 啊?这里面因为我跟他说的是英文的,所以他回复的也是英文的,你跟他说中文的话,他自然就给你回复中文了,就这么一个区别啊。啊,这是这第二块,所以说我们这有一个啊,一个聊天的一个信息区,这有一个消息区 啊,那么这里面呢,我们还内置了一些命令。内置一些命令什么呢?就是,呃,一些大家常用的一些功能,可能会用到一些功能,你用自然语言描述比较复杂,且结果不太确定的时候,那这个时候呢啊,我们是已经把它集成好了,内置好了,你只需要敲一个斜杠 啊,然后我们这边就内置了一些命令,这些命令的话,一会我会给大家介绍一下这些命令主要是用来做什么的,你只要一斜杠敲这些命令之后,它就会自动去执行了, 这是一个命令区,那最下面有一条,哎,叫状态区,状态区干嘛呢?其实就是大家关心的这个啊,这个是我们模型啊,就我们模型是自动选择的,我们是通过这个智能调度来调度模型的,那这块呢,是这个 context, 就是 上下文。 然后这边呢,就是如果你对接了 m c p 的 server, 那 么 m c p 的 server 会在这边展示出来啊,就是一些工作区的一个状态信息。那如果你不关注没关系,你就不用关注它,你可能只关注一件事,就是上下文多大了啊?这个一会我在后面会介绍这个 lets command 的 时候,我会详细的去介绍这一块啊, 这就是整个一个交互模式。交互模式大家都记住一句话,它跟你打开微信是一样简单的啊,你只要在这里面说任何你想说的话就可以了 啊。那第二款呢?叫非交互模式。非交互模式这个可能对于像做 devops 的 运维同学可能会更为熟悉, 就是我们讲这个。呃, linux 或者 unix 有 一些哲学叫 case case 原则对不对啊?我们的整个命令都是单一职责的,然后通过管道把它们连接起来啊,就这样子,那 cr 也是一样的,因为我们想做自动化,想做自动化的时候,就通过交互这种方式一问一答的方式可能就不方便了,对吧? 那这个时候啊,我们提供了非交互式的能力,非交互式的能力就什么?加一个杠 p 参数,然后你在这个框里说的话呢,你就把它用引号引起来啊,就可以了。 然后如果你对输出的格式有要求,我们我们支持一些格式,比如说这个,就是啊, stream jason, 那 它就会用流式 jason 的 格式,把 这个大语言模型的响应啊,给你响应出来啊,比如说这个,这就是一个截图的例子啊,我,我输入一个,我跟他打了个招呼,那打了个招呼,他正常给我回复这些,对不对?那这是纯文本,在交互式里边他就是这样子的,但非交互式里边我会以 json 格式啊,把我所有的信息给到你, 然后程序员拿到这些信息就开始做解析,解析出来你想要的东西,然后进行下一步啊,这就或这就是进入了一个智能时代啊,这个和和以前的这些,呃,我们传统的命令行工具有什么差异呢? 传统的命令行工具就是输入输出是确定的,对吧?我们讲究的是完全的确定性啊。然后,呃,比如说我这时候掉了一个 rest api, 这个杠屁就跟掉了一个 rest api 一 样,然后这个 api 输出什么,我解析什么, 这个也是一样的,只不过 rest api 输出的结果我们以前都是约定好的,格式是确定的。那这里面呢?是我们更多的是智能的,就是通过 ai 帮你判断出来啊,我通过一定的格式帮你约束好,你通过这个格式选择你想要的信息就够了 啊。那刚才介绍了这个两种交互模式啊,一种是这个交互式的,一种是非交互式的。那接下来我就给大家介绍一下,就是内置的命令。哎,刚才讲在这个输入框区里面啊,大家可以进入一个斜杠,斜杠的话呢,我们会内置啊一些这个指令通过这些指令 啊,那个看不清是吧?看不清。把那个灯关掉好了,投影仪可能看不太清 啊, ok, 呃,内置一些斜杠指令,那这些这个表格里面罗列出来就是我们所有内置的指令啊,这些指令看起来很多,那实际上我一讲解大家分了几类之后就很容易理解啊。第一个 啊, log in 和 log out, 这个很容易理解吧?登入登出啊,我们任何一个软件,现在大家都要登入登出啊,所以这个基本上不用说了啊。第二块啊,上下文管理相关的 啊,比如说第一个是 you need, 第二 memory, 然后 compact, 然后是 clear 和 resume, 这个是干嘛呢?就跟刚才我说状态栏有个上下文管理啊,上下文管理啊,我们, 我们当想让这个 code c l i 啊,去了解一个工程的时候,我们第一件事是干嘛呢? 要去熟悉一个工程,比如说,呃,我们一个同学新接手一个项目,或者新入职一家公司,当你去了解这家公司的这个产品的时候,我作为程序员,我一定是先把这个工程大概要了解一下代码,大概读一下代码的结构,整体架构要看一下对不对。 那么 codeci, 它跟我们的一个呃,程序员接手一个新的项目是一样的 啊,他来的时候也要先对整个项目有个大概的了解,然后并且他记一个笔记。所以这第一步啊,我们一般接手一个项目的时候,我们会做一个匿名的,一个斜杠的一个命令, 通过这个匿名的命令呢?呃,这个 agent 啊, code c i, 他 会把整个工程大概的扫一遍啊,比如说他会了解到,哎,这个工程是用什么语言写的啊?这个工程的目录结构、组织规范是什么样子的, 这个公司他们有哪些这个啊,代码的规范、约束等等这一系列的事情。他把这些读完之后啊,会把他记一个笔记里面,写到一个 agent 点 m d 这个文件里边 啊,这是第一步啊,就是它生成一个触式化的东西,那么这个时候生成完了之后,如果你说,哎,你这个读的啊,可能不够细致,还有不够啊,我这边可能会有一些额外的去加约束 啊,告诉他你应该记住这个,记住这个,记住这个,你可以把你这些额外的约束加到你们通过这个 memory 命令加进去就可以了啊,这是 memory。 第三个呢,就是大家都知道今天大元模型有一个非常大的一个瓶颈,就是上下文 啊,上下文的话经常可能就不够,因为他就像这个人的记忆一样啊,就是人的记忆其实也是有限的,只不过我们一直大脑一直在发育这个,这个容量是是超级大的嘛,那大元模型的话,他的记忆其实今天在看来还是非常的小的 啊,那这个时候如果我们让他去做一个很复杂工程的时候,他要把所有的细枝末节都记住啊,那么这个时候其实到后面他的这个上下文就不够了啊。所以说我们在运行啊过程中如果发现 这个就是应该是任务比较明确的,颗粒度范围比较确定的,任务完成之后, 我们应该习惯性的啊,用 compact 把这个上下文压缩一下,让它只要记住上一步任务的一个概要信息就好了,不用记住所有的细致末节, 其实大家很很容易类比,就跟我们人是一样的,当我们去做一个项目的时候,我们一定是对这个项目这个工程啊了解的非常非常细致的,每一个细节都了解的, 但是当你去做下一个事情的时候,这里面很多细致摩羯你会忘记,因为人的一生如果把所有的细致摩羯都记住,那其实也是一样的,我们在开启新的任务的时候也会受到这个影响,因为你考虑的太多了啊,其实大圆模型今天也是一样的 啊,所以说我们在完成一个任务之后,我们要把内上下文进行一下压缩,给它留出一些空间,然后让它去学习新的这个任务相关的一个知识,把它记住啊,就是这个命令夏克里尔呢,其实就是把历史和上下文清掉啊,就是当我这轮对话结束了,然后我也不想清啊,我也不想换这个东西的时候,我就直接给克里尔清掉了 啊,那再下个 resume 呢?就是,哎,我可以把上一次咱俩对话的内容重新换起啊,这就是 resume 啊,所以这几个命令呢,都是关于上下文管理的。然后,呃,我先讲这个绿绿标的啊,然后接下来是 agents, command 和 mcp hooks, 这几个呢,都是和扩展相关的 agents 干嘛的啊? agents 就是 管理我们整个 code c l i 里内置的和用户自定义的 sub agent 的 啊,就是 agents 啊,大家都知道有个就是 agent, 今天是有一个对不对?一个主 agent, 但是有的时候啊,我们说这个主 agent 干活的时候可能就不够,无论是能力还是效率上可能都不够啊,那这时候我们需要扩展 agent, 大家可能经常会听到这种叫什么多 agent 架构是吧? m a s 啊,多 agent 的 架构, 但今天多一层的架构,其实,呃在业绩还是存在的非常大的一个争议的,因为多一层之间最大的问题可能就是上下文会丢失的一个问题啊,所以呢,今天比较流行的多一层架构,就是主子 agent 的 架构,叫主 agent 在 这贯穿的全部,然后有很多的子 agent, 那 我们整个 code c r i 也是采用的这套的架构 啊,那么通过这套架构之后干嘛呢?就是主线的 a 政,它负责整体的一个大的框架逻辑啊,就像一个一个公司啊,一个公司的这个 ceo 一 样,它负责整体公司的运营,但是涉及到具体任务的时候,它会下派到各个部门。那这有对应的啊,子 a 政呢,去把这个任务完成, 那子 a 政他把这些任务完成所有过程中细之末节。其实这个 ceo 他 是不关心的啊,他只会指派任务,这个大的任务目标是什么,交给他去做,做完了之后啊,这个部门这个 sub agent, 他 把 执行完的结果返回给这个主 agent 就 好了。告诉你啊,我通过你这个输入,然后把这个任务完成了,完成之后我的结果是这样子的, 我举个例子吧,比如说今天我要带大家,我们今天要组织一场活动啊,今天我是这款,我是这个活动的负责人,我要带大家安排很多呢,比如说包含我们今天有听培训啊,比如说我们今天要聚餐,比如说今天啊,我们要呃出去,呃,有一些拓展训练, 其实在每一个任务的时候,我在做活动主负责人的时候,如果都是我来做,我就成了瓶颈,所以我在每一块任务我会安排一个负责人,这个负责人啊,他就是我们的 sub agent 啊,他会去负责某一块。那举个例子,今天我们就讲这个聚餐吧 啊,我提的任务就是让大家吃好喝好,这是我提的任务,但是然后预算多少我规定好对不对啊?然后这个负责人啊,他会去想啊,按照这个要求,他怎么样把这个聚餐的任务完成好,怎么样吃好喝好?他可能联系了 n 家的这个这个饭店,然后考虑距离、品质各个方面, 然后最终啊,在预算范围之内能够把我们吃好喝好了 啊,这就是我接收到的信息,我只布置了一个这样的任务,然后他告诉我他把这个信息完成了,具体他联系了哪些家饭店啊,他干了什么事,其实我是不关心的,细枝末节都应该交给下属才来关心, 这样做的好处其实大家已经已经能够理解出来了,为什么就是主 agent 的 上下文已经被卸载出去了,那些细枝末节的事情他交给了下属去处理, 然后 safa 智能把它干了好了之后,他只关心这个大的流程就好了,所以这样子能够让主 a 智能处理的事情更多,他关注的面更加的宏观啊,完成的任务也就更长城更大啊,这就是阻止 a 智能的架构啊。 啊,这是子 agent, 那 通过杠 uh agents 呢?就是你可以看看我们现在自定义了哪些的 sub agent 啊,同时呢,你也可以通过这个命令,然后直接去创建一个自属于自己的 sub agent 啊。创建 sub agent 以后会讲其实也非常简单,就是一句自然语言,其他都是通过 ai 来自动帮你去生成,你去微调就好了 啊。第二,斜杠考慢的,斜杠考慢呢其实,呃,这个呢,嗯,也也很常见,很容易类比啊,比如说大家如果用 windows 操作系统的,可能很多人会喜欢什么什么做一个快捷方式 啊,比如说用 linux 或 ulex 相关系统的,可能会做什么软连接啊,对吧?然后还有就是像运维,我们常见的就尽量写脚本啊,把这些一些常见的动作,我写个脚本批处理处理好啊,不用一个个去点 啊,包括像,呃, office 里面有红,对吧?我们可以批处理一些事情,你把 command 想象成这件事情就好了啊,用它来做就是我制定一个 command, 这个 command 我 描述一下做什么流程,然后 我以后执行这个斜杠命令,它就会把所有的任务给我完成。啊,就这么简单。那同样通过这个斜杠 command 的 命令,我们就可以看到我们自定义了哪些 command 和这个,我可以通过它来创建属于我自己的 command。 举个例子吧,比如说,呃, 我们通过 ai 写代码,写完代码之后啊,我们说要要做一些这个规范化的一个检查,检查的时候可能有什么什么?呃? 约束,比如说对于 check style 相关的一些约束啊,然后我要提交 git, 然后 git 流程是什么样子? git 里可能还有 hook。 假如说这些动作都是我们一二三四五六要做的,那今天这些动作是基本上每次我提交代码都要去做的,那今天你就可以通过自定义一个命令,然后把这一些一系列的步骤全都写进去。 下次你只要说那个提交完代码写完之后,我执行这个 command 之后,把这一系列的步骤它就会自动化完成 啊,那什么时候会自定义 command 呢?其实很也也很简单啊,按照我的规范,就是如果一个命令啊,就是类似的流程啊,我要是执行三到五遍,基本上就是要执行三到五遍的时候,我都会把自定义一个 command, 通过这种方式能够自动化去执行这个整个一个动作,来加速我们的,提升我们的效率啊。 这个,然后下个 mcp 啊, mcp, 这个,呃,现场有没有人了解什么是 mcp 的? 可以举个手看一下 啊啊啊?哎,对对对对对,是的,是魔性上下文协议啊,对对,它就是个协议,今天它跟什么我们大家以前熟知的什么 http, https, 呃,什么 ftp 等等协议是一样的啊,只不过它是在大语言模型时代产生的一个新的一个协议。那通过这个协议之后,呃,有很多提供了 mcp 的 server, 通过这些 server 就 能够拓展整个 agent 的 手和脚的能力啊。举个例子啊,比如说今天我们需要用这个呃, 我们的 agent 去写一个工程,但写工程的时候,我们这工程是有架构的,对不对?比如说前端我可能用杀的 c n 啊,或者是像国内有 on on to d, on to design 这种这种东西,前端,对吧?然后后端我可能有固定的约束,比如说 java, 我 可能用 spring 啊,然后这个 go 的 话,我可能用 gin 等等这一系列的框架。 那大元模型,其实他学到的知识与训练那些知识可能有些已经落伍了,过时了,他不知道,对吧?或者是有一些企业内的私域知识,他也不知道。那这时候呢,我们可以把这些内容啊开放出来,挂成 m c p, 然后给到 agent 就 可以了。比如说有一个知名的这个, 这个 m c p 的 叫 contact seven, contact seven 就是 他把所有的这个开源库的文档啊,都能够自动锁引进来, 然后以 m c p 的 形式暴露出来。这样的话,你只要把这个 m c p 挂上去之后,你涉及到你自己开发里面的语言技术栈框架的时候,它就会自动去读啊对应版本的文档,然后直到查找这些 api, 然后自动帮你写好正确的代码。 啊,这是一个场景,那还有一个场景,像这个,呃, devtools 啊,就是 chrome 对 吧?我们经常写一些这个前端页面,需要去调试,那我们经常用 ai 写完了之后发现写完了这个代码根本就不行 啊,就是一刷新这个浏览器就报错了,或者怎么样子,那这时候都需要人和 ai 来翻来覆去的写作,对不对啊?不过智能,那今天你只要用啊 chrome 提供的 devtools 这样一个 mcp 的 工具挂掉上来,然后你写代码,写完代码之后, 这个 code c r i 会自动地去把这个服务器起来,然后去浏览器中去运行这个页面,然后这个页面如果一运行报错了,它会自动拿到这个报错的信息,然后带到上下文里面去,然后帮你把 bug fix 掉,直到把你这个任务全都完成,没有错误了再交给你啊,这就是通过 m c p 扩展一种方式啊, 那还有个 hooks 啊, hooks 什么意思呢? hooks 其实这个应该程序员也也也比较常见了,就是我们在特定的一些时间点想触发一些动作的时候就会采取 hooks 啊,对吧?比如说我在每次代码提交之前啊,都会调一个我们某一个服务,来验证一下我们这个代码有没有什么, 呃?提交有没有什么问题啊?做一下代码的 code review 啊,或者是做一些代码的安全扫描啊,这就是一个 hux。 那 同样在这个 code c r y 里面也是有一些场景,我们可以在这些点去埋一些 hux 啊,这就是一个 hux 啊,不详细介绍了。 呃。然后下面有两个啊,两个这个绿色的,一个叫 quest 啊,一个叫 review 啊, quest 呢?一会我会重点去讲一下。其实这就是啊 spec 驱动的异步任务尾派 啊,一会我在后面会详细讲,这里不详细去讲了啊。第二个是 review, review 呢,就是我们能够去做啊整个代码的 review, 那 这个 review 呢是 local review, 就是 当你写完代码之后啊,我们会在本地把你写完的代码帮你去做一下 review。 那 coder 一 直倡导的是模型是自动选择的,为什么自动选择?是因为我们认为不同的模型在不同的领域它有各自擅长的内容,呃擅长的特点, 所以呢,我们会结合着在整个软件工程领域不同的场景,我们会自己去做测试和调优,然后在这个场景之下给他选择最适合的模型来做这个事情。把这种模型选择的负担我们自己做掉,而不是把这个交给用户来选择啊,这是我们的一个产品理念啊。 啊, review 也是一样的,我们就是呃,执行 review 之后,我们会调用对应的擅长这个,呃呃,做 code review 的 模型来做我们整个的一个 code review 啊,比如说大家可能都都知道这个 cloud 模型比较适合写代码,但是你想啊,想个问题 啊,如果我们一个人自己写的代码,自己去做 review, 和我自己写的代码,让别人给我 review, 你 说哪一个效果更好一点,对吧?所以这个时候就需要我们要去做交叉,那交叉也是一样的,那谁更适合 啊?去做 review, 每个模型有每个模型不同的特点,我们这时候也要针对不同的场景去做相应的选择啊。但这几个核心的命令介绍完,其他几个就是 win, 什么意思呢?就是,呃,当你觉得那个框太小了 啊,不够的时候,你说我擅长用那个 web 来做编辑,那你就可以用 web 把你这个上海文,把你那个指令啊编辑下来,因为有时候你那个 prompt 写得比较长,对吧? ashes 是 什么意思?就是,呃,一些后台运行的,比如说你跟你跟这个他写代码,写完代码之后他要把这个服务器起来,对吧?比如说像这个 啊, java 可能要起个 tomcat 啊,或者是起个 jitter 之类的啊啊,然后起完之后他后台运行,那运行之后他就会把你终端卡住,那你就没法跟他对话了,对不对?那这时候我们会自动地把它把这个 起的这个任务啊,需要常驻的任务,把它放到后台,然后让你把这个框可以继续和它对话,继续下达其他的指令。比如像我刚才举的例子啊,这个服务器起来之后,我说你要到那个 chrome 里帮我调试一下,看看有没有报错啊?如果报错,你帮我修复一下 啊,或者是我再增加一些新的需求,那这时候它整个常驻的任务,我们会把它放到后台的 bash, 你 通过 bash 就 可以查看啊,然后哪些如果你不想要,你把它杀死。 uses 就是 看我们这个整个 credits 的 一个消耗情况啊,然后 status 是 看我们当前啊账户的一些状态和这个整个你运行过程中一些状态信息啊。 config 就是 做一些配置, help 就是 查看帮助,然后 release note 就是 我们每次发版那些呃 release 的 note 都会在这里展示。然后如果过程中遇到一些问题,大家可以通过杠 feedback 命令,然后给我们提交反馈,我们每一个反馈都会处理啊,这就是整个一个呃过程啊。 然后这里简单跟大家说一下这个使用技巧啊。第一个使用技巧就是这个关于上下文的,上下文我刚才其实已经介绍了很多了啊,那就是大家今天用 ai 啊,你就把它想象成这是 给你配了一个呃,刚毕业的大学生,他的编程能力非常强,但是他对你的工作环境,对你的工程东西不够了解啊,但是他的学习能力很强,大家如果用这种心态去使用他的时候,很多逻辑就很容易理解 啊。比如说第一个就是,那如果今天有个实习生给所有人都配了个实习生,那大家拿到这个实习生之后啊,第一件事就是把工程交给他,让他熟悉一下,所以就是匿迹一下,对不对?然后接下来你就开始给他派活了,派活?你是从小到大 对吧?刚开始你给他派一个小的任务,可能就呃改的内容比较少,然后让看看他的效果怎么样,所以这几轮对话,那随着时间长度之后啊,他对工程越来越了解,你对他的能力越来越信任,这时候你就可以给他布置一些相对复杂的一些任务了,那这个就是 可以过程中来处理。那同样就是刚才说那运行之后久了,他这个上下文可能会超,那我们就在合适的时机把它做压缩。压缩的话其实很多人都一直一直一直用,一直用,只知道那个上下文已经 就是已经快超了的时候啊,这个时候才想起了压缩其实不是一个好的习惯,好的习惯是当你这个任务原子任务完成差不多的时候,你觉得可以去做总结的时候,那这个时候就做压缩。就跟这个大家用操作系统一样啊,经常有一些什么内存清理啊,当你的内存 真的到了一定的预值之后,你发现他没法清理了,因为你运行清理这个指令啊,他也需要要消耗一定的内存,但你剩下的内存已经不够了,这时候就有问题了,对吧?所以说都会有一些自动清理的一些任务在后台直接去运行这操作系统来管理的。那我们也会有一些自动的一个压缩策略在压缩的 啊,但是自动压缩策略和手动压缩策略,其实我更推荐大家用手动压缩策略,原因就是自动的话是根据一些 呃,就是一些相关的指标,我们来做出一些自动的判断。但是人在下达命令的时候,每一个任务和业务其实只有下达任务这个人更了解,所以说我们建议的是,呃,你在下达这个任务的时候,把这个那个呃压缩命令啊,直接压缩下去啊,这是这个压缩 啊,这个卡曼呢?刚才其实已经讲过了啊,就是当你觉得我这个任务要翻来覆去执行啊三五次的时候,那么你就可以用这个自定义一个命令,然后把这个整个任务完成,后续的话,你只需要输入斜杠,就把那一串的东西就都完成了啊,这是自定义 啊,然后自定义这个东西大家看似很复杂,其实这些东西都是 ai 帮你生成的,你只要描述你期待它来帮你做什么事就好了,自然而然去描述,描述完了之后,它会按照这些规范来把这些东西生成啊, 那下一个是 sabotage, 同样的逻辑,就是你可以去描述啊,说你啊要让他来完成一件什么事,然后他就会制定一个 sabotage, 然后 sabotage 之后呢?这里面会有一些东西啊,就是上下文隔离,刚才已经讲了,对吧?啊?作为活动主办方,我委派出去上下文隔离。第二个是领域知识, 那我委派出去,我说今天让大家吃好喝好,结果我找了一个人不懂吃不懂喝的人,其实他就没有领域知识,对吧?所以说我要找一个在这方面相对擅长的同学去做啊,那就是领域知识。第三个权限控制,就是刚才讲了,授权 大家吃好喝好,但是预算有限,这是权限对不对?那同样的,在我们在执行的时候,有一些 uh sapient, 我 们去让他去做一些研究分析类的任务,那他是不应该具有具备写文件的权限的,对吧?那这个时候你可以限定一下,你说你有只有止读的权限,但是没有写的权限,那这个都可以通过 sapient 做一些限定, 这就是我们内置的一些工具啊,因为 agent 其实就是我们讲这个 agent 是 怎么发展过来的?大圆模型其实以前都是大脑对不对?它没有四肢的能力,它没有对外沟通的能力, 那今天 agent 其实就是给这个大圆模型的大脑配了一些四肢,让它动起来,那这这个工具就是四肢,我们内置了一些工具,但这个工具它不是一成不变的,它是随着整个能力的提升,以及我们的工具会做增加或者删除的。啊 啊?那常见的像文件操作类的,像 glob group, rewrite edit, mod edit, 大家看了这些工具对不对?其实你仔细想一个逻辑,这些工具我全都可以用 best 命令把它完成, 但我为什么提供这么多工具呢?其实最最核心的原因就是权限,就是今天我不能在 a 让 agent 在 你电脑里乱搞,所以我才通过这些工具把这个权限能够约定到一个可控的范围之内。 后面随着整个环境的可控啊,以及我们模型的进步,这些工具可能就会做一些减少或者增加啊。第二个就是网络处理类, web fetch 和 web search 啊,当你说举个例子啊,刚才说用酷狗 c r i 都是写代码的,那实际上有的时候我经常还不是写代码, 我的诉求是最近有一个呃网络的热点新闻,但我根本就不知道这个热点新闻的来龙去脉,那我经常会这么说,我说你帮我把这个热点新闻的来龙去脉帮我整理一下,按照时间线温度帮我生成一个网页 啊,我经常干这种事情,所以呢,这个时候我就可以输入一个命令让他去做,那他干嘛呢?第一个他就通过我的这个热点词,通过 web search 这个命令 啊,他去上网去给我搜索,搜索这个相关的新闻,然后把这个新闻搜索完了之后,他会通过 web fetch 这个命令啊,把这个新闻网页给我抓过来, markdown 格式,然后把这个素材有了之后,他就会按照时间线给我重新编一下,然后再调用相关的这个 写的工具给我写成一个网页,然后呈现给我。啊,这就是整个一个过程啊,那下面就是啊, bash, bash output 和 q bash 这些是跟那个命令行 bash 相关的工具啊,然后 to do, 就是 我们整个规划类的, 然后 ask user 是 和人交互来的啊,这么几个内置的一个工具,大家了解一下就行了,因为这些工具都是内置的啊,就是它会使 agent 会自动调用,大家平时也不用太去关注这些命令 啊。这个是 hux 啊, hux 其实我这里不详细介绍了,就是在我们整个呃 agent 的 工作流程的过程中,其实有很多个环节,那每一个环节当我们想去触发一个事件的时候,就可以啊,用这个 hux 啊。这个其实如果,如果大家嗯, 不太了解的话,生活中也有非常详细的比喻啊。举个例子,今天你收到一个事件,这个事件是什么呢?你老婆今天出差了, 这是一个事件,对不对?这个事件之后,在你脑袋里立马就有个 trigger, 就是 hux, 这个 hux 干嘛?我叫兄弟们今天晚上来我家看球, 对吧?这是?这就是一个 hux, 你 就掉了一个事件,来看球,然后看完球干嘛?看球?又是一个事件啊?那就他又可以再掉进一个新的 trigger, 一个新的 hux 啊?这个 hux 干嘛?看球?必须得有啤酒, 对吧?得有零食,得有炸鸡,然后你就触发了一个去啊,买啤酒炸鸡这么一个福克斯, 然后通过这个福克斯。你说,哎?我既然要去买啤酒炸鸡,我家里没有缺少什么东西,因为我买啤酒炸鸡,我要去超市,我去超市这个动作可能又产生一个新的事件,这个新的事件触发一个新的福克斯。我除了买啤酒炸鸡之外,我还要再买一些生活用品带回来,这又触发一个福克斯。 所以所有的内容自动化流程都是通过这些一步一步触发带来的啊。所以互克斯大家就可以理解成就是这么一个动作,那成写代码的时候,大家也经常这么去做,对不对? 比如说我们经常写这个分布式架构的时候,我们会有异步消息驱动,对不对?为什么会有异步消息驱动?这个消息本身就是个 trigger, 我 通过这个消息就可以触发一个事件,这个事件让他去干一些别的事情啊,比如说我们为什么讲这个?呃,比如说写 java 吧,写 java 为什么会有这个?呃? a o p 嘛? a o p 很多时候是切面,是吧?一个系统写完了,然后这个家过事过了说,哎呀,你这个,你这个系统写的不好啊,你这个网址打的不好啊,打的乱七八糟的,不够规范。然后他说那你一行行改的话比较麻烦,这时候我可以写个 a o p 的 切面,然后你就通过通过 a o p 这种方式拦截,自动的就能够把这个网址给我写上去。 那写日制分多种,一种是写本地字盘,一种是写远端,还有一种是写内存,我们根据不同的场景选择不同的东西,那这个时候可能我的存储戒指会发生变化,对吧?那这时候它也是个事件, 那你就可以通过 a o p 去拦截,然后拦截了之后只拦截了这个事件。就是当这个时候我要写日制,具体写到什么东西,这个实现交给别去交给别的地方来做,对吧?啊?就这么一个事情,所以在写代码的时候互克斯,大家可以在不同的场景去触发不同的互克斯, 你可以想在哪个环节我需要去做什么事,然后就可以去用一个钩子来把它实现掉, 这个是配置文件。配置文件什么意思?就是当我们去写的时候,我们那个配置有一些是工程级别的, 比如说这个是大家一个公司的这个项目里啊,具有这些约束,那我们把它写到工程里,就是工程级的配置,还有一些个人用户级别的。个人用户级别的时候我有一些喜好啊,我的喜好就是我喜欢用这个工具,我喜欢这些东西,但是啊公司不一定这样子 啊,所以说我会把这些配置写到我这里,比如说我自定义 command 啊,自定义 sub agent, 这些都是我个人的习惯,可能这个团队每个人有每个人不同的习惯,所以说这个可能就存在用户级别的配置,那还有个是局级别的配置啊,就是所有的人都可以想我这个配置啊啊,所以说配置是分级的,就大概就这么个意思。 然后场景化应用简单说一下啊,就是,呃,在 c l i 里面,刚才讲说在 ide 里面我们一般是面向深度开发,那在 c l i 里面,我们我们有的时候就是做一些高价值的一个验证的时候,你就不需要打开 ide, 可以 快速的去完成一个圆形的验证。那 还有是教学的时候也非常简单啊,比如说刚才,呃,非常简单的一个场景,像,像,像那个刚才我说和 crom 这个 mcp 结合工具这个场景啊,前两天就有一个应用实践,一个朋友去给大学,呃,给给给大学,高中 给高中老师去做,文科老师去做培训,培训干嘛呢?培训如何教学那个曲线,就数学那个曲线怎么去画?就文科老师对计算机其实是基本上不太懂的 啊,然后这时候他就说,哎,我怎么样能够把给学生讲清楚这个曲线是如何生成的?然后他怎么样能够动态?然后以前做这些可能都要通过 ppt, 然后来做,做的很复杂 啊,要讲花很多的精力。那今天啊,到到了那个学校之后,这个同学就跟老师去聊说你的想法是什么?这老师说了想法,他就一步一步把他的文字打出来,打出来之后就直接丢给了 c i, 然后这边挂上 m c p 工具,那边浏览器里面就把这个曲线动态的画出来了,并且它是可以拖动的,可以交互的啊,这么一个方式啊,所以说在教学里面这也是一个场景啊,探索, 探索,调研,就像刚才我说的八卦,也是一种探索,对吧?啊?你关心热点词,关心热点词,或者是你,你在工作中突然间有个东西你不会了,以前我们的思路都是是通过 这种搜索引擎去搜索到某一篇文章,然后这篇文章可能会给我一些介绍一些片段的知识。那今天我想体系化的学一下这个知识怎么办?你可以直接丢给这个 agent 来实现,就像我刚才说的,你说,哎,我今天对 agent 这个概念不太熟悉,能不能把 agent 来龙去脉方方面面给我整理一下相关的知识,帮我生成个网页啊,就可以了。 那这样的话也可以直接丢给他,你就不用去问搜索引擎了,演示类的也是一样的啊,这个很好理解了。第二个是无缝的工作流集成啊,就是刚才讲 c r y 其实 非常大的个应用场景,就是集成,它可以在你本地和你日常的工作流进行集成啊,做了什么事?比如说你在本地提交代码之前我要做什么事啊?或者是 最简单的场景吧,我在 get 提交代码之前,我不想去写那个 get 的 message, 我 想通过这个大圆模型自动帮我生成。 那么大云模型可以通过你读你 get 的 那个提交的 def 文件,然后帮你自动生成你的 get message, 而且按照你们公司的规范和要求生成,然后你就直接提交就好了,那这也是一个场景,这是,这是在你本地啊,集成一个场景, 那还有在公司企业级和这个云端的代码库集成的场景啊。举个例子,比如说公司说所有的人代码都要经过 code review, 那么以前都是通过人来约时间,对不对?今天你可以提交代码之后,提交了代码仓库,提个 p r 或者 m r 的 时候,自动会触发一个 c l i 执行, c l i 会自动地去帮你在云端啊,去做整个 cool review, review 出了问题,它会自动地在你那个代码库下面发评论, 说这个问题,这个问题,这个问题,然后呢,他会给你对应的修改建议,叫 stacson code 给你。然后如果你要对他提 review 出来问题不了解,你可以直接艾特他,说这个问题什么意思,他得给你解释一遍。 如果你也不想去处理啊,你说你能不能帮我修复一下,你就直接艾特他,让他帮你修复啊,他就给你搞定了啊,就是这么一个事,那这个其实也是一个集成的一个场景,那包括像 kbs、 容器、刀刻等等这一系列的啊,都可以集成。所以大家在日常工作中 啊,你的,你去回头去看你的整个一个软件生命周期的各个环节。其实今天我们讲 ai 的 加持更多的时候,它是一个潜移默化的一个过程,就跟我们今天自动驾驶一样,它是个潜移默化的过程。那通过这种方式,你就可以看看我这个 里面哪些能用 ai 来取代。你可以通过 c r i 把它集成上来,然后它就具备了这个整个一个智能的能力啊,然后团队协助,就是呃,生成这个文档呀,或者是代码规范检查等等一系列的,那待会我们介绍 ide, ide 里我们有个非常好用的功能,就 rep wiki, 那 它就是有一个文档的这么一个功能啊, 未来我们期待的就是让 agent 触手可及,这也是我们做 cly 的 一个很大的一个初心,就是说让整个 code 的 智能能够走出 ide, 能够融入到你所有的软件研发的生命周期里边。 所以刚才讲,除了 ide 接闭插件 turn 功能之外,我们通过 acp 协议的支持,今天你用 zed 啊,然后 emacs 和 new vim 啊,我们都可以去支持这个能力。然后下面是代码仓库,下面是 im 里边, im 里面大家想个场景 啊,就是说今天如果我们两个在聊天讨论一个需求,讨论完了之后啊,你直接艾特一下,说,你帮我把我们讨论内容整理篇文档吧,啊,他帮他整理出来,然后你们两个确认没什么问题,你说好按这个文档来给我开发吧,然后代码就写完了,其实这就是一个协同的场景,我们不要把 code, 不要把 code c r i 想象成它是一个工具,其实它是一个在你身边的同事啊,你有什么事,你是怎么样和你同事协同的,你就可以考虑用这种方式来和他协同。 那这就是典型的 code review 的 场景,就是和 github 集成之后,它就会自动的,你看 github 会自动的帮你把 review 的 这些问题列罗列出来,并且告诉你哪些是 hi, 哪些 made, 哪些 low, 然后如果你要是懒得去处理,那你就直接跟他说,你说你帮我修复,它就会自动帮你修复啊,修复完了之后它会帮你提个 pr, 提完 pr 之后告诉你我改了什么内容,然后这就是这是整个一个集成的一个场景啊, 然后啊,快速 mode 啊,接下来我介绍一下快速 mode 啊,快速 mode 什么呢?就是 spot 驱动的义务,义务任务为派。其实这个问题也非常好理解,就是我们在软件研发过程中 经常会有一句话,需求,这是大家最痛恨产品经理这个事,对不对?产品经理就一句话,然后你把这给我实现了,这肯定是实现不好的, 对吧?啊?那所以呢?如果我们想让这个我实现了,这肯定是实现不好的,对吧?啊?那所以呢?如果我们想让这个我实现了,这肯定是实现不好的,对吧?啊?那所以呢?如果我们想让这个我实现了,这肯定是实现不好的,对吧?啊?那所以呢?如果我们想让这个任务写个 prd, 把需求文档写清楚, 这是第一个场景,第二个场景,哪怕是今天给各位配了个实习生,配配了一个这个实习生来一起来工作,你这种一句话任务他也是搞不定的,因为他根本就不了解你,你的需求你都没描述清楚,甚至你自己都没有想清楚,对吧? 那这种时候怎么办?其实就是通过我们不断的去对焦聊,所以说技术人员要写什么?要写这个技术设计文档,他就知道怎么去做,最终做出的样子是什么样子。 那整个这些过程其实就是 spec, 我 们讲我们和 ai 的 协调,不要把它想象成工具,它就是你们就是在和人去协同,那你去人协同的时候,如果你想让他把一个任务完成,那你就应该把这个需求描述清楚,而不是就一句话,需求啊,这就是 spec, spec 今天就是把任务能够描述清楚一个点,所以你想啊,今天给你派了个实习生,你给他布置任务,你说帮我把这个改成红色,把这个绿色改成红色,他可能五分钟改完了, 五分钟之后他又来打扰你了,他说我下个任务干嘛,对不对?你说把这个字体从十六号改成十四号,对吧?这都是很简单的任务, 你要一步步提交,但是如果你能描述清楚,你说整个网页从绿色给我改成红色,字体改成什么样子,整个风格改成什么样子,你能把这些需求描述的比较清晰的时候,其实这个实习生他说, ok, 这个工作量我需要做一天,他一天之内不会来打扰你 啊,你就专心做你自己的事情,一天之后,一天结束之后,他把他今天的工作成果呈现给你, 对吧?所以这是什么?我们把他描述的够长,这个任务相对是复杂一点的。另外一个我们期待这个任务交代给他,他能够执行的时间够长,而不是不断的去打断我,把我的心流打断掉,对吧?这也是我们 spec 的 含义, 所以我们就通过 spec 这种方式啊,就是大家把需求描述清楚,然后告诉 ai, 然后去做。但有些同学又说,哎,那 spec 这个写,写这个需求文档,写这个设计文档也很烦啊,我也不想写,那怎么办呢?那今天就是你还是提一句话需求,你提了一句话需求之后 啊,这个 ai 呢?他会去理解你的一句话需求,对于不清楚的需求,他会来问你,就变成了不用你去写,而是变成问答式的。他问你是不是这样子,比如说,呃,你说今天我想做一个,给公司做一个网页,这个网页我希望炫酷一点,对吧? 然后 ai 就 蒙了,你像交给你同事,你同事也蒙,什么叫炫酷啊?对吧?那 ai 是 一样的,他读到炫酷这个词的时候,他就问你,他说什么是炫酷?对于你这个任务,我今天是 中等信心度或者是低等信心度才能把它完成,为什么?因为需求不明确,那他就问你了,他说什么叫炫酷啊?啊?目前主流的炫酷是这种风格是你喜欢的吗?因为很可能你也不知道你想要什么,你也不知道什么叫炫酷,对吧? 然后他说,比如说现在主流的这种风格是不是你喜欢的啊?如果不是的话,那么你可以再描述一下你的风格,或者是我们再深入讨论一下这块怎么办?第二个,你只描述了需求,你没有描述技术站的实现, 那你是只通过这种 max j s 前纯前端的实现类型呢?还是我们前后端都要去实现呢?对吧?还是我就写个静态页面就行呢 啊?第三就是你这个,你只描述一个公司的主页,你的主页难道只有这么一个蓝店页面吗?有没有什么其他的公司介绍啊?什么联系我呀等等这一系列模块啊?他会跟你商讨, 他会去一步步引导你把整个需求描述清楚,然后你呢,就是按照他的引导回答问题就好了,回答问题之后他会把整个文档给你写清楚,写完了之后你看一下,你说, ok, 这个文档就是我想要的,这就是我想要的东西,然后你说你去干吧, 然后你交给他去干了啊,这就是整个 spec 驱动的编程啊。所以说我们第一步就是啊 spec first 描述一个需求,然后通过这种呃,跟 ai 同步对焦的方式,他帮你写个 spec 啊需求文档。第二步就是他开始执行,按照我们约定好的 spec 去执行, 那么因为描述的够清楚了,所以说他基本上不会来打扰你,但是过程中还是会有些问题,他跟上下文相关的。比如说,呃,今天我说咱们去吃好喝好,然后安排你们说我给你们买个咖啡吧,然后这附近有一家星巴克,结果那天点背,那星巴克就关门了, 对不对?那可能他要问你,他说星巴克关门了,旁边有家瑞幸,我能不能买瑞幸,哎,这个时候他要跟你交流了,所以说正常而言他跟你执行是不会来打扰你的,但是如果遇到一些具体问题的时候啊,他会来跟你互动,来来叫醒你。 第三个事情就是他所有的事情做完之后,他会做一个 report, 告诉你说我接了你这样一个需求,干了这些事,写了这些代码,他们之间差异在哪啊?整理一个报告文档给到你,这是 spec 驱动啊,所以说在一些异步的长时间的研发任务,你就可以交给他来做了啊,他的一个很大的特点就是异步, 就是你把这个任务交给他了之后,他就不占据你的这个精力了,你可以继续干你别的事情,而不是你要盯着他干活,然后你你不能干别的,是你交给他了之后就委派出去了啊,他去干他的事情, 然后你继续干你的事情,只有他有需要的时候来向你求助 啊。这就是刚才那个讲述的是在 ide 里边,我们怎么去委派啊?这就是刚才那个讲述的是在 ide 里也是一样的啊,在 ide 里面,你 问了一个需求,他就给你澄清啊,比如他就开始问你,他说你你,你问了这么一个问题啊,他就开始问你,他说你这个写的不够清晰啊,你这个功能范围是什么?技术偏好是什么?数据源是什么?部署环境是什么?然后他要问你了,你看掉了一个 ask user 的 工具,然后你在这里面就回答就行了 啊,他会给你一个呃建议。一般而言,第一条都是他给到你的默认建议,如果你懒,你看了一下他给你的建议不错,你就说都按你的来啊,那他就随意去发挥,按照他那个建议去执行了,如果你哪条不满意,你就说哪条,哪条要改一下就可以了,然后他就会写一个文档,写一个文档之后就把委派出去了,你就不用管了。 好,那我今天的分享差不多就这里就结束了啊。然后,呃,大家如果需要下载 c r i 的 话,其实非常简单,就自己一条命令,然后 mac, windows 用 mac 和 linux 用这条,然后如果 windows 的 话用 npm 来安装就可以了,这样的话就可以把这个安装上来了。好,我今天分享到这里,谢谢大家。
粉丝4673获赞6229

今天啊,我们要聊一个非常重磅的新品,骁龙八阵三,相信大家已经期待很久了吧,那今年的 a 十七 pro 呢,能效进步我们觉得不及逾期啊,这让我们很多的数码爱好者都把希望已经寄托在了高通的八阵三上,毕竟去年的八阵啊,确确实实给我们带来了惊喜, 那么这次的八阵三是否又能够延续八阵二的神勇表现呢?我们啊现在已经拿到了首台搭载八阵三的手机小米十四,今天就借助这台万众期待的新机,给大家来看看骁龙八阵三的真实表现吧。骁龙八阵三这颗处理器啊,有意思的地方还挺多的, 他是第一颗使用二五 v 九点二新版指令机架构处理器,也是高通第一颗纯六十四位的手机芯片啊,没错,咱们终于啊在硬件层面完全淘汰三十二位了, 可喜可贺啊。尽管工艺之城的大节点并没有迎来更新啊,仍然使用的是太极殿的四纳米打造,但是八阵三啊,还是不乏一些设计上的创新之处。咱们先从 cpu 开始看看 去年的骁龙八加二上,高通破天荒的打破了传统的一加三加四的核心配置,把一个小盒换成了大盒,改成了一加四加三, 那么在二并没有带来太多创新的情况下,高通通过增加大核,依然显著的提高了八正二的多核性能以及多核的能效。那么到了今年的八正三上啊,那高通看这招有用啊,就更进一步啊,这次的八正三再置换出了一颗大核,他现在是一加五加二, 也就是一颗全新的叉四超大核,加上五颗新的 a 七二零大核和最后只保留了两颗 a 五二零 小盒啊,然后这次呢,叉四超大盒频率跑到了三点三 g 克,而 a 七二零的大盒又分成了两组,有三颗啊,居然可以干到三点一五 g 克的高频啊。另外两颗呢,则现在二点九六 g 克以下,而 a 五二零的小盒呢,也提频到了二点二七 g 克啊, 总共六颗大核,加上这么激进的峰值频率,我非常期待它的多颗性能表现到底有多强。那正好呢,已经收到了叉四和 a 七二零,我们就该聊聊 cpu 架构了, 有一说一啊,二木今年的新架构,能聊的东西可比去年多多了,尤其是超大和 cotxx 四变化很大。那么自从 x 一核心推出以来啊, cotxx 系列核心一直走在更宽更强的路上,越走越远, 和 a 七百系列的核心啊,规格差距也越拉越大,那到了叉四这一代,它的核心规模甚至啊,已经可以说和苹果的 a 十七 pro 大盒平起平坐了,而且你会看到整体的设计思路上也非常的类似啊,叉四的前端史无前例的用上了十宽度的解码,这不仅比叉三宽的多,甚至比 a 十七 pro 也要更宽, 分支预测也有改进,相应的 l o b 深度也从叉三的三百二提升到了三八四啊,配合前端的显著变宽,后端的规模也变大了不少, a l u 单元从剩的六个增加到了八个,这也和 a 十七 pro 的规模平起平坐,再加上最大支持 l 二缓存从一兆提升到了两兆,那综合来看呢,叉四应该会给我们带来相当可观的性能提升啊。那我们跑了 spec 二零一七,似乎也已经印证了这一点, 三点三 g 克的叉四,相比较于去年三点二 g 克的叉三啊,整数性能暴增了百分之十八,浮点抢了百分之八,那综合 下来呢,也已经超过了两位数的 ipc 提升了,这性能确实给力啊,但做到这么宽,功耗上面确实就很难控制了。叉四的整数功耗从四点一瓦暴涨到了五点七瓦,而浮电功耗呢,也从五点四瓦干到了六点七瓦。这个单和功耗啊,我觉得 确实有点让人汗颜啊。那他说是给 pc 打造的一颗处理器都不为过。那我们现在还不知道他的中低频能效是个啥结果,但是从这个高频的情况来看,叉子这颗核心已经可以说是为了高性能不惜一切代价了。 那如果用它和苹果去类比的话呢,差不多就是接近 a 十七 pro 的功耗,然后跑出来了接近 a 十五的性能。呃,如果用这种说法的话,是不是感觉好像也没有那么烂呢?反正二亩这个超大盒啊,他走着和苹果一样的路线, 但是实力上确实还是有一点差距的。那接下来咱们来看看 a 七二零啊,那其实从微架构的层面来讲呢, a 七二零的进化幅度呢,就没有差四来的那么大了, 他相比较于 a 七幺五啊,更多是对微架构细节上的优化,比如说对分支预测的改进。那 a 七二零的分支预测错误惩罚周期呢?从 a 七幺五的十二周期降到了十一周期, 再加上 l 二缓存的访问延迟,也从十周期降低到九周期,以及一些其他方面的细微改进啊。那总体来说呢,他的设计思路还是对 a 七二五的小学小谱,而我们自己都已经把 a 七二零的主要方向定在了降低功耗上面, 那当然呢,这一点恰恰是手机所需要的。那 spec 二零一七我们测下来啊, a 七二零相比较于 a 七幺五,它的整数能效提升呢,其实是有限的。这次改进比较大的是浮点能效, 那八正三的这颗 a 七二零频率上呢,比八正二的 a 七幺五又高出了一档,那功耗呢,却仅仅高出了零点一瓦度啊,那与此同时,浮点性能呢,却要比 a 七幺五强出了百分之十二,可以说这个 a 七二零还算是称值的。 至于如今只剩下两个的 a 五二零小河马,那作为二木家族最丢人的系列啊, a 五百系列啊,一直保持着顺序执行的传统啊, a 五二零依然不例外。所以你完全不用期待他的性能,甚至为了提升能效啊,他还牙膏倒吸了他的整数, alu 单元从上代的三个收取到了两个啊,而我们还很自信的说,他可以通过优化来弥补性能啊, 是我们实际测下来, spec 二零一七里面, a 五二零超了多少屏就进步了多少性能, a p c 可以说 说是原地踏步,而且能效上面也很难说有什么改善,反正这个破小盒啊,还是我们熟悉的这个味道啊,怪不得他又被缩减了一个。那总体上来说呢,八阵三的 cpu 部分变化依然是挺大的 一个呢,是全面的六十四位化,彻底抛弃了三十二位的负担。二是核心布置上的再度调整,弱器的小核进一步缩到两颗,把更多的位置留给了大核和超大核。 三是二木新架构的升级,包括叉四的疯狂堆料和 a 七二零的能效升级啊,应该说这颗 cpu 啊,算是有眼看头的了。 那除了 cpu 之外,我觉得八阵三的 gpu 啊,才是大家最关注的焦点。那这次高通呢,并没有升级 gpu 架构,它还是属于 and reno 七百系列。但是八阵三啊,在上一代已经很庞大的 gpu 基础上,再度增加了普京规模,并且这 这颗 gpu 不仅支持硬件光锥,它还支持网格着色啊,特性上已经拉平了 hg pro, 可以说这真的是一颗 pc 级别的 gpu 了。那考虑到苹果那边的 hg pro 的 gpu 啊,连八加二都没完全打赢啊,那我就非常好奇啊,今年这颗八镇三的 gpu 到底能领先多少啊, 包括这次的 npo 算力也已经暴增了一倍,甚至已经可以离线运行大圆模型了。这块我们以后呢也会来实际验证一下。那好了,硬核的价格分析就差不多了,是时候拿出观众朋友们最喜闻乐见的竞技场环节了,是骡子是马,拉出来遛一遛就知道了。 好了,我们先来看看 cpu 的表现啊,在迪克奔驰五里面呢,论峰值性能,八千三确实很给力,单核接近一千七百分啊,这已经很接近苹果的 a 十五的水平了,多核性能更是暴涨到了 六千七百八十二分,这甚至比 a 十七 pro 还要高啊!哇,逆天了呀,高通居然在 cpu 多核上打赢苹果了, 这真的让人意想不到啊,这个堆合玩法简直是屡试不爽啊!当然呢,峰值性能也就图一乐啊,那我相信在座的各位更关心的肯定还是能效啊, 所以咱们就把咱们最最重要的能效曲线放出来吧。那由于我们啊,目前还没有拿到入的权限,所以这次八阵三的能效依然也只是测了两个点,不过也足以看出端体了, 八正三的多核风智能效非常给力,主板功耗比八正二只高了一瓦的情况下,性能却暴增了一大截啊,他的这个风智能效甚至已经打赢了苹果的 h 七 pro 啊!时隔不知要多少年,安卓阵营终于在 cpu 多核 能效声称王了,这真的太不容易了,这个堆核策略在 gb 五的能效曲线里非常有效,不过堆核对于低频能效就没有什么用了,甚至少核呢才是对低频营销更有利的。所以这里面呢,八正三的低频能效比较一般,相比较于八正二并没有多少进步。 不过这次的八正三啊,或者说这一代二木架构有一个比较重要的创新,就是他可以部分关闭 l 三或者说 slc。 那这样一来呢,在调度上啊,就有了一种新的玩法, 就是说我们可以关几个河,再关一部分缓存来获得更好的低频能效。那我不知道实际执行起来对于厂商来说好不好调度啊,但这招理论上对于低频是很有用的,那等到我们有了入的权限之后,我们还会再做进一步的测试。那除了 gike 奔驰五之外呢,我们也做了 gigi 奔驰六的能效曲线。这两 两个测试啊,其实都值得一看,因为他们的侧重点并不一样啊。 kick 奔驰五呢,是多核分别跑多个负载,他可以最大限度的发挥出 cpu 的所有实力。而 kick 奔驰六呢,则是多核 协力一起去跑一个负载,那这样呢,其实比较符合现实中手机跑各种 app 的实际工作方式。 那除此之外呢, q 奔驰五会更多的调用系统的运行库,成绩会更多受到各家厂商 os 的影响。而 q 奔驰六呢,则很少调用系统库,它使用原生的 cloud 十六变异器,不同厂商的同一款芯片啊,成绩会更接近,能够减少厂商针对跑分特调系统的影响。 这两个测试呢,我们都会放出来给大家看。好了,这个奔驰六里面啊,苹果会比这个奔驰五更具优势一点,那毕竟对于多核处理器来说,尤其像高通这种堆合玩法,那它的合阅度 多就越难利用完全所有核心协同跑一个负载,肯定会有更大的性能折损。不过八阵三啊,哪怕是在苹果占优的 kik 奔驰六里,表现也丝毫不怂,尽管风驰功耗比八阵二高出了一大截,但性能也得到了暴增。 最后看峰值能效啊,八阵三居然也还不错,至少已经可以打赢 a 十六了。实际上呢,从八阵二到八阵三的中高频 cpu 提升啊,要比从八 plus 到八阵二的提升大得多。考虑到这几年甚至都没怎么进步工艺制成,那这么大幅度的 cpu 进步在我看来是相当了不起的。 总结一下 cpu 啊,架构上二五公板还在努力追赶苹果叉四单核呢,用爆炸级别的公号换来了 a 十五的性能,那虽然仍然还是有差距的,但如果苹果再这样挤压高的话,迟早是要被追上的。而在多核上面, 得益于高通的堆料和 a 七二零不错的表现,八正三的能效已经非常给力了,中高频能效相比较于八正二大幅提升,甚至他已经有和 a 十七 pro 一较高下的资本了。 这八阵三的 cpu 啊,我觉得已经明显超出了我的预期了,表现很给力。那 cpu 已经这么强了,高通的传统强项 gpu 这次还有没有给我们带来惊喜呢?我们先跑一下 gfx 奔驰啊, 八乘三的 gpu 在已经很强的八乘二的基础上再度提升了百分之二十的性能,这下他的 gpo 是彻底和 hg pro 拉开差距了。我们再来看看能效啊, 八正三并没有像苹果和发哥那样用大量的功耗去换取 gpu 性能,八正三的 gpu 跑满也就八瓦多不到九瓦的主板功耗,它并没有比八正二机型高太多,而性能却有了可观的性能提升啊,这个 gpu 表现可以说是移动端当之无愧的霸主了。那我们再来看看三 d mark well life, its dream 的表现。这两个测试的侧重点也不同啊, g f x 的 aztec 更多是比较接近于传统手游的渲染管线,它的 a p i 版本也要稍老一些。 we 呢,则使用了很多先进的特性,渲染管线呢,则比较接近现代的商业大作。这两种不同的工况啊,都值得我们来看一看。 苹果的 gpu 在 wildlife extreme 里是比 stack 更占优的,那么 a 十一 pro 的性能呢?在这里可以比八正二更强一些,但是他架不住八正三足够给力啊,轻轻松松,八正三就将 a 十七 pro 斩落马下,而且功耗也比 a 十七 pro 低一截,可以说是迎麻了呀。可是你知道吗, 这个还不是八阵三的极限,我们通过特殊方法呢,其实已经将这颗八阵三的 gpu 啊,从七百七十兆赫 进一步超频到了九百零三兆赫啊,这个时候 what life is dream 甚至跑出了五千一百七十分的逆天成绩啊,相比较于八加二,快了将近百分之三十八啊!当然啊,超到这么高频率,功耗肯定就比较高了,他来到了十二点六瓦, 我已经能想象到拿这个恐怖的极限性能能整出什么活来了,这真的有点让人兴奋啊!再来看看稳定度啊,八正三毕竟功耗不高,所以小米十四的 gpu 稳定度依然非常给力,哪怕降完频都还要比八正二更强, 这个 gpu 表现还是挺让人满意的吧。由于三 d mark 的跨平台特性,我们甚至还可以拿八阵三的 gpu 对比一下 pc 啊,它已经相当于低功耗版幺零五零钛的性能了,和 amd 上一代的六八零 m 核潜也差不多。而超频后的八阵三则是可以接近比 电标准版幺零五零钛和 amd 的七八零 m 核线啊。那即便是算上散热啊,降频之后,它还是能够达到笔记本幺零五零级别的性能,也就已经相当于十二年前的旗舰 pc 显卡了。 那除了传统的光山化测试之外呢?八正三的 gpu 啊,也一样是支持硬件光锥的,所以我们也来刨一下三 d mark solarbay, 来看一下他的光锥表现如何。结果啊,我们都被震惊到了, 默认的七百七十兆克下,八阵三在光锥性能上比起八阵二提升来到了百分之四十三啊,哪怕是比较擅长光锥的苹果 a 十七 pro, 在八阵三面前 也得甘拜下风啊,而且八阵三的功耗也要更低,那如果我们进一步超频到九百零三兆赫的话,这颗 gpu 更是可以跑出八千七百分以上的光锥成绩啊,他远远少 摆开了任何的对手,所以他的这颗 gpu 确实从各种意义上来说,都是现在的移动端最强 gpu 了。那这八震三的理论性能和能效看起来都不错啊。我相信大家一定非常好奇,这八震三的手机打游戏是个什么样的体验呢?流不流畅,发不发热呢? 我们赶紧就把著名的考级软件元神端上来吧。那这次的小米十四啊,在元神里面的分辨率非常有意思啊,默认的标准模式,他提供的就是正常的七二零 p 分辨率,而如果你选择高质量的话呢,你将会看到一个史无前例的一二零零 p 分辨率啊, 点对点顶满整个小米十四的屏幕啊,你就看看这个清晰度,简直是 pc 级别的游戏体验了。那些超分上采样技术啊,就算再怎么聪明,再怎么 先进,他也绝对比不上这种暴力拉伸物理分辨率的效果。可惜在这个高质量的模式下呢,小米呢,把帧数限制在了三十帧,那实际上八阵三跑幺二零零 p 三十帧的元神简直是轻轻松松啊, 我们测下来整机的功耗只需要三点九啊,感觉完全你可以放开六十针看看嘛,没准也能跑得动啊! 好了,那咱们还是来看看正常的七二零 p 下小米十四的游戏表现吧,那还是大家熟悉的虚迷城一览跑图啊,上一代小米十三的性能可以勉强征服七二零 p 的元神,三十分钟五十七点五帧已经不错了, 那么这次的小米十四是个什么性能呢?三十分钟平均五十九点二帧啊,八阵三已经可以全程非常流畅的运行游戏了,很少出 出现吊针。与此同时,小米十四的功耗还比小米十三更低了一点点,只要五点七瓦就可以做到这个性能。可以说这次 cpu 能效上的升级,使得小米十四不再用像小米十三那样去精打细算的来抠性能, 适度达到帧数和公号的平衡,小米十四可以更轻松的接近板帧,而公号上面却不需要太过担心。查看 cpu 调度我们会发现,小米让三颗大核跑在了两点二计和以下,而剩下的两颗大核和超大核都压在了比较低的频率, 应该说八阵三跑元神还只是用了几成功力,还是留了不少余量的。那么小米十四这个表现对比 iphone 又表现如何呢?那由于元神啊为苹果的埋头 api 也已经做了很多专门的优化,所以呢,能效上依然还是苹果更胜一筹。同样跑六十帧, a 十七 pro 的功耗比八加 三低了一大截,但架不住 iphone 的散热确实太烂了,尤其是玩的时间久了之后, h 七 pro 即便仍然接近满针,但降频引起的小吊针你还是能够感受到的。那我们还测试了玩游戏三十分钟后机身表面的温度啊, 由于我们这台小米十四是素皮版,它表面温度呢,比起之前测的小米十三要更高一些,最高四十五点四度啊,但仍然算是控制的不错的。那相比之下呢, iphone 十五 pro 哪怕已经更新了十七点一系统,改善了发热,那它依然达到了四十七度的机身温度啊。 曾经以发热小著称的 iphone, 如今居然成了比较烫的那个,那真是风水轮流转啊。那既然说到了散热,那我们是不是应该祭出我们的大魔王来了呢?二十五度的 wifi 环境太轻松了,能征服三十度五 g 才是真牛 牛逼啊。看起来这个环境对于小米十四来说还是有点苛刻了,跑了八分钟就开始降频了,那最终平均帧率呢?四十五点七帧相比较于小米十三算是略有提升吧,当然,它还是比 iphone 强多了。那魔鬼测试的机身温度呢,进一步飙升到了四十七点五度, 那对于一个小屏机来说,似乎也就只能到这个程度了。那我有点好奇啊,机身更大的小米十四 pro 会不会在魔鬼测试里表现更好一点呢? 那话又说回来啊,元神啊,现在已经不能算移动端压力最大的游戏了,论谁更是配置,可能还得看 更快。星球铁道这个游戏啊,对 cpu 和 gpu 同时提出了很大的考验。那八阵三表示啊,我这代的 cpu 和 gpu 可是一起提升的,还怕你崩铁不成?哎,果然啊,小米十四玩崩铁跑出了一个冠绝群雄的逆天 成绩,平均五十五升啊,他远远强于小米十三以及 iphone 十五 pro, 与此同时呢,功耗依然能够控制在整机六瓦的水平,有了八阵三的帮助,这下非游戏手机终于可以做到勉强流畅的运行高画质的崩贴了,可以说是可喜可贺啊。 那如果说米哈油的游戏都太过发烧的话,那我们也测了一下负载相对低一些的王者荣耀,结果小米十四同样给了我们惊喜啊, 这代王者六十帧的功耗已经压低到了整机二点三瓦,相比较于小米十三又降低了不少中负载游戏更加节能了。而一百二十帧模式下,小米十四首次把王者的功耗压到了三瓦以内啊, 他这个王者一百二十人的空号都已经接近别人王者六十人的空号了,这真的是够强的。 最后啊,我们也来测了一下小米十四的机身解热能力,那这一代的小米呢,对散热做了不少的改进,用了一个全新的环形冷泵,在军热版里面做了气液分离,进一步改进了散热效率。那我们实测小米十四的机身散热比起上代的小米十三 pro 还要更好一点,可以解最高六点二瓦的持续发热, 那作为一台小屏手机来说,这个散热设计算是相当不错的了。当然呢,受限于我们确实缺少入的权限,我们这次还有很多东西没有办法给大家展示,但已经足够给八阵三和小米十四定个性了, 这次的八正三表现可以说真的是超出了我们的预期啊,我本来以为八正二已经够优秀了,那八正三稍微挤挤牙膏就行了吧,毕竟明年高通就上自研 cpu 了,这都最后一代二木工版了,也就不用那么卖力了吧。结果八正三 三居然是毫无保留了,带来了可观的性能提升啊, cpu 和 gpu 都在能效上继续进步。感觉这代小米十四啊,又要继续镶一年了。 说实话,在测完 h 七 pro 之后,我对今年的新品已经没有抱太多的期待了,而八阵三这一下反而让我期待起了明年的八阵四。 沟通前两天啊,已经推出了自研的 averin 核心用在笔记本上,从官方提供的跑分来看啊,单核甚至啊要比 mr max 还要强不少, 那明年的八阵四唯一落后的单核能效或许就能够反超苹果了,届时手机圈会变成什么样的格局呢?小米十五又能够做些什么呢?哎呀,这些想想就让人兴奋啊,不知道大家对于八阵三的表现满不满意呢?那对于骁龙八阵三和小米 你的心机啊,那我们后面还会做更多的测试,也包括整活啊。期待的同学一定要持续关注我们 g k one 的频道,那如果你觉得我们这期节目做的还不错的话,一定要赏我们一个免费的点赞收藏、转发,也可以来我们淘宝 g k one 的店来买点周边支持一下我们好了,我是你们的飘哥,我们下次再见!

嘿,大家好吗?欢迎回到内等。在这个视频中,我想告诉你,关于 oppo, 一个可以帮助您制定规范的新库驱动开发。 所以 oppo spot 是 一个新的工具包。这可以帮助您使用规范驱动的开发,用于开发和维护您的应用程序。它帮助人类和人工编码,帮助计划和商定要构建的内容。在编辑任何代码之前不需要 fbi 的 钥匙,它确保你的意图被锁定。实施前, 基本上该过程将为您提供更具确定性和结构化结果,而不是随机的 ai 战斗编码输出。它使一切都与题案保持一致。任务以及规格更新 使范围更改可见且透明。现在你可能会问,这个和规格套件有什么区别?仅开规格基本上是一个更轻量级的 spiket 版本,因为它的命令更少,设置更少更开放的规范。使用两个文件夹模型, 有当前状态的规格文件夹,然后是提议的更改文件夹更新此模型更好地扩展。 当您修改现有功能时或触摸多个规格。另一方面,规格套件最适合绿地或者你从头开始的全新项目。一旦您的代码库发展跨规范管理,更新和更改 变得很乱,因为结构较少,对于正在进行的开发来说并不理想。总之,开放规范有望带来更多控制清晰度和可能性。因为您使用规范驱动开发,构建和维护您的应用程序。许多流行的 ai 工具也支持它, 像云代码,光标开放代码,提拉代码和许多其他代码。所以,接下来我将向您展示如何设置在您的应用项目中。现在,在我们进入激动人心的别忘了订阅我的 youtube 频道, 这样你就不会错过新视频。这真的可以帮助你提高你的技能,也不要忘记点击铃声已获得通知。每当有新视频出来, 非常感谢您支持该频道。你真的帮我拍了有用的视频,就像这个一样。首先,您需要使用 npm 安装该工具,这意味着你必须有 npm 安装在您的计算机上。如果你没有 npm 已经这样,您可以在 npm 免费安装它。二个只需单机。此处的安装按钮 让它启动并运行。安装 n p m 后,在此处复制命令,打开您的终端。面对命令按回车键安装需要几分钟,但一旦完成,您可以通过运行打开 spot fashion 命令。已查看是否已安装 好的我这里有。现在我们可以在我们的项目目录中出土化 open。 我 将在 vs 代码中这样做。所以在屏幕上,我已经继续并创建了一个势力应用程序。我将在 openstack 的 帮助下构建。 目前这是一个刚刚使用反应生成的反应应用程序。我们可以尝试使用 npm run dev 运行它。这里我们可以看到还没有任何东西。所以回到 vs 代码中,我们现在要做的是初步开放规范。在此项目目录中, 我要在这里展开终端窗口,这样你才能感觉更好。然后在其中运行命令 openstack, 这将初步划该项目的开放规范。现在他说您需要先配置开放规范,所以只要按回车键。而现在 openstack 目前支持许多流行的扩展和 id。 一, 比如 cloud code, 客户端,光标, win serve 等等。 现在我要使用批啦代码,因为那是我日常工具的一,但你可以选择任何其他选项选择您的工具,然后在此处按回。您可以撤销选择。如果你不知何故选择了,但如果不是,请按回车键。就这样,现在打开归工作流程,并将模板添加到项目目录中。 这与 spiket 的 工作原理非常相似。所以如果你去这里的 project xporter, 您可以看到 dk 了 code 工作流文件夹。它具有打开的规范自定义命令。如果您在此处打开,打开的规范有特工在用于说明的 md 文件,以及更改和规范目录 技术流荡的地方。好吧,接下来的步骤由开放规范提供在这里的终端上。所以首先要做的是填充项目包含您的项目详细信息的,比如总结件使用的文本标签和约定。 你可以让人工智能帮忙,所以帮我打开你的 ai 助手。这是杀手代码。然后将提示粘贴到聊天框中,按回车键发送提示。让 tlo code 处理一下请求。它将扫描项目,找出项目内容的摘样, 然后添加技术细节,例如使用的税收堆栈如何运行等等。好的,所以 tlo code 已经完成了。第一步,我们可以在屏幕上看到项目描述。 然后下一步是提示你要添加的新功能的 ai, 然后是这个指令,为该功能创建开放规范更改建议。现在我已经有提示了,它有点长,所以我要把它贴在这里。 基本上,这个提示描述了我想要构建的应用。这是拆漏风格,用于管理任务的橱柜板应用程序。这里我描述了规格,例如列可以做什么, 然后是卡片以及将数据保存在本地存储中。保持这个应用程序。我要求它实现 e o i 和 js 逻辑完全按照上面的规范保持代码干净易读。 在这个舞会下面,只需添加为此功能。创建开放规格更改建议。正如开放规格所暗示的那样,按回车键并让代理处理请求。一旦准备好,代理将从生成提案开始。对于这个新功能,提案将列出此更改的原因 以及项目将发生的变化。之后它将生成任务,可以由 ai 代理逐步执行。 在编辑规范文档之前概述了场景,这需要通过改变来实现。这其实很方便, 因为这意味着您获得了完整的技术要求。只需一个命令或提示符。在 spike 中,您必须一个接一个的生成它们。一旦一切都完成了,你就可以去求婚了。任务和规范文件,看看它们是否正是你想要的样子。之后您可以开始执行任务, 但如果这是您第一次运行 openstack, 然后你也可以在这里运行。第三,也就是要求 ai 解释 openstack 的 工作流程。基本上,您可以创建更改题案,通过运行上一个命令,然后实施它们。通过告诉代理继续或实施规范。 您不必运行自定义命令。作为开放规范将为代理提供正确的上下文。一旦改变完成,您可以存档更改。因此打开规范,并区分过去的更改以及当前的情况。更多详情,您可以在此处读取第三个命令的书,但现在让我们继续实现新功能。 只是从人工智能让我们实现这个代理将开始处理请求, 正如我们在这里看到的,他将对应用程序进行修改。他也适用于应用程序样式。在踢拉代码中,他会的还在后台打开浏览器以测试应用程序。一旦一切完成,他就会说任务完成。 我们可以自己开始探索应用程序。现在这需要一段时间,所以完成后我会跳过一点。好吧,一切都已经完成了, 所以是时候探索结果了。我会在这里打开浏览器,而且造型好像有点不合适。我认为董事会的头像先加列按钮可以在这里向右延伸, 但我们还是先测试。 now。 现在让我们创建一个新列。对于这个名字也许是泰瑟斯。好的,该列现已创建。让我们在这里未完成的泰瑟斯创建另一个,然后是另一个积压的。 现在让我们试着拖动柱子。好吧,他们可以换个地方。现在让我们添加一张新卡。我将此称为探索开放规范。 对于描述,让我们暂时让它空着。对于颜色,我会在这里放蓝色。好的,卡片已创建。我们可以看到左边的蓝色口音。让我们暂时编辑它,然后添加描述。 好吧,我们可以在卡片上添加描述。太好了,让我们移动卡片。好吧,有用。那里还有个小动画。改变版的角度。当卡片四处移动时,所以这是一个非常好的接触。现在让我们创建一张新标题,将被标记为存档 给它。红色。这是第二张牌。我们也可以移动它。最后让我们删除这里的第一张卡片。好吧,现在删除一列。 它起作用了,所以功能似乎没有问题。我们绝对可以进一步改进它,调整样式以更灵敏。但现在让我们回到 vs 代码。由于提议的更改已实施, 所以我们可以在这里运行 openstack。 这是开放规范存档规格名称,然后添加 yes 选项。这会将此规范标记为已存档,并将其从活动更改中删除。所以回到聊天框并按回车键。 我们可以在这里看到代理想要运行,打开规范命令,所以就允许吧。现在更改已存档。现在您可以发送新的更改提案,所以我就在这里做。让我们提示代理调整橱柜版的 css 样式并使其响应。 在那之后,只需添加相同的指令即可创建开放规范变更。建议按回车键,代理将处理新的提案请求,他将生成提案,然后是任务和规范文件。 如果你喜欢这个视频,并且很乐意支持该频道,你可以考虑捐赠给我的频道。通过下面的超级感谢选项,或者你可以考虑加入我的 youtube 会员。您可以在哪里使用此频道的表早访问新视频以及更多内容。 简而言之,这就是开放规范的工作原理。总体,这是一个非常棒的工具,可以转动提示结构化 看得见的提案,以及可以指导你的 ai 代理的落地方案。您还可以查看所有活动的提案。通过运行开放规格查看命令。在这里,您可以看到规格摘样 主动变化,已完成的更改和任务进度。本概数更容易记住项目中做了什么。我绝对注意到的一件事是,开放的规格确实更像幻象。与规格套件相比,因为只有一个命令或提示它可以生成提案新功能的任务和规范。 在 spikit 中,每一步都有一个命令,而且降价文件也更精确,并输出更少的单词。与 spikit 的 输出相比, 这意味着从长远来看使用更少的代币。如果我们看看这里的杀手,请注意它的成本仅为一美元。生成一个功能规范并实施它,而在 spiket 中,它可能会花费更多,不像斯派克特,只在尽可能详细和精确。 开放规范不会尝试填写太多细节,而是它产生了足够的联系人。你可以查看和修改你认为合适的。所以,如果你有兴趣尝试一试,只需前往其 github 存储库,因为它是免费和开源的。我会在下面的描述中留下一个链接。 现在,我们来到了这段视频的结尾,那么你对开放规格有什么看法?我鼓励你亲自尝试一下,让我知道你的经历。我希望你们都喜欢今天的视频,并从中获得一些价值。 在下面的评论我会加入对话,并尽可能多的回复。另外,如果您是频道新手,我希望你能学习如何编码和使用人工智能工具。如果你觉得有用的话,别忘了喜欢这个视频。



还在为选择 ai 编程工具发愁吗?今天我要告诉你一个超实用的选择秘诀。根据项目新度和流程需求,我把市面上最火的四款工具做了分类。想追求流畅与自动化, kiro 绝对是女菜,需要严格流程和审计跟踪。 stack it 就是 为量身定制,如果是安全改造,遗留系统, open stack 能给你最稳妥 的保障。至于那些想探索编程未来范式的集客们, tsel 选择工具的关键在于你的具体领域是新项目还是旧系统,个人开发还是团队合作。 工具的共同点在于,他们都在帮助我们把软件工程的技术性和语言写作。说到底,最强的工具永远是我们善于清晰定义和结构化思考的头脑。从今天开始,让我们不再只是填写代码,而是学会精确定优。


为什么别人可以用 cloud code 这样子的 code agent 开发出企业级的代码? 比如 antropic 说接下来三到六个月内,会有百分之九十以上的那个代码由 ai 来写,但是对于我们自己却只能开发出类似于四三九九一样的非常基本款的小游戏,比如说贪吃蛇。 code agent 有 很多,尤其是以 cloud code 为首的终端 agent, 那 么也是最近非常风靡的一种选择,包括 code x 千万 code 的 ctrl c l i f o c l i。 但是哪怕大家在用 cloud code 这样子的顶级产品的时候,开发出来的效果依然有所不同,我觉得这里唯一的区别就是大家使用 code agent 的 方法有所不同。这里我从啦到吭给大家排序一下, 接下来我也会带大家用比较吭的方式使用 coi agent 来带大家开发两个实际的项目,也是我最近开发的两个项目, 大家可以评判一下这两个项目做的怎么样。接下来就分别讲一下从拉到憨的三种不同的方法,不知道大家用的是哪一种?首先是第一种拉中拉,就比如说我现在要做一个项目,你你跟他讲一句话说,嘿,帮我做一个 video chapter 吧。 那么然后让 ai 去生成,然后再生成出一坨史商代码,这样一坨代码基本上属于狗都不用。第二种呢,它会把自己的需求写得非常的详细,比如说我这里,呃,我想开发一个工具,是 能够将 s r t 的 字幕文件转化为视频的进度条,然后核心功能有一二三四五,然后让 ai 去生成代码,然后我们再循环去修改我们的需求,然后最终生成一个勉强可用的一个勉强可用的代码,这就属于 介于拉和夯之间的 npc 的 一种使用方法,这也是我相信大多数人的呃使用方法。今天呢,我们其实核心就是想要介绍一下呃 spike 驱动。 spike 驱动呢,也是我个人认为最夯的一种使 使用 code agent 的 方式,那么它这里的核心区别是我们要先把自己的需求完全说清楚,然后再让模型去做开发。我们要一次性把我们的需求 和设计文档以及任务文档都生成出来,然后再让模型去做生成,这样才能产生出企业级的代码,否则我们只能采用最后一种拉中拉的方法去只能生产这种贪吃蛇小游戏。最后来暂停看一下 大家用的是哪一种方法,然后呢,我就会带大家用 i f o c l i 这样一个 c l i 终端的 agent 来演示一下 spike 驱动到底是怎么做的, 来做一个我自己的一个项目。这里的话,呃用这个 i f o c l i 的 核心原因就是因为我觉得呃它不需要翻墙,然后它是免费的,基本上可以做到 国内的 t 梯队的模型是免费使用的,比如说 kimi k two k two thinking、 千问三 ko 的 glm 四等一系列的模型,然后它的呃 登录什么的,下载什么的都很方便,然后也可以非常方便的集成到我们的开发环境里面,所以这里我会用它来演示 spark 驱动开发一个自己的小产品。大家可以看一下我最终开发出来的,这是我 上个月开发的一个叫做 auto chapter 吧,就是这个网页里面的就是一键生成视频章节,然后它核心的能力就是你贴上你的字母文件,然后它给你生成一个这样子的一个 呃小视频,然后你把它拖到那个剪映里面,就可以直接在视频的上方或者说下方有一个进度条一样的东西。接下来就带大家讲一下 spike 驱动具体是怎么做的。这里我们用一个开源项目叫做, 大家猜一下叫什么叫做 open spike, 就是 用这一个开源项目来给大家讲解一下什么叫 spike 驱动,这里 呃可以看到它的那个是怎么样运作的。其实核心就是指你第一步先把自己的开发需求告诉 ai, 然后再循环地让 ai 去生成一些 任务,按照特殊的规范去生成一些任务,然后直到他把这一个需求描述清楚了,然后再让 ai 去开发,让大家更方便的理解。我可以 呃用比较通俗易懂的语言来给大家解释。首先就是你的输入,先把我们要做什么东西告诉 ai, 然后 ai 去整理整理你的需求,然后我们去做澄清,确认相关那些东西,然后我们一般来说会生成三个文件, 呃,这个的话,文件的话,呃,其实不同的工具它的命名都不一样,但是为了相对来说比较通用的话,我自己个人的话就采用了类似于 requirements, 就是 你的需求,然后以及设计文档,然后详细任务,类似于这样一种方式来做描述,然后通过这种循环 去沟通的方式去生成最终三个文件,然后再让 ai 去做执行。因此它整体的逻辑是,呃先做任务的输入,然后澄清需求,澄清需求得到了三个或者说四个详细的文件,然后再让 ai 去做生做任务的一个执行, 然后我们搜索一下 iphone c i, 然后进入到这个 gitlab 的 链接里面,去看一下它是怎么样安装的。这里的话它可以一键安装,针对于啊 mac 用户可以直接一键安装,然后我是一个 mac 用户,然后直接复制到这里,但是我已经我已经安装过了 啊,安装完了之后他就直接登录了,就是长这个样子。刚刚跟大家讲过了,其实我们最终的目的就是想要生成三个 需求文件,来告诉 ai 我 们的详细的需求是什么样子的,然后以及我们的架构选型要怎么样做,然后以及把任务拆解的更开,能够让 ai 更好的执行。这里其实说白了就是要给 ai 更好的上下文,然后能够让帮助他执行的更好。 所以这里我们用那个 i flow c i 来演示一下我具体是怎么样跟 ai 做对话的,然后生成出来的结果具体是长什么样子的,这里我们用左右两边的屏幕来演示看一下。你看比如说我登录了,刚刚登录了之后我就跟 ai 聊天说, 嗯,叫他在做写代码之前,先把任务需求写到这个 require requirements 里面,然后我就跟他讲我的那个需求是什么,比如说,呃,我先告诉他我的任务是什么,就是我想要为视频生成一个 chapter 吧, 然后这里的话主要就是呃输入功能,对应我们这里的第一第一个第一个输入功能,输入功能部分,然后 ai 就 会去 呃整理这个需求,然后找我们澄清,你看他就会找我们澄清说,哎,你想要生成什么东西?比如说我这个 java 到底想要做什么东西啊?我这里 然后输入输出具体长什么样,然后章节信息要什么东西,然后最终的目标是什么?然后我就非常清晰地告诉他,我希望做一个视频进度条,能够 直接导入到 capcut 等剪辑软件里面,然后最终发布到那个视频里面,然后我跟他聊很多,聊很多,然后聊很多之后,然后他就最终呃 最终把这些内容都写到了这个 requirements 里面。我们来看一下他最终写出来的那个内容是不是符合我们的要求。 你看他的那个输入输入规范写的非常的清晰,这样模型在开发代码的时候就不会跑偏,他就知道具体要做什么,然后有哪些可配置的一些参数, 然后以及一些制作流程,然后技术站什么的其实都写到了。当他写完了之后,你其实还可以对他去做调整的。比如说对于我这里,他写完了之后,他问我还有什么需要改进的地方吗?那我们肯定得要把事情说清楚。那么这里可以 让他基于呃 spike 原则去告诉他我开发的这个软件他的面向用户是什么。比如说对于我这里的, 我其实面向的用户是 b 站知识区的 up 主,主要是做技术课程,然后还有说 youtube 的 教育创作者,还有企业培训人员的一些视频制作,然后他就会再去做思考,然后把 把最终的这个用户故事相关的一些,比如说,嗯,他要一键去生成进度条,然后可以, 呃,验收标准是什么?然后他的目标是什么?做完刚刚那一些事情,他不是生成了一个 requirements 文件吗?对吧?然后我们接下来要做的是什么?看到这里来说,我就需要有一个详细的设计 design 的 文档,然后我这里是啊,是这样跟他说的,哎,我们先把这个给关掉, 我先把这个给关掉,接下来我要让它根据这个 require 的 内容帮我生成一个 design 的 文档,然后这里需要包含核心目标设计架构图,这个设计架构图是非常重要的, 然后模块划分,然后组建结构也设计清楚,列出相关的依赖,这样子就是你你解释的越具体,它生成的就会越好。我们这里来看一下它最终生成的那个结果,你可以看到 他的那个设计文档其实比我们自己写的还要相对来说更清晰。然后他还是按模块划分的,这样子对于他后续的开发来说,就返工的情况就会变得很少。可以看一下他的设计,他设计真的非常的好,我觉得比大多数 算法工程师,比如说以我为例的算法工程师,其实他都是做的要更好的。然后他还把你的包管理依赖工具相关的一些, 呃,怎么使用啊?巴拉巴拉的一系列的东西都写的很清楚,然后再去做开发,这样会事半功倍。把这一个 d 站文档输出出来了之后,我们接下来要做的是什么?我们接下来就是让他不要修改任何的代码,还是说我们要去生成这样一个 task 任务,去把任务支解, 然后它也是同样的去读取了你的 requirements 和设计文档,之后去把任务分解,生成出最终的那个 task 文件,然后 task 文件它分了八个阶段,三十二个任务。 这样子的话,每一次我们就可以让 ai 去只做一个任务,就每一次开发只开发一小个步骤。 然后我们来看一下我们最终生成出来的那个结果,结果就是三个文件,然后最终我们来看一下它生成的那个代码,它生成的代码也是非常规范化的,就是先去做那个 chapter 的 提取,然后再去做 呃视频的一个生成器,这个是我最后在跟 ai 对 话的时候,让它去做了一些性能相关的优化,然后还有你的字幕的一个解析器,其实主要就这这三大块,然后还有 c l i 的 一个工具,我还让它帮我生成了一个,呃,这个叫 landing page, 然后大家也可以直接去搜一下,叫做 auto chapter 吧,然后我们可以可以免费试用,这个我已经也已经部署了,我们可以看一下,就是在 github 里面。呃,目前为止包括我自己在内一共有五个人点了 star。 呃,这个是上个月生成的,然后这些所有的内容都是用 ai 生成的,然后主要的方法就是采用了 f 六。呃, c i 用 spike 驱动的方式去做代码的生成,然后可以看到 这样一个 auto chapter bar 的 一个能力,大家可以去呃上传自己的一个字幕文件,然后去做那个 chapter bar 的 生成,最终生成一个类似于这样子的小视频,这个大家自己去体验就好了。然后除了这个, 就是昨天我又基于 spark 驱动的原则去开发了一款工具,就是做英语学习的。就比如说我经常会问 ai 说,哎,这个东西用英语怎么说,这个,用这个东西用英语怎么说?然后, 呃,但是每次说完之后我就不记得了,所以我想开发一个自己的小工具,能够把这些东西给记录下来,比如说啊,很多话,很多话,我其实,呃, 说完之后,我希望能把它记录下来,然后我就可以去通过类似于 anki 的 一种学习方式,卡片学习方式 glad to help you 去学习我以前遇到的一些句子和句式,这些都是用它开发的,然后我可以 glad to help you, glad to help you。 然后假设已经 记清楚了, thanks a million for your help。 然后不记得,我就重重新学习, this thing is very expensive。 翻译,就这些东西 都非常的简单,但是你要是真的让 ai 一 口气生成这样子的一个 内容的话,那它其实是做不到的。但是如果说你用 spike 驱动的原则,它其实就可以完成这样子的一个任务,而且我这些数据其实都是有数据库的,就以这个为例,你看其实 都是有数据库的,这里我有几个表,我有几个表,这都是我的一些对话的历史,可以看到吧,就是他都是有数据库的,因此最终的话是可以使用的。所以说我非常推荐大家用 spike 驱动的方式去开发自己的产品,然后能够真实的用起来,而不是说仅仅停留在 小游戏里面。类似于这样子的一个简单的四三九九小游戏,这样子的话基本上是没有什么意义的,我们要开发的话还是要开发一些比较有意义的产品以上。

