Introduction
当智能体拥有合理的权限范围、清晰的执行指令,并在明确的安全护栏内运行时,令牌效率会自然得到优化。 高质量的代理在更少的尝试中完成任务,遵循更清晰的工作流,减少返工,并避免成本高昂的调试和更正周期。
遵循本文中概述的策略,提高代理质量和 AI credits 效率。
1.为正确的任务选择正确的模型
模型选择是提高代理质量和成本效益的最快方法之一,但通常被忽视。 常见的模式是默认为每个任务最有能力的模型,但这通常会增加令牌使用量,而不会改善结果。 在某些执行密集型方案中,过度使用推理模型可能会降低质量,因为模型可能会过度思考任务或引入不必要的更改。
根据所涉及的工作选择模型:
- 推理模型:最适合需要更深入分析的体系结构决策、复杂调试、系统设计和任务。
- 中层模型:最好是计划已经明确,代理需要高效执行。
- 较轻的模型:最适合重构、格式设置、文档更新和其他常规、范围良好的更改。
按任务需要尽可能多地使用能力,同时尽可能少用。 匹配任务功能可改善结果,并直接控制大规模成本。
有关按模型和任务类型的细分,请参阅 使用不同任务比较 AI 模型。
配置模型的推理级别
某些模型还支持可配置的推理级别,用于控制模型在给出响应前进行多少推理。 较高级别可以提升处理复杂问题时的回答质量,但也会消耗更多令牌,因此会占用更多额度。所以,默认情况下应使用常规级别,只在较难的任务中再调高。 对于受支持的模型,Visual Studio Code 和 Copilot 命令行界面(CLI) 提供可配置推理。
请参阅“GitHub Copilot中支持的 AI 模型”。
使用 Copilot自动选择模型
Copilot自动选择模型 会根据你的任务意图为你选择合适的模型。
请参阅“关于 Copilot自动模型选择”。
2.在提示中提供明确的指导
提示将为智能体的所有操作设定方向。 当提示较为模糊时,智能体必须推断用户意图,进一步了解更多上下文,并自行作出判断。 这通常会导致反复重试、范围蔓延以及不必要的 token 消耗。
结构良好的提示有三种品质:
- 明确的任务定义。 而不是“修复此问题”,而是解释问题所在、发生位置以及预期结果的外观。
- 预先提供的相关上下文。 如果已经知道哪些文件、服务、日志、错误或输入很重要,请包括这些文件。 这有助于智能体避免不必要的探索。
- 明确的停止条件。 明确告知智能体任务完成的判定标准。 如果没有停止点,代理可以通过添加额外的提交、重构不相关的代码或扩展范围来继续超越目标。
这些新增的指导不会明显增加 token 使用量,但可以显著减少代理为得出正确结果所需的运行次数。
有关提示工程最佳做法,请参阅 GitHub Copilot 对话助手的提示设计。
3. 保持上下文精简
Copilot 会将其可访问的上下文作为输入令牌发送出去,而这些上下文会不断累积:打开的编辑器标签页、附加的文件,以及长对话中的完整往来内容,都算作上下文。
若要使上下文保持控制,请考虑执行以下操作:
切换问题时启动新对话
长线程将整个历史记录传送到每个新请求中。 当你转而处理不相关的任务时,请开始新的对话。 例如:
- 在 Copilot 命令行界面(CLI) 中使用
/new(或/clear) - 在 副驾驶聊天中,启动新的聊天会话。
压缩你想继续进行的较长Copilot 命令行界面(CLI)会话
如果你需要继续该线程,但内容已经很多,可以在 Copilot 命令行界面(CLI) 中运行 /compact 来总结历史记录并缩小上下文窗口,还可以选择让摘要聚焦于特定内容(例如 /compact focus on the auth module)。
此外,您可以随时使用 /context 检查当前使用情况。
请参阅“在 GitHub Copilot 命令行界面 (CLI) 中管理上下文”。
给 Copilot 提供你的项目地图
维护良好的自定义指令文件(如 AGENTS.md 或 .github/copilot-instructions.md 文件)为代理提供了存储库的结构概述,因此它们不必读取大量文件即可自行定位。 请参阅“支持不同类型的自定义说明”。
只引入你需要的工具
大型工具集(例如,一整套 MCP 服务器工具)会在每次请求时增加上下文负担。 如果它符合工作流,请仅启用与任务相关的工具集。
请参阅“为 GitHub MCP 服务器配置工具集”。
利用上下文缓存
Copilot 重复使用已通过缓存发送的上下文,这降低了后续轮次的成本。 但是,缓存上下文在处于非活动状态的时间段后过期,在切换模型中间会话时不会重复使用。 在这两种情况下,上下文将重新发送,并作为新的输入令牌再次计费。 若要充分利用缓存,请将相关工作放在同一个连续会话中进行,并避免中途切换模型。
4. 借助copilot-instructions.md文件减少重复错误
持久指令可提高代理交互的一致性,但其价值完全取决于它们写入方式。
copilot-instructions.md存储库级别的文件是对本指南进行编码的最直接方法。 个人和组织级别的说明可以分层,以便实现更广泛的一致性。
最佳说明是简短的、具体且以实际观察到的代理行为为基础—不是一般最佳做法,这些最佳做法听起来不错,但不适用于系统。
要包括的内容:
- 所需的框架、库或设计模式
- 代理往往会重复犯的已知陷阱
- 输出预期,如“简洁”或“仅返回代码”
- 代理必须遵循的团队特定约定
- 生成、测试和 Lint 命令
要避免的事项:
- 长文档,通用文档
- AI 生成的指南不反映实际系统
- 一次性首选项或很少使用的详细信息
- 造成上下文嘈杂的过多指令
随着代码库、体系结构、标准和工作流的发展,请不断更新说明。 由于这些指令包含在代理的上下文中,因此即使是较小的改进也会减少重复的错误,并随着时间的推移降低浪费的令牌使用量。
有关详细信息,请参阅“为GitHub Copilot添加存储库自定义说明”。
5. 研究、计划,然后实施
高效使用智能体的一大转变是不再依靠单一会话完成全部工作。 当研究、规划和实施一起发生时,上下文会迅速增长,无关的信息累积,代理质量会随着时间的推移而下降。
将工作分解为明确的阶段:
- 研究: 使用代理浏览代码库、识别相关文件以及了解依赖项。
- 计划: 在进行更改之前创建详细的结构化计划或规范。 这就是推理模型最有价值的位置。
- 在 Copilot 命令行界面(CLI) 中,使用
/plan。 - 在 副驾驶聊天 中的 Visual Studio Code 里,从代理下拉列表中选择“计划”,或在上下文窗口中输入
plan。
- 在 Copilot 命令行界面(CLI) 中,使用
- 实现: 使用重点上下文和适合执行的模型针对计划执行。
在阶段之间启动新会话可防止转发不必要的上下文。 沿用前面阶段的上下文可能会增加 token 用量、引入偏差,并降低代理的判断清晰度。 每个阶段都应只使用其所需的资源。 有关有效确定会话范围的指导,请参阅 使用GitHub Copilot处理任务的最佳做法。
6. 添加确定性护栏
智能体具备非确定性,无法次次输出正确结果,多阶段工作流中更是如此。 如果缺乏约束机制,小错误就会迅速累积:代理会基于错误的输出继续推进,越来越偏离目标,并使调试成本更高、耗时更长。
确定性控制机制引入了明确的通过/失败信号:
- 单元测试 验证代理的更改是否生成了预期行为。
- Linters 强制实施结构和一致性,防止格式设置问题、样式偏移和可避免的清理工作。
- 安全扫描可以及早发现风险模式,以免后续更难处理。
这些控制机制共同形成了一个紧密的反馈闭环:智能体做出更改后,会由测试、规则或扫描对其进行评估,而智能体会在继续推进之前先作出调整。 这可以防止一连串错误更改,而这正是令牌浪费的主要原因之一。
投入这些防护措施的团队会发现,重试次数更少,任务完成速度更快,而且代理行为更可预测。 即使单个步骤提前使用稍微多一些令牌,它们也会减少令牌消耗总量。
后续步骤
除了提高代理效率外,还可以监视和管理支出,以充分利用你的 AI credits支出:
- 使用仪表板和预算控件。 位于 https://github.com/settings/billing 下的“AI 使用情况”页面会按各项功能和模型细分用量,让你清楚了解额度实际消耗在何处,并据此进行调整。
- 在成本累积之前识别高成本模式。 在 Copilot 命令行界面(CLI) 会话中,使用
/usage查看会话级指标,并在工作过程中识别高开销模式。 此外,/chronicle tips分析最近的会话历史记录并显示更高效地使用 Copilot 的机会。 - 升级以增加津贴。 如果定期接近每月限制,则更高的计划可能比支付额外使用量更经济,因为更高的计划有更多的 AI credit 津贴。 请参阅 关于个人版 GitHub Copilot 计划和权益 和 查看和更改GitHub Copilot 计划。