Transcription
人工智能可以学习,这真的很酷。所以,如果你投入时间让 AI 学习你喜欢的东西,并学习它做错了什么,它下次就不会再犯了。美妙之处在于,所有这些东西结合在一起,对我来说就像在讲述一个故事。确保这些学习成果被记录下来,然后下次你创建一个计划时,它们就在那里。它会学习。所以,这不是一个复合式玩法,对吧?它就像一个 QA 团队。基本上,你甚至不需要编写测试。你只需要说,“嘿,随便测试一下 [音乐] 它。”所以如果有什么东西坏了,它可以立即修复,并立即验证它是否已修复。LFG 命令。所以我现在有了这个命令。我们刚才所做的一切,测试、创建视频、创建拉取请求,它只需要运行一个小时就能完成。大家好,今天我非常激动地欢迎 Kieran 回来。Kieran 是 Kora 在 every 的首席技术官,也是我最喜欢的 Cloud Code 高级用户。所以 Kieran 将向我们展示如何进行复合工程,以便每次使用 Cloud Code 时它都会变得更好,他还将向我们展示他精确的 Cloud Code 设置,以管理多个代理以及更多内容。基本上,我将在这一集中深入了解他。所以欢迎 Kieran。>> 非常感谢。我知道上次我非常享受和你交谈,我非常兴奋地向大家展示和分享我学到的东西,因为 Cloud Code 正在普及。现在有很多人在使用它。>> 是的。感觉现在社交媒体上的一半对话都是关于 Cloud 的。所以是的。>> 是的。我们就像我们身处一个泡沫中,但我觉得这个泡沫正在一点点膨胀,我喜欢这一点,因为更多的人可以创造,这太棒了。>> 好的。所以我将分享这个幻灯片。好的。好的。所以我我做了这个 [笑声] 我我做了这个关于复合工程的简陋幻灯片,基于你写的东西,你想你想先从高层次上讲一下这个东西,然后我们再深入到实际的 Cloud Code 吗?是的。是的。绝对。所以复合工程是一种哲学,我发明它的时候是在构建 Kora,它只是我从使用 AI 中学到的最佳实践,尤其是这始于一年多前 Cloud Code 发布时,因为有些东西有效,有些东西无效,这很令人沮丧,所以我建立了一种哲学,我很快就发现的是,AI 可以学习,这很酷。所以,如果你投入时间让 AI 学习你喜欢的东西,并学习它做错了什么,它下次就不会再犯了。这就是复合工程的种子。嗯,是的,复合工程哲学有四个步骤,首先是规划,然后是执行,也就是根据计划完成工作。然后是评估和审查,确保完成的工作是正确的。然后从那个过程中吸取教训并将其编入代码。这就是复合的方面。所以要点是,例如,如果你制定了一个计划,完成了工作,然后评估它是否好。它永远不会完全正确。总会有反馈或一些不完全正确的事情,或者你学到了一些东西。所以要确保这些学习成果被记录下来,然后下次你创建一个计划时,它就在那里。它学习了。所以,这就是循环的哲学,我还有一个插件,我们稍后会讲到。所以它是一种哲学。它也是我构建的一个插件,你可以使用它,是的,这就是所有东西的高层次概述。>> 太棒了。>> 让我向你展示一下这样的流程是什么样的。所以四个步骤。所以首先,如果你想跟上,你也可以自己做。>> 嗯。>> 我在这里打开了我的终端。它是 Warp。我正在以绕过权限模式运行 Cloud Code。所以,危险地跳过。我喜欢这样。 [笑声] 如果你 是的,我们会我们会讲到何时使用什么。我就是这样运行它的。我只是想让事情尽可能快地进行。如果你想跟上,这是仓库。所以,你运行这些命令。你需要添加复合工程插件,然后安装它。然后你就会拥有和我一样的流程。所以,你可以在你自己的项目里做这个,然后跟上。所以第一件事是我们正在构建什么,我正在进行一项让 Kora 代理原生化的任务,是的,Kora 是我的产品。它是一个电子邮件助手,每天两次筛选你的收件箱并进行简报,产品中还有一个助手,代理原生的想法是,应用程序中的助手或代理可以做用户能做的完全相同的事情。所以,例如,如果你可以去应用程序中的设置,然后当你和代理交谈并说你能否更改这些设置时,代理应该能够做完全相同的事情。所以,我正在努力达到那个水平,因为这非常重要,因为它使代理能够想出新的工作方式,而且它受到了 Cloud Code 如何工作的启发,就像 Cloud Code 可以访问你的计算机并可以做任何事情一样,我们发现了所有这些很酷的流程和我们可以突然用 Cloud 做的事情,这很相似,你可以把同样的精神带到你的应用程序中。所以我们要做的就是规划,它被称为工作流程计划,因为计划现在被 Cloud Code 的内部系统占用了。所以是工作流程计划,你给出一个你想要做的描述,我将使用 Monologue,这是一个语音转文本应用程序。我不太喜欢打字,所以我们会这样做。我将解释我想要什么。我想实现与我们在设置中可以做的所有事情的功能对等。所以用户可以在任何视图中进行的任何设置。我想确保 Kora 助手可以更改与用户相同的事情。所以确保我们首先查找用户可以做的一切,然后确保我们看到助手如何做到这一点。所以通过工具,通过任何我们想要的方式,你可以查看代理原生技能来学习如何最好地做到这一点。所以我在这里给出一些方向,它现在将启动,我们可以看看它将做什么以及为什么它会这样做。所以到目前为止有什么问题吗,还是这个节目由 Granola 提供。如果你一直在开会,你知道现场做笔记和之后清理笔记有多么辛苦。这就是为什么我喜欢 Granola,市场上最好的 AI 会议笔记应用程序。这是我如何使用它的。Granola 会在会议期间自动做笔记。我也可以添加自己的笔记。会议结束后,我使用 Granola 配方来提取 [音乐] 清晰的要点和下一步,以我想要的精确格式。然后我可以直接在 Slack 中与我的同事分享笔记,甚至让 Granola 自动分享笔记。老实说,在我使用的所有 AI 应用中,Granola 是最节省我时间的。立即访问 granola.ai/AI/peter 尝试,并使用代码 Peter 注册即可获得三个月免费。那就是 granola.ai/peter。现在回到我们的节目。我真的很想知道它在幕后做什么,它是在制作片段还是在查看代码?>> 是的。>> 是的。所以所以你在不同的地方听到过这个,比如你有一个基于规范的开发,你有一个任务大师,就像所有这些东西,你有一个规划模式,这基本上是 Cloud 的规划模式,但它更强大一些。它会使用更多的令牌,但也会做得更好的研究,而且这里的重点是,它会查看你当前的代码,所以它会以你已经做的事情为基础。所以如果存在模式,它会捕捉到这些模式。它会在网上查找,它会搜索关于这个的文章,以及最佳实践是什么。所以这是其他人认为好的,这也很方便,它会查看你使用的框架。所以如果你使用特定的框架或库,它会查找,它还会检查你使用的版本。所以使用正确的版本也很重要,因为否则可能会出现不匹配。所以只是确保一切都正确。所以这些是前三个代理,这些代理作为子代理运行,这意味着上下文将与主线程分开。而且你可以看到它已经有 56,000 个令牌,77,000 个令牌,[鼻塞声] 35。所以它不是便宜的令牌,但这不是重点。重点是>> 在最高计划上。是的。>> 是的。你必须在最高计划上,否则你会用完。但最高计划也不贵。如果这是你的工作,如果你通过写代码赚钱,是的,这显然物有所值,而且如果你想体验未来会是什么样子,并真正挑战自己,比如,嘿,它会是什么样子?>> 嗯,是的,你应该挑战自己,因为,是的,就像我们在 every 的 CEO Dan 总是会稍微推动我一下,因为我会说,“是的,但我们需要考虑成本,如果我们直接切换到新模型,成本将是数十万美元。”他说>> 是的,但我们也应该知道我们现在能做什么,如果我们不知道,我们就只能停留在过去,所以这对你作为一名开发者来说也是如此,如果你觉得我非常害怕,我想看看这里发生了什么,我想感受一下发生了什么,我想看看代码,放开一点,只是尝试一下,如果你看不到这里发生了什么,感觉如何,因为这也是一个完全的思维转变。>> 我意思是,平均开发者的每小时成本是多少?你知道 200 美元 100 美元会自己回本。>> 根本不。根本不。是的。>> 是的。>> 是的。所以>> 没错。是的。所以,就像目标,所以目标是得到一个非常好的计划,然后我们作为人类来查看计划。但显然,长远目标是你说一句话,它就完成了。所以这只是朝着一个我们知道并信任某些步骤和流程的地方迈进。>> 是的。>> 所以,所以最后我会分享另一个命令,它一次性完成所有事情。所以你甚至不需要理解所有步骤是什么。因为我认为这会很有趣,而且很快就会非常有帮助。但如果你是一名开发者,你想知道这里发生了什么,因为你想调整它。你想自己做。你当然可以使用我的插件,但是>> 甚至更好的是使用我的插件,看看什么有效,什么无效,然后制作你自己的版本,或者制作你自己的流程,这样你就能真正理解发生了什么。一旦你做到了,你就可以放手了。是的。>> 是的。我喜欢最佳实践研究员和框架研究员,因为我认为如果你只在 Cloud Code 中使用计划模式,它不会,它会查看你的代码库,但它可能不会做其他事情,对吧?>> 是的,这就像,这对于小事情来说很好,我使用计划模式,而且 Opus 4.5 在做事情方面相当不错。>> 但这只是,它只是好一点点,但我希望,在某个时候,Boris 会直接把它复制到 Cloud Code 中,我们就会一切顺利。所以,所以我的目标不是有一个系统,理想情况下,我会删除整个流程,一切都已经正常工作了。但>> 我意思是 Boris 基本上就是在复制,伙计,他已经复制了你的复合工程,所以 [笑声]>> 他受到启发。>> 他受到启发。是的。>> 他没有注意到。所以>> 是的。是的。是的。是的。我知道他受到启发,但我也喜欢,嗯>> 是的。但是他正在做,他正在让人们弄清楚他们应该构建什么,然后他们正在构建它,这真的很棒。>> Boris 有趣的是,他去度假了一周左右,然后他发布了大约 50 个 PR,对吧?在 Twitter 上。 [笑声] 所以我只是想知道他是否真的在工作,他发布了多少?你如何跟踪?>> 至少 100% 是他写的 AI。所以,我同意,我认为对我来说,现在也是 100%,而且是的,我过去三个月都没有打开过 Cursor,除了查看文本文件。是的。>> 好的。在我们等待的时候,这是什么终端?你用的是什么终端应用程序?>> 是的,我用 Warp。我喜欢 Warp,因为>> 是的,Warp,它也是基于 AI 的终端。这很方便,如果你做一些像 Git 的事情,它不起作用,你说“随便修复一下”,然后它也会修复它。所以,我喜欢 Warp,我也喜欢你可以轻松地分割窗口。>> 是的。>> 这是我最喜欢的。所以,好的,让我们看看,他做了这个,他正在查看代理原生架构技能。所以这是我让他在这里看的东西。我说,嘿,你能检查一下代理原生技能吗?>> 因为我们有这个,我们试图做的是,如果有重要的特定信息,我们会将其提炼成技能,这意味着你可以把很多信息放在一个地方,所以,例如,这个,让我们在这里打开它,代理原生架构,这是一个关于如何构建此类应用程序的非常详尽的长文档。这里也有很多参考资料。如果你把所有这些都加载到上下文中,你就会耗尽你的上下文。但太多了。>> 太多了。但能够访问这一点也很好。所以技能就是这样,它就像一种即时上下文。所以,每当你需要它时,它就会想,“哦,我现在需要它吗?”它会拉入那个技能文件,然后如果它还需要更多,它可以查看里面的资源,或者你可以运行脚本。所以这是围绕特定主题或工具或技能来放置东西的方式,它可以用来。所以,我喜欢这一点,你可以创建你自己的技能,你可以引用它们,这是让复合工程插件成为你自己的方式,你拥有你的技能。例如,如果你做 iOS 开发,或者你有一个 Go CLI 工具,比如,我的插件里没有这些,但你可以拥有你的技能,复合工程插件也会读取你的技能,也会应用它们。所以,这是让它成为你自己的方式。嗯,是的,我绝对可以推荐它。>> 而且而且而且你基本上,你显然不是手写技能,对吧?就像你基本上得到,不,不,技能。不。是的。>> 有一个技能,创建代理技能,在复合工程插件中也有。我想还有其他一些,但这是我拥有的那个。我想还有一些来自 Anthropic 本身。所以,是的,不要手写技能。不,但要确保阅读它们并审查它们,看看它们是否有意义,是否好。好的。所以它做到了,现在正在进行规范流程分析器。所以,我引入了这个,因为我注意到它有时会放大很多东西,它显示,是的,它会弄清楚我需要这个插件和这个页面,它被放大到如此之大,以至于它忘记了它是更大图景的一部分,有时它会忘记一个完整的页面或东西,或者它没有连接到流程,或者类似的东西。所以规范流程分析器就像,想象你是一个具有特定角色和经历的用户,看看我们是否错过了什么?在规划中我们是否错过了什么?这非常,是的,非常好。所以,这是最后一步,然后它会写下计划,然后你可以做其他事情。所以,让我们看看它在这里做什么,计划是什么。好的,它已经完成了计划的编写,这很棒。它会问我接下来做什么。所以,这里有几件事我们可以做。我可以打开编辑器中的计划,这意味着让我们看看它。我喜欢使用编辑器或查看器,因为我喜欢对我要阅读的内容的设计感觉很好。>> 所以,我们将这样做。但还有另一个选项,深化计划,这就像它只是疯狂地进行。它加载所有东西。它可以加载并审查计划,做任何你拥有的技能,它只是疯狂地进行。这就像你在 VS Code 中一样,这很棒。你也可以从一开始就触发它,但它只是疯狂地消耗令牌,做它想做的一切。而且当你使用 VS Code 时这很棒,因为真的没有什么可失去的,而且你还有令牌。所以,是的,为什么不呢?>> 是的,为什么不呢?是的。>> 所以,下一个是计划审查。如果你想审查计划,而不是手动审查,而是让代理来审查,这很方便。所以,如果你不想阅读它,或者你可以说“ YOLO 开始工作”,让我们通常我会打开计划,这也很棒,你可以与你的团队,与其他人分享。你可以要求反馈,就像 RFC 一样,无论你想要什么。>> 嗯。>> 我使用一个应用程序来阅读我的 Markdown,我喜欢这样,因为它看起来很漂亮,而不是在终端里。它只是更令人愉悦地查看非常枯燥的计划和规范以及其他东西。如果它看起来更好,我就会更喜欢它,它只是更好。所以,我有一个应用程序,我>> 你用过吗?>> 不,这是 Typora,但我已经有人联系我说他们用过免费版本。这大约是 10 美元,所以不多,但好的。>> 主题很时髦。所以,如果人们想要>> 好的。好的。时髦的,时髦的,或者类似的东西。所以,助手功能对等,启用 Kora 助手修改所有设置。所以分析,它说嘿,好的,所以一般,所以用户添加不存在。类别重新排序不存在,但大部分简报设置存在,订阅不存在,令牌也不存在。所以,实际上我们做得很好。我们只需要一般用户添加。>> 嗯。>> 嗯,好的,所以,等等,安全。所以,这些来自不同的地方。计划总是有不同的角度。所以,简报是一个。它做,我喜欢有一个代码示例,比如伪代码,因为我可以看到,如果我看到任何危险信号,我就可以感觉到它是否完全错误。但>> 它看起来,它看起来相当不错。所以,所以,正常运行时间。好的。所以它有不同的>> 不同的工具。所以,我的问题是,现在,所以,我的,我是一名工程师。所以,如果你不是工程师,你可以说,我不知道这是什么,然后去做。这完全没问题。我认为这是件好事。但如果你是一名工程师并且有自己的想法,这就是你可以复合或迭代的点。所以,让我们试试。因为,我,我看到所有这些工具,但我认为这些工具太多了。我们不能以某种方式整合一下吗?所以,所以,让我们看看。好的,我看到你创建和添加了许多单独的工具。有没有一种方法可以创建一个工具,可以做多个设置,这样它就不那么沉重了?你觉得呢?是的。所以,让我们看看它做什么。所以,就像>> 而且在这里这样做很重要,因为如果你已经开始实施这个,而且你已经过去了一个小时,或者半个小时,或者更多的令牌,就很难退一步说不,或者重写,或者你拥有所有这些东西。所以,如果你这样做,如果你花时间,最好在这里。所以>> 好的,所以好处,是的,当然,我们可以做一个更新设置工具,我想做的是,我想复合这些知识,因为我认为这更好。所以,我想说复合,砰。所以我将运行复合流程,它将从这里的上下文理解它是什么>> 然后它将开始创建一些关于类似这样的文档。所以下次它开始编写计划时,它将引入这些信息,并理想情况下永远不会再犯这个错误。>> 就像,就像,它要把说明写在哪里?只是默认的吗?>> 是的。>> 是的。所以有一个文档目录,它会将学习成果组织在文档目录中,然后 Cloud 在规划时会查找它认为可能相关的内容。所以顶部有一些前端内容,所以你也可以按关键词搜索。但它也有更新你的 Cloud MD 文件的选项。做复合工程的一种非常简单的方法就是说,你能更新我的 Cloud MD 文件吗?所以,如果你没有插件,并且你想复合,那就说,“嘿,不要再犯这个错误了,把它添加到 Cloud MD。”这是最简单的方法。但>> 是的,>> 这基本上就是提示,对吧?你只是更新,因为每次都会插入那个东西。>> 是的,没错。所以,你 Cloud MD 文件中的任何内容都将始终包含在提示中。所以它会直接遵循。所以,如果你想从一个非常轻的版本开始,如果你看到它犯了一个错误,就说“嘿,把它添加到 Cloud MD”。我实际上也一直这样做,因为有时它是一些通用的知识,不是非常具体的。就像,嘿,服务器是如何启动的,或者它试图以一种奇怪的方式做某事,而且它应该永远不要这样做,然后我会说“把它存储到 Cloud MD”,我不会使用复合流程。所以,所以,是的,这不是一个或另一个。你可以一起使用所有东西。它是 Cloud Code,并且所有东西都能协同工作。所以>> 明白了>> 是的,你可以在这里看到它正在将其存储在架构决策中,在解决方案和文档中,它也可用。而且它循环了我已经拥有的其他东西。所以,如果它相关,它会附加在那里,它会整合它。而且美妙之处在于,这些只是你仓库中的文件,Cloud 会读取你仓库中的文件,并且在这方面做得很好。所以,是的,是的。>> 我采访了另一个人,她有>> 她为 Cloud 准备了详尽的文档>> 她有时甚至不看 Cloud 更新了什么。她只是相信 Cloud 会为她更新文档。>> 是的。>> 我也这样做。是的。我喜欢,我,是的。我,我,是的。所以,这是工程学中的旧范式与新范式。是的,你有一些不使用 AI 的老派工程师,但让我们谈谈那些使用 AI 在 Cursor 或类似的东西中编写代码的工程师,但他们都想看到代码。如果有什么变化,他们会说“我最好看到变化并批准每一项变化”,而且有一种新的浪潮,比如我至少在 and,还有很多人,但它有点更像是“我信任你”。我不需要看所有的代码。我不需要读所有的代码,但我有系统和>> 嗯,我与 AI 合作的方式,我信任它们,通过这种方式,我可以让 AI 做事情,我认为文档也是如此。>> 是的,文档不影响产品。所以它只是文档。是的。所以>> 是的,它是文档。但我得说,即使对于产品,我也这样做,比如我确实看了 Kora 的所有代码,比如,因为有成千上万的人在使用它,但>> 如果我自己写代码,或者一些实验性的东西,或者 Kora 中一个我现在只是为了实验而写的部分,我不会一直看所有的代码,因为那不是重点,如果你>> 那会破坏气氛,伙计,如果你一直看所有的代码。我知道这会破坏气氛,而且复合工程的全部意义在于确保,如果你看到代码并发现了一些东西,你就确保>> 你会教它,这样下次你就不用看代码了。所以它是在捕捉>> 无论你如何工作。>> 是的。>> 嗯,并确保>> 它一直都在工作。好的。所以,现在我们已经复合了,是的,我们可以工作了。所以,我们将这样做。所以,它已经复合了。嗯,现在下一步是执行工作,也就是让它尽情发挥。嗯>> 而且显然它现在已经用单个工具调用改变了计划。更新设置现在可以进行任意多次迭代,显然,但我现在有信心,是的,这就是我想要的方式。>> 好的。>> 所以,如果你像我一样非常懒惰,你甚至不会打包或创建新的会话。但也许那样更好。所以,让我们做更好的方式。所以,让我们做新的。所以,我们清除会话,我们有清晰的>> 清晰的上下文。>> 是的,>> 清晰的上下文,因为所有内容都已记录在计划中。所以,我们进行工作流程工作,然后我们粘贴计划。我使用 Markdown,但你不需要使用 Markdown。>> 是的。>> 是的。你可以使用 GitHub 或 Linear 或任何你想要的东西。如果你安装了 GitHub CLI,它会从 GitHub 拉取,如果你有 Linear 集成,它会从那里拉取。所以,你可以找到任何你想居住的地方。所以,如果你是一个更注重 GitHub 的商店或工程师,或者无论什么,那么>> 就去做吧。>> 所以,这个工作步骤与你说的“让它尽情发挥”或“去构建它”有什么区别?>> 是的。你问了几个问题?>> 是的。是的。是的。>> 是的。所以,所以,是的,就像,显然你可以说“随便做”之类的。但一开始有一件事,尤其是在这里有一个新的、干净的上下文时,它会弄清楚,如果有什么东西丢失了,因为有时东西会丢失。所以,现在它说我有一些问题。所以,计划显示在交易中更新用户和帐户。如果只有姓名或时间发生了变化,是否仍然需要进行交易,或者它也改变了?嗯,那,我的意思是,这是个好问题,我们在研究中没有真正回答它。是的,就像有时会有一些好问题,但它不是超级明确的,你错过了一些东西,或者它删除了什么,但>> 一般来说,它,是的,它只是继续,但它现在确实制定了一个计划来解决这个问题,所以它比“随便做”要多一点,它确实构建了一个计划来如何做到这一点,让我们走吧,我只会说“让我们走吧,你来解决,随便做”。>> 那有时是可以的,而且这里有这些问题对上下文很有好处,因为它会开始思考这些事情,以及为什么它是最好的。所以,这就是为什么这就像思考模式,基本上,但就像我们推动它去思考,或者可能出错的事情,然后它会想,“哦,那可能会出错”,然后它开始思考如何才能正确。所以,这就像传统的提示工程,它为你工作,如果你>> 是的,有这些令牌。>> 伙计,这真的感觉就像,是的,这真的感觉就像你是一个技术主管或一个项目经理,管理着这个工程师,你就像在开会一样,对吧?你就像在审查他的计划。>> 是的,绝对。>> 指导。>> 是的。>> 是的。是的。是的。我,我,我上次也谈过,但就像,就像技能一样,你需要技术主管的技能和管理技能。因为你在管理这些代理,而这实际上感觉非常动手,我们仍然需要做所有这些事情。>> 是的,>> 我认为未来,我们非常接近,你只需要做一件事,然后你就会得到最终结果,而且它相当不错。而且显然你需要做一段时间的复合循环。所以,你需要训练它,但这就像给你的团队中的一个人入职一样。你需要让他们入职,让他们熟悉你的代码。但一旦完成,是的,你就可以让他们放手去做,真正地,是的,真正地让他们去跑,然后做更多端到端的事情。>> 好的,看起来它快完成了。它已经在运行测试了。>> 是的,就像,就是这样。它完成了功能,并且正在编写测试。所以,这真的很酷。而且,而且,而且之后,Opus 4.5 最酷的事情之一就是测试,因为它非常擅长使用 Playwright,并且非常擅长理解流程。所以,这个 [鼻塞声] 我喜欢,以前我仍然需要手动测试东西。就像,点击东西,显然编写测试它很擅长,但现在我们可以让 Playwright 工作。它从来没有真正很好地工作过,但有了 Opus 4.5,我认为 Playwright 真的有效。它不是超级快,但它工作得很好。>> 而且,Playwright 对于观众来说,基本上就像一个 MCP,让 Claude 看到浏览器,对吧?看到浏览器。是的。是的。它只是一个 Chrome,就像你将 Chrome 连接到 Cloud Code,然后它就可以控制你的 Chrome 窗口。Cloud Code 还有一个 Chrome 插件,你也可以使用,而且它相当不错。但对我来说,我更喜欢 Playwright,因为,是的,你可以录制屏幕,你可以截屏,我可以做这些事情,比如我>> 录制整个流程的整个视频,并自动将其添加到拉取请求中。所以,我只是更喜欢 Playwright,但无论什么对你有效,如果你喜欢使用其他东西,那么>> 所以,所以,基本上,所以,基本上,要使用 Playwright,你只需要输入一行来安装它,对吧?然后你只需要运行 Playwright test。它现在正在做什么?它正在加载一个浏览器,并在产品中进行操作。>> 是的。所以,它仍然,实际上,它仍然在修复测试,但之后我们可以只是,是的,好的,假设功能已完成,这些>> 我认为它会起作用,因为这些只是它为特定用例编写的测试,但>> 是的,我们不需要>> 谁需要它?我需要测试。>> 但只是为了我们,我们非常>> 嗯,我们想看到它,我们太兴奋了。>> 所以你运行 Playwright test,这个命令会做什么?这也是复合工程插件的一部分。它会写一个计划,比如这里引入了哪些功能,它只是继续。好的,很好。是的,它会写一个计划,比如要测试什么,有什么新东西,有什么被引入。然后,嗯,这里,让我们暂时跳过测试,然后进行测试和播放。我们稍后会回到这一点。所以,你可以看到 Opus 在遵循指示方面有多好,我们有 Rolf Wigum 循环的东西在病毒式传播,但我还没看到它有多大用处,因为它相当擅长遵循>> 指示。好的,来了。它很有趣,因为它现在在 Dev Plz 上。>> 好的,所以,是的,所以我们在这里,现在它将控制屏幕。所以,我将稍微移动一下。是的,它正在进行。所以,它正在控制它。它正在截屏,它可以做所有这些。没有手动操作,看,不是我。它只是在测试功能。>> 好的。所以,它有点像一个,它有点像一个浏览器使用东西,对吧?它有点>> 它是一个浏览器使用东西。但美妙之处在于,这是缺失的一环。就像你当然有系统或集成测试,但这是最终的测试,看看某样东西是否有效。就像,它是否有效?而且它非常简单,你甚至不需要编写测试,而且在你的 CI 或任何地方都没有开销。你只需要说“嘿,随便测试一下”。基本上就像一个 QA 团队。>> 而且它非常棒,而且你可以说“随便做一小时”,想想所有可能出错的事情,然后真正地用力去踢,试着把它弄坏,它会试着去做。而且美妙之处在于它在 Cloud Code 中。所以,如果有什么东西坏了,它可以立即修复,并立即验证它是否已修复。所以>> 使用这个的迭代循环非常非常酷,也非常强大,而且>> 如果有什么东西坏了,它也可以检查并看到所有的控制台错误等等。>> 是的。是的。它可以控制整个浏览器。所以它可以点击元素,它可以运行 JavaScript,它可以读取控制台日志。所以,基本上,你作为一名工程师在 Chrome 中可以做所有事情。所以,它真的很酷,而且还有一个附加的东西是 Kora 连接到 Gmail,我正在做一个功能,我刚刚发布了电子邮件签名和草稿,要看它是否有效,你需要去 Gmail,你如何编写一个系统集成测试来访问 Gmail?你不会那样做。但有了 Playwright,我就可以用我的 Gmail 帐户登录,然后说,“嘿,我用我的 Gmail 帐户登录了。看看它是否有效。”然后它就去了 Gmail,就像一个浏览器一样。所以,看到它工作真是太神奇了。嗯,它奏效了。我们的功能奏效了。>> 是的。>> 嗯,这很酷。嗯,所以这是一个很好的状态,但我的做法是,确保没有安全风险,或者没有乱码,或者看起来可以更简单,总有可以做得更好的事情。>> 而且,审查命令,这是最后一个命令,或者它是,它是我们还没有使用的命令,我们已经使用了复合>> 这是评估阶段,对吧?>> 是的,是评估阶段。是的。 [鼻塞声] 阶段,它从某些角度运行审查,这是我的角度。所以,我有一个代理,它有我的工作方式。我添加了一个安全人员、架构师、代码简洁性审查员,这也是一个非常好的。嗯,就像>> 是的,Boris 也有一个,他今天早上在 X 上分享了。>> 所以 Anthropic 也这样做,嗯,还有一个审查它是否足够代理原生,DHH 是 Reels 的创造者,他只是,他有非常主观的观点,这总是很有趣,而且美妙之处在于所有这些东西结合在一起,对我来说就像一个故事。它们是出来的优先事项,它们不会立即修复,但我被要求说出我想要什么,然后说,“是的,这听起来不错,这听起来不错,这听听起来不好。”所以,让我们>> 完成这些,然后>> 是的。因为否则,如果你只是说,就像,你知道,清理 AI 的乱码代码,它就会开始改变代码,对吧?但这个。>> 是的。没错。>> 是的。是的。是的,因为我们喜欢,我们现在处于一个测试了所有东西的阶段,我们审查了计划,而且很容易进入一个增加范围或删除东西的方向,而且你需要小心,你现在不会改变太多,但你想要>> 嗯,就像非常有知识的人或代理或事物从某个角度来看待它。>> 太棒了。>> 是的。就像这是我们之前,我们有一个非常广泛的,把它带回一个计划,一个非常集中的计划,我们让那个集中的计划被处理,因为它很集中,它坚持那个计划,但现在我们需要确保我们没有错过任何东西,所以我们又变得广泛了,所以有进出,从不同的角度看,这很有效。>> 是的,所以>> 它把所有东西都编译成,它有一些东西。它现在正在做的是创建一个待办事项目录。所以,太棒了,我们没有任何 P1,这很棒。P1 是你永远不应该>> 永远不要合并这个,因为你有安全漏洞。我们有 P2,它>> 有时很重要,P3 是你可以忽略的,但是的,很好。>> 而且它正在把它写到我的待办事项中。我有一个待办事项文件夹,它正在写在那里。嗯,你也可以看到我这里有一个状态行,我可以看到有多少待办事项正在等待。嗯,但我喜欢做的是,我不喜欢读很多东西。我喜欢让 AI 引导我完成要做的事情,或者如何思考它。所以,我有一个命令叫做 triage,triage 会以一种对话的方式引导我完成所有发现,然后问我想要做什么,然后它做出决定,然后,是的,之后我只需要运行一个命令来解决所有问题,然后创建一个 PR,然后我们就完成了。所以,所以,例如,这是添加名称长度验证,我的意思是,好的,当然,让我们去做吧,这就像小事情,但就像那样,没关系,它会崩溃,因为它,它基于数据库,但这很好,好的,我们去做吧,我只是带你快速看一下>> 嗯,嗯,就像对我来说,构建所有这些子代理,你为复合工程的每个步骤都有,需要永远,伙计,所以,你把它放在 GitHub 上免费提供,这太棒了,我基本上拿了 Kieran 的东西,然后自己构建。这花了我一年时间,所以,是的,嗯,是的,这需要很长时间。但我确实意识到有些人想要他们自己的,他们更有灵感,你可以选择其中一个。但美妙之处在于,你不需要使用整个系统。是的。嗯>> 你可以只说我使用计划阶段,然后我手动编写所有代码,因为我喜欢写代码。当然。或者>> 它都是由斜杠命令触发的,对吧?就像所有>> 它是所有斜杠命令。所以,你不需要使用所有这些。>> 所以,是的,所以它将这些标记为就绪。然后,嗯,现在我满意了,例如,然后说“resolve to-do parallel”,就这样。它将处理所有这些事情。它创建了一个依赖图,以及它认为如何解决它,然后子代理将处理所有待办事项,然后推送所有东西,然后,是的,然后我们创建 PR,然后我们就完成了。而且>> 而且整个流程,就像,就像,花了多长时间?它非常快,而且,是的,非常酷。所以>> 是的,>> 我想展示的一件事,如果所有这些都只是一个命令怎么办。所以,我现在有一个命令,我 [笑声] 昨天尝试了,是 LFG 命令,基本上我们刚才所做的一切。我只需要在一个命令中说,你能把所有这些都做完吗?而且我一开始就有 Rolf Wigum 循环,基本上它做了我们所做的一切,再加上一点点。以及测试、创建视频、创建拉取请求,然后它就运行一个小时,它就完成了。所以你可以>> 你是什么意思?它创建了一个营销视频还是什么?>> 是的。是的。营销视频、产品营销、详细的变更日志,一切。所以,它就像这个 LFG at brief to CLI,或者任何你想要的东西,然后它就去做了。所以,我认为我们非常接近了。你看到很多人在做代理编排之类的事情,我认为要正确地做到代理编排,你需要一个像复合工程这样的系统,或者你拥有的任何东西,因为你需要确保,是的,它就像那个线束加上你自己的线束,所有>> 因为你在这里设置了所有这些,所以现在它让你的生活变得更容易了。>> 这就是它。是的。>> 好的,伙计。让我问你一些快速的问题。让我们从权限问题开始。所以,就像我最讨厌的事情之一就是它太烦人了,它一直在问我批准权限。>> 是的。>> 所以,基本上,所以,也许你可以退出 Cloud Code,然后,然后展示一下,你只需要输入 CC,然后危险地跳过权限。是这样吗?>> 是的。我有一个别名。所以我所做的是,我输入 CC>> 但那是什么意思?只是一个别名>> 哦,为了所有,为了完整的东西。明白了。>> 是的。它是,是的。所以,它只是叫做“危险地跳过权限”。所以,如果你进入这种模式,>> 是的,>> 它永远不会问你任何事情。它只会继续。这对于某些流程来说很好,比如你喜欢,如果你是一个系统,这样工作更好,因为它只是继续,因为检查不是在中间。检查是在你做拉取请求或合并代码时。所以,只要确保,如果你这样做,不要和它分享你的 SSH 密钥,它可以删除你的生产数据。所以,只要确保你的沙箱或你工作的电脑是安全的,因为它能做你所能做的一切。>> 嗯,但它不会这样做。技术上来说,它可以,但它实际上不会这样做。但你也可以开始批准事情。所以,如果你不想这样做,你只需要使用 Cloud,然后你说“把它添加到权限”,它就会记住下次,这完全没问题。它只是在第一周很痛苦,但之后就不会了。>> 是的。有一个设置文件之类的,对吧?或者你可以添加很多权限。>> 是的。>> 是的。它会把它添加到你的仓库,或者无论你如何设置它。那里有很多灵活性。是的。>> 但我认为在实践中,我认为 Opus 足够聪明,不会随意删除文件夹。所以,就像>> 哦,是的。就像 Opus 不会做愚蠢的事情。不,它会做聪明的事情。它不会做它不应该做的事情,比如“哦,删除了我的数据库故事 [笑声]>> 就像,它会发生,但我没有
我认为这是 Opus 4.5。>> 好的,那我问你另一个问题。所以你只是展示了 LG 的方式,然后你让它工作了一个小时,对吧?那么你首选的流程是什么?你是通过电话也给它下达指令吗?你使用的是 Cloth Code 应用,还是更喜欢哪种流程?嗯,是的,所以,我,所以一个很酷的事情,很多人其实不知道,那就是如果你在 Cloth Code 中,你可以输入百分号。>> 嗯哼。>> 这将执行你在这里做的任何事情。所以你可以说工作流程计划,嗯>> 推送,它会推送到后台。>> 是的。好的。所以如果你,如果你安装了,出于某种原因,我现在没有安装它,但它会将其推送到后台,并将其推送到网络上的 Cloth Code。所以你可以在手机上继续对话。所以在这里,你可以看到我有 Cloth 的 Cloth 应用,你可以看到这里的仓库,我甚至可以在本地工作,这也很酷,但我是在终端中使用的,但它所做的就是它从终端推送,然后你可以在这里拾取它。所以它会推送你之前的所有会话到云端。>> 这真的很酷。>> 是的。>> 而且你还可以继续。所以,例如,我们在这里,在这里你可以看到已创建拉取请求。所以我们成功了。嗯,这里,这是功能,它看起来很棒。>> 是的。>> 所以这是一个功能。但如果你,如果你很匆忙,嗯,嗯,在这里继续测试,因为我们没有完成测试,它会>> 因为这个,所以它应该会转到云应用。>> 是的。是的。所以,所以现在,是的。所以现在它应该在这里开始。>> 是的。所以在这里。好了。哇。所以它在这里的应用中继续。你也可以在手机上这样做。我必须说,Cloth 手机应用不是最好的,而且这里那里都有 bug。>> 但这真的很酷。你也可以反过来,如果你在这里,你可以说在这里打开 CLI,然后你就可以从网络上继续对话并继续下去。哦,所以你只需要输入 AMP 百分号。哦,我真不知道,老兄。是的。>> 没有人知道。是的,没有人知道,但它很,它很 [笑声] 酷。>> 你也可以从这里进行本地主机更改。>> 它会在云端创建一个全新的环境,但它会像,它会有所有的节点和东西。所以,是的,它会,它会正常工作。是的。>> 好的。好的。所以,让我问你另一个问题。所以,我想你已经向我们展示了一点,老兄。就像我认为所有这些关于斜杠命令、子代理、钩子、技能的东西,它有点让人不知所措,伙计。对于那些想学习这些东西的人来说,它让人不知所措。所以,是的,但我认为你的工作流程是使用斜杠命令来触发这些工作流程,然后这些工作流程会调用子代理,对吧?然后也许那些子代理可以调用技能。是这样工作的吗?>> 是的,因为他们,令人困惑的部分是,它们都一样,但略有不同。而且就像,什么时候使用什么,嗯,嗯,以及如何。所以我现在正在触发创建一个视频来展示这有多好,并将其添加到拉取请求中。所以如果有人使用它,我们就让它运行。>> 嗯哼。所以我的想法是,斜杠命令就像你触发事情,比如做这个或做那个,或者就像,它是提交这个,创建拉取请求,或者像你做的任何事情,就像你想控制的事情,就像你说做某事。>> 嗯,而且它的好处是它也可以是代理,因为我的 LG 就像其他 SL 命令列表。所以它也可以是你指示代理调用命令,这也很好。那就是那个,它工作得非常好。子代理主要是如果你想运行某事或做某件专门的事情,而你不需要全部上下文,但你想要一个结果,就像,我只想让某人告诉我,或者某事告诉我答案是什么,或者它有多好,或者有什么不对,而你并不真正关心全部事情,比如审查代理很棒,或者研究代理,因为你不关心它阅读的 30 本书。你只关心答案是什么。所以那时我会选择代理。另外,如果你想并行做事情,比如如果你可以同时做 10 件事,子代理是最佳选择,因为它的工作方式就是这样。>> 嗯,即使你可以做任务,嗯,嗯,你可以触发,令人困惑的部分是你可以手动触发子代理,而且你可以做所有这些事情,但那不是它们被制造的方式。所以基本上,你基本上不会手动触发子代理,对吧?你是通过某种斜杠命令触发的。是这样吗?>> 我从来没有,是的。我从来没有添加过子代理。我从来没有这样做过。不。不。>> 好的,有道理。>> 不,因为我喜欢,斜杠命令就像业务逻辑,或者类似的东西,这就是代理应该如何协同工作,我说现在做这个特定的事情,然后它就会做这件事。>> 嗯,然后你有技能,我们已经谈过了。技能就像,如果,如果有什么,例如,在 nano banana 上生成图像,使用 Gemini API,比如 Cloth 或 Cloth Code 中没有图像生成,但它会很酷,为什么不呢?所以这是一个完美的创建技能的方式,你只需要有一个技能说,嘿,如果你想生成图像,我在这里,加载我,我有一些脚本,它工作得很好。然后你就可以说,我想生成一个图像,然后 Cloth 想,哦,我有一个知道如何生成图像的技能,让我把那些东西放进去。>> 然后突然 Cloth 就知道如何生成图像了,这就像即时>> 上下文,是的,这就像在那个时候注入知识。所以,是的,那就是我使用技能的时候。是的。>> 你知道,老实说,技能触发得不是很好。当我使用 Cloud 应用时,它触发得不是很好。但也许在 Cloud Code 中它会被触发。你只需要非常明确,我真的说,比如使用这个技能来,然后它就会这样做。>> 好的。>> 是的,如果你非常具体,并且还要确保你遵循编写技能的最佳实践。有一些,比如最佳>> 描述应该是什么,因为有一些细微之处,比如你不应该说什么时候调用它,而是说我可以做这个,这个,这个,或者类似的东西,这样它就能更好地匹配。是的。好的。好的,老兄。那么,让我们结束你正在生成的这个视频吧。你将如何生成这个营销视频?你使用的是 Playwright 还是?>> 是的。所以,它,是的,它现在正在使用 Playwright,并且它正在做事情。>> 所以就像屏幕录制。是这样吗?>> 是的,它是屏幕录制,然后将其转换为更小的尺寸,然后上传。它已录制,通常它会上传。嗯,打开视频,然后我们会将其分配给拉取请求。所以我只是在这里展示一下,但它自动制作了一个视频,展示了流程。嗯。>> 太棒了。是的。>> 这真的很方便,比如如果你审查别人的代码,并且你打开一个带有更改截图的拉取请求,有时是之前,之后,以及一个完整的流程视频。这很棒。所以,让我们开始吧。这就是视频。>> 哦,太棒了。他们可以在 Slack 中分享,或者指向>> 是的,正是如此。而且它已上传。有一个,是的。是的。所以很有趣。所以它不总是,让我们看看。它在这里开始,但是>> 你得审查一下。是的,你得审查一下。>> 好的。所以,是的。所以它正在做得很好。得审查一下。但它正在录制视频,而且十次中有九次这都很棒。而且,而且这个功能通常已经有了审查,以及一些之前的测试。所以它,它更顺畅,但它真的很酷,这是一个你可以创建的工件,你可以以任何你想要的方式使用它,你可以以任何你想要的方式使用它,>> 而且只是你的一部分>> 这是你复合工程 GitHub 的一部分吗?>> 是的,它都在复合工程插件中。你可以访问所有这些,>> 这太棒了,老兄。是的。>> 是的。所以,它都在这里。如果你只想使用一个命令,你只需进入命令,你就可以看到,是的,你可以看到这里所有的命令。你可以说,“嘿,这个功能视频是一个有趣的东西。”只需将其复制到你的本地目录。这也可以。你可以在这里阅读所有内容。>> 好的。>> 所以,是的,差不多就是这样。是的,这,这太棒了。我,我认为最让我印象深刻的是 Playwright 的东西。比如我只是开始测试并制作视频的事实,这真的很令人惊叹。是的。>> 是的。这真的很酷,因为它真的,我只是在想,我总是手动做什么,而这越来越少,越来越少,因为它正在接管更多,在我看来至少是这样。>> 是的。>> 是的。>> 太棒了。所以,所以我们会在描述中放上复合工程插件的链接,而 Kieran,如果你想找到你,只需在 X 上搜索。>> 是的,在 X 上找到我,我也在 every.2 上写了所有这些东西。也推荐查看一下。但是的,很荣幸。>> 是的,这比,你知道,做所有手动的事情要有趣得多。所以谢谢,谢谢。>> 我知道。我知道。>> 是的。 [笑声] >> 干杯。>> 酷。好的,谢谢 Kieran。再见。