文件编辑问题
有时大型语言模型(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 等方面的疑问。