必看的AI Coding Agent最佳使用指南

Augment Code是最新推出的一款编程工具,个人体验还不错。这是开发团队写的一篇博客,如何正确使用Agent写代码。可以作为一个引,总结写代码中的各种问题。

-----

人工智能领域的许多最新进展反映了人类实际的工作方式:

  • 时间充裕,成果越佳 —— 与人类一样,人工智能在有时间进行思考时表现会更好。
  • 借助工具 —— 当配备更优质的工具时,人工智能的能力会更强,这与人类的情况如出一辙。
  • 从反馈中学习 —— 人工智能通过反馈循环实现自我提升,这和人类从经验中学习颇为相似。
  • 受金钱奖励驱动 —— 如同人类一样,如果给予金钱奖励,人工智能也会更有动力表现得更出色。
    与AI Coding Agent智能体高效协作的关键在于,将其视为与你共事的初级工程师(虽经验不足,但极为聪慧)。秉持这一理念,其他方面的工作自然就能顺利开展。

AI coding Agents擅长哪些工作?

软件开发过程中,所有员工都开始使用智能代理(Agent)—— 从前端和后端开发,到审核拉取请求(PR)、编写文档和设计文档,以及辅助头脑风暴。

与此同时,很明显,在某些任务中,从智能代理那里获得价值可能比在其他任务中要容易得多。以下是我们发现智能代理表现出色的一些场景:

  1. 修复可重现且 “可测试” 的错误
  2. 依据清晰的规格说明(来自任务工单或设计文档)或明确的需求来实现功能
  3. 进行头脑风暴并制作新想法的原型
  4. 对复杂的代码库进行深入探究
  5. 处理拉取请求的审核意见

如何使用AI Agent用于软件开发?

在你开始使用智能代理后,你会很快形成自己的使用方法。目前,以下是一些我们发现非常有效的策略:

  • 1 提示语应该详细,且不宜过短
    对于复杂任务来说尤其如此。如果仅在提示语中用寥寥数语就试图完成一项复杂任务,几乎肯定会失败。

如下例子,Change `SettingsWebviewPanel` class to use events写的过于简单,AI大模型不知道该怎么办。如果写清楚步骤和实现过程,LLM大模型就很强大。

❌ Change `SettingsWebviewPanel` class to use events 
  
  ----------------------------------------------
✅ Currently, we trigger `SettingsWebviewPanel.statusUpdate()` directly by importing the 
`SettingsWebviewPanel` class. Reviewers suggest switching to VSCode events for triggering 
`statusUpdate()` to reduce tight coupling between components.

Let's implement this by: 
1. Creating a new VSCode event 
2. Adding an event handler in the `SettingsWebviewPanel` constructor
3. Firing this event instead of calling `statusUpdate()` directly
  1. 向Agent提供全面的背景
    信息不仅要解释最终目标,还要解释背后的原因、额外的限制等✅(见上面的例子)利用Augment✅ ... First read ticket AU-1858 and search for Authentication design doc on notion ...
    Integrations共享相关文档,如票据、GitHub 问题或 PR包括有用的示例以供参考 ... Implement tests for class 'ImageProcessor' …
    ✅ ... Implement tests for class 'ImageProcessor'. Check 'text_processor.py' for test organization examples ...
    指定相关的关键字和文件位置❌ ... Enable JSON parser for chat backend ... .
    ✅ ... Enable JSON parser for chat backend. It should be used in 'LLMOutputParsing' class, somewhere in 'services' subfolder ...
  2. 将复杂的任务分解成更小、更易消化的部分(一次一个
    )❌ ... Read the ticket BC-986, implement the settings menu, write tests and update docs …✅ ... Read the ticket BC-986 ... → implement the settings menu → write tests and update docs
  3. 对于复杂的任务,首先要与Agent讨论并完善计划。
    ❌ ... Expose time zone selection in settings menu …✅ ... I need to expose time zone selection in settings menu. First come up with a plan and don't jump to implementation before I approve the plan ...
  4. Agent 擅长迭代测试结果和代码执行输出。充分利用这一点
    !❌ ... Implement tests for class 'TextGenerator' ... → (manually running test) → (copy pasting output to Agent) → ... Tests didn't work …

✅ ... Implement tests for class 'TextGenerator' and run them to make sure they work ...

  1. 不要犹豫,尝试使用 Agent 完成您不熟悉的任务!让它探索并迈出第一步——您将在此过程中发现许多新事物
    。❌(哦,我不知道如何做这个任务,那么我该如何将其委托给代理人呢?

✅ ... So I need to implement this new filtering algorithm. Please, explore the code and suggest some ideas how it can be done ...

  1. 当代理表现良好时,提供积极的反馈。这有助于强化代理在正确的轨道上
    。✅ ... Cool, that's almost right! Now let's just handle this corner case ...

以下是我们工程团队给出的一个在实际应用中很有效的提示语示例:

首先让Agent解释背景和内容,提出第一个任务(分解成两个任务),任务基础上添加准确的需求。

Agent没有正常工作怎么办?

这种情况偶尔会发生,但别担心 —— 几乎总是可以解决的!

你有两个选择:

如果智能体(Agent)完全偏离了轨道,开启一个新的智能体会话。
如果智能体只是稍有偏差,但已经取得了一些有用的进展,在同一会话中引导它朝着正确的方向前进。
无论你选择哪种方案,最佳的做法是弄清楚是什么可能让智能体产生了困惑,并切实地帮助它:

 

这完全没问题!就像人与人之间的信任一样,信任不是凭空产生的 —— 它是需要去赢得的!

如果你担心智能体在你的机器上运行潜在危险的命令,那就先从使用非自动模式开始。

如果智能体对文件做出了错误的修改,你随时可以依靠我们的检查点系统来撤销这些更改。

如果你不确定智能体的能力:

首先在 “问答” 模式下使用智能体,以验证它对你的代码库的理解。例如:给我解释一下支持网站中的授权是如何运作的。注意:由于智能体往往倾向于采取行动,一定要明确说明 “这只是一个问题,不要编辑文件”。
然后用简单、独立的任务进行试验:
…… 像这样实现更多的测试……
…… 将这些函数组合到一个带有静态方法的类中……
当你看到积极的成果时,你对智能体的信心自然就会增强!

Agent运行过程中,我们只需要等等、等等嘛?

和科技领域的许多方面一样,与智能体协作是一项需要随着时间推移逐渐培养的技能。在我们内部,谈到使用智能体时,我们认可大致的三个技能水平 —— 并且在每个水平阶段,用户在智能体运行时与它互动的方式往往也有所不同:

我该如何审查由智能体(Agent)编写的代码呢?

Agent写的代码一定是对的?我该如何审查Agent写的代码?


代码审查的工作流程在很大程度上与审查不借助智能体编写的代码相似。

以下是一些让审查过程更高效的建议:

当使用智能体进行大规模的代码改动时,在每个子任务完成后就审查相应的改动,避免积累审查累计债务。
可以随时向智能体询问有关其代码的明确性问题。
注意:由于智能体倾向于采取行动,它们可能会将问题理解为命令。例如,“你为什么要做 X 操作?” 可能会被理解为 “不要做 X 操作”。为了避免这种情况,在提问前加上 “只是一个问题:”。


对于多项代码改进,可以留下类似 #TODO (智能体):在此处使用工具函数 这样的注释,然后让智能体一次性实现所有的 #TODO 注释内容,而不是逐个修复问题。
要求智能体运行 git diff 命令来验证代码改动的完整性,并检查是否需要进行清理工作

总结

这篇博客文章汇集了我们发现的与增强智能体(Augment Agent)配合良好的最佳实践方法。然而,我们确信,与尚未被发现的所有技术相比,这些不过是沧海一粟。我们期待听到你的收获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值