# autopilot
**Repository Path**: qubitai/autopilot
## Basic Information
- **Project Name**: autopilot
- **Description**: 自动管理代码库,通过自然语言的方式写代码。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-10-21
- **Last Updated**: 2023-10-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Autopilot - 一种AI开发者
Autopilot 是一种利用GPT从代码库中读取信息,创建上下文并解决你请求的任务的AI工具。
# 如何运作
1. 你向Autopilot指出一份代码库以及一个任务。
2. Autopilot产生并维护一个与代码库文件的元数据DB。(在代码库目录中)
3. Autopilot使用元数据DB决定它需要处理哪些现有的文件。
4. Autopilot尝试在每一个相关文件上实施所要求的任务。
## 特性
- 📚 - 预处理代码库文件。
- 🤖 - 为你实现代码更改。
- 🚀 - 在可能的情况下进行并行调用。
- 📝 - 显示你被更新的内容。(也会提供包含每个AI交互过程的全程日志)
- 🕹️ - 交互模式 - 看见过程并有重试,继续,中止选项。
### 任务期望
- 引用当前代码:
- ✅ 通过项目相对路径引用一个特定文件。
- ✅ 仅通过文件名引用一个特定文件,忽略子目录路径。
- ✅ 在不包括文件名的情况下引用文件中的一个特定函数。
- ✅ 引用一个主要的业务概念,该业务概念只在一个文件中使用。
- ✅ 引用所有项目文件。
- 🤔 一般逻辑请求。你的实际效果会因模型,代码库和任务而异。有些可以工作。(应该加入任务评分)
- 执行的更改:
- ✅基于现有文件创建一个新文件。
- ❌从头开始创建一个新文件。
- ✅更新一个现有文件。
- ✅更新多个现有文件。
- ❌删除现有文件。(目前只能清空它们,而不能删除它们)
- ❌开始使用新的第三方库。(需要随意代码执行来安装库)
- ❌级联更新相关文件例如测试。 (即将来临)
- ❌测试它写的代码并自我修复。
## 先决条件
nodejs v18或更高版本。
## 🛠️ 安装
1. 克隆仓库:`git clone https://github.com/fjrdomingues/autopilot.git`
2. 输入 `cd autopilot` 去安装依赖:`npm ci`
3. 创建 `.env` 文件并设置环境变量:
1. 复制 .env.template 文件为 .env:`cp .env.template .env`
2. 设置一个OpenAI API键然后用键填写文件:`OPENAI_API_KEY=`。 [创建an OpenAI API key](https://platform.openai.com/account/api-keys)
3. 设置你的代码路径 `CODE_DIR=`(或使用 `-d path-to-your-code`)
4. 更新 `IGNORE_LIST=node_modules,coverage,public,__tests__`
5. 更新 `FILE_EXTENSIONS_TO_PROCESS=.js,.tsx,.ts,.jsx`
## 运行
* `node ui -t "YOUR_TASK"` - 这是最简单的开始方式。
* 解决方案将会自动应用到你的代码并显示git diff输出内容。
* 另外你也可以指定 `--auto-apply=false`。
* `node ui -h` - 将显示你所有的选项。
## 交互模式
使用 `node ui -i` 来启动交互模式,你可以在进行下一步之前查看每个步骤的输出。
## 🤝 作出贡献
**我们正在服务器上运行autopilot,连接到https://github.com/fjrdomingues/autopilot仓库。新的问题被创建时,autopilot会被触发并创建一个新的带有提案的Pull Request。现在正在运行gpt-4**
我们欢迎作出贡献!请向仓库提交pull request,并确保你的变更与项目的目标和指导方针相符。一起,我们能够让**Autopilot**成为更强大,更有效的开发者工具!
### 运行所有测试
`npm run test` - 运行所有测试
### 运行单元测试
`npm run unit-test` - 运行单元测试
### 运行基准测试
`npm run e2e-test` - 运行端到端测试
### 代码结构
- agents - 与语言模型的交互。
- modules - 大部分其他内部库。
- ui.js - The main()。
- logs - 记录运行任务。
### 运行流程
# 代码执行流程图
```mermaid
graph TD
Start[开始] --> InitializeCodeBase[初始化或重新索引代码库]
InitializeCodeBase --> GetTask[获取用户任务]
GetTask --> GetCodeSummaries[获取代码摘要]
GetCodeSummaries --> DetermineRelevantFiles[确定相关文件]
GetCodeSummaries --> DetermineRelevantFiles
DetermineRelevantFiles --> GetRelevantFiles[获取相关文件]
GetRelevantFiles --> FilterUniqueFiles[过滤重复文件]
FilterUniqueFiles --> FetchCodeFiles[获取代码文件]
FetchCodeFiles --> ProcessFiles[处理文件]
ProcessFiles --> SuggestChanges[建议更改]
SuggestChanges --> ApplyChanges[应用更改]
ApplyChanges --> SaveOutput[保存输出]
ApplyChanges --> GetFinalAnswer[获取最终答案]
SuggestChanges --> GetAdvice[获取建议]
GetAdvice --> GetFinalAnswer
GetFinalAnswer --> ProvideOutput[提供输出]
```