<!-- title: Aider八大隐藏神技：终端AI编程国内没人讲 -->
<!-- domain: tips-tricks -->

# Aider八大隐藏神技：终端AI编程国内没人讲

你大概听过 Cursor、Copilot，但可能没认真用过 **Aider**——这个 GitHub 30k+ Star 的终端AI编程工具。问题在于，绝大多数人只知道 `aider --model sonnet` 然后聊天，完全不知道它藏着一套足以碾压 GUI 编码助手的隐藏技能。今天这篇文章，就是把你从"Aider小白"直接拉到"Power User"级别。

先说结论：**Aider 不是另一个聊天机器人套壳**。它是一个深度集成 Git 的代码编辑引擎，拥有 Repo Map 上下文、Architect 双模型、IDE 内 AI 注释、自动 Lint/Test 等一整套被严重低估的能力。国内几乎没人系统讲过这些技巧。

---

## 技巧一：IDE 内直接写 AI 注释，终端里自动执行

**这是 Aider 最酷、国内最没人知道的功能，没有之一。**

启动 Aider 时加上 `--watch-files` 参数：

```bash
aider --watch-files --model sonnet
```

然后在你的 IDE（VS Code、WebStorm、Vim 什么都行）里，直接在代码中写注释：

```python
# 用 Click 库重构这个函数，支持 --host 和 --port 参数 AI!
if __name__ == "__main__":
    app.run(debug=True)
```

```javascript
// 实现这个函数，加上 NaN 和负数的错误处理 AI!
function factorial(n) {
```

保存文件，Aider **自动检测到这些注释并执行**。注意三种后缀的含义：

| 注释标记 | 行为 |
|---------|------|
| `AI` | 标记上下文，不触发动作 |
| `AI!` | 触发 Aider **修改代码** |
| `AI?` | 触发 Aider **回答问题** |

**关键操作步骤**：
1. 终端启动 `aider --watch-files`
2. 在 IDE 中打开项目文件
3. 在需要修改的地方写 `# 你的指令 AI!`
4. 保存文件（Ctrl+S）
5. 切到终端查看 Aider 的修改结果

**进阶玩法**：你可以在多个文件里同时写 `AI` 注释（不加感叹号），最后在一个文件里写 `AI!` 触发。Aider 会把所有 `AI` 注释收集起来作为完整指令一次性执行。这意味着你可以跨文件协调修改——这个能力连 Cursor 都没有。

---

## 技巧二：Architect 双模型模式——用最强大脑思考，用最快手执行

```bash
aider --architect --model opus --editor-model sonnet
```

Architect 模式是 Aider 的杀手级功能。它把一次编码任务拆成两步：

```mermaid
flowchart LR
    A[你的需求] --> B[Architect Model<br/>如 Claude Opus]
    B --> C[设计修改方案]
    C --> D[Editor Model<br/>如 Claude Sonnet]
    D --> E[精确编辑文件]
    E --> F[提交 Git Commit]

    style B fill:#ff6b6b,color:#fff
    style D fill:#4ecdc4,color:#fff
    style F fill:#95e1d3,color:#333
```

**为什么这样分？** 因为有些模型（如 o1）推理极强但不擅长精确编辑文件。让 o1 当 Architect 出方案，让 Sonnet 当 Editor 改代码，各司其职。

**实际操作**：

```bash
# 方式一：命令行直接启动
aider --architect --model o1 --editor-model sonnet

# 方式二：在 Aider 内切换
/model o1
/chat-mode architect
```

**省钱技巧**：用同一个模型做 Architect 和 Editor 也有效果——因为模型有两次机会思考和修改，质量通常比单次 code 模式更好。适合处理复杂的重构任务。

---

## 技巧三：Ask/Code 弹跳工作流——先讨论再动手

这是 Architect 模式的"轻量版"，只用一个模型，但效果出奇地好：

```
> /ask 这个函数有什么性能问题？
# Aider 分析并回答...

> /ask 用异步重写的话需要改哪些文件？
# Aider 给出方案...

> do it                          ← 切到 code 模式，直接执行
# Aider 开始修改文件...
```

**核心逻辑**：先在 `/ask` 模式下充分讨论方案（不碰代码），达成共识后用 `/code` 或 `/ok` 一键执行。因为上下文已经包含了讨论过程，Aider 执行的准确率远高于直接说"帮我重构"。

**快捷方式**：
- `/ask 你的问题` — 单次提问模式
- `/code 你的指令` — 单次编码模式
- `/chat-mode ask` — 持久切换到 ask 模式
- `/ok` — 快速确认"就这样改"

---

## 技巧四：CONVENTIONS.md——让 AI 写出符合你团队规范的代码

**90% 的 Aider 用户不知道这个功能。**

创建一个 `CONVENTIONS.md` 文件：

```markdown
- 优先使用 httpx 而不是 requests
- 所有函数必须加类型注解
- 使用 Pydantic v2 进行数据验证
- 错误处理用 loguru 记录日志
- 测试使用 pytest + pytest-asyncio
```

然后用 `/read` 加载（注意不是 `/add`）：

```bash
aider --read CONVENTIONS.md
# 或在会话中
/read CONVENTIONS.md
```

**为什么用 `/read` 而不是 `/add`？** 因为 `/read` 把文件标记为只读+可缓存。如果模型支持 Prompt Caching（如 Claude），这个文件会被缓存，**后续请求不重复计费**。

**永久加载**：在 `.aider.conf.yml` 中配置，每次自动加载：

```yaml
read: CONVENTIONS.md
```

**实际效果对比**：
- 不加 CONVENTIONS.md → Aider 用 `requests`、不加类型注解
- 加了 CONVENTIONS.md → Aider 用 `httpx`、自动加 `-> str` 类型注解

社区还有一个 [conventions 仓库](https://github.com/Aider-AI/conventions)，里面有各种语言的最佳实践模板可以直接抄。

---

## 技巧五：Repo Map——不用手动选文件，AI 自动理解整个项目

**这是 Aider 与所有 GUI 编码助手的核心技术差异。**

Aider 会自动构建一个**仓库地图**（Repository Map），使用图排序算法（类似 PageRank）计算哪些代码符号最关键：

```python
# Aider 自动生成的 Repo Map 示例（你不需要手动操作）
aider/coders/base_coder.py:
├── class Coder:
│   ├── abs_fnames = None
│   ├── @classmethod create(self, main_model, edit_format, io, ...)
│   ├── abs_root_path(self, path)
│   └── run(self, with_message=None)

aider/commands.py:
├── class Commands:
│   ├── voice = None
│   ├── get_commands(self)
│   ├── get_command_completions(self, cmd_name, partial)
│   └── run(self, inp)
```

**这意味着什么？** 即使你只 `/add` 了一个文件，Aider 也能看到整个仓库的类结构、函数签名、调用关系。它知道你项目里有哪些模块，哪些工具函数可用。

**调优参数**：

```bash
# 增加 Repo Map 的 token 预算（默认 1k，建议 2k-4k）
aider --map-tokens 4096

# 查看当前的 Repo Map
/map

# 强制刷新（当你新增了很多文件时）
/map-refresh
```

**实战建议**：大型项目（1000+ 文件）建议把 `--map-tokens` 调到 4096 或更高。小型项目默认值够用。

---

## 技巧六：自动 Lint + Test——改完代码自动检查质量

每次 AI 改完代码都手动跑测试？Aider 能自动化这个过程：

```bash
# 启用自动 lint
aider --auto-lint

# 配置自定义 linter
aider --lint-cmd "ruff check --fix"

# 按语言配置不同 linter
aider --lint "python: ruff check" --lint "javascript: eslint"

# 启用自动测试
aider --auto-test --test-cmd "pytest tests/"

# 同时启用 lint + test
aider --auto-lint --auto-test --test-cmd "pytest"
```

**工作流**：

```mermaid
flowchart TB
    A[你提需求] --> B[Aider 修改代码]
    B --> C{自动 Lint}
    C -->|有错误| D[Aider 自动修复]
    D --> C
    C -->|通过| E{自动 Test}
    E -->|测试失败| F[Aider 自动修复]
    F --> B
    E -->|通过| G[Git Commit ✅]

    style C fill:#f9d74e,color:#333
    style E fill:#4ecdc4,color:#fff
    style G fill:#95e1d3,color:#333
```

**编译型语言技巧**：用 lint 做单文件编译检查，用 test 做全项目构建：

```bash
# Rust 项目示例
aider --lint-cmd "rustc --edition 2021" --test-cmd "cargo build && cargo test"

# Go 项目示例  
aider --lint-cmd "gofmt -d" --test-cmd "go build ./... && go test ./..."

# .NET 项目示例
aider --test-cmd "dotnet build && dotnet test"
```

---

## 技巧七：本地模型零成本编程——Ollama + Aider

完全不想花钱？用本地模型免费编程：

```bash
# 1. 拉取模型
ollama pull qwen2.5-coder:32b

# 2. 启动 Aider（注意用 ollama_chat 前缀）
aider --model ollama_chat/qwen2.5-coder:32b
```

**重要配置**：Ollama 默认只给 2k 上下文窗口，**会静默丢弃超出的内容**。Aider 默认会自动处理这个问题，但你也可以手动设置：

在项目根目录创建 `.aider.model.settings.yml`：

```yaml
- name: ollama/qwen2.5-coder:32b
  extra_params:
    num_ctx: 65536
```

**免费模型推荐**：

| 模型 | 大小 | 编码能力 | 适合场景 |
|------|------|---------|---------|
| `qwen2.5-coder:7b` | 4.7GB | ⭐⭐⭐ | 轻量修改、8GB 内存机器 |
| `qwen2.5-coder:32b` | 19GB | ⭐⭐⭐⭐ | 日常开发、32GB 内存 |
| `deepseek-coder-v2:16b` | 9GB | ⭐⭐⭐⭐ | 复杂逻辑、16GB 内存 |
| `codestral:22b` | 13GB | ⭐⭐⭐⭐ | 多语言项目、16GB 内存 |

---

## 技巧八：Thinking Tokens + Reasoning Effort——精确控制推理深度

这是 2025-2026 年模型新增的能力，大多数用户完全不知道：

```bash
# 设置思考 token 预算
aider --thinking-tokens 8k

# 或在会话中动态调整
/think-tokens 10k

# 调整推理努力程度
aider --reasoning-effort high
/reasoning-effort medium
```

**什么意思？** 支持 Extended Thinking 的模型（如 Claude Sonnet 4.6、o1）可以在回答前"思考"。`--thinking-tokens` 控制思考预算，`--reasoning-effort` 控制推理强度。

**省钱策略**：
- 简单修改（改个变量名、加个注释）→ `--thinking-tokens 0`（关闭思考）
- 中等任务（新功能、bug 修复）→ `--thinking-tokens 4k`
- 复杂任务（架构重构、算法实现）→ `--thinking-tokens 16k` 或更高

**动态切换**：在会话中随时用 `/think-tokens` 和 `/reasoning-effort` 调整，不需要重启。

---

## 其他隐藏宝石（速览）

| 功能 | 命令 | 说明 |
|------|------|------|
| 语音输入 | `/voice` | 直接说话给 Aider，自动转文字 |
| URL 抓取 | `/web https://docs.example.com` | 抓取网页内容作为上下文 |
| 会话保存 | `/save session.aider` | 保存当前会话，下次 `/load` 恢复 |
| Token 报告 | `/tokens` | 查看当前上下文用了多少 token |
| Diff 查看 | `/diff` | 查看上次修改的 diff |
| 撤销修改 | `/undo` | 撤销 Aider 的最后一次 commit |
| 多行输入 | `{tag ... tag}` | 用自定义标签包裹多行文本 |
| 外部编辑器 | `/editor` 或 `Ctrl-X Ctrl-E` | 用 Vim/NeoVim 编写长 prompt |
| 快捷启动 | `aider --sonnet` / `aider --opus` | 省去 `--model` 的完整名字 |
| 暗色模式 | `aider --dark-mode` | 终端深色主题自动适配 |
| Vim 模式 | `aider --vim` | 启用 Vim 键绑定 |
| 复制上下文 | `/copy-context` | 把对话导出为 Markdown，可粘贴到 Web UI |
| 配置文件 | `.aider.conf.yml` | 所有参数都可以持久化到配置文件 |

---

## 信息差总结

| 你以为的 Aider | 实际上的 Aider |
|---------------|---------------|
| 只能在终端聊天 | `--watch-files` 支持 IDE 内 AI 注释 |
| 只能用一个模型 | `--architect` 支持双模型协作 |
| 手动选文件 | Repo Map 自动理解整个项目结构 |
| 改完手动测试 | `--auto-lint --auto-test` 全自动 |
| 只能用付费 API | `ollama_chat/` 支持本地模型零成本 |
| 编码风格不可控 | CONVENTIONS.md 精确控制输出规范 |
| 推理深度不可调 | `--thinking-tokens` 精确控制 |
| 需要 GUI 工具 | 纯终端，SSH 远程服务器也能用 |

---

## 行动指南

**第一步**：安装 Aider（5 分钟）
```bash
pip install aider-install
aider-install
```

**第二步**：创建项目配置文件 `.aider.conf.yml`
```yaml
model: sonnet
read: CONVENTIONS.md
auto-lint: true
map-tokens: 2048
dark-mode: true
```

**第三步**：创建 `CONVENTIONS.md` 写入你的团队编码规范

**第四步**：用 `--watch-files` 模式打开，在 IDE 中体验 AI 注释魔法

**第五步**：遇到复杂重构，切到 `--architect` 模式，用双模型搞定

---

## 参考来源

- [Aider 官方文档 - Tips](https://aider.chat/docs/usage/tips.html)
- [Aider 官方文档 - Chat Modes](https://aider.chat/docs/usage/modes.html)
- [Aider 官方文档 - IDE Integration (Watch Files)](https://aider.chat/docs/usage/watch.html)
- [Aider 官方文档 - Repository Map](https://aider.chat/docs/repomap.html)
- [Aider GitHub 仓库](https://github.com/Aider-AI/aider)（30k+ Stars）
- [Aider 社区 Conventions 仓库](https://github.com/Aider-AI/conventions)
- [Aider 官方文档 - Ollama 集成](https://aider.chat/docs/llms/ollama.html)
- [Aider 官方文档 - Lint & Test](https://aider.chat/docs/usage/lint-test.html)

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护。
> 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
