- 基于开源 aider(二次开发)实现“Doc-First AI 编程引擎”工作流:用结构化文档而非冗长对话历史驱动上下文与定位。
- 保留 aider 作为终端内 AI 编程工具的核心能力(模型接入、命令/交互、编辑循环、测试/验证等),并在其之上增加文档索引、文档树导航与“按功能拆分的工程要求”(短期记忆)。
- CLI/入口:
aider.main:main是命令行入口,负责参数解析、初始化、启动交互会话。 - 交互与命令:
aider.commands提供命令体系,用于驱动会话中的操作与 coder 切换。 - Coder 体系:
aider/coders/下按不同编辑策略组织(wholefile/udiff/editblock 等),负责把上下文与提示词组织成对模型的请求,并把模型输出转换为可应用的变更。 - 仓库与文件:
aider.repo、aider.repomap负责与 git 仓库交互、生成代码库地图、辅助上下文提取。 - 验证与工具:
aider.linter、aider.run_cmd、aider.watch等提供 lint/test/文件监听等能力。 - 文档与站点:仓库根
docs/与aider/website/提供用户文档与站点内容(不等同于 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/basic、tests/help、tests/browser、tests/scrape(见pytest.ini)。 - 最小运行验证:能通过
aider入口启动并进入交互(依赖本机 python 环境与依赖安装)。
- 文档树缺失或不可导航会导致无法“Doc-First 定位”,因此任何新目录/关键文件的加入都需要同步维护
AI_ARCH.md。 - 代码层已有
repomap/全局地图能力,但在本项目中它应作为辅助手段而非首要定位手段,避免与“文档优先”的不变量冲突。