Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 3.14 KB

File metadata and controls

33 lines (27 loc) · 3.14 KB

Project Overview(长期概述)

项目目的

  • 基于开源 aider(二次开发)实现“Doc-First AI 编程引擎”工作流:用结构化文档而非冗长对话历史驱动上下文与定位。
  • 保留 aider 作为终端内 AI 编程工具的核心能力(模型接入、命令/交互、编辑循环、测试/验证等),并在其之上增加文档索引、文档树导航与“按功能拆分的工程要求”(短期记忆)。

关键模块与边界(现状 + 扩展方向)

  • CLI/入口:aider.main:main 是命令行入口,负责参数解析、初始化、启动交互会话。
  • 交互与命令:aider.commands 提供命令体系,用于驱动会话中的操作与 coder 切换。
  • Coder 体系:aider/coders/ 下按不同编辑策略组织(wholefile/udiff/editblock 等),负责把上下文与提示词组织成对模型的请求,并把模型输出转换为可应用的变更。
  • 仓库与文件:aider.repoaider.repomap 负责与 git 仓库交互、生成代码库地图、辅助上下文提取。
  • 验证与工具:aider.linteraider.run_cmdaider.watch 等提供 lint/test/文件监听等能力。
  • 文档与站点:仓库根 docs/aider/website/ 提供用户文档与站点内容(不等同于 Doc-First 架构文档树)。

Doc-First 引擎不变量(本项目强制约束)

  • 上下文来源优先级:Project Overview(本文件)→ 当前功能工程要求(短期记忆)→ Working Set(正在编辑文件与最小依赖)。
  • 架构文档树(AI_ARCH.md 逐级下钻)用于“定位导航”,默认不全量注入,只在定位/检索命中或显式读取时注入最小必要片段。
  • 修改代码前必须沿文档树定位目标文件:从根 AI_ARCH.md 开始逐级进入子目录 AI_ARCH.md,直到定位到入口/目标文件。
  • 默认禁止全局搜索;若必须搜索,仅允许在文档指向的范围内进行有限搜索,且作为兜底手段。
  • 每次代码编辑后必须同步更新对应文档(至少更新相关目录的 AI_ARCH.md,必要时更新本文件),保证“文档与工程一致”。
  • 功能需求/验收变化时,必须同步更新当前功能工程要求,并清空短期任务态对话上下文。

入口与关键流程(现状)

  • CLI 启动:aider.main:main → 参数解析/环境加载 → 初始化 IO/Repo/Coder/Commands → 进入交互循环。
  • 变更生成:Coder 构建上下文与提示 → 调用模型 → 将输出解析为补丁/编辑块 → 应用到工作区 → 触发可选 lint/test。

验证方式

  • 单元测试:使用 pytest,默认 testpaths 为 tests/basictests/helptests/browsertests/scrape(见 pytest.ini)。
  • 最小运行验证:能通过 aider 入口启动并进入交互(依赖本机 python 环境与依赖安装)。

常见陷阱

  • 文档树缺失或不可导航会导致无法“Doc-First 定位”,因此任何新目录/关键文件的加入都需要同步维护 AI_ARCH.md
  • 代码层已有 repomap/全局地图能力,但在本项目中它应作为辅助手段而非首要定位手段,避免与“文档优先”的不变量冲突。