从AI编程代理获得更好结果的10条规则

每个人都在使用AI编码代理。以下是如何让你的代理真正有用。

来源:KDnuggets

AI编码代理不再仅仅是自动补全工具。它们可以读取你的代码库、编辑多个文件、运行命令、创建拉取请求,并通过多步骤开发任务工作。Claude Code、Codex、Cursor、Copilot Agent、Gemini CLI以及类似工具正在改变开发人员构建软件的方式。但更好的工具并不自动意味着更好的代码。

HackerRank的2025年开发者技能报告发现,97%的开发者至少使用一个AI助手,近三分之一的代码现在由AI生成。它还指出,AI正在增加交付压力,而不是消除对强大工程判断力的需求。

一个好的AI辅助开发者与一个沮丧的开发者之间的区别往往归结为工作流。当给予明确的目标、项目上下文、验证规则和安全的迭代方式时,AI编码代理表现最佳。以下是获得更好结果的10个实用规则。

1. 从规范开始,而不是模糊的提示

不好的提示:

更好的提示:

构建一个客户流失仪表板。

目标:
显示流失率、活跃客户、月收入和主要流失风险因素。

范围:
- 在/dashboard添加一个仪表板页面。
- 使用现有的API客户端。
- 重用当前图表组件。
- 不要更改数据库架构。

验收标准:
- 页面加载无控制台错误。
- 指标匹配/analytics/churn端点。
- 为数据转换函数添加测试。
- 在最终回复前运行lint和测试。

编码代理擅长执行,但它们需要一个目标。一个好的规范应包括目标、范围、约束、可能更改的文件、验收标准和测试命令。这反映了专业开发人员的工作方式:任务不是“写代码”,而是“做出一个满足清晰完成定义的更改。”

最近一篇关于编码代理自举的论文从研究角度提出了类似观点:对代理来说,规范可以成为记录的稳定工件,而实现可以被重新生成或修订。

2. 使用AGENTS.md、CLAUDE.md或Copilot指令文件

不要在每次提示中重复相同的项目规则。将持久指令放在代码库级别的代理文件中。

开放的AGENTS.md格式将其描述为代理的README:一个可预测的位置,用于给编码代理设置命令、测试命令、编码约定和代码库特定指令。它已被超过60,000个开源项目使用。

例如:

# AGENTS.md

## 设置
- 使用`pnpm install`安装依赖。
- 使用`pnpm dev`启动应用。
- 使用`pnpm test`运行测试。

## 代码风格
- 使用TypeScript严格模式。
- 优先使用函数式组件。
- 未经批准不要添加新依赖。

## 完成前
- 运行lint。
- 运行相关测试。
- 总结更改的文件及更改原因。

Codex在执行工作前读取AGENTS.md,并支持来自全局、项目和目录特定文件的分层指导。GitHub Copilot也支持在.github/copilot-instructions.md中的仓库自定义指令,可以告诉代理如何构建、测试、验证和遵循项目约定。

3. 保持代理指令简短有用

代理指令文件不是用来粘贴整个工程手册的地方。

Anthropic的技能创作指南指出,好的技能应该简洁、结构良好,并通过实际使用测试。它还警告,一旦指令加载,每个令牌都会与任务上下文的其余部分竞争。

最近一篇关于AGENTS.md和CLAUDE.md文件的论文发现了常见的“配置气味”,包括lint泄漏、上下文膨胀、技能泄漏和冲突指令。在其100个流行代码库样本中,lint泄漏出现在62%的文件中,上下文膨胀出现在42%中。

好的指令文件包括:

  • 如何安装、构建、测试和lint。
  • 项目特定的架构说明。
  • 命名和风格规则。
  • 安全约束。
  • 不要碰什么。
  • 如何报告完成。
  • 不好的指令文件包括:

  • 模型已经知道的通用编码建议。
  • 常见框架的长篇解释。
  • 矛盾的规则。
  • 过时的命令。
  • 太多的“总是”和“从不”指令。
  • 4. 要求代理在编辑前进行审查

    对于非平凡任务,告诉代理在更改之前理解代码库。

    示例:

    在编辑之前,检查相关文件并总结:
    1. 哪些文件控制身份验证,
    2. 错误可能在哪里,
    3. 哪些测试已经覆盖此区域,
    4. 最小的安全更改。
    在总结之前不要修改文件。

    这防止了常见的失败模式,即代理在错误的位置写出看似合理的修复。在要求代理更改系统之前,让代理定位系统。

    5. 对复杂任务使用规划,但不要过度规划微小编辑

    对于大型更改,计划有帮助。对于小型更改,过多的规划会减慢循环。

    GitHub Copilot CLI的最佳实践文档明确推荐在编写代码之前需要结构化实施计划的任务使用计划模式。

    对以下情况使用规划:

  • 迁移。
  • 多文件重构。
  • 身份验证更改。
  • 数据库更改。
  • 性能工作。
  • 生产错误修复。
  • 任何涉及安全或支付的事情。
  • 跳过繁重规划的情况:

  • 拼写错误修复。
  • 小型测试添加。
  • 简单的CSS更改。
  • 单函数重构。
  • 6. 使测试成为契约

    AI生成的代码在被正确之前往往看起来正确。

    HackerRank认为调试正在成为AI时代的核心技能,因为AI生成的代码仍然需要可靠性、安全性和集成工作。其指南建议进行实际的、多文件的调试场景,包括失败的测试、误导性日志和集成边缘情况。

    使用测试作为代理的契约:

    首先为此错误编写失败的测试。
    确认它们失败。
    然后实现最小的修复。
    除非测试本身错误,否则在实现后不要修改测试。
    在完成前运行相关测试套件。

    这种模式对代理特别强大,因为它给了它们一个反馈循环。没有测试,代理优化的是看起来合理的代码。有了测试,它优化的是可工作的代码。

    7. 给出所需风格的示例

    代理比抽象品味更好地跟随示例。

    而不是说:

    使其干净且可投入生产。

    说:

    遵循`src/features/billing/CreateInvoice.tsx`的风格。
    使用与`src/lib/apiClient.ts`相同的错误处理模式。
    使用现有的`Result<T>`类型而不是抛出原始错误。

    GitHub的Copilot最佳实践指南建议在提示时分解复杂任务、具体化、提供输入和输出示例,并遵循良好编码实践。示例减少歧义。它们还防止代理发明与现有代码库冲突的新风格。

    8. 控制依赖和权限

    代理喜欢通过安装包、更改配置或扩大权限来解决问题。这在本地可能有效,但会带来长期维护风险。

    添加规则如:

    ## 依赖政策
    - 未经批准不要添加生产依赖。
    - 在添加新包之前优先使用现有工具。
    - 如果必须添加新依赖,解释原因并列出替代方案。

    这一点特别重要,因为现代编码代理可以运行命令并与开发工具交互。如果你的工具支持钩子或权限控制,请使用它们。Claude Code钩子可以在特定生命周期点运行确定性命令,这在需要某些检查可靠发生而不是希望模型记住时很有用。

    9. 审查AI更改

    不要通过问“看起来好吗?”来审查AI生成的代码。

    通过问这些问题来审查:

  • 它解决了所要求的问题吗?
  • 它改变了无关的行为吗?
  • 它添加了不必要的抽象吗?
  • 它削弱了安全性吗?
  • 它是隐藏错误而不是修复错误吗?
  • 它更新了测试吗?
  • 它遵循项目约定吗?
  • diff可以更小吗?
  • 有经验的开发人员重视代理作为生产力工具,但仍在设计和实现上保持控制,因为他们关心质量属性。这是正确的思维模型。代理可以起草、探索、重构和测试。开发人员仍然拥有架构、正确性和可维护性。

    10. 迭代你的代理指令

    你的第一个AGENTS.md不会是完美的。

    当代理犯错时,不要只修复代码。修复允许错误发生的指令。

    代理错误:

    它直接修改了生成的文件。

    指令更新:

    ## 生成的文件
    - 不要编辑`src/generated/`中的文件。
    - 改为更新架构或生成器源代码。
    - 如果不确定,在更改生成文件前询问。

    它每次都运行整个慢速测试套件。

    ## 测试策略
    - 对于前端组件更改,首先运行受影响的组件测试。
    - 仅在最终完成前或共享工具更改时运行完整测试套件。

    最终思考

    AI编码代理奖励能够编写清晰规范、设计良好反馈循环并仔细审查代码的开发人员。目标不是用“氛围编码”的方式来处理生产系统。目标是在受控的工程工作流中将代理变成一个更快的实施伙伴。

    最佳结果来自给代理提供:

  • 明确的任务。
  • 小型、准确的上下文。
  • 仓库指令文件。
  • 现有风格的示例。
  • 作为契约的测试。
  • 权限边界。
  • 仍然拥有结果的人类审查员。
  • 简而言之:更好的代理输出不是从更好的模型开始的。它是从更好的工程纪律开始的。

    Kanwal Mehreen是一位机器学习工程师和技术作家,对数据科学以及AI与医学的交汇充满热情。她合著了电子书《使用ChatGPT最大化生产力》。作为2022年APAC地区Google Generation Scholar,她倡导多样性和学术卓越。她还被认可为Teradata技术多元化学者、Mitacs全球ink研究学者和Harvard WeCode学者。Kanwal是变革的热心倡导者,创立了FEMCodes以赋能STEM领域的女性。