文件编辑问题

有时大型语言模型(LLM)会返回一些无法应用到本地文件的代码变更。这种情况下,aider可能会显示类似”Failed to apply edit to filename“或其他错误信息。

这种情况通常是因为LLM没有遵循系统提示,试图以aider不预期的格式进行编辑。Aider会尽力让LLM遵循规范,并努力处理那些”接近”正确格式的LLM编辑。

但有时LLM就是不配合。这种情况下,你可以尝试以下方法。

不要添加过多文件

现在许多LLM都有很大的上下文窗口,但用不相关的代码或对话填充它们会混淆模型。当上下文超过约25k token时,大多数模型会开始分心,更不容易遵循系统提示。

  • 不要向聊天中添加过多文件,添加你认为需要编辑的文件。Aider还会向LLM发送整个git仓库的映射,所以其他相关代码会自动包含。
  • 使用/drop命令从聊天会话中移除当前任务不需要的文件。这可以减少干扰,帮助LLM生成正确格式的编辑。
  • 使用/clear命令清除对话历史,再次帮助LLM集中注意力。
  • 使用/tokens命令查看每条消息使用了多少token。

使用更强大的模型

如果可能,尝试使用GPT-4o、o3-mini、Claude 3.7 Sonnet、DeepSeek V3或DeepSeek R1。这些都是性能强大的模型。

较弱的模型更容易不遵循系统提示指令。大多数本地模型勉强能与aider配合工作,所以编辑错误可能难以避免。

本地模型:上下文窗口与量化

使用本地模型时,请特别注意 Ollama 上下文窗口 的设置。其默认值通常很小,如果超出限制会静默丢弃数据。

经过量化的本地模型更容易出现编辑问题,因为它们的处理能力不足以完全遵循 aider 的系统提示。

尝试完整编辑格式

如果当前使用的是其他编辑格式,可以尝试使用 --edit-format whole 参数运行 aider。您可以在启动信息中查看当前使用的编辑格式:

Aider v0.50.2-dev
Models: claude-3-5-sonnet-20240620 with ♾️ diff edit format

尝试架构师模式

使用 --architect 参数或 /chat-mode architect 命令启用 架构师模式。该模式会先提出修改建议,然后使用单独的模型来处理文件编辑。这种两步流程通常能产生更可靠的编辑结果,特别是对于那些难以遵循编辑格式指令的模型。

更多帮助

如需更多帮助,请查阅我们的 GitHub issues 页面,如果您的问题未被讨论过,请提交新 issue。 或者加入我们的 Discord 与我们交流。

在报告问题时,提供以下信息将非常有帮助:

  • Aider 版本号
  • 您使用的 LLM 模型

包含 aider 启动时打印的 “announcement” 信息 是分享这些有用信息的简便方式。

Aider v0.37.1-dev
Models: gpt-4o with diff edit format, weak model gpt-3.5-turbo
Git repo: .git with 243 files
Repo-map: using 1024 tokens

使用 /help <问题>获取关于使用 aider 的帮助, 包括自定义设置、故障排除、使用 LLM 等方面的疑问。


目录