스크립트
00:00:00循环工程基本上已经成为我们现在使用AI代理的核心方式,这是因为
00:00:04代理现在可以实际上独立运行更长的时间,并且持续运转。所以我们接下来将
00:00:09向你展示三种不同的循环,为了便于理解,我们把它们分成了不同的层级。
00:00:13第一层向你展示基本单元以及如何高效使用它。第二层向你展示如何将
00:00:18该单元构建成一个工厂,而第三层则最终解放了你的大部分时间,使其真正具备
00:00:23代理特性。由于本视频包含的信息量极大,我们在下方准备了时间戳,以便
00:00:28你随时可以跳转回视频的任何时刻。此外,我们在本视频中将要
00:00:33使用Claude Code,但我们将向你展示的系统同样适用于Codex,
00:00:38至于工具,我们使用的是Warp和VS Code。它们安装起来都很简单,你只需要
00:00:43在两者中打开同一个文件夹并跟着我们操作即可。在我们真正进入如何在氛围编程中
00:00:48实现循环工程之前,我们需要先解释什么是循环。以前,当你在
00:00:53构建某个东西时,你其实就已经身处一个循环中了。你给代理一个提示词,它开始
00:00:57构建。然后当它完成后,它基本上会要求你进行验证,如果不正确,你就会给代理
00:01:02另一个提示词,它又开始构建。你本来就身处循环中。现在,所谓的代理循环是指
00:01:07你把自己从这个过程中抽离出来,验证的部分也交给了代理。而这
00:01:12自然是我们发展的方向,因为仔细想想,用代理构建并不
00:01:17是耗时最多的部分。它们在后台自主完成这些。真正需要
00:01:21你注意的是检查代理是否成功。但你的代理只有在知道正确输出是什么的情况下,
00:01:26才能进行验证。这是循环的核心部分。不过还有
00:01:30其他部分。首先,需要有启动循环的东西。然后是循环本身。
00:01:35在每个循环结束时,基本上都需要进行一次验证检查,以决定
00:01:41代理是否完成工作。而该验证检查需要由你来决定。所以在代理循环中,
00:01:46你保留的部分正是原本就属于你的部分。那是决定
00:01:50你是关闭代理还是需要它继续工作的部分。这部分你真的无法外包。现在,
00:01:55你可能在想,为什么我们突然转向了循环工程,为什么一年前这行不通?
00:01:59答案是当时模型无法运行这么长时间。而现在随着新模型的
00:02:04推出,它们基本上可以脱离你运行数小时。所以下面来看看我们
00:02:08运行这一切的基础。这是一个美发沙龙的预约应用。有人来到网站上,
00:02:13挑选一位发型师,然后他们可以看到这位发型师在不同日期的空闲时间并预定
00:02:17预约。接着是员工登录,因为使用此系统的每家沙龙都会有
00:02:22前台人员来操作。他们会批准或拒绝收到的请求,并管理沙龙中
00:02:27不同发型师的日程表。目前这里还缺少很多东西。没有落地页,
00:02:31而且我们还有其他重要功能需要添加。这就是我们构建它的Claude Code
00:02:36会话。我们创建了这个loop engineering文件夹,并在其中要求Claude Code
00:02:41来搭建项目。应用本身位于这个loop salon文件夹中,它只是一个Next.js应用。
00:02:46如果你是第一次听到这个,不用担心。你只需告诉模型你想要
00:02:51创建一个Next.js应用并从那里开始构建,它会为你处理好这些。这是
00:02:55构建像我们这里正在建造的实际网站最流行的方法之一。现在有
00:03:00一些东西你需要放在你的文件夹里。首先我们有Claude.md,它上面写的内容就是去
00:03:04查看Agents.md。这是因为在这个代码库中我们可能需要运行多个代理,
00:03:09不只是Claude Code。我们使用这个文件是因为几乎所有其他代理都会把Agent.md中的
00:03:14指令作为每当新会话开启时要做的事情的规则。只有Claude Code使用Claude.md。
00:03:21而在Agents.md内部,我们其实不需要自己写什么东西。然后我们有这个名为
00:03:27design.functional.md的文件,它涵盖了应用中所有用户实际需要
00:03:33操作的可点击部分。这些部分的设计来自于这个文件。如果你注意到了,
00:03:36这个应用看起来像Duolingo。那是因为我们把Duolingo的设计复制了进去。
00:03:41接下来有一些你应该了解的技能。第一个是Grill Me(严厉盘问),我们在构建
00:03:45这个第一个版本时使用了它。它会不断向你提问,直到代理真正弄清楚
00:03:50你想要什么。这里面还有其他技能,我们稍后会讲到。你会发现
00:03:55这个项目已经建好了。我们是故意这么做的。当你开始一个新项目时,
00:03:59你首先制作的是MVP(最小可行性产品),它基本上是你产品的粗糙工作版本,
00:04:04只实现核心功能,别的什么都没有。你不会想用循环来构建这个。
00:04:08MVP本来就构建得很快。但要在它上面套上一个循环,你必须在代理开始之前就决定好
00:04:13完成的标准是什么。而在这个阶段,你其实还不知道产品将走向何方。
00:04:18所以弄清楚这些最终花费的时间,比你自己亲手构建第一个版本还要长。
00:04:23但在我们开始第一层之前,如果你能订阅频道并点击
00:04:27点赞按钮,那就太好了。这个小小的支持举动对我们意义重大。这就带我们进入循环工程的
00:04:33第一层。在这里,我们处理的是一个循环,它有一个目标,并且检查工作
00:04:37基本上从你身上转移到了代理身上。我们应用此方法的场景是落地页,
00:04:42这听起来可能不太对劲,因为落地页只有一个屏幕。
00:04:47代理基本上可以通过一次运行就构建好它,如果有任何问题,用一个
00:04:51提示词就能修复,而不需要多个提示词。给落地页套上一个循环,所花费的工作量会比页面本身还要大。
00:04:57但在这里,我们需要一个使用GSAP技能的、动效密集的落地页。所有东西都有动画效果,
00:05:02仔细想想,这正是你无法通过看一眼就完全检查出来的部分。对于动画来说,
00:05:07代理可能会出错的地方太多了,这需要大量的来回沟通。这其实是一个
00:05:12判断某事是否需要循环的好方法:看它是否需要与代理进行大量的来回反复。
00:05:16现在,在我们设置循环之前,有一个命名会让人们感到困惑,
00:05:21当你打开Claude Code中的斜杠菜单时就会遇到它。有一个命令叫做
00:05:25loop,还有一个命令叫做goal,而循环工程基本上就是使用goal这个命令。loop命令
00:05:30会在定时器上运行提示词,所以每五分钟或每小时它都会再次触发,无论是否有变化。
00:05:35但goal命令会一直工作,直到你要求的事情真正
00:05:40完成。因此,当我们说循环工程时,我们使用的是goal命令。loop命令也会在
00:05:45某些表单或循环工程工作流中使用,但我们在这里不会使用它。goal命令本身非常简单。
00:05:51你输入/goal,然后写下你想要达到的目标,并且还要告诉模型
00:05:56如何验证它是否达成了目标。然后在每轮结束时,一个小模型会
00:06:00通读对话并决定代理是需要继续在这上面工作,还是条件
00:06:05已经满足。因此,为了启动落地页,我们再次使用了Grill Me技能,并告诉它我们需要该功能的规格文件。
00:06:11现在,在我们深入了解我们对它说了什么之前,你需要看看项目里面的
00:06:16features文件夹。里面的每个文件夹都是代理必须完成的一个功能,
00:06:21并且每个文件夹都包含两样东西。一个是规格文件(spec file),关于该功能的
00:06:25所有内容都写在里面;另一个是验证文件夹,一开始是空的,在代理为该功能运行循环时会被填满。
00:06:31然后我们告诉它使用哪些技能。第一个是
00:06:35GSAP技能,它能为你提供这些动画精美的落地页,但是
00:06:41如此重度的动画会让页面速度变慢。所以我们告诉它同时使用优化技能,
00:06:45它会重新检查页面并在不移除动画的情况下找回速度。我们还给它提供了一个
00:06:50图像参考来遵循,即带有插图的这个落地页。我们告诉它的最后一件事
00:06:55是关于检查的。通常,这是你和代理进行来回反复的部分,
00:06:59你查看页面,告诉它哪里错了,然后它去修复。所以我们告诉它,
00:07:04为了实际检查设计,它必须使用我们全局Claude.md中命名的特定工具,
00:07:11这个工具适用于机器上的所有项目,而不仅仅是这一个。所以它写出来的东西
00:07:15同时具备两点。它是用于构建页面的规格,也是针对该页面运行的验证检查清单。
00:07:20这就是为什么来自全局文件的截图工具最终会出现在里面,
00:07:25因为该工具截图的速度比每次都打开完整浏览器要快得多。
00:07:30如果你愿意,可以在这里暂停并阅读整个提示词。这会让所有这些变得清晰许多。
00:07:34在那之后,Grill.me进入了它的提问环节,向我们询问了关于落地页的一整套问题。
00:07:39然后我们又告诉它一件事,正是这件事将规格文件转化为了目标。我们告诉它将规格文件
00:07:45编写为目标,以便我们可以用goal命令来运行它,它在此基础上做了一些其他的修改,
00:07:50这意味着从那时起,我们所需要做的就是运行goal命令并为其提供落地页的规格文件。
00:07:55为每个功能重复做所有这些就是你不想重复的工作。
00:08:00所以我们制作了目标编写器(goal writer)技能。它包含了我们刚刚介绍的所有内容,包括那行代码。
00:08:06它的作用是在features文件夹内创建文件夹,并将规格文件直接写为目标。
00:08:11接着它开始工作,经历了第一遍运行,然后是第二遍,在第二遍中它再次拿到了检查清单,
00:08:16检查清单又过了一遍,它反复用这个来对自己评分。之后它停了下来,而那时
00:08:21它已经运行了38分钟,并返回了一个错误,那就是其中一个吉祥物的闪烁问题。
00:08:26这就是它最终呈现的效果。在给它又一个修正提示后,吉祥物正按
00:08:31照我们想要的方式闪烁,而那个错误正是验证永远无法捕获的问题,因为
00:08:36截图只能捕捉到一个单一的瞬间,而两次眨眼之间的间隙太短,
00:08:42不足以让两张截图捕捉到。除此之外,这些插图效果非常好,并且
00:08:46符合我们追求的Duolingo风格,这与主应用中
00:08:50已经采用的风格相同。它也紧密遵循了参考标准,点击立即预订可以直接带你进入
00:08:55应用,这样你就可以开始使用它了。现在,从这里开始的一切都依赖于一些设置。
00:09:00这个应用需要三样东西,而你自己的电脑无法独立完成,并且你也不需要
00:09:05自己去操作其中的任何一个,所以不用担心那部分。因此,目前你所构建的一切都
00:09:10存放在你电脑的一个文件夹中,那是它在任何地方的唯一副本。如果你的电脑崩溃了,或者
00:09:15你删错了东西,整个项目也会随之消失。这是第一件必须
00:09:20改变的事情,而GitHub就是解决这个问题的工具。Claude在你的文件夹中编写项目的代码,而GitHub会将这些
00:09:25代码传到线上并保存在仓库中,这基本上就相当于那个相同的文件夹存在于他们的网站上,而不是
00:09:31仅存在于你的机器上。第二件事是,该应用目前还不具备任何记忆功能。真实的用户
00:09:36将会使用它,因此这些预订必须保存到某个地方,否则有人预订了
00:09:41预约,然后他们刷新页面,所有的数据就全都消失了。所以你需要一个数据库,而我们
00:09:45正在使用的是Supabase。最后一件事情是,其他人实际上无法访问你的应用,因为它只
00:09:50运行在你自己的电脑上。因此它必须被部署,这也就是说它需要被放到互联网上的某个地方,
00:09:55让其他人可以打开它,而Vercel就是用来做这件事的。现在,你在那三个
00:09:59平台上实际要做的只是创建一个账号,也就是访问每个网站并点击使用Google登录。
00:10:04没有什么需要配置的,也没有什么需要设置的。在此之后的一切都通过代理来完成,
00:10:08之所以行得通,是因为这三个平台都提供了CLI。你的代理无法像你那样
00:10:14在网站上点击。所以CLI是供代理使用该平台的应用程序。通常你需要
00:10:20在GitHub中创建一个仓库,并在Supabase和Vercel中创建一个项目,但Claude可以直接通过CLI来完成这些。
00:10:26所以在你在所有这三个平台上创建好账号后,你回到代理那里,告诉它
00:10:31你希望代理通过CLI使用这三个平台。它会为你提供相应的命令,你需要
00:10:37在另一个终端中运行这些命令。你的代理已经运行在你的终端里了,所以你打开一个
00:10:41第二个终端,然后把那个命令粘贴进去。它会为你安装CLI,然后为了
00:10:46登录你的账号,它会在你的浏览器中打开一个页面。接着你批准授权,身份验证
00:10:51就完成了。从那时起,你的代理就可以在该平台上执行所有操作,而你再也
00:10:56不需要打开那些网站了。而且你其实不需要记住这些,因为我们在
00:11:00下方的简介中放了一个免费的设置文件。你只需要把那个文件交个代理,它基本上就会为你
00:11:05设置好Next.js应用,然后引导你完成将这三者连接起来所需的其他所有步骤。
00:11:10此外,由于这些平台上的规则一直在变,这些平台已经为代理发布了
00:11:16技能。GitHub其实不需要什么技能。它没有太大变化,
00:11:21而且现在也没有在变,所以我们没有为它准备这个。但我们有这个“部署到Vercel”的技能,它基本上
00:11:26告诉代理如何使用Vercel CLI来自动部署你的项目。然后我们有
00:11:31Supabase的技能以及Supabase最佳实践的技能。同样,这些都是自动调用的,所以每当你的代理
00:11:37需要使用这两个平台中的任何一个时,它就会自己去使用它们,你基本上
00:11:42不需要做任何事情。这个Supabase数据库将被数据填满,而你的项目
00:11:47也将在Vercel上上线。我们会在下方简介中留下这些技能的链接。但在我们
00:11:52进入下一个级别之前,先听一下我们赞助商Hedra的话。很容易把它和
00:11:57像Manus这样研究某事并规划项目的代理归为一类。Hedra也能做到这一点。不同之处在于
00:12:02它交给你一个完成的视频之后会发生什么,不是文档,也不是幻灯片。想象一下Claude遇上Canva。
00:12:08你与它对话,它便在你身边协同构建。我们在一个空间里尝试了它,并请求制作一个应用的
00:12:13短篇宣传视频。有趣的部分不是视频本身,而是观察代理是如何实现这一点的。
00:12:18首先是几个澄清问题,然后是一个提议的计划。Hedra没有盲目猜测,而是自己研究了
00:12:23这个主题并带回了真实的调查结果。从那里开始,完整的脚本落在了画布上,
00:12:28代理带我们过了一遍,最终做成了成品的宣传片。这个真的非常适合任何独自进行
00:12:33营销、身后没有剪辑师也没有文案的人。Hedra基本上能让一个人做
00:12:38过去需要整个团队才能完成的事。你可以在Hedra.com免费试用它,并使用我们的代码在
00:12:43你的第一个月享受50%的折扣。链接和代码都在下方的简介中。那么这就带我们进入了
00:12:48下一个级别。第二级被称为软件工厂循环。在这个级别中,你共同规划多个
00:12:53功能并将它们设置为循环,以便你的代理可以在夜间继续处理功能列表,
00:12:59而不会在完成一个功能后就停下来。由于这些循环可能会非常长,它需要一个追踪器来告诉它
00:13:04所给的功能列表是否已经完成。一旦列表上的所有功能都被勾选完毕,
00:13:09其目标循环就会结束。现在,当你规划新功能时,
00:13:13你不应该只写出要制作什么,还应该实际制作出UI。这被称为
00:13:18原型,它是应用程序的一个完全可点击的版本,但实际上并不起作用。构建UI原型
00:13:23在开始构建之前有两个巨大的原因。第一个原因是,有了
00:13:28原型,你可以弄清楚你想象中要构建的东西是否真的是你
00:13:33想要构建的东西。第二个原因是,这个原型成为了一种途径,让在循环中
00:13:37工作的代理能够验证它构建的东西是否正确。现在在工厂里,
00:13:42你有了列表,代理在循环中运行该列表,逐个处理每个项目。但是它
00:13:48是如何处理每个单独的项目的呢?当主代理挑选一个项目时,它自己并不进行构建工作。
00:13:53它将任务交给子代理,由子代理完成该功能。但是如果子代理把构建搞砸了,
00:13:58导致你的应用被毁了怎么办?这就是为什么主代理要制作一个文件夹的副本
00:14:03称为分支,而代理就在那个分支上工作。当代理完成工作时,它不会自己进行
00:14:07验证。这就引出了循环工程中的另一个非常重要的规则。做工作的代理
00:14:13绝不应该去验证它。验证工作应当总是交给另一个拥有全新上下文窗口的代理。
00:14:18既然这正是子代理的工作方式,主代理便将该分支交个对抗性审查
00:14:24代理。这意味着该代理始终需要坚信完成的工作中存在某种错误。
00:14:29这就是它在捕捉Bug方面发挥作用的方式。因此,如果对抗性审查
00:14:34代理发现了某些问题,主代理就必须重新启动构建代理,这个过程会一直循环,直到该功能
00:14:39在列表中被勾选。完成该功能后,它必须将该分支的工作
00:14:44放到已部署的应用上,以便用户可以开始使用新功能。如果你不知道的话,
00:14:48GitHub上的代码主版本才是实际显示在Vercel部署应用上的内容。
00:14:53因此,如果该分支与主版本合并,该分支中的功能就会进入部署
00:14:58应用。这时候你的最终批准就派上用场了。当一个功能完成时,就会创建一个拉取请求。
00:15:03拉取请求是请求将功能分支与主分支进行合并。在那个拉取请求中,
00:15:08代理还会附加截图。但如果你想格外确定,你可以通过要求Claude切换到该分支然后
00:15:13进行测试,来检查该功能是否真的在你的电脑文件夹中起作用。
00:15:18如果正确,你就可以合并拉取请求。所以如果我们再次看一下我们的技能,
00:15:22你可以看到现在我们有了这个新功能技能。当你调用这个技能时,它基本上会
00:15:27告诉代理需要在这里面创建一个文件夹,并且每个文件夹都需要有一个spec.md
00:15:33以及用于验证的其他内容。正如你所看到的,我们在这里基本上定义了两个功能。
00:15:38第一个功能是现在应该有一个服务页面,里面列出沙龙里的每个人。然后
00:15:43第二个是,每当一个人与沙龙造型师进行完一次会话后,他们基本上可以通过
00:15:48前台(即管理员)添加一条评价。现在,我们在这里不直接使用新功能技能,
00:15:53而是直接使用目标编写器技能。现在,所有这些技能都是互联的。所以如果我们
00:15:58不希望一个功能变成目标,如果我们只是想在没有循环的情况下开发该功能,
00:16:03我们就不用目标编写器。但如果我们使用了目标编写器,它就会触发这个新功能技能,
00:16:08并且它还会添加规则,把spec文件变成一个可运行的目标。现在,正如我们已经
00:16:13讨论过的,你应该在开始实现功能之前制作它的UI。这就是为什么
00:16:18新功能技能会调用功能性UI技能,它基本上告诉代理
00:16:23应用内部应该存在一个名为mocks的文件夹,并且该mocks文件夹内部的HTML文件将成为
00:16:29整个应用程序的全功能原型。并且它将包含
00:16:33接待员和客户两者的视图。现在每个文件夹中
00:16:37一个这样的文件,并且功能性UI技能只会在它尚未创建的情况下创建它。而且
00:16:42很显然,既然每当创建新功能时都会触发它,它也会在每个功能文件夹内部
00:16:47它也会添加一个 HTML 文件。现在它会拿到已经克隆的应用,并且只取
00:16:53功能正在改变的那部分并进行展示。例如,我们这里有这个服务功能。
00:16:58如果我们打开它的模拟页面,你可以看到我们将在应用中添加一个完整的服务页面,
00:17:04并且可以通过这个按钮访问它。如果你点击立即预订并选择一位发型师,
00:17:08它会首先询问你想让这位发型师提供什么服务。现在这实际上还没有
00:17:13在应用中实现,克隆版里也没有实现,但它在这个功能原型中实现了。
00:17:19所以它能帮你在视觉上确认你正在制作的东西是否真的是你想要的。这也是
00:17:24循环实际验证它所构建的东西是否正确的一种方式。所以在那之后,
00:17:29我们告诉它编写这两个功能,它基本上写好了会话评价
00:17:33和服务的文件夹。所以这是会话评价的用户界面。同样的,你可以作为
00:17:38顾客和接待员双方来查看它。接待员将代表顾客添加评价,
00:17:43因为这就是我们目前设想该网站工作的方式。这在实际网站上不会发生,
00:17:47但既然这是一个演示网站,我们只是在构思功能。既然我们现在有多个功能要处理,
00:17:52我们基本上需要一个列表来跟踪它们。这就是为什么我们有这个功能
00:17:57批处理技能,它基本上只是使用这个队列 Markdown 文件,这只是一个列出了
00:18:02各种功能的单一表格。例如,现在循环仍在进行,它正在构建
00:18:06第一个功能,第二个功能还在待办事项中,它会逐个标记它们。所以你只需要
00:18:11调用该技能并告诉它添加你想要的功能。然后正如你所看到的,
00:18:16它说它正在编写这两个文件并添加了这些功能。然后一旦添加完毕,
00:18:21它基本上会给你实际运行的目标命令。我们稍微修改了一下,在目标中运行了
00:18:26队列文件,它只有在待办或构建中没有行时才会停止,这意味着
00:18:31它们都已经完成并进入了已完成状态。基本上它开始工作了。它仍在处理
00:18:36第一个功能,正如我们之前告诉过你的,它会首先使用子代理来构建东西,
00:18:41然后为了检查和验证其工作,它会启动一个对抗代理。它还在进行中,
00:18:46已经大约三个小时了,一旦完成我们将向你展示最终结果。正如你所看到的,
00:18:51我们已经打开了 GitHub,我们的 loop salon 项目就在这里。如果你找不到它,
00:18:55你只需让代理给你这个链接,你就能打开它。所以在这里,
00:19:00你会看到这个拉取请求标签页,打开它后,你会看到代理
00:19:04为你审查而创建的拉取请求。如果你看这个,它给了我们整个摘要,然后
00:19:09实际上还给出了页面的截图,提供了需要完成的工作确实已经完成的证明。
00:19:13一旦我们审查了所有这些,我们就可以合并拉取请求。正如你所看到的,
00:19:18我们这里有实时托管的版本。它没有域名,这就是为什么它以 Vercel 结尾。
00:19:23但如你所见,我们希望添加这个服务功能。现在如果我们进入
00:19:27服务功能,我们就能获得沙龙提供的所有服务。如果我们进入立即预订
00:19:33选项,我们实际上可以看到每个发型师都有他们自己的服务。在你可以预订它们之前,
00:19:37你基本上需要选择服务。当我们合并这第二个拉取请求时,
00:19:42也会发生同样的事情。我们在这里经历过的一切,基本上都以一种你可以自己去构建它的方式
00:19:47进行了解释。技能其实就是放在文件里的书面指令。所以这里没有什么
00:19:51是你自己实际上做不出来的。但如果你不想经历所有这些,
00:19:56整个代码库都在我们的社区 AI labs pro 里。
00:20:01这基本上就是整个系统,正如你刚才看到的,每个技能都已经坐在里面了。
00:20:05所以如果你发现我们做的事情有价值,并且你想支持这个频道,那么这就是
00:20:10正确的方法。链接会放在简介里。所以在这整个过程中,
00:20:14留给你要做的事情只有两件。现在你只需要规划功能,并且在功能或更改发送给你的用户之前
00:20:19给予最终的权限。这两件事实际上都不需要你呆在笔记本电脑前,
00:20:24尤其是规划部分。你描述你想要什么,它会向你提问直到它理解,
00:20:28并为你构建原型,所有这些都可以通过你的手机完成。如果是一个小改动,
00:20:33那么你也可以直接通过手机给出最终的权限。这就是第三阶段切入的地方,
00:20:37其主要目标是消除你对笔记本电脑的依赖。为此,我们找到了一款非常好的应用叫 Paseo。
00:20:43它在你的笔记本电脑上运行你的代理,并从你的手机为你提供一个进入它的窗口。
00:20:48所以你的代理仍然坐在你的机器上,拥有你所有的文件、所有的技能以及
00:20:52所有已经登录的 CLI。你在本视频中构建的一切都将继续运作。
00:20:57Claude Code 也可以使用内置的远程控制功能来做到这一点,但其中很多东西都是坏的。
00:21:03比如技能,在远程控制 Claude 功能中,你实际上并没有获得运行技能的菜单。
00:21:07所以这是一个免费应用,我们会在下方提供链接。我们不会深入探讨它的所有功能,
00:21:12只讲核心要点,以便你可以开始使用它。该应用有一个工作区系统,
00:21:17其中每个工作区基本上就是一个文件夹,你在其中打开不同的聊天,
00:21:22并且它自己运行 Claude Code,所以你不需要为它准备另一个单独的订阅。
00:21:26然后还有一个非常有趣的部分,那就是它不仅可以在你的笔记本电脑上运行,
00:21:31它还可以在你连接的 Mac mini 上运行。所以你可以从笔记本电脑控制你的 Mac mini,
00:21:35也可以从手机控制那个 Mac mini。而且它不像整个终端界面那样,
00:21:40它要精致得多。它看起来像 Cursor,但所有的功能都还在。
00:21:45目标命令可以工作,我们制作的所有其他斜杠命令也可以工作。所以我们在里打开了
00:21:49loop engineering 文件夹,并在其中创建了一个会话,我们在其中定义了一个新功能。
00:21:54这里还有一个新技能,就是移动端预览技能,我们一会儿就会讲到它。
00:21:59现在为了向你展示这在手机上看起来如何,我们将手机镜像到了这里,这与你在电脑上
00:22:03获得的完全是同一个界面。你可以使用所有的 Claude Code 功能,
00:22:09并且你的斜杠命令也可以随时使用,所以要开始一个新功能,你只需在手机上直接运行新功能斜杠命令
00:22:14即可。我们实现了客户端的登录流程,这在以前是没有实现的。
00:22:18然后有一个非常有趣的部分。它显然会写出整个功能文件,
00:22:22但为了向你展示模拟页面的外观,它可以直接在界面中给我们提供图片,
00:22:27并且这些图片也会显示在你的手机上,这样你就可以直接在手机上验证用户界面。
00:22:32但我们运行那个移动端预览技能的原因是,它将 HTML 模拟页面部署到了链接上,
00:22:37这些都是在 Vercel 上的免费部署,这样做的效果是,当你点击链接时,
00:22:42它会带你进入实际的原型,你可以点击并正常使用该应用,而不只是看图片,
00:22:47这才是你从手机运行这个工厂时真正想要的。
00:22:51这就到了本视频的尾声。如果你想支持这个频道并帮助我们继续制作
00:22:56这样的视频,你可以通过点击下方的超级感谢按钮来做到这一点。一如既往,感谢观看,
00:23:01我们下期再见。
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기