Aider Architect 模式深度解析:用双模型分离“代码推理“与“代码编辑“

发布时间:2026/9/8 22:01:36
Aider Architect 模式深度解析:用双模型分离“代码推理“与“代码编辑“ Aider Architect 模式深度解析用双模型分离代码推理与代码编辑【免费下载链接】aideraider is AI pair programming in your terminal项目地址: https://gitcode.com/GitHub_Trending/ai/aiderAider 提供了实验性的 Architect/Editor 双模型协作机制由Architect模型负责推理并描述如何解决编码问题再由Editor模型把这份方案翻译成具体的文件编辑指令。本文将基于 aider 官方发布文章 Separating code reasoning and editing完整还原这一设计动机、--architect的实战用法、基准测试全量数据并结合 ArchitectCoder 等源码剖析两阶段推理的底层实现。读完后你能够理解 Architect 模式的工作原理并掌握如何组合 Architect/Editor 模型与编辑格式来平衡基准得分、成本与交互速度。设计动机推理能力强但不会写编辑指令的模型这一机制的灵感来自 OpenAI o1 系列模型。o1 系列擅长深度推理但经常无法输出格式规范的代码编辑指令。直接让它们生成 aider 所要求的编辑格式失败率较高而如果允许它们想怎么写就怎么写地描述解决方案再把这份自然语言方案交给一个更传统的 LLM 去翻译成编辑指令整体效果反而显著提升。在 aider 中正常模式下模型必须在一次 prompt/响应往返里同时完成两件事解决编码问题、并按照 aider 的某种编辑格式edit format返回规范的文件修改。由于 aider 的所有编辑格式都要求 LLM 以特定文本形式返回源码修改模型必须同时把注意力分配给解题和遵守格式两个目标。另一个现实因素是早期链式调用多个 LLM 非常慢与 aider 交互式结对编程的定位不兼容。而随着前沿模型的推理速度和成本快速改善这种两阶段方案在 2024 年下半年变得真正可用。核心思路一次推理拆成两个角色Architect/Editor 方式把原本一步完成的任务拆成两次独立推理可以分别使用两个不同的 LLMArchitect只负责解决编码问题怎样描述方案就怎样描述不受编辑格式约束Editor只负责把方案转化为规范、可直接落地的代码编辑无需再做深度推理。这样一来可以把每个角色分配给最擅长的模型o1-preview 这类强推理模型是出色的 ArchitectEditor 则可根据成本、速度和代码编辑能力另行挑选。同样的模型自己和自己配对Architect/Editor 均为同一模型也能带来明显收益相当于给了模型两次先想清楚、再动手改的机会。源码剖析Architect 模式如何执行ArchitectCoder 与 Editor 子 Coder 的接力--architect对应 chat mode 中的architect模式其实现类是 ArchitectCoder继承自AskCoderedit_format architect。关键逻辑在reply_completed方法中aider/coders/architect_coder.py#L11-L48Architect 回复完成后若auto_accept_architect未开启会先通过self.io.confirm_ask(Edit the files?)询问用户是否执行编辑取出主模型配置的 Editor 模型editor_model self.main_model.editor_model or self.main_model——即未显式指定 Editor 时回退为主模型自身用 Editor 模型和editor_edit_format通过Coder.create()新建一个 Editor 子 Coder并设置一系列隔离参数map_tokens 0Editor 不需要 repo map、cache_prompts False、suggest_shell_commands False等调用editor_coder.run(with_messagecontent, preprocFalse)把 Architect 的完整回复文本作为消息交给 Editor 去生成编辑编辑完成后执行self.move_back_cur_messages(I made those changes to the files.)把 Editor 的结果回填到主会话并合并total_cost与 commit 哈希保证成本统计和 git 提交都归属到同一次对话。从源码结构看整个接力过程对用户是透明的主会话里只看到 Architect 的思考描述和一句I made those changes to the files.真正的 diff/whole 编辑由子 Coder 静默完成。Architect 的系统提示词Architect 角色使用的提示词定义在 ArchitectPrompts其核心约束是Act as an expert architect engineer and provide direction to your editor engineer. Study the change request and the current code. Describe how to modify the code to complete the request. The editor engineer will rely solely on your instructions, so make them unambiguous and complete. ... DO NOT show the entire updated function/file/etc!即 Architect 被明确要求只描述需要修改什么不要贴出整个更新后的函数/文件因为完整文件交给 Architect 输出既浪费 token 也偏离其角色定位。模型配置editor_model 与 editor_edit_format 的默认值模型层的支撑在 aider/models.py 的Model类中editor_model_name、editor_edit_format字段以及 get_editor_model() 方法如果未显式指定 Editor 模型则self.editor_model self即 Architect 与 Editor 使用同一模型如果未显式指定 Editor 编辑格式则默认取 Editor 模型的编辑格式并对diff/whole/diff-fenced自动加上editor-前缀映射为editor-diff/editor-whole/editor-diff-fenced。这与官方文档 chat modes 的说法一致Aider has built in defaults to select an editor model based on your main model。也就是说aider --sonnet --architect之所以能直接工作是因为内置默认把 Sonnet 自身同时当作 Editoraider --o1-preview --architect则会按内置默认或--editor-model指定选择一个编辑能力更强的 Editor。启动时 aider 会在横幅中打印当前生效的 Editor 配置见 aider/coders/base_coder.py#L239-L244当edit_format architect时输出Editor model: 模型名 with 编辑格式 edit format方便在会话开始前确认双模型组合。相关命令行与运行时命令从 aider/args.py 可以看到与 Architect 模式直接相关的开关参数作用--architect等价于--chat-mode architect以 Architect 模式启动args.py#L172-L177--auto-accept-architect是否自动接受 Architect 产生的文件修改默认TrueBooleanOptionalAction可用--no-auto-accept-architect关闭--editor-model model显式指定 Editor 模型覆盖内置默认--editor-edit-format format显式指定 Editor 使用的编辑格式可选值与其他 edit format 相同会话运行中也可以随时切换/architect命令临时切换模式、/chat-mode architect持久切换aider/commands.py 中的cmd_editor_model还支持在对话里直接更换 Editor 模型aider/main.py#L1002-L1005 负责把args.auto_accept_architect传入 Coder 构造过程。快速上手Try it!原文档给出的最小可运行示例如下注意需使用包含该特性的开发版本并进入一个 git 仓库pip install -U aider-chat # 进入一个 git 仓库 cd /to/your/git/repo # 使用 Claude 3.5 Sonnet 同时担任 Architect 和 Editor export ANTHROPIC_API_KEYyour-key-goes-here aider --sonnet --architect # 使用 OpenAI 模型gpt-4o 担任 Editor export OPENAI_API_KEYyour-key-goes-here aider --4o --architect aider --o1-mini --architect aider --o1-preview --architect几点实操说明上例中各主模型的 Editor 组合依赖内置默认值想明确控制时用--editor-model与--editor-edit-format显式指定。官方文档推荐的 Editor 编辑格式是editor-diff和editor-whole见 chat modes 文档由于一次请求变成两次Architect 模式更慢、更贵。chat modes 文档明确提示this uses two LLM requests, which can take longer and increase costs。对 o1 这类推理强、编辑弱的模型收益最大对普通模型同一模型自配对有时也能提升结果关闭--auto-accept-architect后Architect 每次给出方案时会先询问Edit the files?再决定是否执行编辑源码见 architect_coder.py#L17。基准测试全量结果85% 的 SOTA 是怎么来的该文章的核心结论是把 o1-preview 作为 Architect配 DeepSeek 或 o1-mini 作为 Editor在 aider 的代码编辑基准测试 上取得了85%的通过率显著超过此前最佳成绩图表中虚线标注的 79.7% 即此前 SOTA。完整数据来自仓库中的基准结果数据文件 aider/website/_data/architect.yml每组均为 133 个 Exercism 测试用例得分列为 pass_rate_2。下表完整继承了原文档图表背后的数据含各模型的 solo 基线Architect 模型Editor 模型编辑格式Pass Rate备注claude-3.5-sonnetBaseline单独使用diff77.4%2024-07-04 基线claude-3.5-sonnetclaude-3.5-sonnetdiff80.5%自配对提升claude-3.5-sonnetdeepseekwhole78.9%claude-3.5-sonnetdeepseekdiff78.9%o1-miniBaseline单独使用diff61.1%基线仅 36 个用例o1-minigpt-4odiff70.7%o1-minideepseekwhole71.4%o1-minideepseekdiff69.2%gpt-4oBaseline单独使用diff71.4%2024-09-26 基线gpt-4ogpt-4odiff75.2%自配对提升gpt-4odeepseekwhole73.7%gpt-4odeepseekdiff74.4%gpt-4o-miniBaseline单独使用whole55.6%2024-07-18 基线gpt-4o-minigpt-4o-miniwhole60.2%自配对提升o1-previewBaseline单独使用diff79.7%2024-09-21 基线即此前 SOTAo1-previewgpt-4odiff80.5%o1-previewclaude-3.5-sonnetdiff82.7%次优成绩o1-previewdeepseekdiff80.5%o1-previewdeepseekwhole85.0%与 o1-mini 并列 SOTAo1-previewo1-miniwhole85.0%与 DeepSeek 并列 SOTA原文档总结的四点关键观察o1-preview DeepSeek/o1-miniwhole 格式创下 SOTA85% 显著高于此前的最佳成绩。但 whole 格式要求 Editor 输出每个被修改文件的完整更新副本两个阶段都相当慢可能不太适合交互式使用o1-preview Sonnet 是次优结果82.7%且这是两个提供商的模型都能用的用户的实用配置自配对普遍有效Sonnet、GPT-4o、GPT-4o-mini 在 Architect/Editor 自配对下得分都高于各自单独工作的基线DeepSeek 作为 Editor 出人意料的强用高效的 diff 格式时除 Sonnet 外它帮助了所有 Architect 模型提升得分。从 architect.yml 中的成本与耗时字段还能量化更快 vs 更好的取舍例如 o1-preview/deepseek/whole85.0%每用例 67.4 秒、133 用例总成本 $35.32而 claude-3.5-sonnet 单独使用77.4%每用例 17.6 秒、总成本 $3.63。也就是说SOTA 配置的成本约为基线的 10 倍选择组合时应按任务价值自行权衡。测试验证Architect 模式的行为有专门测试覆盖tests/basic/test_coder.py 中构造了ArchitectCoder实例分别在auto_accept_architectTrue直接执行编辑与auto_accept_architectFalse且confirm_ask返回 True / False接受/拒绝编辑三种场景下验证reply_completed的分支逻辑与上文剖析的 architect_coder.py 控制流一一对应。小结如何选择合适的组合追求最高质量、能接受慢和贵o1-preview 作 ArchitectDeepSeek 或 o1-mini 作 Editor配 whole 格式实用主义、双提供商用户o1-preview Sonnetdiff82.7% 且工程上更顺滑只有一个模型的 API直接--model m --architect让同一模型自配对多数模型都有提升控制成本优先 diff 类编辑格式并用--editor-model把 Editor 换到便宜且编辑能力强的模型如 DeepSeekArchitect 保留强推理模型。需要牢记的前提是Architect 模式在发布时属于实验特性依赖当时开发版0.57.x.dev 时代的内置模型默认值当前仓库版本中内置的 Architect/Editor 默认组合已随模型配置演进实际可用组合请以当前版本的--list-models输出和 chat modes 文档 为准。【免费下载链接】aideraider is AI pair programming in your terminal项目地址: https://gitcode.com/GitHub_Trending/ai/aider创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询