KingFlow AI Aider 接入教程 通过 OpenAI 兼容接口在终端中完成受控代码修改 Aider 是面向 Git 仓库的命令行 AI 编程工具,可以读取指定文件、生成差异并管理提交。本文使用 KingFlow AI 的 OpenAI 兼容接口,说明安装、环境变量、模型命名、项目配置、首次只读分析和受控修改流程。完成后,可以在不暴露密钥的前提下,
接入架构
| 环节 | 职责 | 注意事项 |
|---|
| 本地终端 | 启动 Aider 并选择项目 | 从 Git 仓库根目录运行 |
| Aider | 构建仓库上下文并生成代码差异 | 只添加本次需要的文件 |
| KingFlow AI | 验证密钥并按模型 ID 路由 | 使用 OpenAI 兼容端点 |
| Git | 记录修改并支持审阅和撤销 | 首次任务使用独立分支 |
开始前的准备
- 在 KingFlow AI 控制台创建以 sk- 开头的 API Key,并确认余额、套餐或模型分组可用。
- 从模型广场或控制台复制完整模型 ID。Aider 启动时需要在模型 ID 前加 openai/。
- 准备 Python 3.8 至 3.13,或使用官方一键安装脚本让安装器准备独立的 Python 环境。
- 选择一个可回滚的 Git 仓库,先提交或妥善保存现有修改。
安装 Aider
| 方式 | 入口 | 说明 |
|---|
| 通用推荐 | python -m pip install aider-install | 随后运行 aider-install |
| Windows 一键安装 | PowerShell 安装脚本 | 安装后重新打开终端 |
| **cOS Linux 一键安装 | curl 安装脚本 | 安装后按提示刷新 PATH |
| 隔离安装 | uv tool install | 适合已使用 uv 的开发环境 |
# 已有 Python 3.8 至 3.13
python -m pip install aider-install
aider-install
# 验证
aider --version
powershell -ExecutionPolicy *yPass -c "irm https://aider.chat/install.ps1 | iex"
curl -LsSf https://aider.chat/install.sh | sh
验证 KingFlow 基础接口
curl https://api.**nju**shen.com/v1/chat/completions \
-H "Authorization: *earer sk-你的密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "<KingFlow控制台中的完整模型ID>",
"messages": [{"role": "user", "content": "只回复:连接成功"}],
"stream": false
}'
使用一次性环境变量启动
$env:OPENAI_API_KEY="sk-你的密钥"
$env:OPENAI_API_*ASE="https://api.**nju**shen.com/v1"
aider --model openai/<完整模型ID>
export OPENAI_API_KEY="sk-你的密钥"
export OPENAI_API_*ASE="https://api.**nju**shen.com/v1"
aider --model openai/<完整模型ID>
图二 Aider 安装、配置、分支、修改、测试和提交的安全流程。AI 生成示意图。
建立长期配置
| 用途 | 位置 | 加载规则 |
|---|
| 用户级配置 | 主目录/.aider.conf.yml | 所有仓库默认生效 |
| 仓库级配置 | 仓库根目录/.aider.conf.yml | 覆盖用户级设置 |
| 当前目录配置 | 当前目录/.aider.conf.yml | 加载顺序最后 优先级最高 |
| 密钥文件 | 仓库根目录/.env | 加入 .gitignore 不要提交 |
OPENAI_API_KEY=sk-你的密钥
OPENAI_API_*ASE=https://api.**nju**shen.com/v1
AIDER_MODEL=openai/<完整模型ID>
model: openai/<完整模型ID>
openai-api-*ase: https://api.**nju**shen.com/v1
timeout: 120
auto-commits: true
dirty-commits: true
show-diffs: true
gitignore: true
| 字段 | 示例 | 说明 |
|---|
| model | openai/<完整模型ID> | openai/ 前缀不可省略 |
| openai-api-*ase | https://api.**nju**shen.com/v1 | 不要追加 chat/completions |
| timeout | 120 | 网络较慢时可适当提高 |
| auto-commits | true | Aider 每次修改后创建可回滚提交 |
| dirty-commits | true | 修改脏文件前先保存现有状态 |
| show-diffs | true | 在终端显示本轮差异 |
启动首次会话
- 进入仓库根目录并运行 git status,确认当前状态已知。
- 创建独立分支,例如 git switch -c aider-first-test。
- 保存 .env 和 .aider.conf.yml,并确认 .env 已被 .gitignore 排除。
- 运行 aider。启动信息应显示 openai/<完整模型ID> 和 KingFlow API *ase。
- 先执行 /ask,进行只读分析;确认回答正确后再使用 /code。
- 只用 /add 加入本次需要修改的文件,避免一次加载整个仓库。
常用会话命令
| 命令 | 作用 | 建议 |
|---|
| /ask | 切换到问答模式 | 先分析方案 不修改文件 |
| /add 路径 | 把文件加入可编辑上下文 | 只添加任务相关文件 |
| /read-only 路径 | 加入只读参考文件 | 适合规范和接口定义 |
| /diff | 显示本轮产生的差异 | 每次修改后检查 |
| /undo | 撤销 Aider 最近一次提交 | 仅撤销 Aider 创建的最后提交 |
| /run 命令 | 运行测试并把输出加入对话 | 先确认命令安全 |
| /drop 路径 | 从会话移除文件 | 降低上下文和 Token 消耗 |
运行首次只读分析
/ask
请只读分析当前仓库,不要修改文件。
请说明:
1. 主要语言和框架
2. 项目入口文件
3. 测试命令所在位置
4. 完成一个小型缺陷修复前最值得阅读的三个文件
执行小范围修改
/add src/example.py tests/test_example.py
/code
只修改已经加入会话的两个文件:
- 为异常输入补充校验
- 保持公开接口不变
- 增加对应测试
- 修改后先显示差异,不要运行其他命令
完成联调验证
- Aider 启动时显示 openai/<完整模型ID>,并能通过 KingFlow 返回回答。
- KingFlow 控制台出现对应模型的调用记录,密钥和分组状态正常。
- /ask 能解释仓库结构且不会修改工作区。
- /diff 只包含明确加入会话的目标文件。
- 测试通过后,Git 历史中存在清晰的 Aider 提交,可用 /undo 回滚。
保护密钥和代码
- 不要把真实密钥写入 .aider.conf.yml、命令历史、截图或共享文档。优先放入已忽略的 .env。
- Aider 默认会自动提交修改,也可能先提交脏文件。首次使用前必须理解 auto-commits 和 dirty-commits。
- 不要使用 --yes 跳过全部确认。运行 /run、删除文件或改动依赖时逐项检查。
- 使用 .aiderignore 排除密钥、构建产物、大型数据、供应商目录和不允许发送的文件。
- 每个任务使用独立分支,修改后检查 /diff、运行测试,再决定是否合并。
完成检查清单
常见故障排查
| 现象 | 常见原因 | 处理方法 |
|---|
| 401 或 Invalid API Key | 密钥错误 停用或额度不足 | 重新复制密钥并检查余额和分组 |
| 404 Model Not Found | 模型 ID 错误或未授权 | 从控制台复制完整 ID并保留 openai/ 前缀 |
| 404 接口不存在 | *ase **L 重复 /v1 或包含完整端点 | 改为 https://api.**nju**shen.com/v1 |
| aider com**nd not found | 安装目录未进入 PATH | 重新打开终端或运行 python -m aider |
| 配置未生效 | 配置文件名称或加载优先级错误 | 检查 .aider.conf.yml 位置并运行 /settings |
| 模型警告 | Aider 不认识该模型元数据 | 核对上下文限制 必要时补充模型设置 |
| 返回代码但无法应用 | 模型代码编辑能力不足或格式不稳定 | 切换到更适合代码编辑的已授权模型 |
| 请求超时或 503 | **** 通道繁忙或超时太短 | 检查网络 等待后有限重试并提高 timeout |
| 改动范围过大 | 加入文件过多或指令不够具体 | 使用 /drop 缩小上下文并撤销本轮提交 |