00:00:00目前市面上有很多 AI 代码编辑器,每一个都凭借其独特的功能和工具脱颖而出。
00:00:04Claude Code 可能是其中最出色的,尤其是搭配 Opus 模型时,但它的价格也非常昂贵。
00:00:09另一方面,Cursor 是许多开发者的首选,因为它可以并排查看代码和 AI 代理的操作,但它也有自身的问题。
00:00:16谷歌随 Gemini 3 发布了 Anti-Gravity,凭借强大的模型和免费使用的优势,它迅速在开发者中走红。
00:00:23虽然它比 Claude Code 和 Cursor 都要新,但在很多功能的实现上已经超越了 Cursor。
00:00:28自从 AI 编程变得日益强大,许多人都开始利用这些工具开发出自己的工作流。
00:00:35但任何优秀工作流的关键,都在于它管理上下文的效率如何。
00:00:39此前,Anthropic 发布了专为长时任务设计的代理框架(harness),而这一次,Cursor 也发布了自己的框架,旨在通过最大化利用其功能来显著提升 Cursor 的使用体验。
00:00:50文中提到的原则很大程度上适用于所有 AI 代理,因此我也将这些原则应用到了谷歌的 Anti-Gravity 中。
00:00:57它现在可能还不是最完美的,但它拥有一些使其与众不同的特性。
00:01:01我们今天有很多内容要聊,因为在加入这个框架后,Anti-Gravity 的性能得到了显著提升。
00:01:28最后,作为用户,你如何与其交互、如何编写提示词以及如何跟进它的回复,也至关重要。
00:01:38这个框架之所以重要,是因为不同的模型对同一个提示词会有不同的反应,因为每个模型都有自己的擅长领域,并且在各自训练的环境中表现最佳。
00:01:48例如,在 shell 环境中训练的模型可能更倾向于使用 GREP,而不是专门的搜索工具。
00:01:54这一点非常关键,因为我们知道某些模型(如 Claude)在处理 XML 格式的提示词时表现优异,而其他模型则更适合 Markdown。
00:02:00因此,确保我们使用的框架是针对所用模型量身定制的,这一点至关重要。
00:02:04在实施之前进行规划,是确保代码符合预期的核心步骤。
00:02:10经验丰富的开发者更倾向于在生成代码前进行规划,因为这能强迫他们理清构建思路,并给 AI 代理提供具体的目标。
00:02:18我最喜欢 Anti-Gravity 的规划功能,因为通过评论功能修改计划非常方便。
00:02:24当我开启规划模式时,它会彻底分析我的指令和现有代码库,然后生成一份详细的计划。
00:02:30虽然阅读计划可能比较枯燥,但仔细审查它是必不可少的,以确保最终实现符合构想,所以请务必通读全篇。
00:02:38如果需要调整,我只需在不符合目标的行上添加评论,它就会将修改内容整合到修订后的计划中。
00:02:46不断打磨直到计划完美无缺,这一点非常重要。
00:02:49一旦计划确定,代理就可以自主完成所有的后续开发工作。
00:02:52即使最终实现的效果不尽人意,返回规划模式修改计划也比使用后续提示词引导要有效得多。
00:03:00在那之后,代理需要基于正确的上下文进行工作。
00:03:03但在那之前,先插播一条赞助商信息。
00:03:05Luma AI 及其新工具 Dream Machine 旗下的 Ray3 Modify。
00:03:08如果你尝试过 AI 视频,一定知道那种挫败感:刚生成一个很酷的片段,但一旦想改变风格或场景,角色就会崩溃,动作也变得极其怪异,最后只能不断重试。
00:03:18Ray3 Modify 解决了这个问题。
00:03:20这是 AI 视频第一次真正让人感觉是在“导演”,而不是在“盲目猜测”。
00:03:23你可以利用现有的素材,甚至是真人表演,在保留角色身份、动作和情感起伏的同时,彻底改变环境、灯光或电影风格。
00:03:33表演保持锁定,而视觉风格完全按照你的意愿进化。
00:03:36通过角色参考和可编辑的关键帧,你可以精准控制哪些元素保持一致,哪些在镜头间变化。
00:03:42它非常适合混合工作流、短片、MV 以及电影概念设计。
00:03:47即使是小型制作也不在话下。
00:03:48老实说,这感觉就像是真正的 AI 后期制作。
00:03:51别再凭运气了,开始真正的执导吧。
00:03:53点击置顶评论中的链接或扫描二维码,去看看 Ray3 Modify 的无限可能。
00:03:58一旦你完善了计划,下一步就是为每个代理提供完成任务所需的上下文。
00:04:04很多人常犯的一个错误是倾向于手动标记每一个文件。
00:04:08其实你不需要手动操作,因为代理拥有强大的搜索工具,可以按需提取上下文。
00:04:13手动标记文件会将所有内容加载到上下文中,即使很多行根本用不到。
00:04:18代理可以使用 grep 来加载它们真正需要的特定代码段。
00:04:21例如,如果我想修改注册页面,手动标记文件会把 200 多行的整个组件都塞进上下文,造成不必要的冗余。
00:04:30尽管实际需要的代码只是其中大约 50 行的一个函数,但剩余那些完全不相关的代码依然会被包含进来。
00:04:38与其手动标记文件,不如依靠代理的搜索工具去 grep 它所需的具体函数。
00:04:43你没必要在同一个对话窗口里完成所有事情。
00:04:45每当开始新任务,或者当代理的表现开始混乱、反复犯错时,就开启一个新对话。
00:04:52简单来说,每当你完成了一个逻辑上的工作单元,就开启一个新对话。
00:04:57例如,我为每个想要实现的新功能都开启一个新对话,并从该功能的规划开始。
00:05:04这样,所有的任务都是独立的,且完全符合我的需求。
00:05:07唯一不需要新开对话的情况是:你正在处理同一个功能、需要引用之前的讨论上下文,或者是正在调试代理刚刚实现的功能。
00:05:16除此以外,通过开启新对话来减少干扰是更好的选择。
00:05:21代理回复的有效性,其实就是提示你何时该开启新对话的指南。
00:05:26如果你想引用之前聊天中的细节,可以直接在对话中提及那个历史记录,而不需要重新引导代理回顾一遍。
00:05:35这让代理能智能地识别对话背景,选择性地读取历史记录,只提取它需要的上下文。
00:05:43通过使用一套规则和技能,可以扩展代理的能力。
00:05:47你可以通过为项目定义规则来定制其行为,这些规则是你希望代理始终遵循的特定准则或最佳实践。
00:05:55Anti-Gravity 让添加这些本地或全局范围的定制化配置变得非常简单。
00:06:00要添加准则,只需将规则包含在项目范围内即可。
00:06:03这些规则存储在 .agent 文件夹中,其中的 rules 文件夹包含了编写指令的 Markdown 文件。
00:06:09例如,我在这个项目中添加了一条规则,要求前端代码必须符合 VCAG 合规性标准。
00:06:13规则添加后,一旦给 Anti-Gravity 分配任务,代理就会生成一个整合了该规则的计划,包括带 input 的 label 标签等细节,以确保整个页面符合 VCAG 标准。
00:06:24你可以根据工作空间的需要添加任意多条规则,以引导并扩展代理的能力。
00:06:29同样,Anti-Gravity 也引入了代理技能,它遵循 Anthropic 制定的开放标准,包含指令、脚本和特定领域的知识。
00:06:38技能在代理认为相关时会动态加载,从而保持上下文的高效管理。
00:06:43Anti-Gravity 的所有技能都存放在 .agent 文件夹中。
00:06:47每个技能都有一个专门的 .md 文件,包含了名称、上下文内容说明以及详细的使用指南。
00:06:55对其他参考资料和脚本的访问权限则存储在它们各自的文件夹中。
00:06:59在 Anti-Gravity 中使用技能非常简单,只需指定你需要的技能以及想要执行的任务即可。
00:07:05我曾让 Anti-Gravity 使用“测试专家”技能为我的项目编写测试用例,它花了一些时间根据技能准则创建了一份完整的测试计划。
00:07:14它还利用了我提到的所有参考库、脚本以及技能中定义的所有准则来完成任务。
00:07:21现在的模型在图像分析方面越来越强,所以我们应该更多地利用这一能力,在提示词中加入图片以增强它们的理解。
00:07:29与其用文字解释你想要的界面设计,不如直接截取一段你想要实现的界面截图。
00:07:35打开 Anti-Gravity,粘贴截图,并要求它严格按照截图来实现该部分内容。
00:07:41凭借图像分析能力,它能完全读懂图片并将其实现出来。
00:07:45我最常使用图片的另一个场景是错误调试,因为用截图展示 UI 问题比文字描述要直观得多。
00:07:54所以每当我遇到 UI 问题,我就截个图发给 Anti-Gravity,它就会帮我修复。
00:08:00在 AI 开发中,我们也需要遵循软件开发的最佳实践,而不是盲目地直接写代码。
00:08:06有一些常用的工作流非常适合配合代理使用。第一个是测试驱动开发(TDD),即代理先写测试,然后再编写满足这些测试的代码。
00:08:15这种模式之所以在 AI 代理上行之有效,是因为它们有了一个清晰的优化目标,明确了成功的标准,并能朝着那个方向逐步改进。
00:08:26因此,在设置后端时,我还没有写任何代码,只是给了一个提示词,要求代理为认证路由编写测试,描述输入、输出和测试行为,并明确要求它现阶段不要编写测试的实现代码。
00:08:40当代理写完测试用例且我感到满意后,我要求代理运行这些测试。
00:08:45起初这些测试会失败,因为还没有任何实际的业务逻辑实现。
00:08:49测试完成后,我将它们提交到 Git,以备不时之需,防止代理尝试修改这些测试。
00:08:55然后,我要求代理为该接口编写代码,并明确指示它不得修改现有测试。
00:09:01接着我们不断迭代,反复要求它进行验证,直到所有的测试都顺利通过。
00:09:07这样,代理就有了一个清晰的目标去不断迭代完善。
00:09:10当你开始与代理一起处理一个新的代码库时,你需要像询问队友一样问它问题。
00:09:16这会让代理通过 grep 和语义搜索钻研代码库,在寻找答案的过程中理解代码库的运作方式。
00:09:24我会询问关于代码库细节和路由的问题,以便代理掌握项目的结构和功能。
00:09:30这样,每当我让它实现一个新功能时,它已经对项目结构了如指掌,实现起来会容易得多。
00:09:37Git 非常重要,因为它不仅是版本控制工具,也是编程代理的知识库。
00:09:43我们在之前的视频中已经多次强调过使用 Git 的重要性。
00:09:47清晰的 Git 提交记录不仅能为代理提供参考,还能帮助管理功能、追踪最后一个稳定版本,并在代理误改代码时轻松回滚。
00:09:58为了简化 Git 操作,我会在 Anti-Gravity 中使用一组名为“工作流”的可复用命令。
00:10:04在提交代码时,我倾向于结构化的提交格式,因此我会确保提交工作流强制执行该结构,甚至为代理提供示例。
00:10:13在提交之前,系统会执行特定的安全检查和代码审查,以确保我的 Git 提交既干净又符合标准。
00:10:20你还可以创建一系列命令来管理拉取请求、工作树、分支等,让整个 Git 工作流更加一致和高效。
00:10:28调用这些工作流非常简单,只需输入工作流名称,它就会自动执行所有步骤。
00:10:34你还可以根据代码库的具体需求,使用其他命令(如修复问题或审查)来执行代码审查并运行更新依赖项的工作流。
00:10:43这听起来可能很基础,但 AI 生成的代码确实需要审查,它们并不总是完美的。
00:10:48一个重要的习惯是在代理工作时观察它。
00:10:51如果你发现它走偏了,立即中断它并将其引导回你的目标。
00:10:56在代理完成后,你需要利用代理本身进行一次审查。
00:11:00在我的项目中,我经常使用一个自定义工作流进行代码审查,它融合了 Git 的所有最佳实践。
00:11:06它会根据严重程度突出显示问题,列出所有应执行的检查以确保代码正确,还可以包括审查后运行的 lint 检查和测试。
00:11:15这确保了代码的高质量和可靠性。
00:11:18由于几乎所有项目都使用 GitHub 等源代码管理工具,我们使用 BugBots 进行高级 AI 分析,在每个拉取请求中捕捉问题并提出改进建议。
00:11:28有很多 AI 驱动的工具可以帮助你审查代码,比如 CodeRabbit、Sentry 等。
00:11:33甚至 GitHub 本身也为每个拉取请求内置了代码审查功能,有助于管理团队工作流。
00:11:38为了识别架构问题,我们可以要求代理创建一个 mermaid 图表。
00:11:43利用这些图表,我们可以直观地分析并发现关键问题。
00:11:47这些图表特别有用,因为视觉效果更易于理解,并能作为项目架构的清晰文档。
00:11:54并行运行代理非常重要,因为这不仅能提升 AI 模型的表现,还能节省大量等待单个代理完成任务的时间。
00:12:05这种方法可以显著提高产出效率。
00:12:07我经常同时使用多个代理,为每个代理分配不同的任务,并且我还会使用多个模型,因为每个模型擅长的领域不同。
00:12:16代理们独立工作,只在需要输入时才通知你,从而实现同步运作。
00:12:22由于 Anti-Gravity 的代理共享同一个工作空间且并非完全隔离,我会让它们在不同的分支上工作。
00:12:28一旦它们完成任务并通过了我为项目定义的检查,我就会将它们的功能合并到主分支中。
00:12:34我们经常会遇到一些不知道该如何修复的 bug。
00:12:38在这种情况下,调试(Debug)模式就是最佳解决方案。
00:12:40调试模式不再是盲目猜测,而是尝试理解可能出现的问题并为代码生成日志语句,从而减少 bug 并使调试过程更加系统化。
00:12:50虽然 Anti-Gravity 没有原生的调试模式,但我们可以利用“调试模式技能”来实现一个。
00:12:56该技能包含了处理代码中异常行为的所有指令。
00:13:00它遵循基于证据的方法,生成假设,并提供一个多阶段的详细计划来定位并解决问题。
00:13:08它通过特定的脚本和参考资料来提高效率,使得调试模式更加可靠。
00:13:14每当我遇到任何类型的 bug,我只需开启调试模式,让代理根据 skill.md 中的指南找出问题所在,让我的排错过程变得非常顺畅。
00:13:25这就是本期视频的全部内容了。
00:13:27如果你想支持本频道并帮助我们继续制作这样的视频,可以点击下方的“超级感谢”按钮。
00:13:33一如既往,感谢观看,我们下期再见。