最佳实践

Android Studio 中的智能体可充当您的编程协作伙伴,通过生成代码、总结复杂主题、查找特定资源等方式,加快您的开发工作流程。有效的沟通是充分发挥代理潜力的关键。

本指南概述了如何设置开发环境以及如何撰写可产生实用且可靠回答的提示。对于多种策略,我们提供了针对不同应用场景的示例提示。如需查看更多提示示例,请参阅提示库。

内容要具体

智能体在收到清晰具体的指令时表现最佳。如果您想使用某些库、API 或方法,请在问题中包含这些内容,或将其包含在项目的根 AGENTS.md 文件中,以便在互动中持久保存这些内容。这就像提交 bug 报告一样:您提供的信息越多,问题就能越快、越有效地得到解决。

实现新功能:

如何使用 CameraX 为我的应用添加相机支持?请务必包含我使用该库所需的任何依赖项和权限。
如何为应用添加相机支持?

生成代码:

编写一个 Kotlin 挂起函数,该函数使用 Coil 库从给定的网址字符串下载图片。

该函数应命名为 fetchImageAsBitmap。它应接受 Context 和 String 网址作为参数,并返回可为 null 的 Bitmap。如果出现任何网络或解码错误,它应捕获异常、记录异常并返回 null。

编写一个函数来下载图片。

解释概念:

我正在构建一款音乐播放器应用,需要在应用处于后台时继续播放。

当用户在设备上执行其他操作时,我有哪些选项可让应用保持运行? 每种方法的 API 级别要求和电池续航时间影响是什么?

解释 Android 服务。

描述回答的结构

默认情况下,智能体会以对话式、段落式格式提供回答。虽然这通常有助于解释,但您可以通过告诉它如何构建回答来获得更有效且可立即使用的结果。指定输出格式可指示模型以清晰、可预测的方式整理信息,从而节省您自行重新设置格式的时间。

如果您想将智能体生成的代码插入到应用中,并且需要特定格式的代码以便立即使用,请向智能体提供有关生成和设置代码格式的明确说明。

构建回答:

为用户个人资料创建 Room 实体。它应包含 id、userName、email 和 memberSince 字段。id 字段应自动生成。memberSince 字段应表示时间戳。

为用户个人资料创建 Room 实体。

如果您要提出一个更开放的问题,请要求提供 x 个选项。

限制回答:

有哪些工具可用于优化应用性能? 列出前三名。
有哪些工具可用于优化应用性能?

将复杂的请求拆解为较小的任务

如果代理的方法不符合您的预期,您可以通过一系列较小的顺序提示来引导代理,而不是一次性要求所有内容。这种方法可让您更好地控制,并让您在继续下一步之前验证每个步骤。

应用依序提示:

提示 1:数据模型
首先,创建一个名为 User 的 Kotlin 数据类。它应该有三个属性:id(一个 Int)、name(一个 String)和 email(一个 String)。

提示 2:网络层
现在,创建一个名为 ApiService 的 Retrofit API 接口。它需要一个名为 getUsers() 的 suspend fun,该函数会返回 List<User>。

提示 3:状态管理
接下来,编写一个将 ApiService 作为依赖项的 UsersViewModel。UsersViewModel 应公开密封 UiState 类的 StateFlow,该类可以表示 Loading, Success(users: List) 和 Error(message: String) 状态。在 ViewModel 中创建一个函数,用于提取用户并更新状态。为新功能编写单元测试。

提示 4:界面层
最后,编写一个名为 UserListScreen 的 Jetpack Compose 函数,该函数接受 UiState 作为形参。使用 when 语句,针对加载状态显示 CircularProgressIndicator,针对成功状态显示用户名 LazyColumn,针对错误状态显示包含出错提示的 Text 元素。添加用于验证新功能的测试。

创建一个 Jetpack Compose 界面,用于从 JSON API 提取用户列表并将其显示在列表中。它应该有一个使用 Retrofit 和协程的 ViewModel、一个用于处理数据逻辑的代码库、一个 User 数据类,并且需要显示加载和错误状态。

管理上下文

使用智能体的一个重要部分是提供正确的上下文。提供相关的代码段、文件内容和项目结构信息,以获得最实用的回答。您可能需要反复尝试才能找到合适的平衡点:信息过多可能会导致智能体偏离方向,而信息过少则无法提供足够的背景信息来帮助智能体。使用可用功能,让智能体能够访问必要的上下文:

  • 附加图片,直观展示您设想的界面或您尝试理解的应用架构。
  • 附加文件,以突出显示代码库的相关部分。
  • 使用 .aiexclude 文件让代理忽略代码库的某些部分。
  • 使用 AGENTS.md 文件提供项目专属指令,并在团队中共享。使用 AGENTS.md 文件时,请使用 Markdown 标题和格式,让指令清晰明了。
  • 使用智能体模式时,请配置 MCP 服务器,以便通过外部环境扩展智能体的知识和功能。

请求解释

如果您不理解代理的回答,请让其解释。这是学习和验证建议的解决方案是否适合您的应用场景的好方法。如果回答不符合您的预期,则可能是代理回答有误,要求其解释可让代理有机会自行更正。

迭代指令

与智能体合作时,有时需要像与同事合作一样,进行一些来回沟通,以明确任务和预期结果。如果代理的初始回答不充分,请向其提供反馈和改进建议。如果其回答根据您的建议有所改进,请通过更新提示库中的条目或更新 AGENTS.md 文件,将该建议纳入原始提示中。