编码约定、仓库地图与编辑失败
用 CONVENTIONS.md 固定编码约定,了解仓库地图如何给 LLM 提供全局上下文,以及编辑没有应用时的排查办法。
编码约定文件
想让模型遵守类型注解、优先选用某些库等规范,最简单的做法是写一个小 Markdown 文件(如 CONVENTIONS.md,写成「Prefer httpx over requests」「Use types everywhere possible」这样的条目),并在聊天里加载。最好用 /read CONVENTIONS.md 或 aider --read CONVENTIONS.md,这样它是只读的,并在启用 prompt caching 时被缓存。想每次都加载,在 .aider.conf.yml 里写:
read: CONVENTIONS.md
# 或多个文件
read: [CONVENTIONS.md, anotherfile.txt]社区贡献的约定见 Aider-AI/conventions 仓库。
仓库地图(repo map)
每次请求,Aider 都会把「整个 Git 仓库的简明地图」连同请求发给 LLM:包含文件列表和各文件的关键符号(类、函数及其签名,附带关键定义行)。好处:LLM 能看到仓库各处的类、方法、签名,往往足以用对模块的 API;需要更多代码时,它能据此判断要看哪些文件,Aider 会提示你把它们加入聊天。仓库很大时,Aider 用图排序算法(文件为节点、依赖为边)只发送与当前聊天最相关的部分,预算由 --map-tokens 控制,默认约 1k token,并会按聊天状态动态调整(没有文件加入聊天时会显著扩大)。/map 打印当前地图,/map-refresh 强制刷新。
编辑没有被应用
模型的修改有时没落到本地文件,Aider 会提示「Failed to apply edit to …」等,通常是模型没按 Aider 期望的格式输出。可以尝试:
- 别加太多文件:上下文超过约 25k token 后多数模型更容易分心、违反系统提示。只加需要编辑的文件,用
/drop、/clear、/tokens控制上下文。 - 换更强的模型:文档列举 GPT-4o、o3-mini、Claude 3.7 Sonnet、DeepSeek V3/R1 等较强模型;多数本地模型勉强可用,编辑错误难以避免。
- 注意本地模型的上下文窗口与量化:Ollama 默认上下文很小,超过会静默丢数据;量化模型更容易出错。
- 试试 whole 编辑格式:
--edit-format whole;启动横幅里能看到当前编辑格式。 - 试试 architect 模式:
--architect或/chat-mode architect,先提方案再由 editor 模型生成编辑,通常更可靠。