docs: research - add domains and resource registry

This commit is contained in:
tradecatlabs
2026-07-03 08:04:50 +08:00
parent 169fc9d073
commit cdb402f536
254 changed files with 28589 additions and 165 deletions
+26
View File
@@ -0,0 +1,26 @@
# Aider-AI/aider 研究域 Agent 指南
本目录维护 `Aider-AI/aider` 的独立研究域。
## 目录职责
```text
aider-ai-aider/
├── README.md # 研究域入口和判断层
├── AGENTS.md # 本目录维护规则
├── domain.yml # 事实摘要层:仓库元数据、研究角色、来源证据
├── analysis.md # L1 结构化研究结论、可借鉴点、风险和下一轮任务
├── deep-dive.md # L2 源码/结构深度研究、关键机制和可迁移模式
└── raw/ # 原始事实层:拉取到本地的一手材料快照
```
## 维护规则
- 本目录只研究 `Aider-AI/aider`,不要混入其他仓库的横向比较正文。
- 动态事实必须写入 `domain.yml.github_observed`,并更新 `observed_at`
- `raw/` 保存原始事实层,必须通过 `python3 scripts/fetch-research-raw.py` 刷新。
- 不手工改写 `raw/*.raw.*` 文件;稳定事实摘要再同步到 `domain.yml`
- README 只写判断、定位、使用方式和后续观察点,不堆外部 README 全文。
- `analysis.md` 写 L1 结构化理解;`deep-dive.md` 写 L2 源码证据、关键机制和可迁移模式。
- 如果需要横向比较,在 `docs/research/README.md` 或新的对比文档中处理,不把本目录重新变成聚合域。
- 修改后运行 `make sync-doc-toc``make test`
+58
View File
@@ -0,0 +1,58 @@
# Aider-AI/aider 研究域
## 字多不看
- 本目录研究 `Aider-AI/aider` 这个外部仓库。
- 当前优先级:P1;研究角色:终端 AI 结对编程工具。
- GitHub 动态事实放在 `domain.yml`,观测日期为 2026-07-03。
## 快速导航
| 文档 | 定位 |
|:---|:---|
| [domain.yml](domain.yml) | 仓库事实快照、研究方向、优先级和来源证据。 |
| [analysis.md](analysis.md) | 本研究域的结构化研究结果、可借鉴点、风险和下一轮任务。 |
| [deep-dive.md](deep-dive.md) | L2 源码/结构深度研究、关键机制和可迁移模式。 |
| [AGENTS.md](AGENTS.md) | 本研究域维护规则。 |
<details>
<summary><strong>完整细粒度目录(点击展开/收起)</strong></summary>
### 细粒度目录
- [domain.yml](domain.yml) - 仓库事实快照、研究方向、优先级和来源证据。
- [analysis.md](analysis.md) - 本研究域的结构化研究结果、可借鉴点、风险和下一轮任务。
- [deep-dive.md](deep-dive.md) - L2 源码/结构深度研究、关键机制和可迁移模式。
- [AGENTS.md](AGENTS.md) - 本研究域维护规则。
</details>
## 使用方式
- 先读本 README 的判断,再读 `analysis.md``deep-dive.md` 的研究结论,最后读 `domain.yml`
- 需要引用 stars、forks、release、归档状态时,先重新核验 GitHub。
- 如果形成稳定方法论,再迁入 concepts、references、workflow 或 skills。
## 正文
### 研究定位
`Aider-AI/aider` 的当前研究定位是:终端 AI 结对编程工具。
### 当前判断
适合研究 Git 友好、模型无关、终端工作流和真实 repo 修改。
### 观察字段
- GitHub URLhttps://github.com/Aider-AI/aider
- 当前研究方向:`coding-agent-tooling`
- 当前优先级:P1
- 当前归档状态:`false`
- 主要语言:`Python`
### 后续观察
- 是否有稳定文档结构、命令入口和可复用工作流。
- 是否能反哺本仓库的 concepts、references、workflow 或 skills。
- 是否存在许可证、归档状态、维护活跃度或生态迁移风险。
+44
View File
@@ -0,0 +1,44 @@
# Aider-AI/aider 研究分析
## 本轮结论
- Aider 是成熟的终端 AI 结对编程工具,核心价值在 Git 友好、本地仓库理解、多模型适配和测试/提交闭环。
- 它不是 IDE 产品,而是 terminal-first 的 repo editing loop;这让它特别适合研究“AI 如何安全修改真实仓库”。
- 本仓应重点吸收它的 Git 工作流、repo map、lint/test 反馈循环和命令行交互边界。
## 本地证据
- 研究对象:`Aider-AI/aider`
- 当前研究角色:终端 AI 结对编程工具
- 本轮成熟度:L1 初步理解
- 原始仓库:`raw/repository/`
- 原始来源清单:`raw/sources.yml`
- 事实摘要:`domain.yml`
## 结构观察
- 根目录包含 `aider/``benchmark/``tests/``scripts/``requirements/``pyproject.toml`
- `aider/` 是主实现目录,`tests/``benchmark/` 说明它不仅是演示工具,而是有持续验证和性能/能力评估意识。
- README 强调 cloud/local LLM、codebase map、Git integration、linting/testing、copy/paste to web chat 等能力。
## 可借鉴点
- 把 Git 状态作为 AI 修改的核心护栏:每轮修改都能被 diff、commit、回滚和审查。
- 把测试和 lint 作为对话内反馈,而不是任务结束后的附属动作。
- 终端工具可以避免复杂 UI,但必须把 repo context、命令回显和失败恢复做扎实。
## 风险和边界
- 终端优先意味着非程序员上手门槛高于 IDE 插件。
- 多模型和多语言支持会带来配置面复杂度。
- 其很多文档在官网侧,研究时要同步看本地源码和外部文档。
## 下一轮研究任务
- 重点阅读 `aider/` 的 repo map、Git 操作和 test/lint 调用路径。
- 把 Aider 的 terminal loop 抽象为本仓 `workflow/` 可复用闭环。
## 沉淀判断
- 本轮只完成 L1 理解,不直接迁入 concepts、references、workflow 或 skills。
- 只有经过 L2 源码阅读、实验验证或交叉对照后的结论,才进入稳定层。
+88
View File
@@ -0,0 +1,88 @@
# Aider-AI/aider 深度研究
## 研究级别
- 当前级别:L2 源码/结构深度研究。
- 研究对象:`Aider-AI/aider`
- 证据来源:本目录 `raw/` 下的 GitHub 元数据、README 快照和本地仓库工作树。
- 观察日期:2026-07-03。
## L2 结论
`Aider-AI/aider` 的核心不是“聊天式写代码”,而是终端里的 Git 驱动编辑循环。它把仓库状态、
代码上下文、编辑格式、命令执行、lint/test、模型配置和用户交互拆成独立模块,让 agent 的每次
修改都尽量落在可 diff、可回滚、可验证的 Git 工作流中。
对本仓最重要的启发是:AI 编码工具的质量边界,主要由编辑协议、仓库上下文选择、验证门禁和
Git 状态管理决定,而不是由提示词长短决定。
## 源码证据
- `raw/repository/aider/main.py`:CLI 主入口,负责把参数、模型、仓库和交互流程组装起来。
- `raw/repository/aider/args.py`:参数层,说明用户可控配置是产品接口的一部分。
- `raw/repository/aider/repo.py`:Git 仓库状态层,承载 diff、commit、dirty state 等行为。
- `raw/repository/aider/repomap.py`:仓库地图层,负责从代码库中压缩可用上下文。
- `raw/repository/aider/commands.py`:命令系统,承载终端内的人机交互入口。
- `raw/repository/aider/run_cmd.py`:本地命令执行层,连接 AI 建议和真实环境。
- `raw/repository/aider/linter.py`:lint 反馈层,把工具结果变成修复循环的一部分。
- `raw/repository/aider/models.py`:模型配置层,说明多模型支持需要独立治理。
- `raw/repository/aider/sendchat.py`:模型调用层,连接上下文、消息和模型响应。
- `raw/repository/aider/coders/base_coder.py`:coder 抽象基类,定义编辑策略共同边界。
- `raw/repository/aider/coders/architect_coder.py`:架构/规划型 coder。
- `raw/repository/aider/coders/editblock_coder.py`:基于 edit block 的局部编辑策略。
- `raw/repository/aider/coders/udiff_coder.py`:基于 unified diff 的编辑策略。
- `raw/repository/aider/coders/patch_coder.py`:基于 patch 的编辑策略。
- `raw/repository/tests/`:测试层,覆盖命令、仓库、lint、repo map 和核心工作流。
## 关键机制
### Git 是工作流中心
Aider 把 Git 状态放在核心位置。它不是让 AI 随意改文件,而是围绕当前仓库、diff、commit、
脏工作树和可回滚状态组织工作。这一点适合所有 coding agent:写代码只是动作,Git 才是
工程协作的事实边界。
### 编辑格式是产品接口
`coders/` 中存在多种 coderwhole file、edit block、unified diff、patch、architect 等。
这说明“AI 如何表达修改”不是实现细节,而是影响可靠性、可审查性和失败模式的产品接口。
### repo map 是上下文压缩层
`repomap.py` 体现了一个关键设计:大仓库不能简单把所有文件塞进上下文,必须有面向任务的结构化
摘要和检索策略。上下文质量决定修改质量,垃圾上下文会直接制造垃圾结果。
### lint/test 是反馈回路
`linter.py``run_cmd.py` 和测试目录说明 Aider 将工具反馈接入循环。成熟 agent 不只是生成补丁,
还要能读取失败、缩小范围、再次修复。
## 可迁移模式
- 将“编辑格式”视为正式协议:全文件、diff、patch、结构化 block 的适用边界要写清楚。
- 将 Git 状态作为 AI 修改的事实源:修改前检查 dirty state,修改后保留 diff 和验证证据。
- 为大文档/大仓库建立 repo map 或文档 map,而不是让 AI 盲读整个仓库。
- 把 lint、test、link check 和脚本校验结果作为修复循环输入。
- 对不同任务区分规划型、编辑型、审查型和问答型 agent 行为。
## 对本仓的影响
本仓现在已经有 Markdown 门禁、链接检查、raw 研究域和 AI 引用入口。Aider 的模式提醒我们:
- 文档修改也需要 Git 状态意识,避免把用户未提交修改误当作自己的改动。
- 大量 Markdown 文档需要“文档地图”,否则索引和引用会漂移。
- 研究域 L2/L3 产物应当可 diff、可审查、可回滚,而不是只在对话里口头总结。
- 提交前门禁应继续保持 `make test` 的统一入口。
## 风险和待验证项
- 本轮只做源码结构研究,没有运行 Aider 的测试套件或交互流程。
- Aider 的 Python 实现细节不应被本仓直接复制;本仓主要迁移工作流和治理边界。
- 不同编辑格式的真实成功率需要通过任务集 benchmark 验证,不能只靠结构判断。
## 下一步 L3 验证任务
- 为本仓建立“文档地图/研究地图”的生成或校验机制,降低长文档索引漂移。
- 把 Git dirty state、门禁命令和验证证据纳入研究域 closeout 模板。
-`docs/workflow/` 沉淀“AI 修改 -> diff 审查 -> 门禁 -> 提交”的最小闭环。
- 对本仓常见 Markdown 修改任务设计小型 benchmark,比较全文件编辑和局部 patch 的稳定性。
+45
View File
@@ -0,0 +1,45 @@
version: 1
repo:
name: Aider-AI/aider
source_name: aider-ai/aider
url: https://github.com/Aider-AI/aider
research:
domain_id: aider-ai-aider
domain_name: Aider-AI/aider 研究域
primary_direction: coding-agent-tooling
role: 终端 AI 结对编程工具
priority: 1
why_study: 适合研究 Git 友好、模型无关、终端工作流和真实 repo 修改。
github_observed:
observed_at: '2026-07-03'
source: gh repo view
stars: 46962
forks: 4680
archived: false
language: Python
license: apache-2.0
default_branch: main
pushed_at: '2026-05-22T14:02:20Z'
updated_at: '2026-07-02T21:52:05Z'
latest_release: v0.86.0
homepage: https://aider.chat/
topics:
- chatgpt
- cli
- command-line
- gpt-4
- openai
- gpt-3
- gpt-35-turbo
- claude-3
- gpt-4o
- anthropic
- gemini
- llama
- sonnet
source_evidence:
file: ChatGPT-中文Vibe Coding仓库 (2).md
line: 57
maintenance:
fact_policy: GitHub 动态字段只代表 observed_at 当日快照,更新结论前必须重新核验。
split_policy: 本目录已经是一等研究域;更深分析放入本目录新增文档。
@@ -0,0 +1,12 @@
# raw/ Agent 指南
本目录是 `Aider-AI/aider` 的原始事实层。
## 维护规则
- 只保存从研究对象拉取的一手材料,不写分析判断。
- `repository/` 是本地 Git 工作树,刷新时由脚本 clone 或 fast-forward pull。
- 不手工改写 `*.raw.*` 文件内容;需要刷新时运行 `python3 scripts/fetch-research-raw.py`
- `sources.yml` 必须记录拉取时间、来源命令和每个文件的状态。
- 外部 README 原文必须保存为 `.txt`,避免本仓库 Markdown 链接检查误判。
- 分析、判断、采用建议和沉淀路径写回上一级 `README.md``analysis.md``decisions.md`
@@ -0,0 +1,16 @@
# raw 事实层
本目录保存 `Aider-AI/aider` 的本地原始材料快照。
这里不写分析结论,只保存可复查的一手资料:
- `sources.yml`:来源清单、拉取时间、命令和文件状态。
- `repository/`Git 仓库工作树;本目录由 `.gitignore` 忽略,只作为本地研究材料。
- `github-repo.raw.json`GitHub 仓库元数据。
- `github-readme.raw.md.txt`GitHub README 原文快照。
- `github-license.raw.txt`GitHub license 原文快照;仓库无 license 时可能不存在。
- `github-root-contents.raw.json`:默认分支根目录内容快照。
- `github-languages.raw.json`GitHub language 统计快照。
- `github-latest-release.raw.json`:最新 release 快照;无 release 时可能不存在。
`repository/` 是外部源码快照,不参与本仓库 Markdown、链接、README/AGENTS 覆盖检查。原始 README 使用 `.txt` 后缀保存,避免其中的外部相对链接被本仓库 Markdown 链接检查误判。
@@ -0,0 +1,12 @@
{
"Python": 1333453,
"CSS": 67532,
"Shell": 66537,
"Tree-sitter Query": 64845,
"JavaScript": 60909,
"HTML": 44976,
"PowerShell": 19648,
"Dockerfile": 4405,
"SCSS": 1957,
"Ruby": 196
}
@@ -0,0 +1,54 @@
{
"url": "https://api.github.com/repos/Aider-AI/aider/releases/238790002",
"assets_url": "https://api.github.com/repos/Aider-AI/aider/releases/238790002/assets",
"upload_url": "https://uploads.github.com/repos/Aider-AI/aider/releases/238790002/assets{?name,label}",
"html_url": "https://github.com/Aider-AI/aider/releases/tag/v0.86.0",
"id": 238790002,
"author": {
"login": "paul-gauthier",
"id": 69695708,
"node_id": "MDQ6VXNlcjY5Njk1NzA4",
"avatar_url": "https://avatars.githubusercontent.com/u/69695708?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/paul-gauthier",
"html_url": "https://github.com/paul-gauthier",
"followers_url": "https://api.github.com/users/paul-gauthier/followers",
"following_url": "https://api.github.com/users/paul-gauthier/following{/other_user}",
"gists_url": "https://api.github.com/users/paul-gauthier/gists{/gist_id}",
"starred_url": "https://api.github.com/users/paul-gauthier/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/paul-gauthier/subscriptions",
"organizations_url": "https://api.github.com/users/paul-gauthier/orgs",
"repos_url": "https://api.github.com/users/paul-gauthier/repos",
"events_url": "https://api.github.com/users/paul-gauthier/events{/privacy}",
"received_events_url": "https://api.github.com/users/paul-gauthier/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"node_id": "RE_kwDOJhC06c4OO6Vy",
"tag_name": "v0.86.0",
"target_commitish": "main",
"name": "Aider v0.86.0",
"draft": false,
"immutable": false,
"prerelease": false,
"created_at": "2025-08-09T15:54:51Z",
"updated_at": "2025-08-09T17:42:19Z",
"published_at": "2025-08-09T17:42:19Z",
"assets": [],
"tarball_url": "https://api.github.com/repos/Aider-AI/aider/tarball/v0.86.0",
"zipball_url": "https://api.github.com/repos/Aider-AI/aider/zipball/v0.86.0",
"body": "- Added support for all GPT-5 models.\r\n- Added support for Grok-4 via `xai/grok-4` and `openrouter/x-ai/grok-4` model names.\r\n- Added support for `gemini/gemini-2.5-flash-lite-preview-06-17` model, by Tamir Zahavi-Brunner.\r\n- `/clear` now prints “All chat history cleared.” so you know it worked, by Zexin Yuan.\r\n- `/undo` output now shows only the first line of each commit message, making it easier to read.\r\n- Added support for `openrouter/moonshotai/kimi-k2` model, by Jack Harrington.\r\n- Display model announcements with no-arg `/model` command.\r\n- Fixed an issue where new settings for an existing model didn't replace the old ones, by Andrew Grigorev.\r\n- Fixed analytics to support the latest PostHog SDK event-capture API.\r\n- Bumped dependencies to pick up latest litellm==1.75.0.\r\n\r\n- Aider wrote 88% of the code in this release.",
"reactions": {
"url": "https://api.github.com/repos/Aider-AI/aider/releases/238790002/reactions",
"total_count": 51,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 2,
"rocket": 46,
"eyes": 3
}
}
@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,180 @@
<p align="center">
<a href="https://aider.chat/"><img src="https://aider.chat/assets/logo.svg" alt="Aider Logo" width="300"></a>
</p>
<h1 align="center">
AI Pair Programming in Your Terminal
</h1>
<p align="center">
Aider lets you pair program with LLMs to start a new project or build on your existing codebase.
</p>
<p align="center">
<img
src="https://aider.chat/assets/screencast.svg"
alt="aider screencast"
>
</p>
<p align="center">
<!--[[[cog
from scripts.homepage import get_badges_md
text = get_badges_md()
cog.out(text)
]]]-->
<a href="https://github.com/Aider-AI/aider/stargazers"><img alt="GitHub Stars" title="Total number of GitHub stars the Aider project has received"
src="https://img.shields.io/github/stars/Aider-AI/aider?style=flat-square&logo=github&color=f1c40f&labelColor=555555"/></a>
<a href="https://pypi.org/project/aider-chat/"><img alt="PyPI Downloads" title="Total number of installations via pip from PyPI"
src="https://img.shields.io/badge/📦%20Installs-6.8M-2ecc71?style=flat-square&labelColor=555555"/></a>
<img alt="Tokens per week" title="Number of tokens processed weekly by Aider users"
src="https://img.shields.io/badge/📈%20Tokens%2Fweek-15B-3498db?style=flat-square&labelColor=555555"/>
<a href="https://openrouter.ai/#options-menu"><img alt="OpenRouter Ranking" title="Aider's ranking among applications on the OpenRouter platform"
src="https://img.shields.io/badge/🏆%20OpenRouter-Top%2020-9b59b6?style=flat-square&labelColor=555555"/></a>
<a href="https://aider.chat/HISTORY.html"><img alt="Singularity" title="Percentage of the new code in Aider's last release written by Aider itself"
src="https://img.shields.io/badge/🔄%20Singularity-88%25-e74c3c?style=flat-square&labelColor=555555"/></a>
<!--[[[end]]]-->
</p>
## Features
### [Cloud and local LLMs](https://aider.chat/docs/llms.html)
<a href="https://aider.chat/docs/llms.html"><img src="https://aider.chat/assets/icons/brain.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Aider works best with Claude 3.7 Sonnet, DeepSeek R1 & Chat V3, OpenAI o1, o3-mini & GPT-4o, but can connect to almost any LLM, including local models.
<br>
### [Maps your codebase](https://aider.chat/docs/repomap.html)
<a href="https://aider.chat/docs/repomap.html"><img src="https://aider.chat/assets/icons/map-outline.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Aider makes a map of your entire codebase, which helps it work well in larger projects.
<br>
### [100+ code languages](https://aider.chat/docs/languages.html)
<a href="https://aider.chat/docs/languages.html"><img src="https://aider.chat/assets/icons/code-tags.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Aider works with most popular programming languages: python, javascript, rust, ruby, go, cpp, php, html, css, and dozens more.
<br>
### [Git integration](https://aider.chat/docs/git.html)
<a href="https://aider.chat/docs/git.html"><img src="https://aider.chat/assets/icons/source-branch.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Aider automatically commits changes with sensible commit messages. Use familiar git tools to easily diff, manage and undo AI changes.
<br>
### [Use in your IDE](https://aider.chat/docs/usage/watch.html)
<a href="https://aider.chat/docs/usage/watch.html"><img src="https://aider.chat/assets/icons/monitor.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Use aider from within your favorite IDE or editor. Ask for changes by adding comments to your code and aider will get to work.
<br>
### [Images & web pages](https://aider.chat/docs/usage/images-urls.html)
<a href="https://aider.chat/docs/usage/images-urls.html"><img src="https://aider.chat/assets/icons/image-multiple.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Add images and web pages to the chat to provide visual context, screenshots, reference docs, etc.
<br>
### [Voice-to-code](https://aider.chat/docs/usage/voice.html)
<a href="https://aider.chat/docs/usage/voice.html"><img src="https://aider.chat/assets/icons/microphone.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Speak with aider about your code! Request new features, test cases or bug fixes using your voice and let aider implement the changes.
<br>
### [Linting & testing](https://aider.chat/docs/usage/lint-test.html)
<a href="https://aider.chat/docs/usage/lint-test.html"><img src="https://aider.chat/assets/icons/check-all.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Automatically lint and test your code every time aider makes changes. Aider can fix problems detected by your linters and test suites.
<br>
### [Copy/paste to web chat](https://aider.chat/docs/usage/copypaste.html)
<a href="https://aider.chat/docs/usage/copypaste.html"><img src="https://aider.chat/assets/icons/content-copy.svg" width="32" height="32" align="left" valign="middle" style="margin-right:10px"></a>
Work with any LLM via its web chat interface. Aider streamlines copy/pasting code context and edits back and forth with a browser.
## Getting Started
```bash
python -m pip install aider-install
aider-install
# Change directory into your codebase
cd /to/your/project
# DeepSeek
aider --model deepseek --api-key deepseek=<key>
# Claude 3.7 Sonnet
aider --model sonnet --api-key anthropic=<key>
# o3-mini
aider --model o3-mini --api-key openai=<key>
```
See the [installation instructions](https://aider.chat/docs/install.html) and [usage documentation](https://aider.chat/docs/usage.html) for more details.
## More Information
### Documentation
- [Installation Guide](https://aider.chat/docs/install.html)
- [Usage Guide](https://aider.chat/docs/usage.html)
- [Tutorial Videos](https://aider.chat/docs/usage/tutorials.html)
- [Connecting to LLMs](https://aider.chat/docs/llms.html)
- [Configuration Options](https://aider.chat/docs/config.html)
- [Troubleshooting](https://aider.chat/docs/troubleshooting.html)
- [FAQ](https://aider.chat/docs/faq.html)
### Community & Resources
- [LLM Leaderboards](https://aider.chat/docs/leaderboards/)
- [GitHub Repository](https://github.com/Aider-AI/aider)
- [Discord Community](https://discord.gg/Y7X7bhMQFV)
- [Release notes](https://aider.chat/HISTORY.html)
- [Blog](https://aider.chat/blog/)
## Kind Words From Users
- *"My life has changed... Aider... It's going to rock your world."* — [Eric S. Raymond on X](https://x.com/esrtweet/status/1910809356381413593)
- *"The best free open source AI coding assistant."* — [IndyDevDan on YouTube](https://youtu.be/YALpX8oOn78)
- *"The best AI coding assistant so far."* — [Matthew Berman on YouTube](https://www.youtube.com/watch?v=df8afeb1FY8)
- *"Aider ... has easily quadrupled my coding productivity."* — [SOLAR_FIELDS on Hacker News](https://news.ycombinator.com/item?id=36212100)
- *"It's a cool workflow... Aider's ergonomics are perfect for me."* — [qup on Hacker News](https://news.ycombinator.com/item?id=38185326)
- *"It's really like having your senior developer live right in your Git repo - truly amazing!"* — [rappster on GitHub](https://github.com/Aider-AI/aider/issues/124)
- *"What an amazing tool. It's incredible."* — [valyagolev on GitHub](https://github.com/Aider-AI/aider/issues/6#issue-1722897858)
- *"Aider is such an astounding thing!"* — [cgrothaus on GitHub](https://github.com/Aider-AI/aider/issues/82#issuecomment-1631876700)
- *"It was WAY faster than I would be getting off the ground and making the first few working versions."* — [Daniel Feldman on X](https://twitter.com/d_feldman/status/1662295077387923456)
- *"THANK YOU for Aider! It really feels like a glimpse into the future of coding."* — [derwiki on Hacker News](https://news.ycombinator.com/item?id=38205643)
- *"It's just amazing. It is freeing me to do things I felt were out my comfort zone before."* — [Dougie on Discord](https://discord.com/channels/1131200896827654144/1174002618058678323/1174084556257775656)
- *"This project is stellar."* — [funkytaco on GitHub](https://github.com/Aider-AI/aider/issues/112#issuecomment-1637429008)
- *"Amazing project, definitely the best AI coding assistant I've used."* — [joshuavial on GitHub](https://github.com/Aider-AI/aider/issues/84)
- *"I absolutely love using Aider ... It makes software development feel so much lighter as an experience."* — [principalideal0 on Discord](https://discord.com/channels/1131200896827654144/1133421607499595858/1229689636012691468)
- *"I have been recovering from ... surgeries ... aider ... has allowed me to continue productivity."* — [codeninja on Reddit](https://www.reddit.com/r/OpenAI/s/nmNwkHy1zG)
- *"I am an aider addict. I'm getting so much more work done, but in less time."* — [dandandan on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1135913253483069470)
- *"Aider... blows everything else out of the water hands down, there's no competition whatsoever."* — [SystemSculpt on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1178736602797846548)
- *"Aider is amazing, coupled with Sonnet 3.5 it's quite mind blowing."* — [Josh Dingus on Discord](https://discord.com/channels/1131200896827654144/1133060684540813372/1262374225298198548)
- *"Hands down, this is the best AI coding assistant tool so far."* — [IndyDevDan on YouTube](https://www.youtube.com/watch?v=MPYFPvxfGZs)
- *"[Aider] changed my daily coding workflows. It's mind-blowing how ...(it)... can change your life."* — [maledorak on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1258453375620747264)
- *"Best agent for actual dev work in existing codebases."* — [Nick Dobos on X](https://twitter.com/NickADobos/status/1690408967963652097?s=20)
- *"One of my favorite pieces of software. Blazing trails on new paradigms!"* — [Chris Wall on X](https://x.com/chris65536/status/1905053299251798432)
- *"Aider has been revolutionary for me and my work."* — [Starry Hope on X](https://x.com/starryhopeblog/status/1904985812137132056)
- *"Try aider! One of the best ways to vibe code."* — [Chris Wall on X](https://x.com/Chris65536/status/1905053418961391929)
- *"Freaking love Aider."* — [hztar on Hacker News](https://news.ycombinator.com/item?id=44035015)
- *"Aider is hands down the best. And it's free and opensource."* — [AriyaSavakaLurker on Reddit](https://www.reddit.com/r/ChatGPTCoding/comments/1ik16y6/whats_your_take_on_aider/mbip39n/)
- *"Aider is also my best friend."* — [jzn21 on Reddit](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27dcnb/)
- *"Try Aider, it's worth it."* — [jorgejhms on Reddit](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27cp99/)
- *"I like aider :)"* — [Chenwei Cui on X](https://x.com/ccui42/status/1904965344999145698)
- *"Aider is the precision tool of LLM code gen... Minimal, thoughtful and capable of surgical changes ... while keeping the developer in control."* — [Reilly Sweetland on X](https://x.com/rsweetland/status/1904963807237259586)
- *"Cannot believe aider vibe coded a 650 LOC feature across service and cli today in 1 shot."* - [autopoietist on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1355675042259796101)
- *"Oh no the secret is out! Yes, Aider is the best coding tool around. I highly, highly recommend it to anyone."* — [Joshua D Vander Hook on X](https://x.com/jodavaho/status/1911154899057795218)
- *"thanks to aider, i have started and finished three personal projects within the last two days"* — [joseph stalzyn on X](https://x.com/anitaheeder/status/1908338609645904160)
- *"Been using aider as my daily driver for over a year ... I absolutely love the tool, like beyond words."* — [koleok on Discord](https://discord.com/channels/1131200896827654144/1273248471394291754/1356727448372252783)
- *"Aider ... is the tool to benchmark against."* — [BeetleB on Hacker News](https://news.ycombinator.com/item?id=43930201)
- *"aider is really cool"* — [kache on X](https://x.com/yacineMTB/status/1911224442430124387)
@@ -0,0 +1,75 @@
{
"createdAt": "2023-05-09T18:57:49Z",
"defaultBranchRef": {
"name": "main"
},
"description": "aider is AI pair programming in your terminal",
"forkCount": 4680,
"homepageUrl": "https://aider.chat/",
"isArchived": false,
"isFork": false,
"isMirror": false,
"latestRelease": {
"name": "Aider v0.86.0",
"publishedAt": "2025-08-09T17:42:19Z",
"tagName": "v0.86.0",
"url": "https://github.com/Aider-AI/aider/releases/tag/v0.86.0"
},
"licenseInfo": {
"key": "apache-2.0",
"name": "Apache License 2.0",
"nickname": ""
},
"nameWithOwner": "Aider-AI/aider",
"primaryLanguage": {
"name": "Python"
},
"pushedAt": "2026-05-22T14:02:20Z",
"repositoryTopics": [
{
"name": "chatgpt"
},
{
"name": "cli"
},
{
"name": "command-line"
},
{
"name": "gpt-4"
},
{
"name": "openai"
},
{
"name": "gpt-3"
},
{
"name": "gpt-35-turbo"
},
{
"name": "claude-3"
},
{
"name": "gpt-4o"
},
{
"name": "anthropic"
},
{
"name": "gemini"
},
{
"name": "llama"
},
{
"name": "sonnet"
}
],
"stargazerCount": 46962,
"updatedAt": "2026-07-02T21:52:05Z",
"url": "https://github.com/Aider-AI/aider",
"watchers": {
"totalCount": 255
}
}
@@ -0,0 +1,322 @@
[
{
"name": ".dockerignore",
"path": ".dockerignore",
"sha": "830cf8498c3b82005ac8c599502f838ed190e0f0",
"size": 61,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/.dockerignore?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/.dockerignore",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/830cf8498c3b82005ac8c599502f838ed190e0f0",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/.dockerignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/.dockerignore?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/830cf8498c3b82005ac8c599502f838ed190e0f0",
"html": "https://github.com/Aider-AI/aider/blob/main/.dockerignore"
}
},
{
"name": ".flake8",
"path": ".flake8",
"sha": "3963261f7b7c8706945140ca6891638e51980353",
"size": 50,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/.flake8?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/.flake8",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/3963261f7b7c8706945140ca6891638e51980353",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/.flake8",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/.flake8?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/3963261f7b7c8706945140ca6891638e51980353",
"html": "https://github.com/Aider-AI/aider/blob/main/.flake8"
}
},
{
"name": ".github",
"path": ".github",
"sha": "30b8800114cd6523ecfd9ff7809de59b385e0631",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/.github?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/.github",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/30b8800114cd6523ecfd9ff7809de59b385e0631",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/.github?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/30b8800114cd6523ecfd9ff7809de59b385e0631",
"html": "https://github.com/Aider-AI/aider/tree/main/.github"
}
},
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "fd1fa9a4da7f765e7a9c3515d329d9e7860b552c",
"size": 239,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/.gitignore?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/.gitignore",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/fd1fa9a4da7f765e7a9c3515d329d9e7860b552c",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/.gitignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/.gitignore?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/fd1fa9a4da7f765e7a9c3515d329d9e7860b552c",
"html": "https://github.com/Aider-AI/aider/blob/main/.gitignore"
}
},
{
"name": ".pre-commit-config.yaml",
"path": ".pre-commit-config.yaml",
"sha": "ca81b8a7339e47023be3ddac1babed2006f95fd6",
"size": 602,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/.pre-commit-config.yaml?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/.pre-commit-config.yaml",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/ca81b8a7339e47023be3ddac1babed2006f95fd6",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/.pre-commit-config.yaml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/.pre-commit-config.yaml?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/ca81b8a7339e47023be3ddac1babed2006f95fd6",
"html": "https://github.com/Aider-AI/aider/blob/main/.pre-commit-config.yaml"
}
},
{
"name": "CNAME",
"path": "CNAME",
"sha": "83254ef2d2bd88ccafab3613c8c312d551b37ef3",
"size": 10,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/CNAME?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/CNAME",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/83254ef2d2bd88ccafab3613c8c312d551b37ef3",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/CNAME",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/CNAME?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/83254ef2d2bd88ccafab3613c8c312d551b37ef3",
"html": "https://github.com/Aider-AI/aider/blob/main/CNAME"
}
},
{
"name": "CONTRIBUTING.md",
"path": "CONTRIBUTING.md",
"sha": "abe35a1c0ee51421144b4513149c63068ade2af0",
"size": 7863,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/CONTRIBUTING.md?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/abe35a1c0ee51421144b4513149c63068ade2af0",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/CONTRIBUTING.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/CONTRIBUTING.md?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/abe35a1c0ee51421144b4513149c63068ade2af0",
"html": "https://github.com/Aider-AI/aider/blob/main/CONTRIBUTING.md"
}
},
{
"name": "HISTORY.md",
"path": "HISTORY.md",
"sha": "3d523bdccde17e21b8a5f466a7f8b58b56ca5ad1",
"size": 77044,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/HISTORY.md?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/HISTORY.md",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/3d523bdccde17e21b8a5f466a7f8b58b56ca5ad1",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/HISTORY.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/HISTORY.md?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/3d523bdccde17e21b8a5f466a7f8b58b56ca5ad1",
"html": "https://github.com/Aider-AI/aider/blob/main/HISTORY.md"
}
},
{
"name": "LICENSE.txt",
"path": "LICENSE.txt",
"sha": "d645695673349e3947e8e5ae42332d0ac3164cd7",
"size": 11358,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/LICENSE.txt?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/LICENSE.txt",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/d645695673349e3947e8e5ae42332d0ac3164cd7",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/LICENSE.txt",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/LICENSE.txt?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/d645695673349e3947e8e5ae42332d0ac3164cd7",
"html": "https://github.com/Aider-AI/aider/blob/main/LICENSE.txt"
}
},
{
"name": "MANIFEST.in",
"path": "MANIFEST.in",
"sha": "9ab273215b7a269aacce50c21dd746cdb6700b70",
"size": 588,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/MANIFEST.in?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/MANIFEST.in",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/9ab273215b7a269aacce50c21dd746cdb6700b70",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/MANIFEST.in",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/MANIFEST.in?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/9ab273215b7a269aacce50c21dd746cdb6700b70",
"html": "https://github.com/Aider-AI/aider/blob/main/MANIFEST.in"
}
},
{
"name": "README.md",
"path": "README.md",
"sha": "816c876cb67021fa9f8d37267c8e57923eabdb07",
"size": 12406,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/README.md?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/README.md",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/816c876cb67021fa9f8d37267c8e57923eabdb07",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/README.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/README.md?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/816c876cb67021fa9f8d37267c8e57923eabdb07",
"html": "https://github.com/Aider-AI/aider/blob/main/README.md"
}
},
{
"name": "aider",
"path": "aider",
"sha": "38f181379921560c25c44d3c73ed45f7c6a08b4e",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/aider?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/aider",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/38f181379921560c25c44d3c73ed45f7c6a08b4e",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/aider?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/38f181379921560c25c44d3c73ed45f7c6a08b4e",
"html": "https://github.com/Aider-AI/aider/tree/main/aider"
}
},
{
"name": "benchmark",
"path": "benchmark",
"sha": "9545fafb919a443b3840f0eb9efe1ded5a9fd773",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/benchmark?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/benchmark",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/9545fafb919a443b3840f0eb9efe1ded5a9fd773",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/benchmark?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/9545fafb919a443b3840f0eb9efe1ded5a9fd773",
"html": "https://github.com/Aider-AI/aider/tree/main/benchmark"
}
},
{
"name": "docker",
"path": "docker",
"sha": "75183fa5fbe4f545bf585479137a9e23de28bb30",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/docker?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/docker",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/75183fa5fbe4f545bf585479137a9e23de28bb30",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/docker?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/75183fa5fbe4f545bf585479137a9e23de28bb30",
"html": "https://github.com/Aider-AI/aider/tree/main/docker"
}
},
{
"name": "pyproject.toml",
"path": "pyproject.toml",
"sha": "653fc2175129b0298c6fc9d46a1279b66ba36aa1",
"size": 1580,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/pyproject.toml?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/pyproject.toml",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/653fc2175129b0298c6fc9d46a1279b66ba36aa1",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/pyproject.toml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/pyproject.toml?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/653fc2175129b0298c6fc9d46a1279b66ba36aa1",
"html": "https://github.com/Aider-AI/aider/blob/main/pyproject.toml"
}
},
{
"name": "pytest.ini",
"path": "pytest.ini",
"sha": "7e37e17793017b32db7fe57a76de907ef0bd41df",
"size": 194,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/pytest.ini?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/pytest.ini",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/7e37e17793017b32db7fe57a76de907ef0bd41df",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/pytest.ini",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/pytest.ini?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/7e37e17793017b32db7fe57a76de907ef0bd41df",
"html": "https://github.com/Aider-AI/aider/blob/main/pytest.ini"
}
},
{
"name": "requirements.txt",
"path": "requirements.txt",
"sha": "cddf41382622a5348e84fb1cb1cd8dfddde6e64c",
"size": 12329,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/requirements.txt?ref=main",
"html_url": "https://github.com/Aider-AI/aider/blob/main/requirements.txt",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/blobs/cddf41382622a5348e84fb1cb1cd8dfddde6e64c",
"download_url": "https://raw.githubusercontent.com/Aider-AI/aider/main/requirements.txt",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/requirements.txt?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/blobs/cddf41382622a5348e84fb1cb1cd8dfddde6e64c",
"html": "https://github.com/Aider-AI/aider/blob/main/requirements.txt"
}
},
{
"name": "requirements",
"path": "requirements",
"sha": "dbf88363c16feca71c88d79b129a0965310b3c86",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/requirements?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/requirements",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/dbf88363c16feca71c88d79b129a0965310b3c86",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/requirements?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/dbf88363c16feca71c88d79b129a0965310b3c86",
"html": "https://github.com/Aider-AI/aider/tree/main/requirements"
}
},
{
"name": "scripts",
"path": "scripts",
"sha": "4afed1d082a5a4e16d64c1a4e5b8421b7dc07b3a",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/scripts?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/scripts",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/4afed1d082a5a4e16d64c1a4e5b8421b7dc07b3a",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/scripts?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/4afed1d082a5a4e16d64c1a4e5b8421b7dc07b3a",
"html": "https://github.com/Aider-AI/aider/tree/main/scripts"
}
},
{
"name": "tests",
"path": "tests",
"sha": "2259b1114fc3ef34139f5ed04079ba49fe5c8f13",
"size": 0,
"url": "https://api.github.com/repos/Aider-AI/aider/contents/tests?ref=main",
"html_url": "https://github.com/Aider-AI/aider/tree/main/tests",
"git_url": "https://api.github.com/repos/Aider-AI/aider/git/trees/2259b1114fc3ef34139f5ed04079ba49fe5c8f13",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/Aider-AI/aider/contents/tests?ref=main",
"git": "https://api.github.com/repos/Aider-AI/aider/git/trees/2259b1114fc3ef34139f5ed04079ba49fe5c8f13",
"html": "https://github.com/Aider-AI/aider/tree/main/tests"
}
}
]
@@ -0,0 +1,37 @@
version: 1
domain_id: aider-ai-aider
object:
type: github_repository
name: Aider-AI/aider
url: https://github.com/Aider-AI/aider
pulled_at: '2026-07-02T22:47:14+00:00'
puller: scripts/fetch-research-raw.py
files:
- path: repository/
kind: git-working-tree
status: ok
source: 'git clone --depth=1 --single-branch --no-tags https://github.com/Aider-AI/aider.git docs/research/aider-ai-aider/raw/repository'
- path: github-repo.raw.json
kind: repository-metadata
status: ok
source: 'gh repo view Aider-AI/aider --json nameWithOwner,url,description,homepageUrl,isArchived,isFork,isMirror,defaultBranchRef,licenseInfo,primaryLanguage,repositoryTopics,stargazerCount,forkCount,watchers,createdAt,updatedAt,pushedAt,latestRelease --jq .'
- path: github-readme.raw.md.txt
kind: readme
status: ok
source: 'gh api repos/Aider-AI/aider/readme -H Accept: application/vnd.github.raw'
- path: github-license.raw.txt
kind: license
status: ok
source: 'gh api repos/Aider-AI/aider/license -H Accept: application/vnd.github.raw'
- path: github-root-contents.raw.json
kind: root-contents
status: ok
source: 'gh api repos/Aider-AI/aider/contents'
- path: github-languages.raw.json
kind: languages
status: ok
source: 'gh api repos/Aider-AI/aider/languages'
- path: github-latest-release.raw.json
kind: latest-release
status: ok
source: 'gh api repos/Aider-AI/aider/releases/latest'