在通过 Agent 进行软件实现的时候,我通常会面临两种情况:一是需要生成一些临时的工具,二是需要修改已有的代码。
针对第一种情况,我的做法是把需求直接告诉Agent,让它从0开始帮我搭建,从头到尾都不关心代码。只关注有没有给我想要的结果。前提是这种工具本身也没有打算长期演进的打算。
第二种情况是修改已有的项目,比如扩展新的功能或者做优化。这种情况下,特别是项目比较大的时候,直接简单地告诉Agent任务,上下文依赖Agent去代码库搜索获取知识,容易产生上下文幻觉。比如
- Agent实现的方向和我想要的效果不一样
- 没有充分考虑到软件设计的思想,自己强行写入了一套代码
这个时候,有一个非常好的做法,其实手工编码的时候也会经常用,那就是:把接口写好。然后通过提示词告诉 Agent:帮我实现 xxx 函数,at具体的文件。这时候 AI 就会很好地感知到上下文,因为我们已经提前把需求收敛了。如果再加上适当的注释,效果可能会更好。