{
  "canonical_name": "Aider-AI/aider",
  "compilation_id": "pack_35165193f0074ecaa67af992c5930cbd",
  "created_at": "2026-05-11T08:48:38.145121+00:00",
  "created_by": "project-pack-compiler",
  "feedback": {
    "carrier_selection_notes": [
      "viable_asset_types=skill, recipe, host_instruction, eval, preflight",
      "recommended_asset_types=skill, recipe, host_instruction, eval, preflight"
    ],
    "evidence_delta": {
      "confirmed_claims": [
        "identity_anchor_present",
        "capability_and_host_targets_present",
        "install_path_declared_or_better"
      ],
      "missing_required_fields": [],
      "must_verify_forwarded": [
        "Run or inspect `pip install aider-install` in an isolated environment.",
        "Confirm the project exposes the claimed capability to at least one target host."
      ],
      "quickstart_execution_scope": "allowlisted_sandbox_smoke",
      "sandbox_command": "pip install aider-install",
      "sandbox_container_image": "python:3.12-slim",
      "sandbox_execution_backend": "docker",
      "sandbox_planner_decision": "llm_execute_isolated_install",
      "sandbox_validation_id": "sbx_f6cab3663bf64202a6aa7ab69f49af6f"
    },
    "feedback_event_type": "project_pack_compilation_feedback",
    "learning_candidate_reasons": [],
    "template_gaps": []
  },
  "identity": {
    "canonical_id": "project_6199092206f14d87016a01e6ba902c34",
    "canonical_name": "Aider-AI/aider",
    "homepage_url": null,
    "license": "unknown",
    "repo_url": "https://github.com/Aider-AI/aider",
    "slug": "aider",
    "source_packet_id": "phit_c0888ba95e1949fca869295e642081f2",
    "source_validation_id": "dval_789198eeef554a67b7e85a05df2f099a"
  },
  "merchandising": {
    "best_for": "需要软件开发与交付能力，并使用 claude的用户",
    "github_forks": 4397,
    "github_stars": 44737,
    "one_liner_en": "aider is AI pair programming in your terminal",
    "one_liner_zh": "aider is AI pair programming in your terminal",
    "primary_category": {
      "category_id": "software-development",
      "confidence": "medium",
      "name_en": "Software Development",
      "name_zh": "软件开发与交付",
      "reason": "matched_keywords:git"
    },
    "target_user": "使用 claude, chatgpt 等宿主 AI 的用户",
    "title_en": "aider",
    "title_zh": "aider 能力包",
    "visible_tags": [
      {
        "label_en": "Browser Agents",
        "label_zh": "浏览器 Agent",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "product_domain-browser-agents",
        "type": "product_domain"
      },
      {
        "label_en": "Web Task Automation",
        "label_zh": "网页任务自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "user_job-web-task-automation",
        "type": "user_job"
      },
      {
        "label_en": "Browser Automation",
        "label_zh": "浏览器自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "core_capability-browser-automation",
        "type": "core_capability"
      },
      {
        "label_en": "Verifiable Workflow",
        "label_zh": "可验证工作流",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "workflow_pattern-verifiable-workflow",
        "type": "workflow_pattern"
      },
      {
        "label_en": "Evaluation Suite",
        "label_zh": "评测体系",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "selection_signal-evaluation-suite",
        "type": "selection_signal"
      }
    ]
  },
  "packet_id": "phit_c0888ba95e1949fca869295e642081f2",
  "page_model": {
    "artifacts": {
      "artifact_slug": "aider",
      "files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json",
        "REPO_INSPECTION.md",
        "CAPABILITY_CONTRACT.json",
        "EVIDENCE_INDEX.json",
        "CLAIM_GRAPH.json"
      ],
      "required_files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json"
      ]
    },
    "detail": {
      "capability_source": "Project Hit Packet + DownstreamValidationResult",
      "commands": [
        {
          "command": "pip install aider-install",
          "label": "Python / pip · 官方安装入口",
          "source": "https://github.com/Aider-AI/aider#readme",
          "verified": true
        }
      ],
      "display_tags": [
        "浏览器 Agent",
        "网页任务自动化",
        "浏览器自动化",
        "可验证工作流",
        "评测体系"
      ],
      "eyebrow": "软件开发与交付",
      "glance": [
        {
          "body": "判断自己是不是目标用户。",
          "label": "最适合谁",
          "value": "需要软件开发与交付能力，并使用 claude的用户"
        },
        {
          "body": "先理解能力边界，再决定是否继续。",
          "label": "核心价值",
          "value": "aider is AI pair programming in your terminal"
        },
        {
          "body": "未完成验证前保持审慎。",
          "label": "继续前",
          "value": "publish to Doramagic.ai project surfaces"
        }
      ],
      "guardrail_source": "Boundary & Risk Card",
      "guardrails": [
        {
          "body": "Prompt Preview 只展示流程，不证明项目已安装或运行。",
          "label": "Check 1",
          "value": "不要把试用当真实运行"
        },
        {
          "body": "claude, chatgpt",
          "label": "Check 2",
          "value": "确认宿主兼容"
        },
        {
          "body": "publish to Doramagic.ai project surfaces",
          "label": "Check 3",
          "value": "先隔离验证"
        }
      ],
      "mode": "skill, recipe, host_instruction, eval, preflight",
      "pitfall_log": {
        "items": [
          {
            "body": "项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。",
            "category": "配置坑",
            "evidence": [
              "capability.host_targets | github_repo:638629097 | https://github.com/Aider-AI/aider | host_targets=claude, chatgpt"
            ],
            "severity": "medium",
            "suggested_check": "列出会写入的配置文件、目录和卸载/回滚步骤。",
            "title": "可能修改宿主 AI 配置",
            "user_impact": "安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。"
          },
          {
            "body": "README/documentation is current enough for a first validation pass.",
            "category": "能力坑",
            "evidence": [
              "capability.assumptions | github_repo:638629097 | https://github.com/Aider-AI/aider | README/documentation is current enough for a first validation pass."
            ],
            "severity": "medium",
            "suggested_check": "将假设转成下游验证清单。",
            "title": "能力判断依赖假设",
            "user_impact": "假设不成立时，用户拿不到承诺的能力。"
          },
          {
            "body": "未记录 last_activity_observed。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | last_activity_observed missing"
            ],
            "severity": "medium",
            "suggested_check": "补 GitHub 最近 commit、release、issue/PR 响应信号。",
            "title": "维护活跃度未知",
            "user_impact": "新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "downstream_validation.risk_items | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "进入安全/权限治理复核队列。",
            "title": "下游验证发现风险项",
            "user_impact": "下游已经要求复核，不能在页面中弱化。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "risks.scoring_risks | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "把风险写入边界卡，并确认是否需要人工复核。",
            "title": "存在评分风险",
            "user_impact": "风险会影响是否适合普通用户安装。"
          },
          {
            "body": "issue_or_pr_quality=unknown。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | issue_or_pr_quality=unknown"
            ],
            "severity": "low",
            "suggested_check": "抽样最近 issue/PR，判断是否长期无人处理。",
            "title": "issue/PR 响应质量未知",
            "user_impact": "用户无法判断遇到问题后是否有人维护。"
          },
          {
            "body": "release_recency=unknown。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | release_recency=unknown"
            ],
            "severity": "low",
            "suggested_check": "确认最近 release/tag 和 README 安装命令是否一致。",
            "title": "发布节奏不明确",
            "user_impact": "安装命令和文档可能落后于代码，用户踩坑概率升高。"
          }
        ],
        "source": "ProjectPitfallLog + ProjectHitPacket + validation + community signals",
        "summary": "发现 7 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：配置坑 - 可能修改宿主 AI 配置。",
        "title": "踩坑日志"
      },
      "snapshot": {
        "contributors": 180,
        "forks": 4397,
        "license": "unknown",
        "note": "GitHub API 快照，非实时质量证明；用于开工前背景判断。",
        "stars": 44737,
        "open_issues": 1534,
        "pushed_at": null
      },
      "source_url": "https://github.com/Aider-AI/aider",
      "steps": [
        {
          "body": "不安装项目，先体验能力节奏。",
          "code": "preview",
          "title": "先试 Prompt"
        },
        {
          "body": "理解输入、输出、失败模式和边界。",
          "code": "manual",
          "title": "读说明书"
        },
        {
          "body": "把上下文交给宿主 AI 继续工作。",
          "code": "context",
          "title": "带给 AI"
        },
        {
          "body": "进入主力环境前先完成安装入口与风险边界验证。",
          "code": "verify",
          "title": "沙箱验证"
        }
      ],
      "subtitle": "aider is AI pair programming in your terminal",
      "title": "aider 能力包",
      "trial_prompt": "# aider - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 aider 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的软件开发与交付任务。\n我常用的宿主 AI：claude / chatgpt\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 示例引导, 判断线索。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- 安装前能力预览: aider is AI pair programming in your terminal 输入：用户任务, 当前 AI 对话上下文；输出：示例引导, 判断线索。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. page-intro：项目介绍。围绕“项目介绍”模拟一次用户任务，不展示安装或运行结果。\n2. page-install：安装指南。围绕“安装指南”模拟一次用户任务，不展示安装或运行结果。\n3. page-architecture：系统架构。围绕“系统架构”模拟一次用户任务，不展示安装或运行结果。\n4. page-coders：代码编辑器模块。围绕“代码编辑器模块”模拟一次用户任务，不展示安装或运行结果。\n5. page-git-integration：Git 集成。围绕“Git 集成”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. page-intro\n输入：用户提供的“项目介绍”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. page-install\n输入：用户提供的“安装指南”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. page-architecture\n输入：用户提供的“系统架构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. page-coders\n输入：用户提供的“代码编辑器模块”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. page-git-integration\n输入：用户提供的“Git 集成”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / page-intro：Step 1 必须围绕“项目介绍”形成一个小中间产物，并等待用户确认。\n- Step 2 / page-install：Step 2 必须围绕“安装指南”形成一个小中间产物，并等待用户确认。\n- Step 3 / page-architecture：Step 3 必须围绕“系统架构”形成一个小中间产物，并等待用户确认。\n- Step 4 / page-coders：Step 4 必须围绕“代码编辑器模块”形成一个小中间产物，并等待用户确认。\n- Step 5 / page-git-integration：Step 5 必须围绕“Git 集成”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/Aider-AI/aider\n- https://github.com/Aider-AI/aider#readme\n- aider/README.md\n- aider/__init__.py\n- aider/main.py\n- pyproject.toml\n- docker/Dockerfile\n- requirements.txt\n- aider/io.py\n- aider/sendchat.py\n- aider/llm.py\n- aider/coders/base_coder.py\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 aider 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "voices": [
        {
          "body": "来源平台：github。github/github_issue: Uncaught QueryError in repomap.py line 302（https://github.com/Aider-AI/aider/issues/5123）；github/github_issue: Zed Editor Support（https://github.com/Aider-AI/aider/issues/851）；github/github_issue: Python 3.13 support（https://github.com/Aider-AI/aider/issues/3037）；github/github_issue: Proposal: optional pre-commit safety scan with Agent Threat Rules（https://github.com/Aider-AI/aider/issues/5121）；github/github_issue: Uncaught OSError in _win32_console.py line 403（https://github.com/Aider-AI/aider/issues/5117）；github/github_issue: Qwen local models don't obey instructions to edit files（https://github.com/Aider-AI/aider/issues/5118）；github/github_issue: git repo corrupted（https://github.com/Aider-AI/aider/issues/2734）；github/github_issue: [doc] install guide confusing（https://github.com/Aider-AI/aider/issues/5115）；github/github_issue: Uncaught OSError in pathlib.py line 840（https://github.com/Aider-AI/aider/issues/5114）；github/github_release: Aider v0.86.0（https://github.com/Aider-AI/aider/releases/tag/v0.86.0）；github/github_release: Aider v0.85.0（https://github.com/Aider-AI/aider/releases/tag/v0.85.0）；github/github_release: Aider v0.84.0（https://github.com/Aider-AI/aider/releases/tag/v0.84.0）。这些是项目级外部声音，不作为单独质量证明。",
          "items": [
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Uncaught QueryError in repomap.py line 302",
              "url": "https://github.com/Aider-AI/aider/issues/5123"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Zed Editor Support",
              "url": "https://github.com/Aider-AI/aider/issues/851"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Python 3.13 support",
              "url": "https://github.com/Aider-AI/aider/issues/3037"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Proposal: optional pre-commit safety scan with Agent Threat Rules",
              "url": "https://github.com/Aider-AI/aider/issues/5121"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Uncaught OSError in _win32_console.py line 403",
              "url": "https://github.com/Aider-AI/aider/issues/5117"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Qwen local models don't obey instructions to edit files",
              "url": "https://github.com/Aider-AI/aider/issues/5118"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "git repo corrupted",
              "url": "https://github.com/Aider-AI/aider/issues/2734"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[doc] install guide confusing",
              "url": "https://github.com/Aider-AI/aider/issues/5115"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Uncaught OSError in pathlib.py line 840",
              "url": "https://github.com/Aider-AI/aider/issues/5114"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Aider v0.86.0",
              "url": "https://github.com/Aider-AI/aider/releases/tag/v0.86.0"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Aider v0.85.0",
              "url": "https://github.com/Aider-AI/aider/releases/tag/v0.85.0"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Aider v0.84.0",
              "url": "https://github.com/Aider-AI/aider/releases/tag/v0.84.0"
            }
          ],
          "status": "已收录 12 条来源",
          "title": "社区讨论"
        }
      ]
    },
    "homepage_card": {
      "category": "软件开发与交付",
      "desc": "aider is AI pair programming in your terminal",
      "effort": "安装已验证",
      "forks": 4382,
      "icon": "code",
      "name": "aider 能力包",
      "risk": "可发布",
      "slug": "aider",
      "stars": 44599,
      "tags": [
        "浏览器 Agent",
        "网页任务自动化",
        "浏览器自动化",
        "可验证工作流",
        "评测体系"
      ],
      "thumb": "gray",
      "type": "Skill Pack"
    },
    "manual": {
      "markdown": "# https://github.com/Aider-AI/aider 项目说明书\n\n生成时间：2026-05-11 07:23:32 UTC\n\n## 目录\n\n- [项目介绍](#page-intro)\n- [安装指南](#page-install)\n- [系统架构](#page-architecture)\n- [代码编辑器模块](#page-coders)\n- [Git 集成](#page-git-integration)\n- [仓库映射](#page-repomap)\n- [大语言模型集成](#page-llm-models)\n- [命令系统](#page-commands)\n- [配置系统](#page-config)\n- [语音输入](#page-voice-input)\n\n<a id='page-intro'></a>\n\n## 项目介绍\n\n### 相关页面\n\n相关主题：[安装指南](#page-install), [系统架构](#page-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/README.md](https://github.com/Aider-AI/aider/blob/main/aider/README.md)\n- [aider/__init__.py](https://github.com/Aider-AI/aider/blob/main/aider/__init__.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n- [aider/llms.py](https://github.com/Aider-AI/aider/blob/main/aider/llms.py)\n- [aider/chat.py](https://github.com/Aider-AI/aider/blob/main/aider/chat.py)\n- [aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n</details>\n\n# 项目介绍\n\n## 概述\n\nAider 是一个创新的开源 AI 结对编程工具，旨在通过人工智能技术提升软件开发效率。它是一个基于命令行的工具，允许开发者直接在本地 git 仓库中与 AI 模型协作编写代码。\n\n资料来源：[aider/README.md:1-50]()\n\nAider 的核心设计理念是将大型语言模型（LLM）的强大能力与传统的版本控制系统相结合，为开发者提供一个全新的编程工作流。\n\n## 核心特性\n\n### 多模型支持\n\nAider 支持多种主流 AI 模型后端，包括：\n\n| 模型提供商 | 支持状态 | 配置方式 |\n|-----------|---------|---------|\n| GPT-4 (OpenAI) | ✅ 完全支持 | `OPENAI_API_KEY` 环境变量 |\n| Claude (Anthropic) | ✅ 完全支持 | `ANTHROPIC_API_KEY` 环境变量 |\n| 本地模型 (LLaMA, etc.) | ✅ 通过 OpenRouter 等支持 | 自定义端点配置 |\n| Azure OpenAI | ✅ 企业支持 | Azure 特定配置 |\n\n资料来源：[aider/llms.py:1-100]()\n\n### 深度 Git 集成\n\nAider 与 Git 版本控制系统深度集成，提供了以下功能：\n\n- **自动提交**：AI 每次修改后自动创建有意义的提交信息\n- **差异对比**：支持查看 AI 修改的代码差异\n- **分支管理**：可以在不同分支上进行开发\n- **历史回溯**：通过 git 操作回溯代码历史\n\n资料来源：[aider/coder.py:50-150]()\n\n## 系统架构\n\n### 组件架构图\n\n```mermaid\ngraph TD\n    A[用户终端] --> B[Aider CLI]\n    B --> C[命令解析器]\n    C --> D[聊天控制器]\n    D --> E[LLM 适配器]\n    E --> F[代码编辑器]\n    F --> G[Git 集成层]\n    G --> H[文件系统]\n    E --> I[AI 模型服务]\n    I --> E\n```\n\n### 核心模块说明\n\n| 模块名称 | 文件路径 | 职责描述 |\n|---------|---------|---------|\n| CLI 入口 | `aider/main.py` | 命令行参数解析和应用启动 |\n| 核心编码器 | `aider/coder.py` | 管理 AI 与代码的交互逻辑 |\n| LLM 适配器 | `aider/llms.py` | 封装不同 AI 模型接口 |\n| 聊天控制器 | `aider/chat.py` | 处理用户与 AI 的对话流程 |\n| 命令系统 | `aider/commands.py` | 实现内置命令处理 |\n\n资料来源：[aider/main.py:1-80]()\n\n## 工作流程\n\n### 典型使用流程\n\n```mermaid\ngraph LR\n    A[初始化项目] --> B[启动 Aider]\n    B --> C[发送编程请求]\n    C --> D{AI 理解意图}\n    D -->|理解成功| E[生成/修改代码]\n    D -->|理解失败| F[请求澄清]\n    E --> G[代码审查]\n    G --> H[自动 Git 提交]\n    H --> I[返回结果]\n```\n\n1. **初始化阶段**：用户通过命令行启动 Aider 并指定要编辑的仓库\n2. **对话阶段**：用户通过自然语言描述编程需求\n3. **生成阶段**：AI 模型理解需求后生成或修改代码\n4. **验证阶段**：用户确认或让 AI 迭代修改\n5. **提交阶段**：修改自动以 git 提交的形式保存\n\n资料来源：[aider/chat.py:100-200]()\n\n## 安装与配置\n\n### 环境要求\n\n- Python 3.8 或更高版本\n- Git 版本控制工具\n- 对应的 AI 模型 API 密钥\n\n### 快速开始\n\n```bash\n# 安装 Aider\npip install aider-chat\n\n# 配置 API 密钥\nexport OPENAI_API_KEY=your-key-here\n# 或\nexport ANTHROPIC_API_KEY=your-key-here\n\n# 在 git 仓库中启动\ncd your-project\naider\n```\n\n资料来源：[aider/README.md:100-150]()\n\n## 配置文件\n\nAider 通过以下方式管理配置：\n\n| 配置优先级 | 配置来源 | 示例 |\n|-----------|---------|------|\n| 最高 | 命令行参数 | `aider --no-auto-commit` |\n| 高 | 环境变量 | `AIDER_MODEL=gpt-4` |\n| 中 | 项目级配置 | `.aider.conf.yml` |\n| 低 | 用户级配置 | `~/.aider.conf.yml` |\n\n资料来源：[aider/main.py:80-150]()\n\n## 技术亮点\n\n### 智能代码编辑\n\nAider 采用先进的提示工程技术，能够：\n\n- 准确理解用户的编程意图\n- 保持代码风格一致性\n- 遵循项目现有的编码规范\n- 正确处理多文件依赖关系\n\n资料来源：[aider/coder.py:150-250]()\n\n### 安全与隐私\n\n- 所有代码处理在本地完成\n- API 密钥通过环境变量管理\n- 支持使用本地部署的模型\n- 不收集或上传源代码\n\n## 相关资源\n\n- **官方文档**：[https://aider.chat/docs/](https://aider.chat/docs/)\n- **GitHub 仓库**：[https://github.com/Aider-AI/aider](https://github.com/Aider-AI/aider)\n- **问题反馈**：[GitHub Issues](https://github.com/Aider-AI/aider/issues)\n\n## 总结\n\nAider 代表了 AI 辅助编程工具的新一代发展方向，它通过深度集成 AI 能力与成熟的版本控制系统，为开发者提供了一个高效、安全、可持续的 AI 结对编程环境。无论是小型个人项目还是大型企业代码库，Aider 都能显著提升开发效率。\n\n资料来源：[aider/__init__.py:1-30]()\n\n---\n\n<a id='page-install'></a>\n\n## 安装指南\n\n### 相关页面\n\n相关主题：[项目介绍](#page-intro), [配置系统](#page-config)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [pyproject.toml](https://github.com/Aider-AI/aider/blob/main/pyproject.toml)\n- [docker/Dockerfile](https://github.com/Aider-AI/aider/blob/main/docker/Dockerfile)\n- [requirements.txt](https://github.com/Aider-AI/aider/blob/main/requirements.txt)\n- [requirements/requirements-help.txt](https://github.com/Aider-AI/aider/blob/main/requirements/requirements-help.txt)\n- [CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n</details>\n\n# 安装指南\n\nAider 是一款终端中的 AI 配对编程工具，支持与各种大型语言模型（LLM）协作进行代码开发。本指南详细介绍 Aider 的多种安装方式、系统要求及配置方法。\n\n## 系统要求\n\n### Python 版本兼容性\n\nAider 支持以下 Python 版本：\n\n| Python 版本 | 支持状态 |\n|------------|---------|\n| 3.9        | ✅ 支持 |\n| 3.10       | ✅ 支持 |\n| 3.11       | ✅ 支持 |\n| 3.12       | ✅ 支持 |\n\n资料来源：[CONTRIBUTING.md:1]()\n\n### 核心依赖\n\nAider 的核心功能依赖以下关键库：\n\n| 依赖库 | 用途说明 |\n|--------|----------|\n| `aiohttp` | 异步 HTTP 客户端，用于 API 通信 |\n| `gitpython` | Git 操作集成 |\n| `tiktoken` | OpenAI token 计数 |\n| `packaging` | 版本解析 |\n| `pathspec` | 文件路径匹配 |\n| `pexpect` | 终端交互 |\n| `psutil` | 系统资源监控 |\n| `typer` | 命令行界面构建 |\n| `httpx` | HTTP 客户端 |\n\n资料来源：[requirements.txt:1-50]()\n\n## 安装方式\n\n### 使用 pip 安装\n\n通过 Python 包管理器 pip 进行安装是最简单的方式：\n\n```bash\npip install aider-chat\n```\n\n### 使用 uv 安装\n\n如果使用 uv 作为包管理工具：\n\n```bash\nuv pip install aider-chat\n```\n\n### 使用 Docker 部署\n\nDocker 安装方式适合需要隔离环境的用户：\n\n```bash\ndocker pull aiderai/aider\n```\n\nAider 提供了官方 Dockerfile，位于 `docker/Dockerfile`。Docker 镜像基于 Python 运行环境，包含所有必要的依赖项。\n\n资料来源：[docker/Dockerfile:1]()\n\n### 从源码安装\n\n对于需要最新功能或参与开发的用户，可以从源码安装：\n\n```bash\ngit clone https://github.com/Aider-AI/aider.git\ncd aider\npip install -e .\n```\n\n或使用 uv：\n\n```bash\ngit clone https://github.com/Aider-AI/aider.git\ncd aider\nuv pip install -e .\n```\n\n## 安装流程图\n\n```mermaid\ngraph TD\n    A[开始安装] --> B{选择安装方式}\n    B --> C[pip 安装]\n    B --> D[Docker 安装]\n    B --> E[从源码安装]\n    C --> F[安装 aider-chat]\n    D --> G[拉取 Docker 镜像]\n    E --> H[克隆源码仓库]\n    H --> I[安装可编辑模式]\n    F --> J[配置 LLM API]\n    G --> J\n    I --> J\n    J --> K[验证安装]\n    K --> L[安装完成]\n```\n\n## 环境配置\n\n### LLM API 配置\n\n安装完成后，需要配置 LLM 提供商。支持的模型包括：\n\n- **OpenAI**：GPT-4o、o1、o3-mini 等\n- **Anthropic**：Claude 系列\n- **本地模型**：通过兼容接口连接\n- **其他**：支持 litellm 的所有模型\n\n### 环境变量\n\n可通过以下环境变量进行配置：\n\n| 环境变量 | 说明 | 默认值 |\n|---------|------|--------|\n| `AIDER_MODEL` | 设置默认模型 | - |\n| `AIDER_API_KEY` | 设置 API 密钥 | - |\n| `AIDER_AUTO_COMMITS` | 启用自动提交 | 1 (启用) |\n| `AIDER_SHOW_DIFFS` | 显示差异 | 0 (禁用) |\n\n资料来源：[aider/website/examples/update-docs.md:1]()\n\n## 依赖模块说明\n\n### 核心功能依赖\n\n`requirements.txt` 定义了项目的核心依赖：\n\n```toml\naiohappyeyeballs>=2.6.1\naiohttp>=3.13.3\nanyio>=4.12.1\nhttpx>=0.27.0\npackaging>=26.0\npathspec>=1.0.4\npexpect>=4.9.0\npsutil>=7.2.2\ntyper>=0.24.1\n```\n\n资料来源：[requirements.txt:1-30]()\n\n### 可选功能模块\n\n| 模块 | 用途 | 触发条件 |\n|------|------|----------|\n| `requirements-help.txt` | 帮助文档生成依赖 | 使用 `--help` 功能 |\n| `requirements-browser.txt` | 浏览器集成 | 使用浏览器相关功能 |\n| `requirements-dev.txt` | 开发工具 | 进行开发或测试 |\n\n`requirements-help.txt` 包含以下扩展依赖：\n\n| 依赖 | 版本 | 用途 |\n|------|------|------|\n| `numpy` | 2.4.3 | 科学计算 |\n| `torch` | 2.10.0 | 深度学习框架 |\n| `transformers` | 5.3.0 | 模型转换 |\n| `llama-index-core` | - | 文档索引 |\n\n资料来源：[requirements/requirements-help.txt:1-80]()\n\n## 代码规范要求\n\n开发者在安装开发环境时需遵循以下规范：\n\n### 代码风格\n\n- 遵循 **PEP 8** 规范\n- 最大行长度：100 字符\n- 使用 **isort** 排序导入\n- 使用 **Black** 格式化代码\n\n### 开发环境设置\n\n1. 安装 pre-commit hooks（自动格式化代码）\n2. 运行测试前确保安装开发依赖\n3. Python 版本必须在 3.9-3.12 范围内\n\n资料来源：[CONTRIBUTING.md:1-30]()\n\n## 验证安装\n\n安装完成后，运行以下命令验证：\n\n```bash\naider --version\n```\n\n或启动交互式会话：\n\n```bash\naider\n```\n\n## 常见问题\n\n### 依赖冲突\n\n如果遇到依赖冲突，建议使用虚拟环境：\n\n```bash\npython -m venv aider-env\nsource aider-env/bin/activate  # Linux/Mac\n# 或\naider-env\\Scripts\\activate     # Windows\npip install aider-chat\n```\n\n### 权限问题\n\nLinux/Mac 用户可能需要使用 `--user` 安装：\n\n```bash\npip install --user aider-chat\n```\n\n或将 pip 安装路径添加到 `PATH` 环境变量。\n\n### Git 依赖\n\nAider 依赖 Git 进行版本控制，确保系统已安装 Git：\n\n```bash\ngit --version\n\n---\n\n<a id='page-architecture'></a>\n\n## 系统架构\n\n### 相关页面\n\n相关主题：[代码编辑器模块](#page-coders), [大语言模型集成](#page-llm-models)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py) *(未在当前上下文中提供)*\n- [aider/io.py](https://github.com/Aider-AI/aider/blob/main/aider/io.py) *(未在当前上下文中提供)*\n- [aider/sendchat.py](https://github.com/Aider-AI/aider/blob/main/aider/sendchat.py) *(未在当前上下文中提供)*\n- [aider/llm.py](https://github.com/Aider-AI/aider/blob/main/aider/llm.py) *(未在当前上下文中提供)*\n\n**注意**：由于当前上下文未包含实际源码文件，本页内容基于 README.md、文档网站及示例对话中的可用信息构建。\n\n</details>\n\n# 系统架构\n\n## 概述\n\nAider 是一个终端中的 AI 结对编程工具，它使开发者能够与大型语言模型（LLM）协作来启动新项目或扩展现有代码库。该工具的核心设计围绕命令行界面、LLM 集成、Git 工作流自动化和代码编辑能力展开。\n\nAider 支持多种 LLM 提供商，包括 DeepSeek、Claude 3.7 Sonnet、OpenAI o1、o3-mini、GPT-4o 等，同时也支持本地模型运行。\n\n---\n\n## 核心架构组件\n\n基于项目结构和功能模块的划分，Aider 的系统架构主要由以下几个核心组件构成：\n\n| 组件 | 功能描述 | 典型文件 |\n|------|----------|----------|\n| **main.py** | CLI 入口点，参数解析，命令路由 | 命令行参数处理、配置加载 |\n| **io.py** | 输入输出处理 | 用户交互、输出格式化 |\n| **llm.py** | LLM 通信层 | API 调用、响应处理 |\n| **sendchat.py** | 聊天消息发送 | 与 LLM 的消息交换 |\n\n*资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)*\n\n---\n\n## 架构分层\n\n### 表现层（Presentation Layer）\n\n表现层负责与用户进行交互，包括：\n\n- **命令行界面**：通过 argparse/typer 处理用户输入的命令行参数\n- **输出渲染**：彩色终端输出、差异显示、聊天历史格式化\n- **用户确认**：处理 yes/no 确认提示\n\n### 业务逻辑层（Business Logic Layer）\n\n业务逻辑层处理核心功能：\n\n- **代码库映射**：分析整个代码库结构，构建代码地图（Repo Map），帮助 LLM 理解项目结构\n- **编辑管理**：跟踪代码变更、应用编辑、处理冲突\n- **Git 集成**：自动提交变更、生成有意义的提交信息\n\n### 集成层（Integration Layer）\n\n集成层负责与外部系统通信：\n\n```mermaid\ngraph LR\n    A[用户] --> B[Aider CLI]\n    B --> C[LLM API]\n    C -->|API 响应| B\n    B -->|代码变更| D[本地文件系统]\n    B -->|提交| E[Git 仓库]\n```\n\n### 数据层（Data Layer）\n\n数据层处理持久化和临时存储：\n\n- **聊天历史**：保存对话上下文\n- **输入历史**：.aider.history 文件\n- **配置存储**：环境变量、配置文件\n\n---\n\n## 工作流程\n\nAider 的典型工作流程如下：\n\n```mermaid\ngraph TD\n    A[启动 Aider] --> B[解析命令行参数]\n    B --> C[初始化 LLM 连接]\n    C --> D[加载代码库上下文]\n    D --> E[构建 Repo Map]\n    E --> F[进入主循环]\n    F --> G{用户输入}\n    G -->|聊天请求| H[发送至 LLM]\n    H --> I[处理响应]\n    I --> J{需要编辑?}\n    J -->|是| K[应用代码变更]\n    J -->|否| L[显示响应]\n    K --> M[自动 Git 提交]\n    M --> F\n    L --> F\n    G -->|退出命令| N[结束会话]\n```\n\n### 代码编辑流程\n\n当用户请求代码变更时，Aider 执行以下步骤：\n\n1. 接收用户的自然语言请求\n2. 结合当前代码库上下文（Repo Map）\n3. 将完整上下文发送给 LLM\n4. 接收 LLM 返回的编辑指令\n5. 应用变更到本地文件\n6. 自动创建 Git 提交\n\n---\n\n## LLM 集成架构\n\n### 支持的模型类型\n\nAider 支持多种 LLM 配置：\n\n| 模型类别 | 示例模型 | 使用方式 |\n|----------|----------|----------|\n| 云端 API | DeepSeek, Claude, GPT-4o | `--model deepseek --api-key deepseek=<key>` |\n| OpenAI 兼容 | o3-mini, GPT 系列 | `--model o3-mini --api-key openai=<key>` |\n| 本地模型 | Llama, Mistral | 支持通过 API 兼容接口连接 |\n\n### 上下文构建\n\nLLM 集成的重要组成部分是构建有效的上下文：\n\n- **Repo Map**：整个代码库的结构映射，帮助 LLM 理解项目布局\n- **当前文件内容**：用户正在编辑的文件\n- **聊天历史**：之前的对话记录\n- **Git 差异**：未提交的代码变更\n\n---\n\n## Git 集成\n\nAider 的 Git 集成实现了自动化的版本控制工作流：\n\n```mermaid\ngraph LR\n    A[代码变更] --> B[暂存更改]\n    B --> C[生成提交信息]\n    C --> D[创建提交]\n    D --> E[Git 历史]\n```\n\n### 自动提交特性\n\n- 每次 LLM 触发的代码变更都会自动提交\n- 提交信息由 LLM 生成，通常具有描述性\n- 支持通过 `--no-auto-commits` 禁用自动提交\n- 使用 `--show-diffs` 可在提交时显示差异\n\n*资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)*\n\n---\n\n## 输入输出系统\n\n### 输入方式\n\nAider 支持多种输入方式：\n\n1. **命令行输入**：通过终端直接输入命令\n2. **语音输入**：使用麦克风进行语音控制\n3. **Web 聊天**：通过浏览器界面与 LLM 交互\n4. **剪贴板**：复制粘贴代码片段\n\n### 输出显示\n\n- **彩色终端输出**：不同类型的信息使用不同颜色\n- **代码差异高亮**：使用语法高亮显示变更\n- **Markdown 渲染**：支持在终端中渲染 Markdown 内容\n\n---\n\n## 配置系统\n\nAider 使用多层次的配置系统：\n\n```mermaid\ngraph TD\n    A[配置优先级] --> B[命令行参数]\n    A --> C[环境变量]\n    A --> D[配置文件]\n    B --> E[实际配置]\n    C --> E\n    D --> E\n```\n\n### 环境变量\n\n常见的环境变量配置：\n\n| 环境变量 | 默认值 | 描述 |\n|----------|--------|------|\n| `AIDER_MODEL` | gpt-4 | 默认使用的模型 |\n| `AIDER_AUTO_COMMITS` | 1 | 是否自动提交（1=启用，0=禁用） |\n| `AIDER_SHOW_DIFFS` | 0 | 是否显示差异 |\n| `AIDER_HISTORY_FILE` | .aider.history | 输入历史文件 |\n\n*资料来源：[aider/website/examples/update-docs.md](https://github.com/Aider-AI/aider/blob/main/aider/website/examples/update-docs.md)*\n\n---\n\n## 扩展功能模块\n\n### 代码检查与测试\n\nAider 集成了代码质量检查功能：\n\n- 每次变更后自动运行 linter\n- 自动执行测试套件\n- 能够根据 linter 和测试反馈自动修复问题\n\n### 多语言支持\n\nAider 支持 100+ 编程语言，包括：\n\n- Python、JavaScript、TypeScript\n- Rust、Go、Ruby\n- PHP、C++、C\n- HTML、CSS 等\n\n### IDE 集成\n\n用户可以在喜欢的 IDE 中使用 Aider，通过在代码中添加注释来请求变更，Aider 会自动处理。\n\n---\n\n## 技术栈\n\n基于项目依赖文件分析，Aider 的主要技术依赖包括：\n\n| 类别 | 技术 | 用途 |\n|------|------|------|\n| **LLM 框架** | llama-index | LLM 调用和索引 |\n| **终端 UI** | prompt_toolkit | 交互式命令行界面 |\n| **HTTP 客户端** | aiohttp | 异步 API 通信 |\n| **版本控制** | GitPython | Git 操作 |\n| **向量化** | sentence-transformers | 代码嵌入 |\n| **分词** | tiktoken | Token 计数和分词 |\n\n*资料来源：[requirements/requirements-help.txt](https://github.com/Aider-AI/aider/blob/main/requirements/requirements-help.txt)*\n\n---\n\n## 目录结构\n\nAider 项目的典型目录结构：\n\n```\naider/\n├── main.py          # CLI 入口点\n├── io.py            # 输入输出处理\n├── sendchat.py      # 聊天消息发送\n├── llm.py           # LLM 通信\n├── getinput.py      # 用户输入处理\n├── codemap.py       # 代码库映射\n├── queries.py       # 查询构建\n├── website/         # 文档网站（Jekyll）\n└── tests/           # 测试套件\n```\n\n*资料来源：[CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)*\n\n---\n\n## 总结\n\nAider 的系统架构采用分层设计，将用户界面、核心业务逻辑、LLM 集成和数据持久化分离。其核心优势在于：\n\n1. **简洁的 CLI 界面**：通过命令行直接与 LLM 交互\n2. **强大的上下文理解**：通过 Repo Map 技术理解代码库结构\n3. **自动化的 Git 工作流**：无需手动提交代码变更\n4. **灵活的 LLM 支持**：支持多种云端和本地模型\n5. **开发者友好的集成**：与 linter、测试框架、IDE 无缝集成\n\n这种架构使 Aider 成为一个高效、可靠的 AI 结对编程工具，能够在各种规模和类型的项目中发挥作用。\n\n---\n\n<a id='page-coders'></a>\n\n## 代码编辑器模块\n\n### 相关页面\n\n相关主题：[系统架构](#page-architecture), [Git 集成](#page-git-integration)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/coders/base_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/base_coder.py)\n- [aider/coders/editblock_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/editblock_coder.py)\n- [aider/coders/wholefile_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/wholefile_coder.py)\n- [aider/coders/udiff_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/udiff_coder.py)\n- [aider/coders/patch_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/patch_coder.py)\n- [aider/getinput.py](https://github.com/Aider-AI/aider/blob/main/aider/getinput.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n</details>\n\n# 代码编辑器模块\n\n## 概述\n\nAider 的代码编辑器模块是整个工具的核心组件之一，负责管理与大型语言模型（LLM）的代码交互、修改和应用。该模块采用策略模式设计，通过多个专门的编码器（coder）类来处理不同类型的代码编辑场景，从简单的代码块替换到复杂的统一差异（unified diff）应用。代码编辑器模块与 Git 版本控制系统深度集成，自动为每次修改生成语义化的提交信息，使开发者能够方便地回溯、对比和撤销 AI 产生的变更。\n\nAider 支持多种代码编辑策略，包括编辑块模式（Edit Block）、整文件模式（Whole File）、差异模式（Udiff）和补丁模式（Patch），每种模式都针对特定的使用场景和 LLM 能力进行了优化。这种模块化的架构设计允许开发者在不同场景下选择最合适的编辑策略，同时也便于扩展新的编辑模式以适应未来 LLM 能力的提升。\n\n## 架构设计\n\n### 核心类结构\n\nAider 的代码编辑器模块采用分层架构设计，基类 `BaseCoder` 定义了所有编码器必须实现的接口和通用功能，而具体的编辑策略则由子类实现。这种设计遵循了面向对象编程的开闭原则，使得添加新的编辑策略时无需修改现有代码。编码器类负责解析 LLM 返回的编辑指令、验证语法正确性、执行文件修改以及与 Git 仓库进行交互。\n\n```mermaid\ngraph TD\n    A[用户请求] --> B{编辑策略选择}\n    B --> C[EditBlockCoder]\n    B --> D[WholeFileCoder]\n    B --> E[UdiffCoder]\n    B --> F[PatchCoder]\n    C --> G[解析编辑指令]\n    D --> G\n    E --> G\n    F --> G\n    G --> H[验证语法]\n    H --> I[执行文件修改]\n    I --> J[Git 自动提交]\n    J --> K[返回结果给用户]\n```\n\n### 基类设计\n\n`BaseCoder` 类作为所有编码器的抽象基类，定义了代码编辑的核心接口和行为。基类实现了与 LLM 的通信机制、文件系统的读写操作、Git 仓库的状态管理以及用户交互界面的构建。每个具体的编码器只需重写特定的方法来适配其独特的编辑策略，而无需重新实现通用的功能逻辑。基类还负责维护编辑上下文，确保 LLM 能够理解当前代码的状态和修改历史。\n\n```mermaid\nclassDiagram\n    class BaseCoder {\n        +repo Repo\n        +io InputOutput\n        +edit_format: str\n        +cur_markers: list\n        +show_source: bool\n        +get_context() list\n        +run()\n        +send_new_content()\n        +edit_response() bool\n        +commit()\n    }\n    \n    class EditBlockCoder {\n        +done_messages: list\n        +edit_block_additions() bool\n        +replace_markers()\n    }\n    \n    class WholeFileCoder {\n        +write_file()\n        +check_syntax()\n    }\n    \n    class UdiffCoder {\n        +udiff_edit_response()\n        +parse_diff()\n    }\n    \n    class PatchCoder {\n        +apply_patch()\n        +validate_patch()\n    }\n    \n    BaseCoder <|-- EditBlockCoder\n    BaseCoder <|-- WholeFileCoder\n    BaseCoder <|-- UdiffCoder\n    BaseCoder <|-- PatchCoder\n```\n\n## 编辑策略类型\n\n### 编辑块模式（Edit Block）\n\n编辑块模式是 Aider 默认的编辑策略，适用于大多数代码修改场景。该模式使用特殊的标记语法来标识需要修改的代码区域，LLM 在生成的响应中使用这些标记来指定新代码应该插入的位置和范围。编辑块模式的优势在于它能够精确定位修改位置，即使文件很长也能准确应用变更，而不会影响文件中的其他内容。\n\n编辑块模式的工作流程包括：首先解析 LLM 响应中的特殊标记（如 `<<<<<<< ORIGINAL` 和 `=======`），然后提取原始代码和新代码的边界，接着执行文本替换操作，最后验证修改后的文件语法是否正确。这种模式特别适合处理函数级别的修改、添加新的代码段或者替换现有的逻辑实现。\n\n### 整文件模式（Whole File）\n\n整文件模式采用替换整个文件内容的方式来应用修改，适用于需要对文件进行大幅度重构的场景。当 LLM 返回完整的文件内容时，Aider 会用新内容完全替换旧文件。这种模式的优点是实现简单、不容易出现部分更新的问题，但缺点是当文件较长时会消耗更多的输入 token，因为它需要重新发送整个文件内容给 LLM。\n\n整文件模式在以下场景中特别有用：语言转换（如从 Python 2 迁移到 Python 3）、大规模重构需要同时修改多处代码、以及 LLM 更好地理解完整上下文时。该模式还支持语法检查功能，可以在应用修改前验证代码的语法正确性，避免将明显错误的代码写入文件。\n\n### 统一差异模式（Udiff）\n\n统一差异模式使用标准的 unified diff 格式来表示代码修改，这是开发者熟悉的传统 diff 格式。LLM 生成包含上下文行的差异信息，Aider 解析这些差异并应用到源文件中。这种模式的优点是与现有的代码审查工具和版本控制系统高度兼容，便于人类理解和审查 LLM 生成的修改。\n\nUdiff 模式特别适合与支持 unified diff 的 LLM 一起使用，或者当需要将 LLM 的修改集成到已有的代码审查流程中时。该模式能够保留修改的历史上下文，使得 diff 输出更加可读和易于理解。\n\n### 补丁模式（Patch）\n\n补丁模式基于标准的 patch 格式来处理代码修改，提供了一种更加结构化的修改方式。与 Udiff 模式类似，Patch 模式也生成可读的差异输出，但格式更加规范化，便于解析和处理。Aider 在应用补丁时会进行多重验证，包括检查文件的当前状态是否与补丁期望的状态匹配。\n\n## 核心组件详解\n\n### 文件输入输出管理\n\n`InputOutput` 类负责管理与用户的交互输入输出，以及文件的读写操作。该类封装了 prompt_toolkit 库的交互式输入功能，支持命令历史记录、自动补全和自定义样式等特性。`InputOutput` 类维护了输入历史文件和聊天历史文件的路径，使得用户的输入历史可以在会话之间持久化保存。\n\n```mermaid\ngraph LR\n    A[用户输入] --> B[InputOutput]\n    B --> C[PromptSession]\n    B --> D[FileHistory]\n    C --> E[终端显示]\n    D --> F[历史文件]\n```\n\n### Git 集成\n\n代码编辑器模块与 Git 深度集成，实现了自动提交功能。每次 LLM 产生的修改都会被自动提交到本地 Git 仓库，并生成语义化的提交信息。这些提交信息描述了修改的内容和目的，便于开发者理解变更历史。Aider 使用熟悉的 Git 工具来管理修改历史，支持查看差异（diff）、管理分支和撤销（undo）AI 的修改。\n\n### Lint 和测试集成\n\nAider 支持在每次修改后自动运行 linter 和测试套件。当 LLM 生成的代码导致 linter 检测到问题时，Aider 可以请求 LLM 自动修复这些问题。这种自动化的工作流程确保了代码质量的持续维护，减少了手动检查和修复的工作量。\n\n## 配置与使用\n\n### 命令行参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--edit-format` | 指定编辑策略 | auto |\n| `--no-auto-commits` | 禁用自动提交 | False |\n| `--show-diffs` | 显示提交时的差异 | False |\n| `--yes` | 跳过所有确认提示 | False |\n\n### 环境变量\n\n| 变量名 | 说明 | 默认值 |\n|--------|------|--------|\n| `AIDER_AUTO_COMMITS` | 启用自动提交 | 1 |\n| `AIDER_SHOW_DIFFS` | 显示差异 | 0 |\n\n## 工作流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant IO as InputOutput\n    participant Coder as Coder\n    participant LLM as LLM\n    participant Git as Git\n    participant FS as 文件系统\n\n    User->>IO: 发送请求\n    IO->>Coder: 转发请求\n    Coder->>FS: 读取当前文件\n    Coder->>Coder: 生成上下文\n    Coder->>LLM: 发送编辑请求\n    LLM-->>Coder: 返回编辑指令\n    Coder->>Coder: 解析并验证\n    Coder->>FS: 写入修改\n    Coder->>Git: 创建提交\n    Coder-->>User: 返回结果\n```\n\n## 技术栈\n\n代码编辑器模块依赖以下核心技术组件：\n\n- **prompt_toolkit**：用于构建交互式命令行界面\n- **GitPython**：用于与 Git 仓库进行交互\n- **tiktoken**：用于 LLM 输出的分词和标记\n- **tree-sitter** 或 **AST 解析器**：用于语法验证\n\n## 扩展与定制\n\n开发者可以通过继承 `BaseCoder` 类来创建自定义的编辑策略。新的编码器类需要实现以下核心方法：\n\n1. `get_context()`：返回发送给 LLM 的上下文信息\n2. `edit_response()`：解析 LLM 的响应并应用修改\n3. `commit()`：创建 Git 提交\n\n这种扩展机制使得 Aider 能够适应不同的编辑需求和 LLM 能力，为未来可能出现的新编辑模式提供了良好的扩展基础。\n\n---\n\n<a id='page-git-integration'></a>\n\n## Git 集成\n\n### 相关页面\n\n相关主题：[代码编辑器模块](#page-coders), [命令系统](#page-commands)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/repo.py](https://github.com/Aider-AI/aider/blob/main/aider/repo.py)\n- [aider/diffs.py](https://github.com/Aider-AI/aider/blob/main/aider/diffs.py)\n- [aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n- [aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n- [README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n- [CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n</details>\n\n# Git 集成\n\nAider 的 Git 集成功能是其核心特性之一，它允许 AI 编程助手与版本控制系统无缝协作。通过自动提交更改、提供差异查看以及与现有 Git 工作流的深度集成，Aider 使开发者能够轻松追踪、管理和回滚 AI 辅助所做的代码修改。\n\n## 功能概述\n\nAider 的 Git 集成提供以下核心能力：\n\n| 功能 | 描述 |\n|------|------|\n| 自动提交 | AI 修改代码后自动创建语义化的提交 |\n| 差异查看 | 可选择显示每次提交的详细差异 |\n| 回滚支持 | 通过标准 Git 命令撤销 AI 的更改 |\n| 仓库检测 | 自动识别当前目录是否在 Git 仓库中 |\n| 文件忽略 | 支持 .aiderignore 配置忽略规则 |\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## 核心组件\n\n### Repository 管理器\n\n`aider/repo.py` 模块负责管理与 Git 仓库的交互。该模块处理仓库检测、文件状态追踪和提交历史管理。\n\n```mermaid\ngraph TD\n    A[用户运行 aider] --> B{检测 Git 仓库}\n    B -->|是| C[初始化 Repository]\n    B -->|否| D[禁用 Git 功能]\n    C --> E[加载 .aiderignore]\n    E --> F[扫描已修改文件]\n    F --> G[准备自动提交]\n```\n\n### 差异处理模块\n\n`aider/diffs.py` 负责生成和管理代码差异。当 AI 完成修改后，该模块计算并格式化变更内容，供提交时展示。\n\n资料来源：[aider/diffs.py](https://github.com/Aider-AI/aider/blob/main/aider/diffs.py)\n\n## 命令行配置\n\n### Git 相关参数\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `--git` | 布尔 | True | 启用/禁用 Git 仓库检测 |\n| `--gitignore` | 布尔 | True | 自动添加 .aider* 到 .gitignore |\n| `--add-gitignore-files` | 布尔 | False | 将 .gitignore 中的文件纳入编辑范围 |\n| `--aiderignore` | 路径 | .aiderignore | 指定 aider 忽略文件位置 |\n| `--subtree-only` | 布尔 | False | 仅处理当前子目录中的文件 |\n| `--auto-commits` | 布尔 | True | 启用/禁用自动提交 |\n| `--show-diffs` | 布尔 | False | 提交时显示差异 |\n\n资料来源：[aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n\n### 环境变量配置\n\n| 环境变量 | 值 | 说明 |\n|----------|-----|------|\n| `AIDER_AUTO_COMMITS` | 0 或 1 | 控制是否启用自动提交（0=禁用，1=启用） |\n| `AIDER_SHOW_DIFFS` | 0 或 1 | 控制提交时是否显示差异（0=否，1=是） |\n\n## 自动提交机制\n\nAider 采用智能自动提交策略，每次 AI 修改代码后都会创建包含有意义提交信息的提交。\n\n```mermaid\ngraph LR\n    A[AI 修改代码] --> B[生成变更]\n    B --> C[生成语义化提交信息]\n    C --> D[执行 git add]\n    D --> E[执行 git commit]\n    E --> F[记录到提交历史]\n```\n\n### 提交信息生成\n\nAider 会分析代码变更内容，自动生成描述性的提交信息。例如：\n\n```\naider: Updated function signature in main.py\naider: Fixed main() function to accept input and output keyword arguments\naider: Added padding inside the border of the blockquote\n```\n\n资料来源：[aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n\n## 忽略文件配置\n\n### .aiderignore 语法\n\n`.aiderignore` 文件使用与 `.gitignore` 类似的语法规则，用于指定哪些文件不应被 Aider 追踪和修改。\n\n```gitignore\n# 忽略临时文件\n*.tmp\n*.log\n\n# 忽略构建产物\ndist/\nbuild/\n__pycache__/\n```\n\n### .gitignore 集成\n\n当 `--gitignore` 参数启用时（默认行为），Aider 会自动将以下文件添加到项目的 `.gitignore`：\n\n- `.aider*` - Aider 配置和缓存文件\n- `.aider.history` - 聊天历史记录\n\n资料来源：[aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n\n## 使用流程\n\n```mermaid\ngraph TD\n    A[启动 aider] --> B{检测 Git 仓库}\n    B -->|未检测到| C[显示警告或禁用 Git 功能]\n    B -->|检测到| D[加载 Git 配置]\n    D --> E[加载 .aiderignore]\n    E --> F[等待用户指令]\n    F --> G{AI 执行修改}\n    G -->|是| H{auto-commits 启用?}\n    H -->|是| I[创建自动提交]\n    H -->|否| J[仅修改文件]\n    I --> K[显示提交哈希]\n    J --> F\n```\n\n## 与其他工具的集成\n\n### 查看差异\n\n用户可以通过标准 Git 命令查看 Aider 所做更改：\n\n```bash\n# 查看工作区差异\ngit diff\n\n# 查看提交历史\ngit log\n\n# 查看特定提交\ngit show <commit-hash>\n```\n\n### 撤销更改\n\n```bash\n# 撤销最近一次提交（保留文件更改）\ngit reset --soft HEAD~1\n\n# 完全撤销提交\ngit reset --hard HEAD~1\n```\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## 开发指南\n\n### 本地测试\n\n在开发环境中测试 Git 集成时，建议：\n\n1. 使用测试仓库而非生产代码库\n2. 启用 `--show-diffs` 以验证提交内容\n3. 设置 `AIDER_AUTO_COMMITS=0` 进行调试\n\n### 提交规范\n\n项目使用 PEP 8 风格指南，代码格式化由 Black 和 isort 自动处理。提交前请运行预提交钩子以确保代码符合规范。\n\n资料来源：[CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n\n---\n\n<a id='page-repomap'></a>\n\n## 仓库映射\n\n### 相关页面\n\n相关主题：[大语言模型集成](#page-llm-models), [系统架构](#page-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/repomap.py](https://github.com/Aider-AI/aider/blob/main/aider/repomap.py)\n- [aider/website/docs/repomap.md](https://github.com/Aider-AI/aider/blob/main/aider/website/docs/repomap.md)\n- [aider/website/index.html](https://github.com/Aider-AI/aider/blob/main/aider/website/index.html)\n</details>\n\n# 仓库映射\n\n仓库映射（Repository Mapping，简称 RepoMap）是 Aider 用于理解项目代码库结构和上下文的核心机制。它通过分析整个代码库的拓扑关系、依赖图谱和语法结构，为大型项目中的 AI 辅助编程提供深度的代码理解能力。\n\n## 功能概述\n\nAider 的仓库映射功能使 AI 助手能够全面把握代码库的整体架构。通过构建代码库的\"地图\"，Aider 可以在处理请求时准确定位相关代码片段，理解模块间的依赖关系，从而生成更加准确和上下文相关的代码修改建议。\n\n资料来源：[aider/website/index.html]()\n\n## 核心特性\n\n| 特性 | 说明 |\n|------|------|\n| **全局代码分析** | 扫描并分析整个代码库的结构 |\n| **依赖关系追踪** | 识别模块间的导入和引用关系 |\n| **语法结构解析** | 利用 Tree-sitter 解析多种编程语言的语法树 |\n| **上下文感知** | 在生成修改建议时考虑相关代码位置 |\n| **多语言支持** | 支持 100 多种编程语言的代码分析 |\n\n资料来源：[aider/website/index.html]()\n\n## 工作原理\n\n仓库映射系统通过以下步骤构建代码库的映射：\n\n```mermaid\ngraph TD\n    A[代码库扫描] --> B[文件发现]\n    B --> C[语言检测]\n    C --> D[语法树解析]\n    D --> E[依赖关系提取]\n    E --> F[构建依赖图谱]\n    F --> G[存储到 RepoMap]\n    G --> H[为 LLM 提供上下文]\n```\n\n### 扫描阶段\n\nAider 会递归扫描项目目录，识别所有需要分析的文件。这一过程考虑 `.gitignore` 规则，跳过不应纳入分析的二进制文件和无关文档。\n\n### 解析阶段\n\n对于每种支持的语言，Aider 使用 Tree-sitter 解析语法树，提取关键的语法元素：\n\n- **函数定义** - 识别函数名、参数和作用域\n- **类定义** - 分析类的继承关系和成员\n- **导入语句** - 追踪模块间的依赖关系\n- **变量声明** - 理解变量的定义和使用位置\n\n### 图谱构建\n\n解析完成后，系统构建一个反映代码库拓扑结构的依赖图谱。这个图谱使得 Aider 能够：\n\n1. 快速定位与当前修改相关的所有代码文件\n2. 理解修改可能影响的上下游模块\n3. 在多个相关位置之间做出协调一致的修改\n\n## 配置选项\n\n| 环境变量 | 默认值 | 说明 |\n|----------|--------|------|\n| `AIDER_REPOMAP_CHARS` | - | 限制发送到 LLM 的仓库映射字符数 |\n| `AIDER_REPOMAP_TRIPLE_BACKTICKS` | - | 控制是否转义三引号以避免 Markdown 格式问题 |\n\n## 与 Tree-sitter 的集成\n\nAider 的仓库映射功能深度集成了 Tree-sitter 技术。Tree-sitter 是一个用于解析编程语言的开源库，能够生成高效的增量语法解析树。\n\n资料来源：[requirements/common-constraints.txt]()\n\n支持的编程语言包括但不限于：\n\n- Python\n- JavaScript/TypeScript\n- Rust\n- Go\n- C/C++\n- Ruby\n- PHP\n- HTML/CSS\n\n每种语言都有对应的 Tree-sitter 语言包支持，这些语言包存储在 `aider/queries/tree-sitter-languages/` 和 `aider/queries/tree-sitter-language-pack/` 目录中。\n\n## 使用场景\n\n### 大型项目导航\n\n在包含数百或数千个文件的大型代码库中，仓库映射帮助 Aider 快速理解代码的组织结构，准确地定位到与用户请求相关的代码区域。\n\n### 关联代码修改\n\n当用户请求修改一个函数或类时，Aider 可以通过仓库映射识别所有使用该函数或继承该类的位置，确保修改的一致性和完整性。\n\n### 依赖感知重构\n\n在进行重构操作时，仓库映射提供依赖关系的完整视图，帮助 AI 评估修改的潜在影响范围。\n\n## 性能优化\n\n为了在大型代码库中保持响应速度，Aider 实现了以下优化策略：\n\n1. **增量更新** - 仅在文件实际变更时重新解析相关文件\n2. **智能缓存** - 缓存已解析的语法树供后续使用\n3. **选择性加载** - 根据需要动态加载特定模块的详细信息\n4. **字符限制** - 通过 `AIDER_REPOMAP_CHARS` 控制发送到 LLM 的上下文大小\n\n## 技术架构\n\n```mermaid\ngraph LR\n    A[用户请求] --> B[RepoMap 控制器]\n    B --> C{缓存检查}\n    C -->|命中| D[返回缓存数据]\n    C -->|未命中| E[文件系统扫描]\n    E --> F[Tree-sitter 解析]\n    F --> G[依赖图谱构建]\n    G --> H[存储映射结果]\n    H --> I[返回给 LLM]\n```\n\n## 限制与注意事项\n\n1. **解析精度** - 对于某些非标准编码的文件，解析可能失败\n2. **循环依赖** - 包含循环依赖的代码库可能导致图谱构建复杂化\n3. **外部依赖** - 映射仅涵盖本地代码仓库，不包括外部包或库\n4. **性能瓶颈** - 超大型代码库（超过 10 万行代码）可能需要较长的初始扫描时间\n\n---\n\n<a id='page-llm-models'></a>\n\n## 大语言模型集成\n\n### 相关页面\n\n相关主题：[配置系统](#page-config), [系统架构](#page-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/models.py](https://github.com/Aider-AI/aider/blob/main/aider/models.py)\n- [aider/llm.py](https://github.com/Aider-AI/aider/blob/main/aider/llm.py)\n- [aider/openrouter.py](https://github.com/Aider-AI/aider/blob/main/aider/openrouter.py)\n- [aider/resources/model-metadata.json](https://github.com/Aider-AI/aider/blob/main/aider/resources/model-metadata.json)\n</details>\n\n# 大语言模型集成\n\n## 概述\n\nAider 是一个终端中的 AI 结对编程工具，其核心功能之一是与各种大语言模型（LLM）进行集成。通过模块化的设计架构，Aider 支持连接到几乎任何 LLM API，包括 OpenAI、Anthropic、DeepSeek、OpenRouter 等主流服务提供商，同时也支持本地模型部署。\n\nLLM 集成模块在整个系统中承担着关键角色，它负责：\n\n- 与远程 API 服务建立安全连接\n- 管理对话上下文和历史记录\n- 处理模型响应和错误恢复\n- 支持多种模型配置和参数调优\n- 实现流式输出和批量处理能力\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## 架构设计\n\n### 核心组件关系\n\n```mermaid\ngraph TD\n    A[User Input] --> B[Main Application]\n    B --> C[InputOutput Module]\n    C --> D[LLM Module]\n    D --> E[models.py]\n    D --> F[llm.py]\n    E --> G[Model Metadata]\n    F --> H[API Providers]\n    H --> I[OpenAI]\n    H --> J[Anthropic Claude]\n    H --> K[DeepSeek]\n    H --> L[OpenRouter]\n    H --> M[Local Models]\n    G --> N[model-metadata.json]\n```\n\n### 模块职责划分\n\n| 模块文件 | 主要职责 | 依赖关系 |\n|---------|---------|---------|\n| `models.py` | 模型定义、配置管理、元数据存储 | 基础模块，无外部依赖 |\n| `llm.py` | LLM 通信核心、API 调用、响应处理 | 依赖 models.py |\n| `openrouter.py` | OpenRouter 特定路由和配置 | 依赖 llm.py |\n\n资料来源：[aider/models.py](https://github.com/Aider-AI/aider/blob/main/aider/models.py)\n\n## 模型配置系统\n\n### 模型元数据管理\n\nAider 使用 JSON 格式的元数据文件 `model-metadata.json` 来存储支持的模型信息。该文件包含每个模型的以下属性：\n\n- 模型标识符和显示名称\n- 支持的 API 提供商\n- 上下文窗口大小\n- 默认参数配置\n- 特殊功能支持标志\n\n### 支持的模型分类\n\nAider 支持的模型可分为以下几个主要类别：\n\n**OpenAI 系列**\n\n- GPT-4o\n- o1、o3-mini\n- GPT-4 Turbo\n\n**Anthropic 系列**\n\n- Claude 3.7 Sonnet\n- Claude 3.5 Sonnet\n- Claude 3 Opus\n\n**其他主流模型**\n\n- DeepSeek\n- 本地部署模型\n- 通过 OpenRouter 访问的各类模型\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## LLM 通信机制\n\n### API 连接流程\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant App as Main Application\n    participant LLM as LLM Module\n    participant API as External API\n    \n    User->>App: Submit Request\n    App->>LLM: Format Prompt\n    LLM->>API: Send API Request\n    API->>LLM: Receive Response\n    LLM->>App: Parse Response\n    App->>User: Display Result\n```\n\n### 错误处理与重试\n\nLLM 模块实现了完善的错误处理机制，包括：\n\n- 网络超时自动重试\n- API 限流处理\n- 响应格式验证\n- 降级策略支持\n\n资料来源：[aider/llm.py](https://github.com/Aider-AI/aider/blob/main/aider/llm.py)\n\n## OpenRouter 集成\n\n### OpenRouter 路由机制\n\nOpenRouter 是一个统一的 LLM 路由服务，允许用户通过单一接口访问多个模型提供商。Aider 通过专门的 `openrouter.py` 模块实现与 OpenRouter 的集成：\n\n- 自动选择最优模型\n- 成本优化路由\n- 统一的 API 封装\n- 认证和密钥管理\n\n### 配置示例\n\n```bash\n# 使用 OpenRouter\naider --model openrouter/anthropic/claude-3.5-sonnet --api-key openrouter=<key>\n\n# 指定提供商\naider --model deepseek --api-key deepseek=<key>\n```\n\n资料来源：[aider/openrouter.py](https://github.com/Aider-AI/aider/blob/main/aider/openrouter.py)\n\n## 使用配置\n\n### 命令行参数\n\n| 参数 | 说明 | 默认值 |\n|-----|------|-------|\n| `--model` | 指定使用的模型 | sonnet |\n| `--api-key` | API 密钥配置 | 环境变量读取 |\n| `--api-base` | 自定义 API 端点 | 提供商默认值 |\n\n### 环境变量配置\n\nAider 支持通过环境变量配置 API 密钥，优先级如下：\n\n1. 命令行 `--api-key` 参数\n2. 环境变量 `OPENAI_API_KEY`\n3. 配置文件中的密钥\n\n资料来源：[aider/website/_includes/get-started.md](https://github.com/Aider-AI/aider/blob/main/aider/website/_includes/get-started.md)\n\n## 上下文管理\n\n### 上下文窗口策略\n\nLLM 模块负责管理和优化上下文窗口的使用：\n\n- 自动截断过长的对话历史\n- 智能选择相关上下文\n- 标记文件内容的优先级\n- 管理令牌使用预算\n\n### 令牌统计\n\nAider 追踪并报告令牌使用情况，包括：\n\n- 每条消息的输入/输出令牌数\n- 每周总处理令牌数\n- 各模型使用比例统计\n- REDACTED 模型的隐私处理\n\n资料来源：[scripts/my_models.py](https://github.com/Aider-AI/aider/blob/main/scripts/my_models.py)\n\n## 扩展与定制\n\n### 添加新模型支持\n\n要在 Aider 中添加新的模型支持，需要：\n\n1. 在 `model-metadata.json` 中添加模型元数据\n2. 在相应模块中实现 API 封装\n3. 更新文档中的模型列表\n4. 测试连接和功能完整性\n\n### 本地模型支持\n\nAider 支持连接本地运行的 LLM 服务：\n\n- 配置自定义 API 端点\n- 支持 OpenAI 兼容接口\n- 支持 Llama.cpp 等本地推理框架\n- 可调节的连接参数\n\n## 安全性考虑\n\n### 密钥管理\n\nAider 在处理 API 密钥时遵循以下安全原则：\n\n- 密钥不写入日志或错误消息\n- 支持环境变量注入\n- 本地存储加密（如使用配置文件）\n- 清晰的权限控制机制\n\n### 数据隐私\n\n- 对新模型或不常用模型使用 REDACTED 标识\n- 最小化外部数据传输\n- 支持完全离线的本地部署\n\n## 故障排除\n\n### 常见问题\n\n| 问题 | 可能原因 | 解决方案 |\n|-----|---------|---------|\n| 连接超时 | 网络问题或 API 不可用 | 检查网络连接和 API 状态 |\n| 认证失败 | API 密钥错误或过期 | 验证并更新 API 密钥 |\n| 模型不支持 | 模型未在元数据中注册 | 检查模型配置或使用通用接口 |\n| 响应解析错误 | API 返回格式变更 | 更新客户端版本 |\n\n资料来源：[CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n\n## 相关资源\n\n- [安装指南](https://aider.chat/docs/install.html)\n- [使用文档](https://aider.chat/docs/usage.html)\n- [LLM 连接配置](https://aider.chat/docs/llms.html)\n- [配置选项](https://aider.chat/docs/config.html)\n- [LLM 排行榜](https://aider.chat/docs/leaderboards/)\n\n---\n\n<a id='page-commands'></a>\n\n## 命令系统\n\n### 相关页面\n\n相关主题：[Git 集成](#page-git-integration), [语音输入](#page-voice-input)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n- [aider/history.py](https://github.com/Aider-AI/aider/blob/main/aider/history.py)\n- [aider/help.py](https://github.com/Aider-AI/aider/blob/main/aider/help.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n- [aider/getinput.py](https://github.com/Aider-AI/aider/blob/main/aider/getinput.py)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n</details>\n\n# 命令系统\n\n## 概述\n\nAider 的命令系统是用户与 AI 编程助手交互的核心机制。通过该系统，用户可以在聊天界面中输入自然语言请求和特殊命令来控制代码编辑、Git 操作、文件管理和工具调用等行为。命令系统与 LLM 集成，支持自动提交、代码差异显示、历史记录管理等高级功能。\n\nAider 的命令系统主要分为两类：\n\n1. **内置命令**：以 `/` 开头的系统级命令，如 `/help`、`/diff`、`/commit` 等\n2. **自然语言请求**：用户直接输入的描述性文本，由 LLM 解析并生成相应的代码修改\n\n命令系统架构遵循模块化设计，核心组件包括命令解析器、历史记录管理器和输入输出处理模块。资料来源：[aider/commands.py]()\n\n## 核心组件\n\n### 命令解析器 (commands.py)\n\n`aider/commands.py` 是命令系统的核心模块，负责定义和处理所有内置命令。该模块实现了命令的注册、解析和执行机制。\n\n| 组件 | 功能描述 |\n|------|----------|\n| 命令注册表 | 存储所有可用命令及其处理函数 |\n| 命令解析器 | 解析用户输入，识别命令类型和参数 |\n| 命令执行器 | 调用相应的处理函数并返回结果 |\n\n资料来源：[aider/commands.py:1-50]()\n\n### 历史记录管理器 (history.py)\n\n`aider/history.py` 负责管理聊天历史和命令历史，提供会话持久化和历史回溯功能。\n\n| 功能 | 说明 |\n|------|------|\n| 聊天历史 | 保存完整的对话记录 |\n| 命令历史 | 保存用户输入的命令历史 |\n| 历史文件 | 支持将历史保存到 `.aider.history` 文件 |\n\n资料来源：[aider/history.py:1-30]()\n\n### 帮助系统 (help.py)\n\n`aider/help.py` 提供命令系统的帮助信息，支持用户查询可用命令及其用法。\n\n```python\n# 帮助信息的显示格式\nclass HelpCommand:\n    def __init__(self, commands):\n        self.commands = commands\n    \n    def show_help(self):\n        # 输出所有可用命令列表\n        pass\n```\n\n资料来源：[aider/help.py:1-20]()\n\n## 命令执行流程\n\n```\ngraph TD\n    A[用户输入] --> B{解析输入}\n    B -->|以 / 开头| C[内置命令]\n    B -->|普通文本| D[自然语言请求]\n    C --> E[命令注册表查询]\n    E --> F[执行命令处理函数]\n    D --> G[发送给 LLM]\n    G --> H[生成响应和代码修改]\n    F --> I[返回结果]\n    H --> J[应用代码修改]\n    I --> K[显示输出]\n    J --> K\n```\n\n## 内置命令参考\n\n### 文件操作命令\n\n| 命令 | 功能 | 参数 |\n|------|------|------|\n| `/add` | 添加文件到聊天会话 | 文件路径 |\n| `/drop` | 从会话中移除文件 | 文件路径 |\n| `/edit` | 编辑指定文件 | 文件路径和编辑指令 |\n| `/read` | 读取文件内容 | 文件路径 |\n\n### Git 命令\n\n| 命令 | 功能 | 说明 |\n|------|------|------|\n| `/commit` | 提交当前更改 | 自动生成提交信息 |\n| `/diff` | 显示未提交的更改 | - |\n| `/undo` | 撤销上一次提交 | - |\n| `/status` | 显示 Git 状态 | - |\n\n资料来源：[aider/commands.py:50-150]()\n\n### 系统命令\n\n| 命令 | 功能 |\n|------|------|\n| `/help` | 显示帮助信息 |\n| `/exit` | 退出 Aider |\n| `/clear` | 清除聊天历史 |\n| `/tokens` | 显示当前会话的 token 使用量 |\n\n## 输入输出处理\n\nAider 使用 `InputOutput` 类处理命令行输入输出，支持多种输入源和输出目标。\n\n```python\nclass InputOutput:\n    def __init__(self, pretty, yes, input_history_file, chat_history_file, input=None, output=None):\n        self.input = input\n        self.output = output\n        self.pretty = pretty\n        self.yes = yes\n        self.input_history_file = input_history_file\n        self.chat_history_file = chat_history_file\n```\n\n资料来源：[aider/getinput.py:1-20]()\n\n### Prompt Toolkit 集成\n\nAider 使用 `prompt_toolkit` 库提供增强的命令行编辑体验：\n\n```python\nsession = PromptSession(\n    message=show,\n    completer=completer_instance,\n    history=FileHistory(self.input_history_file),\n    style=style,\n    reserve_space_for_menu=4,\n    complete_style=CompleteStyle.MULTI_COLUMN,\n    input=self.input,\n    output=self.output,\n)\nline = session.prompt()\n```\n\n资料来源：[aider/getinput.py:30-50]()\n\n## 命令行参数\n\nAider 主程序支持以下命令行参数：\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--model` | 指定使用的 LLM 模型 | gpt-4 |\n| `--api-key` | API 密钥 | - |\n| `--input-history-file` | 输入历史文件 | .aider.history |\n| `--no-pretty` | 禁用彩色输出 | False |\n| `--show-diffs` | 显示差异 | False |\n| `--no-auto-commits` | 禁用自动提交 | False |\n| `--yes` | 所有确认自动回答 yes | False |\n\n资料来源：[aider/main.py:1-100]()\n\n## 自动提交机制\n\nAider 的命令系统与 Git 深度集成，支持自动提交功能：\n\n```mermaid\ngraph LR\n    A[代码修改完成] --> B{auto-commits 启用?}\n    B -->|是| C[生成提交信息]\n    B -->|否| D[等待手动提交]\n    C --> E[执行 git commit]\n    E --> F[显示提交结果]\n```\n\n自动提交的提交信息由 LLM 根据代码更改内容自动生成，格式遵循语义化提交规范。\n\n资料来源：[aider/coder.py:200-250]()\n\n## 错误处理\n\n命令系统实现了完善的错误处理机制：\n\n```python\n# 错误显示示例\nself.io.tool_error(\"Malformed ORIGINAL/UPDATE blocks, retrying...\")\nself.io.tool_error(Text(err))\n```\n\n资料来源：[aider/coder.py:250-280]()\n\n| 错误类型 | 处理方式 |\n|----------|----------|\n| 命令解析错误 | 提示正确的命令格式 |\n| 文件不存在 | 显示错误并列出可用文件 |\n| Git 操作失败 | 提示具体的 Git 错误信息 |\n| LLM 调用失败 | 自动重试并显示错误 |\n\n## 配置选项\n\n可通过环境变量或配置文件调整命令系统行为：\n\n| 环境变量 | 说明 | 可选值 |\n|----------|------|--------|\n| `AIDER_MODEL` | 默认模型 | 支持的模型名称 |\n| `AIDER_HISTORY_FILE` | 历史文件路径 | 文件路径 |\n| `AIDER_PRETTY` | 启用美化输出 | 0 或 1 |\n| `AIDER_SHOW_DIFFS` | 默认显示差异 | 0 或 1 |\n| `AIDER_AUTO_COMMITS` | 启用自动提交 | 0 或 1 |\n\n## 扩展命令系统\n\n开发者可以通过修改 `commands.py` 添加自定义命令：\n\n```python\nclass CustomCommand:\n    name = \"custom\"\n    description = \"执行自定义操作\"\n    \n    def run(self, args, io):\n        # 命令实现\n        pass\n```\n\n自定义命令需要在命令注册表中注册才能生效。\n\n## 最佳实践\n\n1. **命令前缀**：使用 `/` 前缀调用内置命令，避免与自然语言请求混淆\n2. **文件指定**：在多文件项目中，明确指定要操作的文件路径\n3. **确认机制**：重要操作前，系统会要求用户确认，可使用 `--yes` 参数跳过\n4. **历史记录**：定期备份 `.aider.history` 文件以保留重要对话上下文\n\n---\n\n<a id='page-config'></a>\n\n## 配置系统\n\n### 相关页面\n\n相关主题：[安装指南](#page-install), [大语言模型集成](#page-llm-models)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n- [aider/format_settings.py](https://github.com/Aider-AI/aider/blob/main/aider/format_settings.py)\n- [aider/args_formatter.py](https://github.com/Aider-AI/aider/blob/main/aider/args_formatter.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n- [aider/io.py](https://github.com/Aider-AI/aider/blob/main/aider/io.py)\n</details>\n\n# 配置系统\n\nAider 的配置系统采用分层架构，支持命令行参数、环境变量和默认值三种配置方式。该系统通过集中式的参数解析、格式化和传递机制，为应用程序提供灵活且可扩展的配置管理能力。\n\n## 系统架构概述\n\nAider 的配置系统由三个核心模块组成，形成一个完整的配置生命周期管理流程。`args.py` 负责命令行参数的解析，`args_formatter.py` 提供参数格式化能力，`format_settings.py` 则处理设置值的格式化输出。这种分层设计确保了配置逻辑的清晰分离和高度可维护性。\n\n```\ngraph TD\n    A[用户输入] --> B[环境变量]\n    A --> C[命令行参数]\n    D[默认值] --> E[参数解析 args.py]\n    B --> E\n    C --> E\n    E --> F[格式化 args_formatter.py]\n    E --> G[设置格式化 format_settings.py]\n    F --> H[应用配置]\n    G --> H\n```\n\n## 核心模块详解\n\n### 参数解析模块 (args.py)\n\n`aider/args.py` 是配置系统的核心入口，负责定义和解析所有命令行参数。该模块使用 Python 标准库中的 `argparse` 模块构建完整的命令行接口，支持超过三十种配置选项，涵盖模型选择、API 密钥管理、历史记录控制、输出格式设置等各个方面。\n\n参数解析采用分层覆盖策略，用户可以通过三种方式设置配置：直接使用命令行参数、提供环境变量、或依赖系统默认值。这种设计允许用户在保持配置灵活性的同时，通过环境变量实现自动化部署场景下的配置管理。\n\n主要参数类别包括：\n\n| 参数类别 | 代表参数 | 说明 |\n|---------|---------|------|\n| 模型配置 | `--model` | 指定使用的 LLM 模型 |\n| 认证配置 | `--api-key` | 提供 API 密钥 |\n| 会话管理 | `--chat-history-file` | 聊天历史文件路径 |\n| 输出控制 | `--pretty` / `--no-pretty` | 是否启用美化输出 |\n| 自动提交 | `--auto-commits` | 是否自动提交更改 |\n\n### 参数格式化模块 (args_formatter.py)\n\n`aider/args_formatter.py` 负责将解析后的参数转换为用户友好的显示格式。该模块提供了参数描述的格式化能力，支持生成帮助文本和使用示例。在命令行界面中，当用户执行 `aider --help` 时，正是通过此模块生成详细的帮助文档。\n\n参数格式化器还负责处理参数的特殊显示逻辑，例如布尔值的反向显示（`--no-pretty` 与 `--pretty` 的关系）、环境变量提示的生成，以及多值参数的格式化展示。\n\n### 设置格式化模块 (format_settings.py)\n\n`aider/format_settings.py` 实现了应用程序运行时的设置格式化功能。该模块将配置系统中的各类设置值转换为适合在终端显示的格式，支持彩色输出、表格布局和分类展示等多种显示模式。\n\n设置格式化模块与应用程序的输入输出子系统紧密集成，通过统一的接口为不同模块提供配置值的展示服务。这种设计确保了配置信息在应用程序各个部分的一致性和可读性。\n\n## 配置层级与优先级\n\nAider 采用明确的配置优先级体系，从高到低依次为：命令行参数、环境变量、默认值。这种设计允许在不同部署场景下灵活控制配置行为，同时保持配置接口的一致性。\n\n```\ngraph LR\n    A[命令行参数] --> Z[最终配置]\n    B[环境变量] --> Z\n    C[默认值] --> Z\n    A --> |最高优先级| Z\n    B --> |次高优先级| Z\n    C --> |最低优先级| Z\n```\n\n### 环境变量命名规范\n\n配置系统为每个命令行参数提供了对应的环境变量支持。环境变量采用 `AIDER_` 前缀加上参数名称大写的命名方式。例如，`--history-file` 参数对应的环境变量为 `AIDER_HISTORY_FILE`，`--model` 参数对应 `AIDER_MODEL`。这种标准化命名规范使得在脚本和容器环境中配置 Aider 变得直观便捷。\n\n支持的完整环境变量映射包括：\n\n| 命令行参数 | 环境变量 | 默认值 |\n|-----------|---------|--------|\n| `--history-file` | `AIDER_HISTORY_FILE` | `.aider.history` |\n| `--input-history-file` | `AIDER_INPUT_HISTORY_FILE` | `.aider.input.history` |\n| `--model` | `AIDER_MODEL` | `gpt-4` |\n| `--pretty` | `AIDER_PRETTY` | `1` (启用) |\n| `--auto-commits` | `AIDER_AUTO_COMMITS` | `1` (启用) |\n| `--show-diffs` | `AIDER_SHOW_DIFFS` | `0` (禁用) |\n\n## 配置传递机制\n\n配置系统通过 `InputOutput` 类实现参数在应用程序内部的传递。该类封装了输入输出相关的配置，包括终端美化设置、历史记录文件路径、控制台交互选项等。配置对象在应用程序启动时创建，随后被传递到各个需要访问配置的模块中。\n\n```python\nclass InputOutput:\n    def __init__(self, pretty, yes, input_history_file, \n                 chat_history_file, input=None, output=None):\n        self.input = input\n        self.output = output\n        # ... 其他初始化逻辑\n```\n\n配置传递采用依赖注入模式，各模块通过构造函数或方法参数接收所需的配置对象，而非直接访问全局配置状态。这种设计提高了代码的可测试性和模块间的解耦程度。\n\n## 主要配置选项\n\n### 模型配置\n\n模型配置控制 Aider 与 LLM 交互的核心行为。用户可以通过 `--model` 参数指定使用的模型，如 `gpt-4`、`claude-3-sonnet-20240229`、`deepseek` 等。模型配置影响上下文窗口大小、API 端点选择以及提示词的适配逻辑。\n\n### 输出格式配置\n\n输出格式配置决定终端显示的视觉风格。主要选项包括：\n\n- `--pretty`：启用彩色输出和富文本格式\n- `--no-pretty`：禁用美化，使用纯文本输出\n- `--show-diffs`：在提交时显示变更差异\n\n### 自动行为配置\n\n自动行为配置控制 Aider 的自主操作能力：\n\n- `--auto-commits`：自动提交 AI 产生的代码更改\n- `--no-auto-commits`：手动确认后才提交\n- `--yes`：自动确认所有确认提示\n\n### 文件与目录配置\n\n| 参数 | 说明 | 默认值 |\n|-----|------|-------|\n| `--history-file` | 聊天历史文件 | `.aider.history` |\n| `--input-history-file` | 输入命令历史 | `.aider.input.history` |\n| `--chat-history-file` | 聊天记录存储 | `.aider.chat.history` |\n| `--output-format` | 输出格式类型 | `text` |\n\n## 配置验证与错误处理\n\n配置系统在解析参数时执行基本的验证逻辑。对于必需参数（如 API 密钥），系统会在启动时检查是否提供了有效的值。对于冲突的选项组合（如同时指定多个互相排斥的参数），系统会抛出明确的错误信息并提示正确的用法。\n\n错误处理遵循用户友好的原则，错误消息不仅指出问题所在，还提供解决问题的建议。这种设计使得即使是不熟悉命令行工具的用户也能快速定位和解决配置问题。\n\n## 扩展配置能力\n\nAider 的配置系统支持通过添加新的参数定义来扩展配置选项。开发者需要在 `args.py` 中添加新的参数定义，并在相关的配置处理模块中实现对应的处理逻辑。这种扩展机制允许在不修改核心架构的情况下添加新的配置功能。\n\n配置系统的扩展遵循开闭原则：对扩展开放，对修改封闭。新增配置选项时，只需在指定的扩展点添加相应的定义，而无需修改现有的配置处理流程。\n\n## 总结\n\nAider 的配置系统通过模块化设计实现了灵活、高效的配置管理能力。三层架构（参数解析、格式化、传递）确保了配置逻辑的清晰分离，环境变量支持提供了自动化部署的便利，而分层优先级体系则满足了不同场景下的配置需求。配置系统与应用程序的其他部分紧密集成，共同构成了 Aider 作为 AI 结对编程工具的核心能力基础。\n\n---\n\n<a id='page-voice-input'></a>\n\n## 语音输入\n\n### 相关页面\n\n相关主题：[命令系统](#page-commands), [配置系统](#page-config)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/voice.py](https://github.com/Aider-AI/aider/blob/main/aider/voice.py)\n- [aider/scrape.py](https://github.com/Aider-AI/aider/blob/main/aider/scrape.py)\n- [aider/website/index.html](https://github.com/Aider-AI/aider/blob/main/website/index.html)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n- [aider/getinput.py](https://github.com/Aider-AI/aider/blob/main/aider/getinput.py)\n</details>\n\n# 语音输入\n\n## 功能概述\n\n语音输入（Voice-to-Code）是 Aider 提供的一种创新特性，允许用户通过语音与 AI 编程助手进行交流，从而摆脱键盘输入的限制。用户可以直接用语音描述新功能、测试用例或 bug 修复的需求，Aider 会自动理解并实现相应的代码变更。\n\n这一功能极大地提升了编程效率，特别是对于需要快速记录灵感、编写长篇代码注释或进行大量重构的场景。用户无需切换窗口或中断工作流程，即可通过语音指令驱动代码编辑。\n\n## 核心组件\n\n### 语音输入模块\n\n`aider/voice.py` 文件包含了语音输入的核心实现逻辑，负责处理语音识别、音频录制和语音命令解析等功能。\n\n| 组件 | 说明 | 文件位置 |\n|------|------|----------|\n| 语音录制器 | 负责捕获用户麦克风输入的音频数据 | aider/voice.py |\n| 语音识别引擎 | 将音频转换为可处理的文本命令 | aider/voice.py |\n| 命令解析器 | 解析识别出的文本并转换为结构化指令 | aider/voice.py |\n| 输入集成层 | 将语音命令传递给主程序的消息处理系统 | aider/getinput.py |\n\n### 输入输出管理\n\n语音输入与 Aider 的标准输入输出系统深度集成，通过 `InputOutput` 类统一处理各类输入源：\n\n```python\n# aider/getinput.py\nclass InputOutput:\n    def __init__(\n        self,\n        pretty=True,\n        yes=False,\n        input_history_file=None,\n        chat_history_file=None,\n        input=None,\n        output=None,\n        user_input_color=\"blue\",\n        tool_output_color=None,\n        tool_error_color=\"red\",\n    ):\n        no_color = os.environ.get(\"NO_COLOR\")\n        if no_color is not None and no_color != \"\":\n            pretty = False\n\n        self.user_input_color = user_input_color if pretty else None\n        self.tool_output_color = tool_output_color if pretty else None\n        self.tool_error_color = tool_error_color if pretty else None\n```\n\n资料来源：[aider/getinput.py]()\n\n## 工作流程\n\n### 语音命令处理流程\n\n```mermaid\ngraph TD\n    A[用户语音输入] --> B[麦克风录制音频]\n    B --> C[语音识别引擎]\n    C --> D[文本命令生成]\n    D --> E[命令解析器]\n    E --> F{命令类型判断}\n    F -->|代码编辑| G[生成编辑指令]\n    F -->|代码查询| H[生成查询指令]\n    F -->|代码审查| I[生成审查指令]\n    G --> J[Coder 模块处理]\n    H --> J\n    I --> J\n    J --> K[执行代码变更]\n    K --> L[自动提交到 Git]\n```\n\n### 语音输入与标准输入的切换\n\nAider 支持在语音输入和标准键盘输入之间无缝切换。用户可以在任意时刻使用语音命令，系统会自动将语音内容转换为代码指令并执行。\n\n```mermaid\ngraph LR\n    A[键盘输入] <--> B[InputOutput]\n    C[语音输入] <--> B\n    B --> D[统一消息处理]\n    D --> E[命令执行引擎]\n```\n\n## 使用场景\n\n### 主要应用场景\n\n| 场景 | 描述 | 优势 |\n|------|------|------|\n| 快速功能开发 | 用语音描述新功能需求，Aider 自动生成代码 | 减少键盘输入时间 |\n| Bug 修复描述 | 口头描述问题现象，Aider 生成修复方案 | 提高问题定位效率 |\n| 测试用例编写 | 语音输入测试用例描述，Aider 生成测试代码 | 简化测试编写流程 |\n| 代码重构 | 用语音指挥重构步骤，Aider 执行大规模代码变更 | 降低重构错误率 |\n\n资料来源：[aider/website/index.html]()\n\n### 集成方式\n\nAider 的语音功能可以通过以下方式调用：\n\n1. **IDE/编辑器集成**：在代码中添加注释描述需求\n2. **命令行直接调用**：使用语音命令启动对话\n3. **对话中途切换**：在键盘输入和语音输入之间自由切换\n\n## 技术实现\n\n### 错误处理机制\n\n语音输入模块包含完善的错误处理机制，确保在识别失败或音频问题发生时能够优雅降级：\n\n```python\n# aider/coder.py 中的错误处理示例\n<<<<<<< ORIGINAL\n            self.console.print(\"[red]\", Text(err))\n=======\n            self.io.tool_error(\"Malformed ORIGINAL/UPDATE blocks, retrying...\")\n            self.io.tool_error(Text(err))\n>>>>>>> REPLACE\n```\n\n资料来源：[aider/coder.py]()\n\n### 环境变量配置\n\n语音输入功能支持通过环境变量进行配置：\n\n| 环境变量 | 说明 | 默认值 |\n|----------|------|--------|\n| NO_COLOR | 禁用彩色输出（语音回显时使用） | 未设置 |\n| AIDER_AUTO_COMMITS | 是否自动提交语音生成的变更 | 1（启用） |\n| AIDER_SHOW_DIFFS | 是否显示语音命令触发的代码差异 | 0（禁用） |\n\n## 配置选项\n\n### 命令行参数\n\n语音输入相关的命令行参数允许用户精细控制功能行为：\n\n- `--no-auto-commits`：禁用自动提交，适合需要人工审核的场景\n- `--show-diffs`：显示代码差异，帮助用户确认语音命令的执行结果\n- `--yes`：自动确认所有操作，无需手动确认语音生成的内容\n\n资料来源：[aider/website/examples/update-docs.md]()\n\n## 与其他功能的协作\n\n### 与代码编辑系统的集成\n\n语音输入生成的命令会通过 `SearchReplaceBlock` 格式传递给代码编辑系统：\n\n```mermaid\ngraph TD\n    A[语音输入] --> B[文本命令]\n    B --> C[命令解析]\n    C --> D[SearchReplaceBlock 生成]\n    D --> E[Coder.editblock 编辑]\n    E --> F[文件变更]\n    F --> G[Git 自动提交]\n```\n\n### 与 lint 和测试的联动\n\n语音输入触发的代码变更会自动通过配置的 linter 和测试套件验证：\n\n- 自动运行代码检查工具\n- 执行单元测试验证功能正确性\n- 自动修复 linter 发现的问题\n\n资料来源：[aider/website/index.html]()\n\n## 最佳实践\n\n### 语音输入优化建议\n\n1. **清晰简洁**：使用简短的语音命令，避免长篇描述\n2. **关键词明确**：包含具体的文件名、函数名或变量名\n3. **增量修改**：将大型重构分解为多个语音命令序列\n4. **及时确认**：重要变更前查看 diff 输出确认意图\n\n### 适用场景判断\n\n| 推荐使用 | 不推荐使用 |\n|----------|------------|\n| 快速记录代码思路 | 需要精确修改多文件 |\n| 编写测试用例 | 大规模重构 |\n| 添加代码注释 | 处理复杂算法逻辑 |\n\n## 总结\n\n语音输入功能是 Aider 区别于传统 CLI 编程工具的重要特性，它将自然语言处理与代码编辑深度结合，让开发者能够以更直观的方式与 AI 协作。通过与 Git 集成、自动测试和代码 linting 的配合，语音输入不仅提升了编码效率，还保证了代码质量和变更可追溯性。\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：Aider-AI/aider\n\n摘要：发现 7 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：配置坑 - 可能修改宿主 AI 配置。\n\n## 1. 配置坑 · 可能修改宿主 AI 配置\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。\n- 对用户的影响：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。\n- 建议检查：列出会写入的配置文件、目录和卸载/回滚步骤。\n- 防护动作：涉及宿主配置目录时必须给回滚路径，不能只给安装命令。\n- 证据：capability.host_targets | github_repo:638629097 | https://github.com/Aider-AI/aider | host_targets=claude, chatgpt\n\n## 2. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:638629097 | https://github.com/Aider-AI/aider | README/documentation is current enough for a first validation pass.\n\n## 3. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | last_activity_observed missing\n\n## 4. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n\n## 5. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n\n## 6. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | issue_or_pr_quality=unknown\n\n## 7. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | release_recency=unknown\n\n<!-- canonical_name: Aider-AI/aider; human_manual_source: deepwiki_human_wiki -->\n",
      "markdown_key": "aider",
      "pages": "draft",
      "source_refs": [
        {
          "evidence_id": "github_repo:638629097",
          "kind": "repo",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/Aider-AI/aider"
        },
        {
          "evidence_id": "art_6766e1d8cefb475098805860fea085d7",
          "kind": "docs",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/Aider-AI/aider#readme"
        }
      ],
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "aider 说明书",
      "toc": [
        "https://github.com/Aider-AI/aider 项目说明书",
        "目录",
        "项目介绍",
        "概述",
        "核心特性",
        "系统架构",
        "工作流程",
        "安装与配置",
        "Doramagic 踩坑日志"
      ]
    }
  },
  "quality_gate": {
    "blocking_gaps": [],
    "category_confidence": "medium",
    "compile_status": "ready_for_review",
    "five_assets_present": true,
    "install_sandbox_verified": true,
    "missing_evidence": [],
    "next_action": "publish to Doramagic.ai project surfaces",
    "prompt_preview_boundary_ok": true,
    "publish_status": "publishable",
    "quick_start_verified": true,
    "repo_clone_verified": true,
    "repo_commit": "3ec8ec5a7d695b08a6c24fe6c0c235c8f87df9af",
    "repo_inspection_error": null,
    "repo_inspection_files": [
      "pyproject.toml",
      "README.md",
      "requirements.txt"
    ],
    "repo_inspection_verified": true,
    "review_reasons": [],
    "tag_count_ok": true,
    "unsupported_claims": []
  },
  "schema_version": "0.1",
  "user_assets": {
    "ai_context_pack": {
      "asset_id": "ai_context_pack",
      "filename": "AI_CONTEXT_PACK.md",
      "markdown": "# aider - Doramagic AI Context Pack\n\n> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。\n\n## 充分原则\n\n- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。\n- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。\n\n## 给宿主 AI 的使用方式\n\n你正在读取 Doramagic 为 aider 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。\n\n## Claim 消费规则\n\n- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。\n- **事实最低状态**：`supported`\n- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。\n- `weak`：只能作为低置信度线索，必须要求用户继续核实。\n- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。\n- `unverified`：不得作为事实使用，应明确说证据不足。\n- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。\n\n## 它最适合谁\n\n- **正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**：README 或插件配置提到多个宿主 AI。 证据：`README.md` Claim：`clm_0002` supported 0.86\n\n## 它能做什么\n\n- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`CONTRIBUTING.md`, `aider/website/_includes/replit-pipx.md`, `aider/website/_posts/2024-09-26-architect.md`, `aider/website/_posts/2025-01-15-uv.md` 等 Claim：`clm_0001` supported 0.86\n\n## 怎么开始\n\n- `pip install pipx` 证据：`aider/website/_includes/replit-pipx.md` Claim：`clm_0003` unverified 0.25\n- `pip install -U aider-chat` 证据：`aider/website/_posts/2024-09-26-architect.md` Claim：`clm_0004` unverified 0.25\n- `curl -LsSf https://aider.chat/install.sh | sh` 证据：`aider/website/_posts/2025-01-15-uv.md` Claim：`clm_0005` unverified 0.25\n- `pip install aider-install` 证据：`aider/website/_posts/2025-01-15-uv.md` Claim：`clm_0006` unverified 0.25\n- `uv tool install --force --python python3.12 aider-chat` 证据：`aider/website/_posts/2025-01-15-uv.md` Claim：`clm_0007` unverified 0.25\n- `pip install -U boto3` 证据：`aider/website/docs/llms/bedrock.md` Claim：`clm_0008` supported 0.86\n- `curl -s https://api.githubcopilot.com/models \\` 证据：`aider/website/docs/llms/github.md` Claim：`clm_0009` supported 0.86\n- `git clone git@github.com:Aider-AI/aider.git` 证据：`aider/website/docs/faq.md` Claim：`clm_0010` supported 0.86\n- `uv tool install --force --python python3.12 --with pip aider-chat@latest` 证据：`aider/website/docs/install.md` Claim：`clm_0011` supported 0.86\n- `pipx install aider-chat` 证据：`aider/website/docs/install.md` Claim：`clm_0012` supported 0.86\n\n## 继续前判断卡\n\n- **当前建议**：先做角色匹配试用\n- **为什么**：这个项目更像角色库，核心风险是选错角色或把角色文案当执行能力；先用 Prompt Preview 试角色匹配，再决定是否沙盒导入。\n\n### 30 秒判断\n\n- **现在怎么做**：先做角色匹配试用\n- **最小安全下一步**：先用 Prompt Preview 试角色匹配；满意后再隔离导入\n- **先别相信**：角色质量和任务匹配不能直接相信。\n- **继续会触碰**：角色选择偏差、命令执行、本地环境或项目文件\n\n### 现在可以相信\n\n- **适合人群线索：正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`README.md` Claim：`clm_0002` supported 0.86\n- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`CONTRIBUTING.md`, `aider/website/_includes/replit-pipx.md`, `aider/website/_posts/2024-09-26-architect.md`, `aider/website/_posts/2025-01-15-uv.md` 等 Claim：`clm_0001` supported 0.86\n- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`aider/website/docs/llms/bedrock.md` Claim：`clm_0008` supported 0.86\n\n### 现在还不能相信\n\n- **角色质量和任务匹配不能直接相信。**（unverified）：角色库证明有很多角色，不证明每个角色都适合你的具体任务，也不证明角色能产生高质量结果。\n- **不能把角色文案当成真实执行能力。**（unverified）：安装前只能判断角色描述和任务画像是否匹配，不能证明它能在宿主 AI 里完成任务。\n- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。\n- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。\n- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。\n- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。\n- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。\n- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。\n\n### 继续会触碰什么\n\n- **角色选择偏差**：用户对任务应该由哪个专家角色处理的判断。 原因：选错角色会让 AI 从错误专业视角回答，浪费时间或误导决策。\n- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`CONTRIBUTING.md`, `aider/website/_includes/replit-pipx.md`, `aider/website/_posts/2024-09-26-architect.md`, `aider/website/_posts/2025-01-15-uv.md` 等\n- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`CONTRIBUTING.md`, `aider/website/_includes/replit-pipx.md`, `aider/website/_posts/2024-09-26-architect.md`, `aider/website/_posts/2025-01-15-uv.md` 等\n- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。\n\n### 最小安全下一步\n\n- **先跑 Prompt Preview**：先用交互式试用验证任务画像和角色匹配，不要先导入整套角色库。（适用：任何项目都适用，尤其是输出质量未知时。）\n- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）\n- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）\n\n### 退出方式\n\n- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。\n- **保留原始角色选择记录**：如果输出偏题，可以回到任务画像阶段重新选择角色，而不是继续沿着错误角色推进。\n- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。\n- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。\n\n## 哪些只能预览\n\n- 解释项目适合谁和能做什么\n- 基于项目文档演示典型对话流程\n- 帮助用户判断是否值得安装或继续研究\n\n## 哪些必须安装后验证\n\n- 真实安装 Skill、插件或 CLI\n- 执行脚本、修改本地文件或访问外部服务\n- 验证真实输出质量、性能和兼容性\n\n## 边界与风险判断卡\n\n- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0027` inferred 0.45\n- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`CONTRIBUTING.md`, `aider/website/_includes/replit-pipx.md`, `aider/website/_posts/2024-09-26-architect.md`, `aider/website/_posts/2025-01-15-uv.md` 等 Claim：`clm_0028` supported 0.86\n- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。\n- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。\n- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。\n\n## 开工前工作上下文\n\n### 加载顺序\n\n- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。\n- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。\n- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。\n- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。\n- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。\n\n### 任务路由\n\n- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`CONTRIBUTING.md`, `aider/website/_includes/replit-pipx.md`, `aider/website/_posts/2024-09-26-architect.md`, `aider/website/_posts/2025-01-15-uv.md` 等 Claim：`clm_0001` supported 0.86\n\n### 上下文规模\n\n- 文件总数：514\n- 重要文件覆盖：40/514\n- 证据索引条目：80\n- 角色 / Skill 条目：80\n\n### 证据不足时的处理\n\n- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。\n- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。\n- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。\n- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。\n\n## Prompt Recipes\n\n### 适配判断\n\n- 目标：判断这个项目是否适合用户当前任务。\n- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。\n\n```text\n请基于 aider 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。\n```\n\n### 安装前体验\n\n- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。\n- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。\n\n```text\n请把 aider 当作安装前体验资产，而不是已安装工具或真实运行环境。\n\n请严格输出四段：\n1. 先问我 3 个必要问题。\n2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。\n3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。\n4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。\n\n硬性边界：\n- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。\n- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。\n- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。\n- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。\n- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。\n- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。\n\n```\n\n### 角色 / Skill 选择\n\n- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。\n- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。\n\n```text\n请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。\n```\n\n### 风险预检\n\n- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。\n- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。\n\n```text\n请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。\n```\n\n### 宿主 AI 开工指令\n\n- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。\n- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。\n\n```text\n请基于 aider 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。\n```\n\n\n## 角色 / Skill 索引\n\n- 共索引 80 个角色 / Skill / 项目文档条目。\n\n- **Gemini**（project_doc）：You'll need a Gemini API key https://aistudio.google.com/app/u/2/apikey . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/gemini.md`\n- **Installation**（project_doc）：How to install and get started pair programming with aider. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/install.md`\n- **Features**（project_doc）：AI Pair Programming in Your Terminal 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`README.md`\n- **Aider benchmark harness**（project_doc）：Aider uses benchmarks to quantitatively measure how well it works with various LLMs. This directory holds the harness and tools needed to run the benchmarking suite. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`benchmark/README.md`\n- **Readme**（project_doc）：These scm files are all adapted from the github repositories listed here: 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/queries/tree-sitter-language-pack/README.md`\n- **Credits**（project_doc）：Aider uses modified versions of the tags.scm files from these open source tree-sitter language implementations: 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/queries/tree-sitter-languages/README.md`\n- **Example chat transcripts**（project_doc）：Below are some chat transcripts showing what it's like to code with aider. In the chats, you'll see a variety of coding tasks like generating new code, editing existing code, debugging, exploring unfamiliar code, etc. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/examples/README.md`\n- **Contributing to the Project**（project_doc）：We welcome contributions in the form of bug reports, feature requests, and pull requests PRs . This document describes how you can contribute. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`CONTRIBUTING.md`\n- **Install**（project_doc）： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/_includes/install.md`\n- **The January GPT-4 Turbo is lazier than the last version**（project_doc）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/benchmarks-0125.md`\n- **Code editing benchmarks for OpenAI's \"1106\" models**（project_doc）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/benchmarks-1106.md`\n- **Speed benchmarks of GPT-4 Turbo and gpt-3.5-turbo-1106**（project_doc）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/benchmarks-speed-1106.md`\n- **GPT code editing benchmarks**（project_doc）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/benchmarks.md`\n- **Configuration**（project_doc）：Information on all of aider's settings and how to use them. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config.md`\n- **Advanced model settings**（project_doc）：Configuring advanced settings for LLMs. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/adv-model-settings.md`\n- **YAML config file**（project_doc）：How to configure aider with a YAML config file. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/aider_conf.md`\n- **API Keys**（project_doc）：Setting API keys for API providers. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/api-keys.md`\n- **Config with .env**（project_doc）：Using a .env file to store LLM API keys for aider. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/dotenv.md`\n- **Editor configuration**（project_doc）：How to configure a custom editor for aider's /editor command 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/editor.md`\n- **Model Aliases**（project_doc）：Assign convenient short names to models. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/model-aliases.md`\n- **Options reference**（project_doc）：Details about all of aider's settings. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/options.md`\n- **Reasoning models**（project_doc）：How to configure reasoning model settings from secondary providers. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/config/reasoning.md`\n- **Improving GPT-4's codebase understanding with ctags**（project_doc）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/ctags.md`\n- **FAQ**（project_doc）：Frequently asked questions about aider. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/faq.md`\n- **Git integration**（project_doc）：Aider is tightly integrated with git. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/git.md`\n- **Aider Documentation**（project_doc）：Aider is AI pair programming in your terminal. This documentation will help you get the most out of aider. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/index.md`\n- **GitHub Codespaces**（project_doc）：You can use aider in GitHub Codespaces via the built-in Terminal pane. See below for an example, but you can just follow the main install instructions /docs/install.html inside your codespace terminal. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/install/codespaces.md`\n- **Aider with docker**（project_doc）：Aider is available as 2 docker images: 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/install/docker.md`\n- **Optional steps**（project_doc）：The steps below are completely optional. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/install/optional.md`\n- **Replit**（project_doc）： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/install/replit.md`\n- **Supported languages**（project_doc）：Aider supports pretty much all popular coding languages. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/languages.md`\n- **LLM code editing skill by model release date**（project_doc）：LLM code editing skill by model release date 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/leaderboards/by-release-date.md`\n- **Contributing results**（project_doc）：Contributions of benchmark results are welcome! See the benchmark README https://github.com/Aider-AI/aider/blob/main/benchmark/README.md for information on running aider's code editing benchmarks. Submit results by opening a PR with edits to the benchmark results data files https://github.com/Aider-AI/aider/blob/main/aider/website/ data/ . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/leaderboards/contrib.md`\n- **Code editing leaderboard**（project_doc）：Quantitative benchmark of basic LLM code editing skill. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/leaderboards/edit.md`\n- **Aider LLM Leaderboards**（project_doc）：Quantitative benchmarks of LLM code editing skill. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/leaderboards/index.md`\n- **Benchmark notes**（project_doc）：All pricing information is the cost to run the benchmark at the time it was run. Providers change their pricing and sometimes introduce entirely novel pricing structures. Pricing is provided on a best efforts basis, and may not always be current or fully accurate. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/leaderboards/notes.md`\n- **Refactoring leaderboard**（project_doc）：Quantitative benchmark of LLM code refactoring skill. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/leaderboards/refactor.md`\n- **Contributor Agreement**（project_doc）：Individual Contributor License Agreement 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/legal/contributor-agreement.md`\n- **Privacy policy**（project_doc）：Aider AI LLC /docs/faq.html what-is-aider-ai-llc “Aider,” “we,” “our,” and/or “us” values the privacy of individuals who use our website, programming tools, and related services collectively, our “Services” . This privacy policy the “Privacy Policy” explains how we collect, use, and disclose information from users of our Services. By using our Services, you agree to the collection, use, disclosure, and procedures th… 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/legal/privacy.md`\n- **Aider can connect to most LLMs**（project_doc）：Aider can connect to most LLMs for AI pair programming. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms.md`\n- **Anthropic**（project_doc）：To work with Anthropic's models, you need to provide your Anthropic API key https://docs.anthropic.com/claude/reference/getting-started-with-the-api either in the ANTHROPIC API KEY environment variable or via the --anthropic-api-key command line switch. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/anthropic.md`\n- **Azure**（project_doc）：Aider can connect to the OpenAI models on Azure. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/azure.md`\n- **Amazon Bedrock**（project_doc）：Aider can connect to models provided by Amazon Bedrock. To configure Aider to use the Amazon Bedrock API, you need to set up your AWS credentials. This can be done using the AWS CLI or by setting environment variables. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/bedrock.md`\n- **Cohere**（project_doc）：Cohere offers free API access to their models. Their Command-R+ model works well with aider as a very basic coding assistant. You'll need a Cohere API key https://dashboard.cohere.com/welcome/login . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/cohere.md`\n- **DeepSeek**（project_doc）：Aider can connect to the DeepSeek.com API. To work with DeepSeek's models, you need to set the DEEPSEEK API KEY environment variable with your DeepSeek API key https://platform.deepseek.com/api keys . The DeepSeek Chat V3 model has a top score on aider's code editing benchmark. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/deepseek.md`\n- **GitHub Copilot**（project_doc）：Aider can connect to GitHub Copilot’s LLMs because Copilot exposes a standard OpenAI-style endpoint at: 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/github.md`\n- **GROQ**（project_doc）：Groq currently offers free API access to the models they host. The Llama 3 70B model works well with aider and is comparable to GPT-3.5 in code editing performance. You'll need a Groq API key https://console.groq.com/keys . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/groq.md`\n- **LM Studio**（project_doc）：Aider can connect to models served by LM Studio. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/lm-studio.md`\n- **Ollama**（project_doc）：Aider can connect to local Ollama models. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/ollama.md`\n- **OpenAI compatible APIs**（project_doc）：Aider can connect to any LLM which is accessible via an OpenAI compatible API endpoint. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/openai-compat.md`\n- **OpenAI**（project_doc）：To work with OpenAI's models, you need to provide your OpenAI API key https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key either in the OPENAI API KEY environment variable or via the --api-key openai= command line switch. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/openai.md`\n- **OpenRouter**（project_doc）：Aider can connect to models provided by OpenRouter https://openrouter.ai/models?o=top-weekly : You'll need an OpenRouter API key https://openrouter.ai/keys . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/openrouter.md`\n- **Other LLMs**（project_doc）：Aider uses the litellm https://docs.litellm.ai/docs/providers package to connect to hundreds of other models. You can use aider --model to use any supported model. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/other.md`\n- **Vertex AI**（project_doc）：Aider can connect to models provided by Google Vertex AI. You will need to install the gcloud CLI https://cloud.google.com/sdk/docs/install and login https://cloud.google.com/sdk/docs/initializing with a GCP account or service account with permission to use the Vertex AI API. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/vertex.md`\n- **Model warnings**（project_doc）： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/warnings.md`\n- **xAI**（project_doc）：You'll need a xAI API key https://console.x.ai. . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/llms/xai.md`\n- **More info**（project_doc）：See below for more info about aider, including some advanced topics. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/more-info.md`\n- **Analytics**（project_doc）：Opt-in, anonymous, no personal info. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/more/analytics.md`\n- **Edit formats**（project_doc）：Aider uses various \"edit formats\" to let LLMs edit source files. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/more/edit-formats.md`\n- **Infinite output**（project_doc）：Aider can handle \"infinite output\" from models that support prefill. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/more/infinite-output.md`\n- **Add --auto-accept-architect feature**（project_doc）：See how a new command-line option is added to automatically accept edits proposed by the architect model, with implementation. Aider also updates the project's HISTORY file. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/recordings/auto-accept-architect.md`\n- **Don't /drop read-only files added at launch**（project_doc）：Follow along as aider is modified to preserve read-only files specified at launch when using the /drop command. Aider does this implementation and adds test coverage. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/recordings/dont-drop-original-read-files.md`\n- **Screen recordings**（project_doc）：Screen recordings of aider building aider. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/recordings/index.md`\n- **Warn when users apply unsupported reasoning settings**（project_doc）：Watch the implementation of a warning system that alerts users when they try to apply reasoning settings to models that don't support them. Includes adding model metadata, confirmation dialogs, refactoring, and comprehensive test coverage. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/recordings/model-accepts-settings.md`\n- **Add language support via tree-sitter-language-pack**（project_doc）：Watch how aider adds support for tons of new programming languages by integrating with tree-sitter-language-pack. Demonstrates using aider to script downloading a collection of files, and using ad-hoc bash scripts to have aider modify a collection of files. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/recordings/tree-sitter-language-pack.md`\n- **Repository map**（project_doc）：Aider uses a map of your git repository to provide code context to LLMs. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/repomap.md`\n- **Scripting aider**（project_doc）：You can script aider via the command line or python. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/scripting.md`\n- **Troubleshooting**（project_doc）：How to troubleshoot problems with aider and get help. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting.md`\n- **Aider not found**（project_doc）：In some environments the aider command may not be available on your shell path. This can occur because of permissions/security settings in your OS, and often happens to Windows users. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/aider-not-found.md`\n- **File editing problems**（project_doc）：Sometimes the LLM will reply with some code changes that don't get applied to your local files. In these cases, aider might say something like \"Failed to apply edit to filename \" or other error messages. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/edit-errors.md`\n- **Dependency versions**（project_doc）：Aider expects to be installed with the correct versions of all of its required dependencies. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/imports.md`\n- **Models and API keys**（project_doc）：Aider needs to know which LLM model you would like to work with and which keys to provide when accessing it via API. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/models-and-keys.md`\n- **Using /help**（project_doc）：Type /help and aider will respond with helpful information. You can ask questions about using aider, customizing settings, troubleshooting, using LLMs, etc. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/support.md`\n- **Token limits**（project_doc）：Every LLM has limits on how many tokens it can process for each request: 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/token-limits.md`\n- **Model warnings**（project_doc）： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/troubleshooting/warnings.md`\n- **Unified diffs make GPT-4 Turbo 3X less lazy**（project_doc）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }}, by Paul Gauthier {% endif %} 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/unified-diffs.md`\n- **Usage**（project_doc）：How to use aider to pair program with AI and edit code in your local git repo. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/usage.md`\n- **Aider in your browser**（project_doc）：Aider can run in your browser, not just on the command line. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/usage/browser.md`\n- **Prompt caching**（project_doc）：Aider supports prompt caching for cost savings and faster coding. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/usage/caching.md`\n- **In-chat commands**（project_doc）：Control aider with in-chat commands like /add, /model, etc. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`aider/website/docs/usage/commands.md`\n\n## 证据索引\n\n- 共索引 80 条证据。\n\n- **Gemini**（documentation）：You'll need a Gemini API key https://aistudio.google.com/app/u/2/apikey . 证据：`aider/website/docs/llms/gemini.md`\n- **Installation**（documentation）：Get started quickly with aider-install 证据：`aider/website/docs/install.md`\n- **Features**（documentation）：AI Pair Programming in Your Terminal 证据：`README.md`\n- **Aider benchmark harness**（documentation）：Aider uses benchmarks to quantitatively measure how well it works with various LLMs. This directory holds the harness and tools needed to run the benchmarking suite. 证据：`benchmark/README.md`\n- **Readme**（documentation）：These scm files are all adapted from the github repositories listed here: 证据：`aider/queries/tree-sitter-language-pack/README.md`\n- **Credits**（documentation）：Aider uses modified versions of the tags.scm files from these open source tree-sitter language implementations: 证据：`aider/queries/tree-sitter-languages/README.md`\n- **Example chat transcripts**（documentation）：Below are some chat transcripts showing what it's like to code with aider. In the chats, you'll see a variety of coding tasks like generating new code, editing existing code, debugging, exploring unfamiliar code, etc. 证据：`aider/website/examples/README.md`\n- **Contributing to the Project**（documentation）：We welcome contributions in the form of bug reports, feature requests, and pull requests PRs . This document describes how you can contribute. 证据：`CONTRIBUTING.md`\n- **Install**（documentation）： 证据：`aider/website/_includes/install.md`\n- **The January GPT-4 Turbo is lazier than the last version**（documentation）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 证据：`aider/website/docs/benchmarks-0125.md`\n- **Code editing benchmarks for OpenAI's \"1106\" models**（documentation）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 证据：`aider/website/docs/benchmarks-1106.md`\n- **Speed benchmarks of GPT-4 Turbo and gpt-3.5-turbo-1106**（documentation）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 证据：`aider/website/docs/benchmarks-speed-1106.md`\n- **GPT code editing benchmarks**（documentation）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 证据：`aider/website/docs/benchmarks.md`\n- **Configuration**（documentation）：Aider has many options which can be set with command line switches. Most options can also be set in an .aider.conf.yml file which can be placed in your home directory or at the root of your git repo. Or by setting environment variables like AIDER xxx either in your shell or a .env file. 证据：`aider/website/docs/config.md`\n- **Advanced model settings**（documentation）：Context window size and token costs 证据：`aider/website/docs/config/adv-model-settings.md`\n- **YAML config file**（documentation）：Most of aider's options can be set in an .aider.conf.yml file. Aider will look for a this file in these locations: 证据：`aider/website/docs/config/aider_conf.md`\n- **API Keys**（documentation）：Aider lets you specify API keys in a few ways: 证据：`aider/website/docs/config/api-keys.md`\n- **Config with .env**（documentation）：You can use a .env file to store API keys and other settings for the models you use with aider. You can also set many general aider options in the .env file. 证据：`aider/website/docs/config/dotenv.md`\n- **Editor configuration**（documentation）：Aider allows you to configure your preferred text editor for use with the /editor command. The editor must be capable of running in \"blocking mode\", meaning the command line will wait until you close the editor before proceeding. 证据：`aider/website/docs/config/editor.md`\n- **Model Aliases**（documentation）：Model aliases allow you to create shorthand names for models you frequently use. This is particularly useful for models with long names or when you want to standardize model usage across your team. 证据：`aider/website/docs/config/model-aliases.md`\n- **Options reference**（documentation）：You can use aider --help to see all the available options, or review them below. 证据：`aider/website/docs/config/options.md`\n- **Reasoning models**（documentation）：! Thinking demo /assets/thinking.jpg 证据：`aider/website/docs/config/reasoning.md`\n- **Improving GPT-4's codebase understanding with ctags**（documentation）：{% if page.date %} {{ page.date date: \"%B %d, %Y\" }} {% endif %} 证据：`aider/website/docs/ctags.md`\n- **FAQ**（documentation）：How can I add ALL the files to the chat? 证据：`aider/website/docs/faq.md`\n- **Git integration**（documentation）：Aider works best with code that is part of a git repo. Aider is tightly integrated with git, which makes it easy to: 证据：`aider/website/docs/git.md`\n- **Aider Documentation**（documentation）：Aider is AI pair programming in your terminal. This documentation will help you get the most out of aider. 证据：`aider/website/docs/index.md`\n- **GitHub Codespaces**（documentation）：You can use aider in GitHub Codespaces via the built-in Terminal pane. See below for an example, but you can just follow the main install instructions /docs/install.html inside your codespace terminal. 证据：`aider/website/docs/install/codespaces.md`\n- **Aider with docker**（documentation）：Aider is available as 2 docker images: 证据：`aider/website/docs/install/docker.md`\n- **Optional steps**（documentation）：The steps below are completely optional. 证据：`aider/website/docs/install/optional.md`\n- **Replit**（documentation）：--- parent: Installation nav order: 900 --- Replit {% include replit-pipx.md %} 证据：`aider/website/docs/install/replit.md`\n- **Supported languages**（documentation）：Aider should work well with most popular coding languages. This is because top LLMs are fluent in most mainstream languages, and familiar with popular libraries, packages and frameworks. 证据：`aider/website/docs/languages.md`\n- **LLM code editing skill by model release date**（documentation）：LLM code editing skill by model release date 证据：`aider/website/docs/leaderboards/by-release-date.md`\n- **Contributing results**（documentation）：Contributions of benchmark results are welcome! See the benchmark README https://github.com/Aider-AI/aider/blob/main/benchmark/README.md for information on running aider's code editing benchmarks. Submit results by opening a PR with edits to the benchmark results data files https://github.com/Aider-AI/aider/blob/main/aider/website/ data/ . 证据：`aider/website/docs/leaderboards/contrib.md`\n- **Code editing leaderboard**（documentation）：{: .note :} This old aider code editing leaderboard edit.html has been replaced by the new, much more challenging polyglot leaderboard /docs/leaderboards/ . 证据：`aider/website/docs/leaderboards/edit.md`\n- **Aider LLM Leaderboards**（documentation）：Aider excels with LLMs skilled at writing and editing code, and uses benchmarks to evaluate an LLM's ability to follow instructions and edit code successfully without human intervention. Aider's polyglot benchmark https://aider.chat/2024/12/21/polyglot.html the-polyglot-benchmark tests LLMs on 225 challenging Exercism coding exercises across C++, Go, Java, JavaScript, Python, and Rust. 证据：`aider/website/docs/leaderboards/index.md`\n- **Benchmark notes**（documentation）：All pricing information is the cost to run the benchmark at the time it was run. Providers change their pricing and sometimes introduce entirely novel pricing structures. Pricing is provided on a best efforts basis, and may not always be current or fully accurate. 证据：`aider/website/docs/leaderboards/notes.md`\n- **Refactoring leaderboard**（documentation）：Aider's refactoring benchmark https://github.com/Aider-AI/refactor-benchmark asks the LLM to refactor 89 large methods from large python classes. This is a more challenging benchmark, which tests the model's ability to output long chunks of code without skipping sections or making mistakes. It was developed to provoke and measure GPT-4 Turbo's \"lazy coding\" habit /2023/12/21/unified-diffs.html . 证据：`aider/website/docs/leaderboards/refactor.md`\n- **Contributor Agreement**（documentation）：Individual Contributor License Agreement 证据：`aider/website/docs/legal/contributor-agreement.md`\n- **Privacy policy**（documentation）：Aider AI LLC /docs/faq.html what-is-aider-ai-llc “Aider,” “we,” “our,” and/or “us” values the privacy of individuals who use our website, programming tools, and related services collectively, our “Services” . This privacy policy the “Privacy Policy” explains how we collect, use, and disclose information from users of our Services. By using our Services, you agree to the collection, use, disclosure, and procedures this Privacy Policy describes. 证据：`aider/website/docs/legal/privacy.md`\n- **Aider can connect to most LLMs**（documentation）：Aider can connect to most LLMs {: .no toc } 证据：`aider/website/docs/llms.md`\n- **Anthropic**（documentation）：To work with Anthropic's models, you need to provide your Anthropic API key https://docs.anthropic.com/claude/reference/getting-started-with-the-api either in the ANTHROPIC API KEY environment variable or via the --anthropic-api-key command line switch. 证据：`aider/website/docs/llms/anthropic.md`\n- **Azure**（documentation）：Aider can connect to the OpenAI models on Azure. 证据：`aider/website/docs/llms/azure.md`\n- **Amazon Bedrock**（documentation）：Aider can connect to models provided by Amazon Bedrock. To configure Aider to use the Amazon Bedrock API, you need to set up your AWS credentials. This can be done using the AWS CLI or by setting environment variables. 证据：`aider/website/docs/llms/bedrock.md`\n- **Cohere**（documentation）：Cohere offers free API access to their models. Their Command-R+ model works well with aider as a very basic coding assistant. You'll need a Cohere API key https://dashboard.cohere.com/welcome/login . 证据：`aider/website/docs/llms/cohere.md`\n- **DeepSeek**（documentation）：Aider can connect to the DeepSeek.com API. To work with DeepSeek's models, you need to set the DEEPSEEK API KEY environment variable with your DeepSeek API key https://platform.deepseek.com/api keys . The DeepSeek Chat V3 model has a top score on aider's code editing benchmark. 证据：`aider/website/docs/llms/deepseek.md`\n- **GitHub Copilot**（documentation）：Aider can connect to GitHub Copilot’s LLMs because Copilot exposes a standard OpenAI-style endpoint at: 证据：`aider/website/docs/llms/github.md`\n- **GROQ**（documentation）：Groq currently offers free API access to the models they host. The Llama 3 70B model works well with aider and is comparable to GPT-3.5 in code editing performance. You'll need a Groq API key https://console.groq.com/keys . 证据：`aider/website/docs/llms/groq.md`\n- **LM Studio**（documentation）：Aider can connect to models served by LM Studio. 证据：`aider/website/docs/llms/lm-studio.md`\n- **Ollama**（documentation）：Aider can connect to local Ollama models. 证据：`aider/website/docs/llms/ollama.md`\n- **OpenAI compatible APIs**（documentation）：Aider can connect to any LLM which is accessible via an OpenAI compatible API endpoint. 证据：`aider/website/docs/llms/openai-compat.md`\n- **OpenAI**（documentation）：To work with OpenAI's models, you need to provide your OpenAI API key https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key either in the OPENAI API KEY environment variable or via the --api-key openai= command line switch. 证据：`aider/website/docs/llms/openai.md`\n- **OpenRouter**（documentation）：Aider can connect to models provided by OpenRouter https://openrouter.ai/models?o=top-weekly : You'll need an OpenRouter API key https://openrouter.ai/keys . 证据：`aider/website/docs/llms/openrouter.md`\n- **Other LLMs**（documentation）：Aider uses the litellm https://docs.litellm.ai/docs/providers package to connect to hundreds of other models. You can use aider --model to use any supported model. 证据：`aider/website/docs/llms/other.md`\n- **Vertex AI**（documentation）：Aider can connect to models provided by Google Vertex AI. You will need to install the gcloud CLI https://cloud.google.com/sdk/docs/install and login https://cloud.google.com/sdk/docs/initializing with a GCP account or service account with permission to use the Vertex AI API. 证据：`aider/website/docs/llms/vertex.md`\n- **Model warnings**（documentation）：--- parent: Connecting to LLMs nav order: 900 --- Model warnings {% include model-warnings.md %} 证据：`aider/website/docs/llms/warnings.md`\n- **xAI**（documentation）：You'll need a xAI API key https://console.x.ai. . 证据：`aider/website/docs/llms/xai.md`\n- **More info**（documentation）：See below for more info about aider, including some advanced topics. 证据：`aider/website/docs/more-info.md`\n- **Analytics**（documentation）：Aider can collect anonymous analytics to help improve aider's ability to work with LLMs, edit code and complete user requests. 证据：`aider/website/docs/more/analytics.md`\n- **Edit formats**（documentation）：Aider uses various \"edit formats\" to let LLMs edit source files. Different models work better or worse with different edit formats. Aider is configured to use the optimal format for most popular, common models. You can always force use of a specific edit format with the --edit-format switch. 证据：`aider/website/docs/more/edit-formats.md`\n- **Infinite output**（documentation）：LLM providers limit how much output a model can generate from a single request. This is usually called the output token limit. 证据：`aider/website/docs/more/infinite-output.md`\n- 其余 20 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。\n\n## 宿主 AI 必须遵守的规则\n\n- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`aider/website/docs/llms/gemini.md`, `aider/website/docs/install.md`, `README.md`\n- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`aider/website/docs/llms/gemini.md`, `aider/website/docs/install.md`, `README.md`\n\n## 用户开工前应该回答的问题\n\n- 你准备在哪个宿主 AI 或本地环境中使用它？\n- 你只是想先体验工作流，还是准备真实安装？\n- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？\n\n## 验收标准\n\n- 所有能力声明都能回指到 evidence_refs 中的文件路径。\n- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。\n- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。\n\n---\n\n## Doramagic Context Augmentation\n\n下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。\n\n## Human Manual 骨架\n\n使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。\n\n宿主 AI 硬性规则：\n- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。\n- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。\n- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。\n\n- **项目介绍**：importance `high`\n  - source_paths: aider/README.md, aider/__init__.py, aider/main.py\n- **安装指南**：importance `high`\n  - source_paths: pyproject.toml, docker/Dockerfile, requirements.txt\n- **系统架构**：importance `high`\n  - source_paths: aider/main.py, aider/io.py, aider/sendchat.py, aider/llm.py\n- **代码编辑器模块**：importance `high`\n  - source_paths: aider/coders/base_coder.py, aider/coders/editblock_coder.py, aider/coders/wholefile_coder.py, aider/coders/udiff_coder.py, aider/coders/patch_coder.py\n- **Git 集成**：importance `high`\n  - source_paths: aider/repo.py, aider/diffs.py, aider/commands.py\n- **仓库映射**：importance `high`\n  - source_paths: aider/repomap.py, aider/queries/tree-sitter-languages/README.md, aider/queries/tree-sitter-language-pack/README.md\n- **大语言模型集成**：importance `high`\n  - source_paths: aider/models.py, aider/llm.py, aider/openrouter.py, aider/resources/model-metadata.json\n- **命令系统**：importance `medium`\n  - source_paths: aider/commands.py, aider/history.py, aider/help.py\n\n## Repo Inspection Evidence / 源码检查证据\n\n- repo_clone_verified: true\n- repo_inspection_verified: true\n- repo_commit: `3ec8ec5a7d695b08a6c24fe6c0c235c8f87df9af`\n- inspected_files: `pyproject.toml`, `README.md`, `requirements.txt`\n\n宿主 AI 硬性规则：\n- 没有 repo_clone_verified=true 时，不得声称已经读过源码。\n- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。\n- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。\n\n## Doramagic Pitfall Constraints / 踩坑约束\n\n这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。\n\n### Constraint 1: 可能修改宿主 AI 配置\n\n- Trigger: 项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。\n- Host AI rule: 列出会写入的配置文件、目录和卸载/回滚步骤。\n- Why it matters: 安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。\n- Evidence: capability.host_targets | github_repo:638629097 | https://github.com/Aider-AI/aider | host_targets=claude, chatgpt\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 2: 能力判断依赖假设\n\n- Trigger: README/documentation is current enough for a first validation pass.\n- Host AI rule: 将假设转成下游验证清单。\n- Why it matters: 假设不成立时，用户拿不到承诺的能力。\n- Evidence: capability.assumptions | github_repo:638629097 | https://github.com/Aider-AI/aider | README/documentation is current enough for a first validation pass.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 3: 维护活跃度未知\n\n- Trigger: 未记录 last_activity_observed。\n- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。\n- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- Evidence: evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | last_activity_observed missing\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 4: 下游验证发现风险项\n\n- Trigger: no_demo\n- Host AI rule: 进入安全/权限治理复核队列。\n- Why it matters: 下游已经要求复核，不能在页面中弱化。\n- Evidence: downstream_validation.risk_items | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 5: 存在评分风险\n\n- Trigger: no_demo\n- Host AI rule: 把风险写入边界卡，并确认是否需要人工复核。\n- Why it matters: 风险会影响是否适合普通用户安装。\n- Evidence: risks.scoring_risks | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 6: issue/PR 响应质量未知\n\n- Trigger: issue_or_pr_quality=unknown。\n- Host AI rule: 抽样最近 issue/PR，判断是否长期无人处理。\n- Why it matters: 用户无法判断遇到问题后是否有人维护。\n- Evidence: evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | issue_or_pr_quality=unknown\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 7: 发布节奏不明确\n\n- Trigger: release_recency=unknown。\n- Host AI rule: 确认最近 release/tag 和 README 安装命令是否一致。\n- Why it matters: 安装命令和文档可能落后于代码，用户踩坑概率升高。\n- Evidence: evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | release_recency=unknown\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n",
      "summary": "给宿主 AI 的上下文和工作边界。",
      "title": "AI Context Pack / 带给我的 AI"
    },
    "boundary_risk_card": {
      "asset_id": "boundary_risk_card",
      "filename": "BOUNDARY_RISK_CARD.md",
      "markdown": "# Boundary & Risk Card / 安装前决策卡\n\n项目：Aider-AI/aider\n\n## Doramagic 试用结论\n\n当前结论：可以进入发布前推荐检查；首次使用仍应从最小权限、临时目录和可回滚配置开始。\n\n## 用户现在可以做\n\n- 可以先阅读 Human Manual，理解项目目的和主要工作流。\n- 可以复制 Prompt Preview 做安装前体验；这只验证交互感，不代表真实运行。\n- 可以把官方 Quick Start 命令放到隔离环境中验证，不要直接进主力环境。\n\n## 现在不要做\n\n- 不要把 Prompt Preview 当成项目实际运行结果。\n- 不要把 metadata-only validation 当成沙箱安装验证。\n- 不要把未验证能力写成“已支持、已跑通、可放心安装”。\n- 不要在首次试用时交出生产数据、私人文件、真实密钥或主力配置目录。\n\n## 安装前检查\n\n- 宿主 AI 是否匹配：claude, chatgpt\n- 官方安装入口状态：已发现官方入口\n- 是否在临时目录、临时宿主或容器中验证：必须是\n- 是否能回滚配置改动：必须能\n- 是否需要 API Key、网络访问、读写文件或修改宿主配置：未确认前按高风险处理\n- 是否记录了安装命令、实际输出和失败日志：必须记录\n\n## 当前阻塞项\n\n- 无阻塞项。\n\n## 项目专属踩坑\n\n- 可能修改宿主 AI 配置（medium）：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。 建议检查：列出会写入的配置文件、目录和卸载/回滚步骤。\n- 能力判断依赖假设（medium）：假设不成立时，用户拿不到承诺的能力。 建议检查：将假设转成下游验证清单。\n- 维护活跃度未知（medium）：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 下游验证发现风险项（medium）：下游已经要求复核，不能在页面中弱化。 建议检查：进入安全/权限治理复核队列。\n- 存在评分风险（medium）：风险会影响是否适合普通用户安装。 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n\n## 风险与权限提示\n\n- no_demo: medium\n\n## 证据缺口\n\n- 暂未发现结构化证据缺口。\n",
      "summary": "安装、权限、验证和推荐前风险。",
      "title": "Boundary & Risk Card / 边界与风险卡"
    },
    "human_manual": {
      "asset_id": "human_manual",
      "filename": "HUMAN_MANUAL.md",
      "markdown": "# https://github.com/Aider-AI/aider 项目说明书\n\n生成时间：2026-05-11 07:23:32 UTC\n\n## 目录\n\n- [项目介绍](#page-intro)\n- [安装指南](#page-install)\n- [系统架构](#page-architecture)\n- [代码编辑器模块](#page-coders)\n- [Git 集成](#page-git-integration)\n- [仓库映射](#page-repomap)\n- [大语言模型集成](#page-llm-models)\n- [命令系统](#page-commands)\n- [配置系统](#page-config)\n- [语音输入](#page-voice-input)\n\n<a id='page-intro'></a>\n\n## 项目介绍\n\n### 相关页面\n\n相关主题：[安装指南](#page-install), [系统架构](#page-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/README.md](https://github.com/Aider-AI/aider/blob/main/aider/README.md)\n- [aider/__init__.py](https://github.com/Aider-AI/aider/blob/main/aider/__init__.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n- [aider/llms.py](https://github.com/Aider-AI/aider/blob/main/aider/llms.py)\n- [aider/chat.py](https://github.com/Aider-AI/aider/blob/main/aider/chat.py)\n- [aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n</details>\n\n# 项目介绍\n\n## 概述\n\nAider 是一个创新的开源 AI 结对编程工具，旨在通过人工智能技术提升软件开发效率。它是一个基于命令行的工具，允许开发者直接在本地 git 仓库中与 AI 模型协作编写代码。\n\n资料来源：[aider/README.md:1-50]()\n\nAider 的核心设计理念是将大型语言模型（LLM）的强大能力与传统的版本控制系统相结合，为开发者提供一个全新的编程工作流。\n\n## 核心特性\n\n### 多模型支持\n\nAider 支持多种主流 AI 模型后端，包括：\n\n| 模型提供商 | 支持状态 | 配置方式 |\n|-----------|---------|---------|\n| GPT-4 (OpenAI) | ✅ 完全支持 | `OPENAI_API_KEY` 环境变量 |\n| Claude (Anthropic) | ✅ 完全支持 | `ANTHROPIC_API_KEY` 环境变量 |\n| 本地模型 (LLaMA, etc.) | ✅ 通过 OpenRouter 等支持 | 自定义端点配置 |\n| Azure OpenAI | ✅ 企业支持 | Azure 特定配置 |\n\n资料来源：[aider/llms.py:1-100]()\n\n### 深度 Git 集成\n\nAider 与 Git 版本控制系统深度集成，提供了以下功能：\n\n- **自动提交**：AI 每次修改后自动创建有意义的提交信息\n- **差异对比**：支持查看 AI 修改的代码差异\n- **分支管理**：可以在不同分支上进行开发\n- **历史回溯**：通过 git 操作回溯代码历史\n\n资料来源：[aider/coder.py:50-150]()\n\n## 系统架构\n\n### 组件架构图\n\n```mermaid\ngraph TD\n    A[用户终端] --> B[Aider CLI]\n    B --> C[命令解析器]\n    C --> D[聊天控制器]\n    D --> E[LLM 适配器]\n    E --> F[代码编辑器]\n    F --> G[Git 集成层]\n    G --> H[文件系统]\n    E --> I[AI 模型服务]\n    I --> E\n```\n\n### 核心模块说明\n\n| 模块名称 | 文件路径 | 职责描述 |\n|---------|---------|---------|\n| CLI 入口 | `aider/main.py` | 命令行参数解析和应用启动 |\n| 核心编码器 | `aider/coder.py` | 管理 AI 与代码的交互逻辑 |\n| LLM 适配器 | `aider/llms.py` | 封装不同 AI 模型接口 |\n| 聊天控制器 | `aider/chat.py` | 处理用户与 AI 的对话流程 |\n| 命令系统 | `aider/commands.py` | 实现内置命令处理 |\n\n资料来源：[aider/main.py:1-80]()\n\n## 工作流程\n\n### 典型使用流程\n\n```mermaid\ngraph LR\n    A[初始化项目] --> B[启动 Aider]\n    B --> C[发送编程请求]\n    C --> D{AI 理解意图}\n    D -->|理解成功| E[生成/修改代码]\n    D -->|理解失败| F[请求澄清]\n    E --> G[代码审查]\n    G --> H[自动 Git 提交]\n    H --> I[返回结果]\n```\n\n1. **初始化阶段**：用户通过命令行启动 Aider 并指定要编辑的仓库\n2. **对话阶段**：用户通过自然语言描述编程需求\n3. **生成阶段**：AI 模型理解需求后生成或修改代码\n4. **验证阶段**：用户确认或让 AI 迭代修改\n5. **提交阶段**：修改自动以 git 提交的形式保存\n\n资料来源：[aider/chat.py:100-200]()\n\n## 安装与配置\n\n### 环境要求\n\n- Python 3.8 或更高版本\n- Git 版本控制工具\n- 对应的 AI 模型 API 密钥\n\n### 快速开始\n\n```bash\n# 安装 Aider\npip install aider-chat\n\n# 配置 API 密钥\nexport OPENAI_API_KEY=your-key-here\n# 或\nexport ANTHROPIC_API_KEY=your-key-here\n\n# 在 git 仓库中启动\ncd your-project\naider\n```\n\n资料来源：[aider/README.md:100-150]()\n\n## 配置文件\n\nAider 通过以下方式管理配置：\n\n| 配置优先级 | 配置来源 | 示例 |\n|-----------|---------|------|\n| 最高 | 命令行参数 | `aider --no-auto-commit` |\n| 高 | 环境变量 | `AIDER_MODEL=gpt-4` |\n| 中 | 项目级配置 | `.aider.conf.yml` |\n| 低 | 用户级配置 | `~/.aider.conf.yml` |\n\n资料来源：[aider/main.py:80-150]()\n\n## 技术亮点\n\n### 智能代码编辑\n\nAider 采用先进的提示工程技术，能够：\n\n- 准确理解用户的编程意图\n- 保持代码风格一致性\n- 遵循项目现有的编码规范\n- 正确处理多文件依赖关系\n\n资料来源：[aider/coder.py:150-250]()\n\n### 安全与隐私\n\n- 所有代码处理在本地完成\n- API 密钥通过环境变量管理\n- 支持使用本地部署的模型\n- 不收集或上传源代码\n\n## 相关资源\n\n- **官方文档**：[https://aider.chat/docs/](https://aider.chat/docs/)\n- **GitHub 仓库**：[https://github.com/Aider-AI/aider](https://github.com/Aider-AI/aider)\n- **问题反馈**：[GitHub Issues](https://github.com/Aider-AI/aider/issues)\n\n## 总结\n\nAider 代表了 AI 辅助编程工具的新一代发展方向，它通过深度集成 AI 能力与成熟的版本控制系统，为开发者提供了一个高效、安全、可持续的 AI 结对编程环境。无论是小型个人项目还是大型企业代码库，Aider 都能显著提升开发效率。\n\n资料来源：[aider/__init__.py:1-30]()\n\n---\n\n<a id='page-install'></a>\n\n## 安装指南\n\n### 相关页面\n\n相关主题：[项目介绍](#page-intro), [配置系统](#page-config)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [pyproject.toml](https://github.com/Aider-AI/aider/blob/main/pyproject.toml)\n- [docker/Dockerfile](https://github.com/Aider-AI/aider/blob/main/docker/Dockerfile)\n- [requirements.txt](https://github.com/Aider-AI/aider/blob/main/requirements.txt)\n- [requirements/requirements-help.txt](https://github.com/Aider-AI/aider/blob/main/requirements/requirements-help.txt)\n- [CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n</details>\n\n# 安装指南\n\nAider 是一款终端中的 AI 配对编程工具，支持与各种大型语言模型（LLM）协作进行代码开发。本指南详细介绍 Aider 的多种安装方式、系统要求及配置方法。\n\n## 系统要求\n\n### Python 版本兼容性\n\nAider 支持以下 Python 版本：\n\n| Python 版本 | 支持状态 |\n|------------|---------|\n| 3.9        | ✅ 支持 |\n| 3.10       | ✅ 支持 |\n| 3.11       | ✅ 支持 |\n| 3.12       | ✅ 支持 |\n\n资料来源：[CONTRIBUTING.md:1]()\n\n### 核心依赖\n\nAider 的核心功能依赖以下关键库：\n\n| 依赖库 | 用途说明 |\n|--------|----------|\n| `aiohttp` | 异步 HTTP 客户端，用于 API 通信 |\n| `gitpython` | Git 操作集成 |\n| `tiktoken` | OpenAI token 计数 |\n| `packaging` | 版本解析 |\n| `pathspec` | 文件路径匹配 |\n| `pexpect` | 终端交互 |\n| `psutil` | 系统资源监控 |\n| `typer` | 命令行界面构建 |\n| `httpx` | HTTP 客户端 |\n\n资料来源：[requirements.txt:1-50]()\n\n## 安装方式\n\n### 使用 pip 安装\n\n通过 Python 包管理器 pip 进行安装是最简单的方式：\n\n```bash\npip install aider-chat\n```\n\n### 使用 uv 安装\n\n如果使用 uv 作为包管理工具：\n\n```bash\nuv pip install aider-chat\n```\n\n### 使用 Docker 部署\n\nDocker 安装方式适合需要隔离环境的用户：\n\n```bash\ndocker pull aiderai/aider\n```\n\nAider 提供了官方 Dockerfile，位于 `docker/Dockerfile`。Docker 镜像基于 Python 运行环境，包含所有必要的依赖项。\n\n资料来源：[docker/Dockerfile:1]()\n\n### 从源码安装\n\n对于需要最新功能或参与开发的用户，可以从源码安装：\n\n```bash\ngit clone https://github.com/Aider-AI/aider.git\ncd aider\npip install -e .\n```\n\n或使用 uv：\n\n```bash\ngit clone https://github.com/Aider-AI/aider.git\ncd aider\nuv pip install -e .\n```\n\n## 安装流程图\n\n```mermaid\ngraph TD\n    A[开始安装] --> B{选择安装方式}\n    B --> C[pip 安装]\n    B --> D[Docker 安装]\n    B --> E[从源码安装]\n    C --> F[安装 aider-chat]\n    D --> G[拉取 Docker 镜像]\n    E --> H[克隆源码仓库]\n    H --> I[安装可编辑模式]\n    F --> J[配置 LLM API]\n    G --> J\n    I --> J\n    J --> K[验证安装]\n    K --> L[安装完成]\n```\n\n## 环境配置\n\n### LLM API 配置\n\n安装完成后，需要配置 LLM 提供商。支持的模型包括：\n\n- **OpenAI**：GPT-4o、o1、o3-mini 等\n- **Anthropic**：Claude 系列\n- **本地模型**：通过兼容接口连接\n- **其他**：支持 litellm 的所有模型\n\n### 环境变量\n\n可通过以下环境变量进行配置：\n\n| 环境变量 | 说明 | 默认值 |\n|---------|------|--------|\n| `AIDER_MODEL` | 设置默认模型 | - |\n| `AIDER_API_KEY` | 设置 API 密钥 | - |\n| `AIDER_AUTO_COMMITS` | 启用自动提交 | 1 (启用) |\n| `AIDER_SHOW_DIFFS` | 显示差异 | 0 (禁用) |\n\n资料来源：[aider/website/examples/update-docs.md:1]()\n\n## 依赖模块说明\n\n### 核心功能依赖\n\n`requirements.txt` 定义了项目的核心依赖：\n\n```toml\naiohappyeyeballs>=2.6.1\naiohttp>=3.13.3\nanyio>=4.12.1\nhttpx>=0.27.0\npackaging>=26.0\npathspec>=1.0.4\npexpect>=4.9.0\npsutil>=7.2.2\ntyper>=0.24.1\n```\n\n资料来源：[requirements.txt:1-30]()\n\n### 可选功能模块\n\n| 模块 | 用途 | 触发条件 |\n|------|------|----------|\n| `requirements-help.txt` | 帮助文档生成依赖 | 使用 `--help` 功能 |\n| `requirements-browser.txt` | 浏览器集成 | 使用浏览器相关功能 |\n| `requirements-dev.txt` | 开发工具 | 进行开发或测试 |\n\n`requirements-help.txt` 包含以下扩展依赖：\n\n| 依赖 | 版本 | 用途 |\n|------|------|------|\n| `numpy` | 2.4.3 | 科学计算 |\n| `torch` | 2.10.0 | 深度学习框架 |\n| `transformers` | 5.3.0 | 模型转换 |\n| `llama-index-core` | - | 文档索引 |\n\n资料来源：[requirements/requirements-help.txt:1-80]()\n\n## 代码规范要求\n\n开发者在安装开发环境时需遵循以下规范：\n\n### 代码风格\n\n- 遵循 **PEP 8** 规范\n- 最大行长度：100 字符\n- 使用 **isort** 排序导入\n- 使用 **Black** 格式化代码\n\n### 开发环境设置\n\n1. 安装 pre-commit hooks（自动格式化代码）\n2. 运行测试前确保安装开发依赖\n3. Python 版本必须在 3.9-3.12 范围内\n\n资料来源：[CONTRIBUTING.md:1-30]()\n\n## 验证安装\n\n安装完成后，运行以下命令验证：\n\n```bash\naider --version\n```\n\n或启动交互式会话：\n\n```bash\naider\n```\n\n## 常见问题\n\n### 依赖冲突\n\n如果遇到依赖冲突，建议使用虚拟环境：\n\n```bash\npython -m venv aider-env\nsource aider-env/bin/activate  # Linux/Mac\n# 或\naider-env\\Scripts\\activate     # Windows\npip install aider-chat\n```\n\n### 权限问题\n\nLinux/Mac 用户可能需要使用 `--user` 安装：\n\n```bash\npip install --user aider-chat\n```\n\n或将 pip 安装路径添加到 `PATH` 环境变量。\n\n### Git 依赖\n\nAider 依赖 Git 进行版本控制，确保系统已安装 Git：\n\n```bash\ngit --version\n\n---\n\n<a id='page-architecture'></a>\n\n## 系统架构\n\n### 相关页面\n\n相关主题：[代码编辑器模块](#page-coders), [大语言模型集成](#page-llm-models)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py) *(未在当前上下文中提供)*\n- [aider/io.py](https://github.com/Aider-AI/aider/blob/main/aider/io.py) *(未在当前上下文中提供)*\n- [aider/sendchat.py](https://github.com/Aider-AI/aider/blob/main/aider/sendchat.py) *(未在当前上下文中提供)*\n- [aider/llm.py](https://github.com/Aider-AI/aider/blob/main/aider/llm.py) *(未在当前上下文中提供)*\n\n**注意**：由于当前上下文未包含实际源码文件，本页内容基于 README.md、文档网站及示例对话中的可用信息构建。\n\n</details>\n\n# 系统架构\n\n## 概述\n\nAider 是一个终端中的 AI 结对编程工具，它使开发者能够与大型语言模型（LLM）协作来启动新项目或扩展现有代码库。该工具的核心设计围绕命令行界面、LLM 集成、Git 工作流自动化和代码编辑能力展开。\n\nAider 支持多种 LLM 提供商，包括 DeepSeek、Claude 3.7 Sonnet、OpenAI o1、o3-mini、GPT-4o 等，同时也支持本地模型运行。\n\n---\n\n## 核心架构组件\n\n基于项目结构和功能模块的划分，Aider 的系统架构主要由以下几个核心组件构成：\n\n| 组件 | 功能描述 | 典型文件 |\n|------|----------|----------|\n| **main.py** | CLI 入口点，参数解析，命令路由 | 命令行参数处理、配置加载 |\n| **io.py** | 输入输出处理 | 用户交互、输出格式化 |\n| **llm.py** | LLM 通信层 | API 调用、响应处理 |\n| **sendchat.py** | 聊天消息发送 | 与 LLM 的消息交换 |\n\n*资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)*\n\n---\n\n## 架构分层\n\n### 表现层（Presentation Layer）\n\n表现层负责与用户进行交互，包括：\n\n- **命令行界面**：通过 argparse/typer 处理用户输入的命令行参数\n- **输出渲染**：彩色终端输出、差异显示、聊天历史格式化\n- **用户确认**：处理 yes/no 确认提示\n\n### 业务逻辑层（Business Logic Layer）\n\n业务逻辑层处理核心功能：\n\n- **代码库映射**：分析整个代码库结构，构建代码地图（Repo Map），帮助 LLM 理解项目结构\n- **编辑管理**：跟踪代码变更、应用编辑、处理冲突\n- **Git 集成**：自动提交变更、生成有意义的提交信息\n\n### 集成层（Integration Layer）\n\n集成层负责与外部系统通信：\n\n```mermaid\ngraph LR\n    A[用户] --> B[Aider CLI]\n    B --> C[LLM API]\n    C -->|API 响应| B\n    B -->|代码变更| D[本地文件系统]\n    B -->|提交| E[Git 仓库]\n```\n\n### 数据层（Data Layer）\n\n数据层处理持久化和临时存储：\n\n- **聊天历史**：保存对话上下文\n- **输入历史**：.aider.history 文件\n- **配置存储**：环境变量、配置文件\n\n---\n\n## 工作流程\n\nAider 的典型工作流程如下：\n\n```mermaid\ngraph TD\n    A[启动 Aider] --> B[解析命令行参数]\n    B --> C[初始化 LLM 连接]\n    C --> D[加载代码库上下文]\n    D --> E[构建 Repo Map]\n    E --> F[进入主循环]\n    F --> G{用户输入}\n    G -->|聊天请求| H[发送至 LLM]\n    H --> I[处理响应]\n    I --> J{需要编辑?}\n    J -->|是| K[应用代码变更]\n    J -->|否| L[显示响应]\n    K --> M[自动 Git 提交]\n    M --> F\n    L --> F\n    G -->|退出命令| N[结束会话]\n```\n\n### 代码编辑流程\n\n当用户请求代码变更时，Aider 执行以下步骤：\n\n1. 接收用户的自然语言请求\n2. 结合当前代码库上下文（Repo Map）\n3. 将完整上下文发送给 LLM\n4. 接收 LLM 返回的编辑指令\n5. 应用变更到本地文件\n6. 自动创建 Git 提交\n\n---\n\n## LLM 集成架构\n\n### 支持的模型类型\n\nAider 支持多种 LLM 配置：\n\n| 模型类别 | 示例模型 | 使用方式 |\n|----------|----------|----------|\n| 云端 API | DeepSeek, Claude, GPT-4o | `--model deepseek --api-key deepseek=<key>` |\n| OpenAI 兼容 | o3-mini, GPT 系列 | `--model o3-mini --api-key openai=<key>` |\n| 本地模型 | Llama, Mistral | 支持通过 API 兼容接口连接 |\n\n### 上下文构建\n\nLLM 集成的重要组成部分是构建有效的上下文：\n\n- **Repo Map**：整个代码库的结构映射，帮助 LLM 理解项目布局\n- **当前文件内容**：用户正在编辑的文件\n- **聊天历史**：之前的对话记录\n- **Git 差异**：未提交的代码变更\n\n---\n\n## Git 集成\n\nAider 的 Git 集成实现了自动化的版本控制工作流：\n\n```mermaid\ngraph LR\n    A[代码变更] --> B[暂存更改]\n    B --> C[生成提交信息]\n    C --> D[创建提交]\n    D --> E[Git 历史]\n```\n\n### 自动提交特性\n\n- 每次 LLM 触发的代码变更都会自动提交\n- 提交信息由 LLM 生成，通常具有描述性\n- 支持通过 `--no-auto-commits` 禁用自动提交\n- 使用 `--show-diffs` 可在提交时显示差异\n\n*资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)*\n\n---\n\n## 输入输出系统\n\n### 输入方式\n\nAider 支持多种输入方式：\n\n1. **命令行输入**：通过终端直接输入命令\n2. **语音输入**：使用麦克风进行语音控制\n3. **Web 聊天**：通过浏览器界面与 LLM 交互\n4. **剪贴板**：复制粘贴代码片段\n\n### 输出显示\n\n- **彩色终端输出**：不同类型的信息使用不同颜色\n- **代码差异高亮**：使用语法高亮显示变更\n- **Markdown 渲染**：支持在终端中渲染 Markdown 内容\n\n---\n\n## 配置系统\n\nAider 使用多层次的配置系统：\n\n```mermaid\ngraph TD\n    A[配置优先级] --> B[命令行参数]\n    A --> C[环境变量]\n    A --> D[配置文件]\n    B --> E[实际配置]\n    C --> E\n    D --> E\n```\n\n### 环境变量\n\n常见的环境变量配置：\n\n| 环境变量 | 默认值 | 描述 |\n|----------|--------|------|\n| `AIDER_MODEL` | gpt-4 | 默认使用的模型 |\n| `AIDER_AUTO_COMMITS` | 1 | 是否自动提交（1=启用，0=禁用） |\n| `AIDER_SHOW_DIFFS` | 0 | 是否显示差异 |\n| `AIDER_HISTORY_FILE` | .aider.history | 输入历史文件 |\n\n*资料来源：[aider/website/examples/update-docs.md](https://github.com/Aider-AI/aider/blob/main/aider/website/examples/update-docs.md)*\n\n---\n\n## 扩展功能模块\n\n### 代码检查与测试\n\nAider 集成了代码质量检查功能：\n\n- 每次变更后自动运行 linter\n- 自动执行测试套件\n- 能够根据 linter 和测试反馈自动修复问题\n\n### 多语言支持\n\nAider 支持 100+ 编程语言，包括：\n\n- Python、JavaScript、TypeScript\n- Rust、Go、Ruby\n- PHP、C++、C\n- HTML、CSS 等\n\n### IDE 集成\n\n用户可以在喜欢的 IDE 中使用 Aider，通过在代码中添加注释来请求变更，Aider 会自动处理。\n\n---\n\n## 技术栈\n\n基于项目依赖文件分析，Aider 的主要技术依赖包括：\n\n| 类别 | 技术 | 用途 |\n|------|------|------|\n| **LLM 框架** | llama-index | LLM 调用和索引 |\n| **终端 UI** | prompt_toolkit | 交互式命令行界面 |\n| **HTTP 客户端** | aiohttp | 异步 API 通信 |\n| **版本控制** | GitPython | Git 操作 |\n| **向量化** | sentence-transformers | 代码嵌入 |\n| **分词** | tiktoken | Token 计数和分词 |\n\n*资料来源：[requirements/requirements-help.txt](https://github.com/Aider-AI/aider/blob/main/requirements/requirements-help.txt)*\n\n---\n\n## 目录结构\n\nAider 项目的典型目录结构：\n\n```\naider/\n├── main.py          # CLI 入口点\n├── io.py            # 输入输出处理\n├── sendchat.py      # 聊天消息发送\n├── llm.py           # LLM 通信\n├── getinput.py      # 用户输入处理\n├── codemap.py       # 代码库映射\n├── queries.py       # 查询构建\n├── website/         # 文档网站（Jekyll）\n└── tests/           # 测试套件\n```\n\n*资料来源：[CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)*\n\n---\n\n## 总结\n\nAider 的系统架构采用分层设计，将用户界面、核心业务逻辑、LLM 集成和数据持久化分离。其核心优势在于：\n\n1. **简洁的 CLI 界面**：通过命令行直接与 LLM 交互\n2. **强大的上下文理解**：通过 Repo Map 技术理解代码库结构\n3. **自动化的 Git 工作流**：无需手动提交代码变更\n4. **灵活的 LLM 支持**：支持多种云端和本地模型\n5. **开发者友好的集成**：与 linter、测试框架、IDE 无缝集成\n\n这种架构使 Aider 成为一个高效、可靠的 AI 结对编程工具，能够在各种规模和类型的项目中发挥作用。\n\n---\n\n<a id='page-coders'></a>\n\n## 代码编辑器模块\n\n### 相关页面\n\n相关主题：[系统架构](#page-architecture), [Git 集成](#page-git-integration)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/coders/base_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/base_coder.py)\n- [aider/coders/editblock_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/editblock_coder.py)\n- [aider/coders/wholefile_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/wholefile_coder.py)\n- [aider/coders/udiff_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/udiff_coder.py)\n- [aider/coders/patch_coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coders/patch_coder.py)\n- [aider/getinput.py](https://github.com/Aider-AI/aider/blob/main/aider/getinput.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n</details>\n\n# 代码编辑器模块\n\n## 概述\n\nAider 的代码编辑器模块是整个工具的核心组件之一，负责管理与大型语言模型（LLM）的代码交互、修改和应用。该模块采用策略模式设计，通过多个专门的编码器（coder）类来处理不同类型的代码编辑场景，从简单的代码块替换到复杂的统一差异（unified diff）应用。代码编辑器模块与 Git 版本控制系统深度集成，自动为每次修改生成语义化的提交信息，使开发者能够方便地回溯、对比和撤销 AI 产生的变更。\n\nAider 支持多种代码编辑策略，包括编辑块模式（Edit Block）、整文件模式（Whole File）、差异模式（Udiff）和补丁模式（Patch），每种模式都针对特定的使用场景和 LLM 能力进行了优化。这种模块化的架构设计允许开发者在不同场景下选择最合适的编辑策略，同时也便于扩展新的编辑模式以适应未来 LLM 能力的提升。\n\n## 架构设计\n\n### 核心类结构\n\nAider 的代码编辑器模块采用分层架构设计，基类 `BaseCoder` 定义了所有编码器必须实现的接口和通用功能，而具体的编辑策略则由子类实现。这种设计遵循了面向对象编程的开闭原则，使得添加新的编辑策略时无需修改现有代码。编码器类负责解析 LLM 返回的编辑指令、验证语法正确性、执行文件修改以及与 Git 仓库进行交互。\n\n```mermaid\ngraph TD\n    A[用户请求] --> B{编辑策略选择}\n    B --> C[EditBlockCoder]\n    B --> D[WholeFileCoder]\n    B --> E[UdiffCoder]\n    B --> F[PatchCoder]\n    C --> G[解析编辑指令]\n    D --> G\n    E --> G\n    F --> G\n    G --> H[验证语法]\n    H --> I[执行文件修改]\n    I --> J[Git 自动提交]\n    J --> K[返回结果给用户]\n```\n\n### 基类设计\n\n`BaseCoder` 类作为所有编码器的抽象基类，定义了代码编辑的核心接口和行为。基类实现了与 LLM 的通信机制、文件系统的读写操作、Git 仓库的状态管理以及用户交互界面的构建。每个具体的编码器只需重写特定的方法来适配其独特的编辑策略，而无需重新实现通用的功能逻辑。基类还负责维护编辑上下文，确保 LLM 能够理解当前代码的状态和修改历史。\n\n```mermaid\nclassDiagram\n    class BaseCoder {\n        +repo Repo\n        +io InputOutput\n        +edit_format: str\n        +cur_markers: list\n        +show_source: bool\n        +get_context() list\n        +run()\n        +send_new_content()\n        +edit_response() bool\n        +commit()\n    }\n    \n    class EditBlockCoder {\n        +done_messages: list\n        +edit_block_additions() bool\n        +replace_markers()\n    }\n    \n    class WholeFileCoder {\n        +write_file()\n        +check_syntax()\n    }\n    \n    class UdiffCoder {\n        +udiff_edit_response()\n        +parse_diff()\n    }\n    \n    class PatchCoder {\n        +apply_patch()\n        +validate_patch()\n    }\n    \n    BaseCoder <|-- EditBlockCoder\n    BaseCoder <|-- WholeFileCoder\n    BaseCoder <|-- UdiffCoder\n    BaseCoder <|-- PatchCoder\n```\n\n## 编辑策略类型\n\n### 编辑块模式（Edit Block）\n\n编辑块模式是 Aider 默认的编辑策略，适用于大多数代码修改场景。该模式使用特殊的标记语法来标识需要修改的代码区域，LLM 在生成的响应中使用这些标记来指定新代码应该插入的位置和范围。编辑块模式的优势在于它能够精确定位修改位置，即使文件很长也能准确应用变更，而不会影响文件中的其他内容。\n\n编辑块模式的工作流程包括：首先解析 LLM 响应中的特殊标记（如 `<<<<<<< ORIGINAL` 和 `=======`），然后提取原始代码和新代码的边界，接着执行文本替换操作，最后验证修改后的文件语法是否正确。这种模式特别适合处理函数级别的修改、添加新的代码段或者替换现有的逻辑实现。\n\n### 整文件模式（Whole File）\n\n整文件模式采用替换整个文件内容的方式来应用修改，适用于需要对文件进行大幅度重构的场景。当 LLM 返回完整的文件内容时，Aider 会用新内容完全替换旧文件。这种模式的优点是实现简单、不容易出现部分更新的问题，但缺点是当文件较长时会消耗更多的输入 token，因为它需要重新发送整个文件内容给 LLM。\n\n整文件模式在以下场景中特别有用：语言转换（如从 Python 2 迁移到 Python 3）、大规模重构需要同时修改多处代码、以及 LLM 更好地理解完整上下文时。该模式还支持语法检查功能，可以在应用修改前验证代码的语法正确性，避免将明显错误的代码写入文件。\n\n### 统一差异模式（Udiff）\n\n统一差异模式使用标准的 unified diff 格式来表示代码修改，这是开发者熟悉的传统 diff 格式。LLM 生成包含上下文行的差异信息，Aider 解析这些差异并应用到源文件中。这种模式的优点是与现有的代码审查工具和版本控制系统高度兼容，便于人类理解和审查 LLM 生成的修改。\n\nUdiff 模式特别适合与支持 unified diff 的 LLM 一起使用，或者当需要将 LLM 的修改集成到已有的代码审查流程中时。该模式能够保留修改的历史上下文，使得 diff 输出更加可读和易于理解。\n\n### 补丁模式（Patch）\n\n补丁模式基于标准的 patch 格式来处理代码修改，提供了一种更加结构化的修改方式。与 Udiff 模式类似，Patch 模式也生成可读的差异输出，但格式更加规范化，便于解析和处理。Aider 在应用补丁时会进行多重验证，包括检查文件的当前状态是否与补丁期望的状态匹配。\n\n## 核心组件详解\n\n### 文件输入输出管理\n\n`InputOutput` 类负责管理与用户的交互输入输出，以及文件的读写操作。该类封装了 prompt_toolkit 库的交互式输入功能，支持命令历史记录、自动补全和自定义样式等特性。`InputOutput` 类维护了输入历史文件和聊天历史文件的路径，使得用户的输入历史可以在会话之间持久化保存。\n\n```mermaid\ngraph LR\n    A[用户输入] --> B[InputOutput]\n    B --> C[PromptSession]\n    B --> D[FileHistory]\n    C --> E[终端显示]\n    D --> F[历史文件]\n```\n\n### Git 集成\n\n代码编辑器模块与 Git 深度集成，实现了自动提交功能。每次 LLM 产生的修改都会被自动提交到本地 Git 仓库，并生成语义化的提交信息。这些提交信息描述了修改的内容和目的，便于开发者理解变更历史。Aider 使用熟悉的 Git 工具来管理修改历史，支持查看差异（diff）、管理分支和撤销（undo）AI 的修改。\n\n### Lint 和测试集成\n\nAider 支持在每次修改后自动运行 linter 和测试套件。当 LLM 生成的代码导致 linter 检测到问题时，Aider 可以请求 LLM 自动修复这些问题。这种自动化的工作流程确保了代码质量的持续维护，减少了手动检查和修复的工作量。\n\n## 配置与使用\n\n### 命令行参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--edit-format` | 指定编辑策略 | auto |\n| `--no-auto-commits` | 禁用自动提交 | False |\n| `--show-diffs` | 显示提交时的差异 | False |\n| `--yes` | 跳过所有确认提示 | False |\n\n### 环境变量\n\n| 变量名 | 说明 | 默认值 |\n|--------|------|--------|\n| `AIDER_AUTO_COMMITS` | 启用自动提交 | 1 |\n| `AIDER_SHOW_DIFFS` | 显示差异 | 0 |\n\n## 工作流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant IO as InputOutput\n    participant Coder as Coder\n    participant LLM as LLM\n    participant Git as Git\n    participant FS as 文件系统\n\n    User->>IO: 发送请求\n    IO->>Coder: 转发请求\n    Coder->>FS: 读取当前文件\n    Coder->>Coder: 生成上下文\n    Coder->>LLM: 发送编辑请求\n    LLM-->>Coder: 返回编辑指令\n    Coder->>Coder: 解析并验证\n    Coder->>FS: 写入修改\n    Coder->>Git: 创建提交\n    Coder-->>User: 返回结果\n```\n\n## 技术栈\n\n代码编辑器模块依赖以下核心技术组件：\n\n- **prompt_toolkit**：用于构建交互式命令行界面\n- **GitPython**：用于与 Git 仓库进行交互\n- **tiktoken**：用于 LLM 输出的分词和标记\n- **tree-sitter** 或 **AST 解析器**：用于语法验证\n\n## 扩展与定制\n\n开发者可以通过继承 `BaseCoder` 类来创建自定义的编辑策略。新的编码器类需要实现以下核心方法：\n\n1. `get_context()`：返回发送给 LLM 的上下文信息\n2. `edit_response()`：解析 LLM 的响应并应用修改\n3. `commit()`：创建 Git 提交\n\n这种扩展机制使得 Aider 能够适应不同的编辑需求和 LLM 能力，为未来可能出现的新编辑模式提供了良好的扩展基础。\n\n---\n\n<a id='page-git-integration'></a>\n\n## Git 集成\n\n### 相关页面\n\n相关主题：[代码编辑器模块](#page-coders), [命令系统](#page-commands)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/repo.py](https://github.com/Aider-AI/aider/blob/main/aider/repo.py)\n- [aider/diffs.py](https://github.com/Aider-AI/aider/blob/main/aider/diffs.py)\n- [aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n- [aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n- [README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n- [CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n</details>\n\n# Git 集成\n\nAider 的 Git 集成功能是其核心特性之一，它允许 AI 编程助手与版本控制系统无缝协作。通过自动提交更改、提供差异查看以及与现有 Git 工作流的深度集成，Aider 使开发者能够轻松追踪、管理和回滚 AI 辅助所做的代码修改。\n\n## 功能概述\n\nAider 的 Git 集成提供以下核心能力：\n\n| 功能 | 描述 |\n|------|------|\n| 自动提交 | AI 修改代码后自动创建语义化的提交 |\n| 差异查看 | 可选择显示每次提交的详细差异 |\n| 回滚支持 | 通过标准 Git 命令撤销 AI 的更改 |\n| 仓库检测 | 自动识别当前目录是否在 Git 仓库中 |\n| 文件忽略 | 支持 .aiderignore 配置忽略规则 |\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## 核心组件\n\n### Repository 管理器\n\n`aider/repo.py` 模块负责管理与 Git 仓库的交互。该模块处理仓库检测、文件状态追踪和提交历史管理。\n\n```mermaid\ngraph TD\n    A[用户运行 aider] --> B{检测 Git 仓库}\n    B -->|是| C[初始化 Repository]\n    B -->|否| D[禁用 Git 功能]\n    C --> E[加载 .aiderignore]\n    E --> F[扫描已修改文件]\n    F --> G[准备自动提交]\n```\n\n### 差异处理模块\n\n`aider/diffs.py` 负责生成和管理代码差异。当 AI 完成修改后，该模块计算并格式化变更内容，供提交时展示。\n\n资料来源：[aider/diffs.py](https://github.com/Aider-AI/aider/blob/main/aider/diffs.py)\n\n## 命令行配置\n\n### Git 相关参数\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `--git` | 布尔 | True | 启用/禁用 Git 仓库检测 |\n| `--gitignore` | 布尔 | True | 自动添加 .aider* 到 .gitignore |\n| `--add-gitignore-files` | 布尔 | False | 将 .gitignore 中的文件纳入编辑范围 |\n| `--aiderignore` | 路径 | .aiderignore | 指定 aider 忽略文件位置 |\n| `--subtree-only` | 布尔 | False | 仅处理当前子目录中的文件 |\n| `--auto-commits` | 布尔 | True | 启用/禁用自动提交 |\n| `--show-diffs` | 布尔 | False | 提交时显示差异 |\n\n资料来源：[aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n\n### 环境变量配置\n\n| 环境变量 | 值 | 说明 |\n|----------|-----|------|\n| `AIDER_AUTO_COMMITS` | 0 或 1 | 控制是否启用自动提交（0=禁用，1=启用） |\n| `AIDER_SHOW_DIFFS` | 0 或 1 | 控制提交时是否显示差异（0=否，1=是） |\n\n## 自动提交机制\n\nAider 采用智能自动提交策略，每次 AI 修改代码后都会创建包含有意义提交信息的提交。\n\n```mermaid\ngraph LR\n    A[AI 修改代码] --> B[生成变更]\n    B --> C[生成语义化提交信息]\n    C --> D[执行 git add]\n    D --> E[执行 git commit]\n    E --> F[记录到提交历史]\n```\n\n### 提交信息生成\n\nAider 会分析代码变更内容，自动生成描述性的提交信息。例如：\n\n```\naider: Updated function signature in main.py\naider: Fixed main() function to accept input and output keyword arguments\naider: Added padding inside the border of the blockquote\n```\n\n资料来源：[aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n\n## 忽略文件配置\n\n### .aiderignore 语法\n\n`.aiderignore` 文件使用与 `.gitignore` 类似的语法规则，用于指定哪些文件不应被 Aider 追踪和修改。\n\n```gitignore\n# 忽略临时文件\n*.tmp\n*.log\n\n# 忽略构建产物\ndist/\nbuild/\n__pycache__/\n```\n\n### .gitignore 集成\n\n当 `--gitignore` 参数启用时（默认行为），Aider 会自动将以下文件添加到项目的 `.gitignore`：\n\n- `.aider*` - Aider 配置和缓存文件\n- `.aider.history` - 聊天历史记录\n\n资料来源：[aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n\n## 使用流程\n\n```mermaid\ngraph TD\n    A[启动 aider] --> B{检测 Git 仓库}\n    B -->|未检测到| C[显示警告或禁用 Git 功能]\n    B -->|检测到| D[加载 Git 配置]\n    D --> E[加载 .aiderignore]\n    E --> F[等待用户指令]\n    F --> G{AI 执行修改}\n    G -->|是| H{auto-commits 启用?}\n    H -->|是| I[创建自动提交]\n    H -->|否| J[仅修改文件]\n    I --> K[显示提交哈希]\n    J --> F\n```\n\n## 与其他工具的集成\n\n### 查看差异\n\n用户可以通过标准 Git 命令查看 Aider 所做更改：\n\n```bash\n# 查看工作区差异\ngit diff\n\n# 查看提交历史\ngit log\n\n# 查看特定提交\ngit show <commit-hash>\n```\n\n### 撤销更改\n\n```bash\n# 撤销最近一次提交（保留文件更改）\ngit reset --soft HEAD~1\n\n# 完全撤销提交\ngit reset --hard HEAD~1\n```\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## 开发指南\n\n### 本地测试\n\n在开发环境中测试 Git 集成时，建议：\n\n1. 使用测试仓库而非生产代码库\n2. 启用 `--show-diffs` 以验证提交内容\n3. 设置 `AIDER_AUTO_COMMITS=0` 进行调试\n\n### 提交规范\n\n项目使用 PEP 8 风格指南，代码格式化由 Black 和 isort 自动处理。提交前请运行预提交钩子以确保代码符合规范。\n\n资料来源：[CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n\n---\n\n<a id='page-repomap'></a>\n\n## 仓库映射\n\n### 相关页面\n\n相关主题：[大语言模型集成](#page-llm-models), [系统架构](#page-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/repomap.py](https://github.com/Aider-AI/aider/blob/main/aider/repomap.py)\n- [aider/website/docs/repomap.md](https://github.com/Aider-AI/aider/blob/main/aider/website/docs/repomap.md)\n- [aider/website/index.html](https://github.com/Aider-AI/aider/blob/main/aider/website/index.html)\n</details>\n\n# 仓库映射\n\n仓库映射（Repository Mapping，简称 RepoMap）是 Aider 用于理解项目代码库结构和上下文的核心机制。它通过分析整个代码库的拓扑关系、依赖图谱和语法结构，为大型项目中的 AI 辅助编程提供深度的代码理解能力。\n\n## 功能概述\n\nAider 的仓库映射功能使 AI 助手能够全面把握代码库的整体架构。通过构建代码库的\"地图\"，Aider 可以在处理请求时准确定位相关代码片段，理解模块间的依赖关系，从而生成更加准确和上下文相关的代码修改建议。\n\n资料来源：[aider/website/index.html]()\n\n## 核心特性\n\n| 特性 | 说明 |\n|------|------|\n| **全局代码分析** | 扫描并分析整个代码库的结构 |\n| **依赖关系追踪** | 识别模块间的导入和引用关系 |\n| **语法结构解析** | 利用 Tree-sitter 解析多种编程语言的语法树 |\n| **上下文感知** | 在生成修改建议时考虑相关代码位置 |\n| **多语言支持** | 支持 100 多种编程语言的代码分析 |\n\n资料来源：[aider/website/index.html]()\n\n## 工作原理\n\n仓库映射系统通过以下步骤构建代码库的映射：\n\n```mermaid\ngraph TD\n    A[代码库扫描] --> B[文件发现]\n    B --> C[语言检测]\n    C --> D[语法树解析]\n    D --> E[依赖关系提取]\n    E --> F[构建依赖图谱]\n    F --> G[存储到 RepoMap]\n    G --> H[为 LLM 提供上下文]\n```\n\n### 扫描阶段\n\nAider 会递归扫描项目目录，识别所有需要分析的文件。这一过程考虑 `.gitignore` 规则，跳过不应纳入分析的二进制文件和无关文档。\n\n### 解析阶段\n\n对于每种支持的语言，Aider 使用 Tree-sitter 解析语法树，提取关键的语法元素：\n\n- **函数定义** - 识别函数名、参数和作用域\n- **类定义** - 分析类的继承关系和成员\n- **导入语句** - 追踪模块间的依赖关系\n- **变量声明** - 理解变量的定义和使用位置\n\n### 图谱构建\n\n解析完成后，系统构建一个反映代码库拓扑结构的依赖图谱。这个图谱使得 Aider 能够：\n\n1. 快速定位与当前修改相关的所有代码文件\n2. 理解修改可能影响的上下游模块\n3. 在多个相关位置之间做出协调一致的修改\n\n## 配置选项\n\n| 环境变量 | 默认值 | 说明 |\n|----------|--------|------|\n| `AIDER_REPOMAP_CHARS` | - | 限制发送到 LLM 的仓库映射字符数 |\n| `AIDER_REPOMAP_TRIPLE_BACKTICKS` | - | 控制是否转义三引号以避免 Markdown 格式问题 |\n\n## 与 Tree-sitter 的集成\n\nAider 的仓库映射功能深度集成了 Tree-sitter 技术。Tree-sitter 是一个用于解析编程语言的开源库，能够生成高效的增量语法解析树。\n\n资料来源：[requirements/common-constraints.txt]()\n\n支持的编程语言包括但不限于：\n\n- Python\n- JavaScript/TypeScript\n- Rust\n- Go\n- C/C++\n- Ruby\n- PHP\n- HTML/CSS\n\n每种语言都有对应的 Tree-sitter 语言包支持，这些语言包存储在 `aider/queries/tree-sitter-languages/` 和 `aider/queries/tree-sitter-language-pack/` 目录中。\n\n## 使用场景\n\n### 大型项目导航\n\n在包含数百或数千个文件的大型代码库中，仓库映射帮助 Aider 快速理解代码的组织结构，准确地定位到与用户请求相关的代码区域。\n\n### 关联代码修改\n\n当用户请求修改一个函数或类时，Aider 可以通过仓库映射识别所有使用该函数或继承该类的位置，确保修改的一致性和完整性。\n\n### 依赖感知重构\n\n在进行重构操作时，仓库映射提供依赖关系的完整视图，帮助 AI 评估修改的潜在影响范围。\n\n## 性能优化\n\n为了在大型代码库中保持响应速度，Aider 实现了以下优化策略：\n\n1. **增量更新** - 仅在文件实际变更时重新解析相关文件\n2. **智能缓存** - 缓存已解析的语法树供后续使用\n3. **选择性加载** - 根据需要动态加载特定模块的详细信息\n4. **字符限制** - 通过 `AIDER_REPOMAP_CHARS` 控制发送到 LLM 的上下文大小\n\n## 技术架构\n\n```mermaid\ngraph LR\n    A[用户请求] --> B[RepoMap 控制器]\n    B --> C{缓存检查}\n    C -->|命中| D[返回缓存数据]\n    C -->|未命中| E[文件系统扫描]\n    E --> F[Tree-sitter 解析]\n    F --> G[依赖图谱构建]\n    G --> H[存储映射结果]\n    H --> I[返回给 LLM]\n```\n\n## 限制与注意事项\n\n1. **解析精度** - 对于某些非标准编码的文件，解析可能失败\n2. **循环依赖** - 包含循环依赖的代码库可能导致图谱构建复杂化\n3. **外部依赖** - 映射仅涵盖本地代码仓库，不包括外部包或库\n4. **性能瓶颈** - 超大型代码库（超过 10 万行代码）可能需要较长的初始扫描时间\n\n---\n\n<a id='page-llm-models'></a>\n\n## 大语言模型集成\n\n### 相关页面\n\n相关主题：[配置系统](#page-config), [系统架构](#page-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/models.py](https://github.com/Aider-AI/aider/blob/main/aider/models.py)\n- [aider/llm.py](https://github.com/Aider-AI/aider/blob/main/aider/llm.py)\n- [aider/openrouter.py](https://github.com/Aider-AI/aider/blob/main/aider/openrouter.py)\n- [aider/resources/model-metadata.json](https://github.com/Aider-AI/aider/blob/main/aider/resources/model-metadata.json)\n</details>\n\n# 大语言模型集成\n\n## 概述\n\nAider 是一个终端中的 AI 结对编程工具，其核心功能之一是与各种大语言模型（LLM）进行集成。通过模块化的设计架构，Aider 支持连接到几乎任何 LLM API，包括 OpenAI、Anthropic、DeepSeek、OpenRouter 等主流服务提供商，同时也支持本地模型部署。\n\nLLM 集成模块在整个系统中承担着关键角色，它负责：\n\n- 与远程 API 服务建立安全连接\n- 管理对话上下文和历史记录\n- 处理模型响应和错误恢复\n- 支持多种模型配置和参数调优\n- 实现流式输出和批量处理能力\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## 架构设计\n\n### 核心组件关系\n\n```mermaid\ngraph TD\n    A[User Input] --> B[Main Application]\n    B --> C[InputOutput Module]\n    C --> D[LLM Module]\n    D --> E[models.py]\n    D --> F[llm.py]\n    E --> G[Model Metadata]\n    F --> H[API Providers]\n    H --> I[OpenAI]\n    H --> J[Anthropic Claude]\n    H --> K[DeepSeek]\n    H --> L[OpenRouter]\n    H --> M[Local Models]\n    G --> N[model-metadata.json]\n```\n\n### 模块职责划分\n\n| 模块文件 | 主要职责 | 依赖关系 |\n|---------|---------|---------|\n| `models.py` | 模型定义、配置管理、元数据存储 | 基础模块，无外部依赖 |\n| `llm.py` | LLM 通信核心、API 调用、响应处理 | 依赖 models.py |\n| `openrouter.py` | OpenRouter 特定路由和配置 | 依赖 llm.py |\n\n资料来源：[aider/models.py](https://github.com/Aider-AI/aider/blob/main/aider/models.py)\n\n## 模型配置系统\n\n### 模型元数据管理\n\nAider 使用 JSON 格式的元数据文件 `model-metadata.json` 来存储支持的模型信息。该文件包含每个模型的以下属性：\n\n- 模型标识符和显示名称\n- 支持的 API 提供商\n- 上下文窗口大小\n- 默认参数配置\n- 特殊功能支持标志\n\n### 支持的模型分类\n\nAider 支持的模型可分为以下几个主要类别：\n\n**OpenAI 系列**\n\n- GPT-4o\n- o1、o3-mini\n- GPT-4 Turbo\n\n**Anthropic 系列**\n\n- Claude 3.7 Sonnet\n- Claude 3.5 Sonnet\n- Claude 3 Opus\n\n**其他主流模型**\n\n- DeepSeek\n- 本地部署模型\n- 通过 OpenRouter 访问的各类模型\n\n资料来源：[README.md](https://github.com/Aider-AI/aider/blob/main/README.md)\n\n## LLM 通信机制\n\n### API 连接流程\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant App as Main Application\n    participant LLM as LLM Module\n    participant API as External API\n    \n    User->>App: Submit Request\n    App->>LLM: Format Prompt\n    LLM->>API: Send API Request\n    API->>LLM: Receive Response\n    LLM->>App: Parse Response\n    App->>User: Display Result\n```\n\n### 错误处理与重试\n\nLLM 模块实现了完善的错误处理机制，包括：\n\n- 网络超时自动重试\n- API 限流处理\n- 响应格式验证\n- 降级策略支持\n\n资料来源：[aider/llm.py](https://github.com/Aider-AI/aider/blob/main/aider/llm.py)\n\n## OpenRouter 集成\n\n### OpenRouter 路由机制\n\nOpenRouter 是一个统一的 LLM 路由服务，允许用户通过单一接口访问多个模型提供商。Aider 通过专门的 `openrouter.py` 模块实现与 OpenRouter 的集成：\n\n- 自动选择最优模型\n- 成本优化路由\n- 统一的 API 封装\n- 认证和密钥管理\n\n### 配置示例\n\n```bash\n# 使用 OpenRouter\naider --model openrouter/anthropic/claude-3.5-sonnet --api-key openrouter=<key>\n\n# 指定提供商\naider --model deepseek --api-key deepseek=<key>\n```\n\n资料来源：[aider/openrouter.py](https://github.com/Aider-AI/aider/blob/main/aider/openrouter.py)\n\n## 使用配置\n\n### 命令行参数\n\n| 参数 | 说明 | 默认值 |\n|-----|------|-------|\n| `--model` | 指定使用的模型 | sonnet |\n| `--api-key` | API 密钥配置 | 环境变量读取 |\n| `--api-base` | 自定义 API 端点 | 提供商默认值 |\n\n### 环境变量配置\n\nAider 支持通过环境变量配置 API 密钥，优先级如下：\n\n1. 命令行 `--api-key` 参数\n2. 环境变量 `OPENAI_API_KEY`\n3. 配置文件中的密钥\n\n资料来源：[aider/website/_includes/get-started.md](https://github.com/Aider-AI/aider/blob/main/aider/website/_includes/get-started.md)\n\n## 上下文管理\n\n### 上下文窗口策略\n\nLLM 模块负责管理和优化上下文窗口的使用：\n\n- 自动截断过长的对话历史\n- 智能选择相关上下文\n- 标记文件内容的优先级\n- 管理令牌使用预算\n\n### 令牌统计\n\nAider 追踪并报告令牌使用情况，包括：\n\n- 每条消息的输入/输出令牌数\n- 每周总处理令牌数\n- 各模型使用比例统计\n- REDACTED 模型的隐私处理\n\n资料来源：[scripts/my_models.py](https://github.com/Aider-AI/aider/blob/main/scripts/my_models.py)\n\n## 扩展与定制\n\n### 添加新模型支持\n\n要在 Aider 中添加新的模型支持，需要：\n\n1. 在 `model-metadata.json` 中添加模型元数据\n2. 在相应模块中实现 API 封装\n3. 更新文档中的模型列表\n4. 测试连接和功能完整性\n\n### 本地模型支持\n\nAider 支持连接本地运行的 LLM 服务：\n\n- 配置自定义 API 端点\n- 支持 OpenAI 兼容接口\n- 支持 Llama.cpp 等本地推理框架\n- 可调节的连接参数\n\n## 安全性考虑\n\n### 密钥管理\n\nAider 在处理 API 密钥时遵循以下安全原则：\n\n- 密钥不写入日志或错误消息\n- 支持环境变量注入\n- 本地存储加密（如使用配置文件）\n- 清晰的权限控制机制\n\n### 数据隐私\n\n- 对新模型或不常用模型使用 REDACTED 标识\n- 最小化外部数据传输\n- 支持完全离线的本地部署\n\n## 故障排除\n\n### 常见问题\n\n| 问题 | 可能原因 | 解决方案 |\n|-----|---------|---------|\n| 连接超时 | 网络问题或 API 不可用 | 检查网络连接和 API 状态 |\n| 认证失败 | API 密钥错误或过期 | 验证并更新 API 密钥 |\n| 模型不支持 | 模型未在元数据中注册 | 检查模型配置或使用通用接口 |\n| 响应解析错误 | API 返回格式变更 | 更新客户端版本 |\n\n资料来源：[CONTRIBUTING.md](https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md)\n\n## 相关资源\n\n- [安装指南](https://aider.chat/docs/install.html)\n- [使用文档](https://aider.chat/docs/usage.html)\n- [LLM 连接配置](https://aider.chat/docs/llms.html)\n- [配置选项](https://aider.chat/docs/config.html)\n- [LLM 排行榜](https://aider.chat/docs/leaderboards/)\n\n---\n\n<a id='page-commands'></a>\n\n## 命令系统\n\n### 相关页面\n\n相关主题：[Git 集成](#page-git-integration), [语音输入](#page-voice-input)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/commands.py](https://github.com/Aider-AI/aider/blob/main/aider/commands.py)\n- [aider/history.py](https://github.com/Aider-AI/aider/blob/main/aider/history.py)\n- [aider/help.py](https://github.com/Aider-AI/aider/blob/main/aider/help.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n- [aider/getinput.py](https://github.com/Aider-AI/aider/blob/main/aider/getinput.py)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n</details>\n\n# 命令系统\n\n## 概述\n\nAider 的命令系统是用户与 AI 编程助手交互的核心机制。通过该系统，用户可以在聊天界面中输入自然语言请求和特殊命令来控制代码编辑、Git 操作、文件管理和工具调用等行为。命令系统与 LLM 集成，支持自动提交、代码差异显示、历史记录管理等高级功能。\n\nAider 的命令系统主要分为两类：\n\n1. **内置命令**：以 `/` 开头的系统级命令，如 `/help`、`/diff`、`/commit` 等\n2. **自然语言请求**：用户直接输入的描述性文本，由 LLM 解析并生成相应的代码修改\n\n命令系统架构遵循模块化设计，核心组件包括命令解析器、历史记录管理器和输入输出处理模块。资料来源：[aider/commands.py]()\n\n## 核心组件\n\n### 命令解析器 (commands.py)\n\n`aider/commands.py` 是命令系统的核心模块，负责定义和处理所有内置命令。该模块实现了命令的注册、解析和执行机制。\n\n| 组件 | 功能描述 |\n|------|----------|\n| 命令注册表 | 存储所有可用命令及其处理函数 |\n| 命令解析器 | 解析用户输入，识别命令类型和参数 |\n| 命令执行器 | 调用相应的处理函数并返回结果 |\n\n资料来源：[aider/commands.py:1-50]()\n\n### 历史记录管理器 (history.py)\n\n`aider/history.py` 负责管理聊天历史和命令历史，提供会话持久化和历史回溯功能。\n\n| 功能 | 说明 |\n|------|------|\n| 聊天历史 | 保存完整的对话记录 |\n| 命令历史 | 保存用户输入的命令历史 |\n| 历史文件 | 支持将历史保存到 `.aider.history` 文件 |\n\n资料来源：[aider/history.py:1-30]()\n\n### 帮助系统 (help.py)\n\n`aider/help.py` 提供命令系统的帮助信息，支持用户查询可用命令及其用法。\n\n```python\n# 帮助信息的显示格式\nclass HelpCommand:\n    def __init__(self, commands):\n        self.commands = commands\n    \n    def show_help(self):\n        # 输出所有可用命令列表\n        pass\n```\n\n资料来源：[aider/help.py:1-20]()\n\n## 命令执行流程\n\n```\ngraph TD\n    A[用户输入] --> B{解析输入}\n    B -->|以 / 开头| C[内置命令]\n    B -->|普通文本| D[自然语言请求]\n    C --> E[命令注册表查询]\n    E --> F[执行命令处理函数]\n    D --> G[发送给 LLM]\n    G --> H[生成响应和代码修改]\n    F --> I[返回结果]\n    H --> J[应用代码修改]\n    I --> K[显示输出]\n    J --> K\n```\n\n## 内置命令参考\n\n### 文件操作命令\n\n| 命令 | 功能 | 参数 |\n|------|------|------|\n| `/add` | 添加文件到聊天会话 | 文件路径 |\n| `/drop` | 从会话中移除文件 | 文件路径 |\n| `/edit` | 编辑指定文件 | 文件路径和编辑指令 |\n| `/read` | 读取文件内容 | 文件路径 |\n\n### Git 命令\n\n| 命令 | 功能 | 说明 |\n|------|------|------|\n| `/commit` | 提交当前更改 | 自动生成提交信息 |\n| `/diff` | 显示未提交的更改 | - |\n| `/undo` | 撤销上一次提交 | - |\n| `/status` | 显示 Git 状态 | - |\n\n资料来源：[aider/commands.py:50-150]()\n\n### 系统命令\n\n| 命令 | 功能 |\n|------|------|\n| `/help` | 显示帮助信息 |\n| `/exit` | 退出 Aider |\n| `/clear` | 清除聊天历史 |\n| `/tokens` | 显示当前会话的 token 使用量 |\n\n## 输入输出处理\n\nAider 使用 `InputOutput` 类处理命令行输入输出，支持多种输入源和输出目标。\n\n```python\nclass InputOutput:\n    def __init__(self, pretty, yes, input_history_file, chat_history_file, input=None, output=None):\n        self.input = input\n        self.output = output\n        self.pretty = pretty\n        self.yes = yes\n        self.input_history_file = input_history_file\n        self.chat_history_file = chat_history_file\n```\n\n资料来源：[aider/getinput.py:1-20]()\n\n### Prompt Toolkit 集成\n\nAider 使用 `prompt_toolkit` 库提供增强的命令行编辑体验：\n\n```python\nsession = PromptSession(\n    message=show,\n    completer=completer_instance,\n    history=FileHistory(self.input_history_file),\n    style=style,\n    reserve_space_for_menu=4,\n    complete_style=CompleteStyle.MULTI_COLUMN,\n    input=self.input,\n    output=self.output,\n)\nline = session.prompt()\n```\n\n资料来源：[aider/getinput.py:30-50]()\n\n## 命令行参数\n\nAider 主程序支持以下命令行参数：\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--model` | 指定使用的 LLM 模型 | gpt-4 |\n| `--api-key` | API 密钥 | - |\n| `--input-history-file` | 输入历史文件 | .aider.history |\n| `--no-pretty` | 禁用彩色输出 | False |\n| `--show-diffs` | 显示差异 | False |\n| `--no-auto-commits` | 禁用自动提交 | False |\n| `--yes` | 所有确认自动回答 yes | False |\n\n资料来源：[aider/main.py:1-100]()\n\n## 自动提交机制\n\nAider 的命令系统与 Git 深度集成，支持自动提交功能：\n\n```mermaid\ngraph LR\n    A[代码修改完成] --> B{auto-commits 启用?}\n    B -->|是| C[生成提交信息]\n    B -->|否| D[等待手动提交]\n    C --> E[执行 git commit]\n    E --> F[显示提交结果]\n```\n\n自动提交的提交信息由 LLM 根据代码更改内容自动生成，格式遵循语义化提交规范。\n\n资料来源：[aider/coder.py:200-250]()\n\n## 错误处理\n\n命令系统实现了完善的错误处理机制：\n\n```python\n# 错误显示示例\nself.io.tool_error(\"Malformed ORIGINAL/UPDATE blocks, retrying...\")\nself.io.tool_error(Text(err))\n```\n\n资料来源：[aider/coder.py:250-280]()\n\n| 错误类型 | 处理方式 |\n|----------|----------|\n| 命令解析错误 | 提示正确的命令格式 |\n| 文件不存在 | 显示错误并列出可用文件 |\n| Git 操作失败 | 提示具体的 Git 错误信息 |\n| LLM 调用失败 | 自动重试并显示错误 |\n\n## 配置选项\n\n可通过环境变量或配置文件调整命令系统行为：\n\n| 环境变量 | 说明 | 可选值 |\n|----------|------|--------|\n| `AIDER_MODEL` | 默认模型 | 支持的模型名称 |\n| `AIDER_HISTORY_FILE` | 历史文件路径 | 文件路径 |\n| `AIDER_PRETTY` | 启用美化输出 | 0 或 1 |\n| `AIDER_SHOW_DIFFS` | 默认显示差异 | 0 或 1 |\n| `AIDER_AUTO_COMMITS` | 启用自动提交 | 0 或 1 |\n\n## 扩展命令系统\n\n开发者可以通过修改 `commands.py` 添加自定义命令：\n\n```python\nclass CustomCommand:\n    name = \"custom\"\n    description = \"执行自定义操作\"\n    \n    def run(self, args, io):\n        # 命令实现\n        pass\n```\n\n自定义命令需要在命令注册表中注册才能生效。\n\n## 最佳实践\n\n1. **命令前缀**：使用 `/` 前缀调用内置命令，避免与自然语言请求混淆\n2. **文件指定**：在多文件项目中，明确指定要操作的文件路径\n3. **确认机制**：重要操作前，系统会要求用户确认，可使用 `--yes` 参数跳过\n4. **历史记录**：定期备份 `.aider.history` 文件以保留重要对话上下文\n\n---\n\n<a id='page-config'></a>\n\n## 配置系统\n\n### 相关页面\n\n相关主题：[安装指南](#page-install), [大语言模型集成](#page-llm-models)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/args.py](https://github.com/Aider-AI/aider/blob/main/aider/args.py)\n- [aider/format_settings.py](https://github.com/Aider-AI/aider/blob/main/aider/format_settings.py)\n- [aider/args_formatter.py](https://github.com/Aider-AI/aider/blob/main/aider/args_formatter.py)\n- [aider/main.py](https://github.com/Aider-AI/aider/blob/main/aider/main.py)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n- [aider/io.py](https://github.com/Aider-AI/aider/blob/main/aider/io.py)\n</details>\n\n# 配置系统\n\nAider 的配置系统采用分层架构，支持命令行参数、环境变量和默认值三种配置方式。该系统通过集中式的参数解析、格式化和传递机制，为应用程序提供灵活且可扩展的配置管理能力。\n\n## 系统架构概述\n\nAider 的配置系统由三个核心模块组成，形成一个完整的配置生命周期管理流程。`args.py` 负责命令行参数的解析，`args_formatter.py` 提供参数格式化能力，`format_settings.py` 则处理设置值的格式化输出。这种分层设计确保了配置逻辑的清晰分离和高度可维护性。\n\n```\ngraph TD\n    A[用户输入] --> B[环境变量]\n    A --> C[命令行参数]\n    D[默认值] --> E[参数解析 args.py]\n    B --> E\n    C --> E\n    E --> F[格式化 args_formatter.py]\n    E --> G[设置格式化 format_settings.py]\n    F --> H[应用配置]\n    G --> H\n```\n\n## 核心模块详解\n\n### 参数解析模块 (args.py)\n\n`aider/args.py` 是配置系统的核心入口，负责定义和解析所有命令行参数。该模块使用 Python 标准库中的 `argparse` 模块构建完整的命令行接口，支持超过三十种配置选项，涵盖模型选择、API 密钥管理、历史记录控制、输出格式设置等各个方面。\n\n参数解析采用分层覆盖策略，用户可以通过三种方式设置配置：直接使用命令行参数、提供环境变量、或依赖系统默认值。这种设计允许用户在保持配置灵活性的同时，通过环境变量实现自动化部署场景下的配置管理。\n\n主要参数类别包括：\n\n| 参数类别 | 代表参数 | 说明 |\n|---------|---------|------|\n| 模型配置 | `--model` | 指定使用的 LLM 模型 |\n| 认证配置 | `--api-key` | 提供 API 密钥 |\n| 会话管理 | `--chat-history-file` | 聊天历史文件路径 |\n| 输出控制 | `--pretty` / `--no-pretty` | 是否启用美化输出 |\n| 自动提交 | `--auto-commits` | 是否自动提交更改 |\n\n### 参数格式化模块 (args_formatter.py)\n\n`aider/args_formatter.py` 负责将解析后的参数转换为用户友好的显示格式。该模块提供了参数描述的格式化能力，支持生成帮助文本和使用示例。在命令行界面中，当用户执行 `aider --help` 时，正是通过此模块生成详细的帮助文档。\n\n参数格式化器还负责处理参数的特殊显示逻辑，例如布尔值的反向显示（`--no-pretty` 与 `--pretty` 的关系）、环境变量提示的生成，以及多值参数的格式化展示。\n\n### 设置格式化模块 (format_settings.py)\n\n`aider/format_settings.py` 实现了应用程序运行时的设置格式化功能。该模块将配置系统中的各类设置值转换为适合在终端显示的格式，支持彩色输出、表格布局和分类展示等多种显示模式。\n\n设置格式化模块与应用程序的输入输出子系统紧密集成，通过统一的接口为不同模块提供配置值的展示服务。这种设计确保了配置信息在应用程序各个部分的一致性和可读性。\n\n## 配置层级与优先级\n\nAider 采用明确的配置优先级体系，从高到低依次为：命令行参数、环境变量、默认值。这种设计允许在不同部署场景下灵活控制配置行为，同时保持配置接口的一致性。\n\n```\ngraph LR\n    A[命令行参数] --> Z[最终配置]\n    B[环境变量] --> Z\n    C[默认值] --> Z\n    A --> |最高优先级| Z\n    B --> |次高优先级| Z\n    C --> |最低优先级| Z\n```\n\n### 环境变量命名规范\n\n配置系统为每个命令行参数提供了对应的环境变量支持。环境变量采用 `AIDER_` 前缀加上参数名称大写的命名方式。例如，`--history-file` 参数对应的环境变量为 `AIDER_HISTORY_FILE`，`--model` 参数对应 `AIDER_MODEL`。这种标准化命名规范使得在脚本和容器环境中配置 Aider 变得直观便捷。\n\n支持的完整环境变量映射包括：\n\n| 命令行参数 | 环境变量 | 默认值 |\n|-----------|---------|--------|\n| `--history-file` | `AIDER_HISTORY_FILE` | `.aider.history` |\n| `--input-history-file` | `AIDER_INPUT_HISTORY_FILE` | `.aider.input.history` |\n| `--model` | `AIDER_MODEL` | `gpt-4` |\n| `--pretty` | `AIDER_PRETTY` | `1` (启用) |\n| `--auto-commits` | `AIDER_AUTO_COMMITS` | `1` (启用) |\n| `--show-diffs` | `AIDER_SHOW_DIFFS` | `0` (禁用) |\n\n## 配置传递机制\n\n配置系统通过 `InputOutput` 类实现参数在应用程序内部的传递。该类封装了输入输出相关的配置，包括终端美化设置、历史记录文件路径、控制台交互选项等。配置对象在应用程序启动时创建，随后被传递到各个需要访问配置的模块中。\n\n```python\nclass InputOutput:\n    def __init__(self, pretty, yes, input_history_file, \n                 chat_history_file, input=None, output=None):\n        self.input = input\n        self.output = output\n        # ... 其他初始化逻辑\n```\n\n配置传递采用依赖注入模式，各模块通过构造函数或方法参数接收所需的配置对象，而非直接访问全局配置状态。这种设计提高了代码的可测试性和模块间的解耦程度。\n\n## 主要配置选项\n\n### 模型配置\n\n模型配置控制 Aider 与 LLM 交互的核心行为。用户可以通过 `--model` 参数指定使用的模型，如 `gpt-4`、`claude-3-sonnet-20240229`、`deepseek` 等。模型配置影响上下文窗口大小、API 端点选择以及提示词的适配逻辑。\n\n### 输出格式配置\n\n输出格式配置决定终端显示的视觉风格。主要选项包括：\n\n- `--pretty`：启用彩色输出和富文本格式\n- `--no-pretty`：禁用美化，使用纯文本输出\n- `--show-diffs`：在提交时显示变更差异\n\n### 自动行为配置\n\n自动行为配置控制 Aider 的自主操作能力：\n\n- `--auto-commits`：自动提交 AI 产生的代码更改\n- `--no-auto-commits`：手动确认后才提交\n- `--yes`：自动确认所有确认提示\n\n### 文件与目录配置\n\n| 参数 | 说明 | 默认值 |\n|-----|------|-------|\n| `--history-file` | 聊天历史文件 | `.aider.history` |\n| `--input-history-file` | 输入命令历史 | `.aider.input.history` |\n| `--chat-history-file` | 聊天记录存储 | `.aider.chat.history` |\n| `--output-format` | 输出格式类型 | `text` |\n\n## 配置验证与错误处理\n\n配置系统在解析参数时执行基本的验证逻辑。对于必需参数（如 API 密钥），系统会在启动时检查是否提供了有效的值。对于冲突的选项组合（如同时指定多个互相排斥的参数），系统会抛出明确的错误信息并提示正确的用法。\n\n错误处理遵循用户友好的原则，错误消息不仅指出问题所在，还提供解决问题的建议。这种设计使得即使是不熟悉命令行工具的用户也能快速定位和解决配置问题。\n\n## 扩展配置能力\n\nAider 的配置系统支持通过添加新的参数定义来扩展配置选项。开发者需要在 `args.py` 中添加新的参数定义，并在相关的配置处理模块中实现对应的处理逻辑。这种扩展机制允许在不修改核心架构的情况下添加新的配置功能。\n\n配置系统的扩展遵循开闭原则：对扩展开放，对修改封闭。新增配置选项时，只需在指定的扩展点添加相应的定义，而无需修改现有的配置处理流程。\n\n## 总结\n\nAider 的配置系统通过模块化设计实现了灵活、高效的配置管理能力。三层架构（参数解析、格式化、传递）确保了配置逻辑的清晰分离，环境变量支持提供了自动化部署的便利，而分层优先级体系则满足了不同场景下的配置需求。配置系统与应用程序的其他部分紧密集成，共同构成了 Aider 作为 AI 结对编程工具的核心能力基础。\n\n---\n\n<a id='page-voice-input'></a>\n\n## 语音输入\n\n### 相关页面\n\n相关主题：[命令系统](#page-commands), [配置系统](#page-config)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [aider/voice.py](https://github.com/Aider-AI/aider/blob/main/aider/voice.py)\n- [aider/scrape.py](https://github.com/Aider-AI/aider/blob/main/aider/scrape.py)\n- [aider/website/index.html](https://github.com/Aider-AI/aider/blob/main/website/index.html)\n- [aider/coder.py](https://github.com/Aider-AI/aider/blob/main/aider/coder.py)\n- [aider/getinput.py](https://github.com/Aider-AI/aider/blob/main/aider/getinput.py)\n</details>\n\n# 语音输入\n\n## 功能概述\n\n语音输入（Voice-to-Code）是 Aider 提供的一种创新特性，允许用户通过语音与 AI 编程助手进行交流，从而摆脱键盘输入的限制。用户可以直接用语音描述新功能、测试用例或 bug 修复的需求，Aider 会自动理解并实现相应的代码变更。\n\n这一功能极大地提升了编程效率，特别是对于需要快速记录灵感、编写长篇代码注释或进行大量重构的场景。用户无需切换窗口或中断工作流程，即可通过语音指令驱动代码编辑。\n\n## 核心组件\n\n### 语音输入模块\n\n`aider/voice.py` 文件包含了语音输入的核心实现逻辑，负责处理语音识别、音频录制和语音命令解析等功能。\n\n| 组件 | 说明 | 文件位置 |\n|------|------|----------|\n| 语音录制器 | 负责捕获用户麦克风输入的音频数据 | aider/voice.py |\n| 语音识别引擎 | 将音频转换为可处理的文本命令 | aider/voice.py |\n| 命令解析器 | 解析识别出的文本并转换为结构化指令 | aider/voice.py |\n| 输入集成层 | 将语音命令传递给主程序的消息处理系统 | aider/getinput.py |\n\n### 输入输出管理\n\n语音输入与 Aider 的标准输入输出系统深度集成，通过 `InputOutput` 类统一处理各类输入源：\n\n```python\n# aider/getinput.py\nclass InputOutput:\n    def __init__(\n        self,\n        pretty=True,\n        yes=False,\n        input_history_file=None,\n        chat_history_file=None,\n        input=None,\n        output=None,\n        user_input_color=\"blue\",\n        tool_output_color=None,\n        tool_error_color=\"red\",\n    ):\n        no_color = os.environ.get(\"NO_COLOR\")\n        if no_color is not None and no_color != \"\":\n            pretty = False\n\n        self.user_input_color = user_input_color if pretty else None\n        self.tool_output_color = tool_output_color if pretty else None\n        self.tool_error_color = tool_error_color if pretty else None\n```\n\n资料来源：[aider/getinput.py]()\n\n## 工作流程\n\n### 语音命令处理流程\n\n```mermaid\ngraph TD\n    A[用户语音输入] --> B[麦克风录制音频]\n    B --> C[语音识别引擎]\n    C --> D[文本命令生成]\n    D --> E[命令解析器]\n    E --> F{命令类型判断}\n    F -->|代码编辑| G[生成编辑指令]\n    F -->|代码查询| H[生成查询指令]\n    F -->|代码审查| I[生成审查指令]\n    G --> J[Coder 模块处理]\n    H --> J\n    I --> J\n    J --> K[执行代码变更]\n    K --> L[自动提交到 Git]\n```\n\n### 语音输入与标准输入的切换\n\nAider 支持在语音输入和标准键盘输入之间无缝切换。用户可以在任意时刻使用语音命令，系统会自动将语音内容转换为代码指令并执行。\n\n```mermaid\ngraph LR\n    A[键盘输入] <--> B[InputOutput]\n    C[语音输入] <--> B\n    B --> D[统一消息处理]\n    D --> E[命令执行引擎]\n```\n\n## 使用场景\n\n### 主要应用场景\n\n| 场景 | 描述 | 优势 |\n|------|------|------|\n| 快速功能开发 | 用语音描述新功能需求，Aider 自动生成代码 | 减少键盘输入时间 |\n| Bug 修复描述 | 口头描述问题现象，Aider 生成修复方案 | 提高问题定位效率 |\n| 测试用例编写 | 语音输入测试用例描述，Aider 生成测试代码 | 简化测试编写流程 |\n| 代码重构 | 用语音指挥重构步骤，Aider 执行大规模代码变更 | 降低重构错误率 |\n\n资料来源：[aider/website/index.html]()\n\n### 集成方式\n\nAider 的语音功能可以通过以下方式调用：\n\n1. **IDE/编辑器集成**：在代码中添加注释描述需求\n2. **命令行直接调用**：使用语音命令启动对话\n3. **对话中途切换**：在键盘输入和语音输入之间自由切换\n\n## 技术实现\n\n### 错误处理机制\n\n语音输入模块包含完善的错误处理机制，确保在识别失败或音频问题发生时能够优雅降级：\n\n```python\n# aider/coder.py 中的错误处理示例\n<<<<<<< ORIGINAL\n            self.console.print(\"[red]\", Text(err))\n=======\n            self.io.tool_error(\"Malformed ORIGINAL/UPDATE blocks, retrying...\")\n            self.io.tool_error(Text(err))\n>>>>>>> REPLACE\n```\n\n资料来源：[aider/coder.py]()\n\n### 环境变量配置\n\n语音输入功能支持通过环境变量进行配置：\n\n| 环境变量 | 说明 | 默认值 |\n|----------|------|--------|\n| NO_COLOR | 禁用彩色输出（语音回显时使用） | 未设置 |\n| AIDER_AUTO_COMMITS | 是否自动提交语音生成的变更 | 1（启用） |\n| AIDER_SHOW_DIFFS | 是否显示语音命令触发的代码差异 | 0（禁用） |\n\n## 配置选项\n\n### 命令行参数\n\n语音输入相关的命令行参数允许用户精细控制功能行为：\n\n- `--no-auto-commits`：禁用自动提交，适合需要人工审核的场景\n- `--show-diffs`：显示代码差异，帮助用户确认语音命令的执行结果\n- `--yes`：自动确认所有操作，无需手动确认语音生成的内容\n\n资料来源：[aider/website/examples/update-docs.md]()\n\n## 与其他功能的协作\n\n### 与代码编辑系统的集成\n\n语音输入生成的命令会通过 `SearchReplaceBlock` 格式传递给代码编辑系统：\n\n```mermaid\ngraph TD\n    A[语音输入] --> B[文本命令]\n    B --> C[命令解析]\n    C --> D[SearchReplaceBlock 生成]\n    D --> E[Coder.editblock 编辑]\n    E --> F[文件变更]\n    F --> G[Git 自动提交]\n```\n\n### 与 lint 和测试的联动\n\n语音输入触发的代码变更会自动通过配置的 linter 和测试套件验证：\n\n- 自动运行代码检查工具\n- 执行单元测试验证功能正确性\n- 自动修复 linter 发现的问题\n\n资料来源：[aider/website/index.html]()\n\n## 最佳实践\n\n### 语音输入优化建议\n\n1. **清晰简洁**：使用简短的语音命令，避免长篇描述\n2. **关键词明确**：包含具体的文件名、函数名或变量名\n3. **增量修改**：将大型重构分解为多个语音命令序列\n4. **及时确认**：重要变更前查看 diff 输出确认意图\n\n### 适用场景判断\n\n| 推荐使用 | 不推荐使用 |\n|----------|------------|\n| 快速记录代码思路 | 需要精确修改多文件 |\n| 编写测试用例 | 大规模重构 |\n| 添加代码注释 | 处理复杂算法逻辑 |\n\n## 总结\n\n语音输入功能是 Aider 区别于传统 CLI 编程工具的重要特性，它将自然语言处理与代码编辑深度结合，让开发者能够以更直观的方式与 AI 协作。通过与 Git 集成、自动测试和代码 linting 的配合，语音输入不仅提升了编码效率，还保证了代码质量和变更可追溯性。\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：Aider-AI/aider\n\n摘要：发现 7 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：配置坑 - 可能修改宿主 AI 配置。\n\n## 1. 配置坑 · 可能修改宿主 AI 配置\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。\n- 对用户的影响：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。\n- 建议检查：列出会写入的配置文件、目录和卸载/回滚步骤。\n- 防护动作：涉及宿主配置目录时必须给回滚路径，不能只给安装命令。\n- 证据：capability.host_targets | github_repo:638629097 | https://github.com/Aider-AI/aider | host_targets=claude, chatgpt\n\n## 2. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:638629097 | https://github.com/Aider-AI/aider | README/documentation is current enough for a first validation pass.\n\n## 3. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | last_activity_observed missing\n\n## 4. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n\n## 5. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n\n## 6. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | issue_or_pr_quality=unknown\n\n## 7. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | release_recency=unknown\n\n<!-- canonical_name: Aider-AI/aider; human_manual_source: deepwiki_human_wiki -->\n",
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "Human Manual / 人类版说明书"
    },
    "pitfall_log": {
      "asset_id": "pitfall_log",
      "filename": "PITFALL_LOG.md",
      "markdown": "# Pitfall Log / 踩坑日志\n\n项目：Aider-AI/aider\n\n摘要：发现 7 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：配置坑 - 可能修改宿主 AI 配置。\n\n## 1. 配置坑 · 可能修改宿主 AI 配置\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。\n- 对用户的影响：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。\n- 建议检查：列出会写入的配置文件、目录和卸载/回滚步骤。\n- 防护动作：涉及宿主配置目录时必须给回滚路径，不能只给安装命令。\n- 证据：capability.host_targets | github_repo:638629097 | https://github.com/Aider-AI/aider | host_targets=claude, chatgpt\n\n## 2. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:638629097 | https://github.com/Aider-AI/aider | README/documentation is current enough for a first validation pass.\n\n## 3. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | last_activity_observed missing\n\n## 4. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n\n## 5. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:638629097 | https://github.com/Aider-AI/aider | no_demo; severity=medium\n\n## 6. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | issue_or_pr_quality=unknown\n\n## 7. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:638629097 | https://github.com/Aider-AI/aider | release_recency=unknown\n",
      "summary": "用户实践前最可能遇到的身份、安装、配置、运行和安全坑。",
      "title": "Pitfall Log / 踩坑日志"
    },
    "prompt_preview": {
      "asset_id": "prompt_preview",
      "filename": "PROMPT_PREVIEW.md",
      "markdown": "# aider - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 aider 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的软件开发与交付任务。\n我常用的宿主 AI：claude / chatgpt\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 示例引导, 判断线索。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- 安装前能力预览: aider is AI pair programming in your terminal 输入：用户任务, 当前 AI 对话上下文；输出：示例引导, 判断线索。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. page-intro：项目介绍。围绕“项目介绍”模拟一次用户任务，不展示安装或运行结果。\n2. page-install：安装指南。围绕“安装指南”模拟一次用户任务，不展示安装或运行结果。\n3. page-architecture：系统架构。围绕“系统架构”模拟一次用户任务，不展示安装或运行结果。\n4. page-coders：代码编辑器模块。围绕“代码编辑器模块”模拟一次用户任务，不展示安装或运行结果。\n5. page-git-integration：Git 集成。围绕“Git 集成”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. page-intro\n输入：用户提供的“项目介绍”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. page-install\n输入：用户提供的“安装指南”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. page-architecture\n输入：用户提供的“系统架构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. page-coders\n输入：用户提供的“代码编辑器模块”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. page-git-integration\n输入：用户提供的“Git 集成”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / page-intro：Step 1 必须围绕“项目介绍”形成一个小中间产物，并等待用户确认。\n- Step 2 / page-install：Step 2 必须围绕“安装指南”形成一个小中间产物，并等待用户确认。\n- Step 3 / page-architecture：Step 3 必须围绕“系统架构”形成一个小中间产物，并等待用户确认。\n- Step 4 / page-coders：Step 4 必须围绕“代码编辑器模块”形成一个小中间产物，并等待用户确认。\n- Step 5 / page-git-integration：Step 5 必须围绕“Git 集成”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/Aider-AI/aider\n- https://github.com/Aider-AI/aider#readme\n- aider/README.md\n- aider/__init__.py\n- aider/main.py\n- pyproject.toml\n- docker/Dockerfile\n- requirements.txt\n- aider/io.py\n- aider/sendchat.py\n- aider/llm.py\n- aider/coders/base_coder.py\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 aider 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "summary": "不安装项目也能感受能力节奏的安全试用 Prompt。",
      "title": "Prompt Preview / 安装前试用 Prompt"
    },
    "quick_start": {
      "asset_id": "quick_start",
      "filename": "QUICK_START.md",
      "markdown": "# Quick Start / 官方入口\n\n项目：Aider-AI/aider\n\n## 官方安装入口\n\n### Python / pip · 官方安装入口\n\n```bash\npip install aider-install\n```\n\n来源：https://github.com/Aider-AI/aider#readme\n\n## 来源\n\n- repo: https://github.com/Aider-AI/aider\n- docs: https://github.com/Aider-AI/aider#readme\n",
      "summary": "从项目官方 README 或安装文档提取的开工入口。",
      "title": "Quick Start / 官方入口"
    }
  },
  "validation_id": "dval_789198eeef554a67b7e85a05df2f099a"
}
