📖 中英段落对照阅读

项目概览

Aider 是终�?AI Pair Programming 工具的代表作,由 Paul Gauthier 创建,支持多种模型,以稳定的代码编辑和仓库理解能力著称�?

技术栈

维度技�?
语言Python
包管�?pip / uv
依赖prompt_toolkit, GitPython, shtab, dotenv
模型支持OpenAI, Anthropic, OpenRouter, Ollama, 本地模型�?
编辑格式Unified diff, Edit block, Whole file

目录结构

aider/
├── aider/                   # 核心源码
�?  ├── main.py              # CLI 入口
�?  ├── __main__.py          # python -m aider 入口
�?  ├── args.py              # 参数解析
�?  ├── commands.py          # 斜杠命令系统 (/add, /drop, /commit �?
�?  ├── io.py                # 输入输出抽象�?�?  ├── llm.py               # LLM 调用封装
�?  ├── models.py            # 模型配置与能力表
�?  ├── sendchat.py          # 聊天消息发�?�?  ├── repo.py              # Git 仓库操作
�?  ├── repomap.py           # 仓库地图(代码结构摘要)
�?  ├── diffs.py             # Diff 处理与匹�?�?  ├── editor.py            # 编辑器集�?�?  ├── linter.py            # 代码检查集�?�?  ├── voice.py             # 语音输入支持
�?  ├── history.py           # 对话历史管理
�?  ├── watch.py             # 文件监听模式
�?  ├── coders/              # 编码模式实现
�?  �?  ├── base_coder.py    # 编码器基�?�?  �?  ├── architect_coder.py   # Architect 模式
�?  �?  ├── ask_coder.py     # Ask 模式(只读问答)
�?  �?  ├── editblock_coder.py   # Edit block 编辑模式
�?  �?  └── context_coder.py # 上下文管理模�?�?  ├── queries/             # 预设查询/提示�?�?  └── resources/           # 内置资源文件
├── benchmark/               # 评测基准
├── tests/                   # 测试
└── scripts/                 # 脚本工具

核心入口与公�?API

模块入口职责
CLIaider/main.py / aider/__main__.py程序启动、配置加�?
Coderaider/coders/base_coder.pyAgent 主循环、消息处理、代码编�?
Repo Mapaider/repomap.py代码库结构抽象,辅助大模型理解项�?
LLMaider/llm.py多模型后端统一接口
IOaider/io.py终端渲染、用户交�?

亮点设计

1. 多模�?Coder 架构

coders/ 目录下实现了多种编码策略�?- base_coder: 通用 Agent 循环(Message �?LLM �?Tool Use �?Apply �?Commit�?- editblock_coder: 使用 “Search/Replace” 块格式进行精准编辑,这是 Aider 最稳定的编辑方�?- architect_coder: 双模型架构(Architect 模型设计 + Editor 模型实现�?- ask_coder: 只读模式,用于代码解释和问答

2. Repo Map(仓库地图)

repomap.py �?Aider 的核心创新之一�?- 通过静态分析生成代码库的精简结构�?- 包含函数签名、类关系、文件依�?- 作为系统提示注入 LLM,使�?理解”整个项目而无需全量加载

3. Edit Block 格式

Aider 定义了一套结构化的编辑格式:

<<<<<<< SEARCH
旧代�?=======
新代�?>>>>>>> REPLACE

这种格式�?raw diff 更易�?LLM 生成,且容错性更强�?

4. 斜杠命令系统

commands.py 实现了丰富的 /command 交互�?- /add, /drop 管理文件上下�?- /commit, /undo 版本控制

  • /lint, /test 质量门禁
  • /map, /architect 模式切换

待深入研�?

  • repomap.py �?TAGS 解析算法(如何为不同语言生成符号树)
  • editblock_coder.py 的模糊匹配策略(SEARCH 块不完全匹配时的容错�?- [ ] architect_coder.py 的双模型协作协议(Architect �?Editor 的消息传递)
  • diffs.py 中的 diff 解析与冲突解决算�?- [ ] �?Git 集成最佳实践 的关�?

与知识库的关�?