结对编程助手
- 语意检索: 自然语言对整个代码仓进行语意检索,快速理解
整个工程
。 - 需求开发: 按照
特性粒度
对新需求进行跨函数跨文件的代码修改。 - 语言学习:
0基础
学习编程语言,从工程创建,代码编写,编译运行全程指导。
- 如果预安装了musl-gcc则,直接执行
make
或者make build-go-static
- 如果没有预安装,则使用gcc编译,直接执行
make build-go-dynamic
- 下载开源代码(例如):
git clone --depth=1 https://github.com/openai/triton.git
- 切换到代码目录:
cd triton
- 运行aicoder:
aicoder --api-key=<api-key>
- 添加关注的目录(已只读方式提供给aicoder不允许编辑):
/repoadd ^python ^lib ^bin
- 开始提问,例如“这个工程是干啥的?”,如果你只是学习代码,而不需要修改,到这一步即可。
- 如果你想进行需求开发,添加可编辑文件(已读写方式提供给aicoder):
/chatadd lib/Dialect/Triton/IR/Dialect.cpp lib/Dialect/Triton/IR/Ops.cpp
- 进行更深入的问题提问,或者代码编写需求。
AICODER是一个以任务驱动的具备自主能力的智能体(AI Agent),具备以下能力:
- 1、对新建项目进行任务规划,需求分解,生成代码框架
- 2、对现有整个项目代码的理解,进行特性粒度的开发,支持跨文件跨模块的自主修改,端到端特性交付
- 3、滚动记忆能力,具备长期连续的任务目标一致性保持能力
- 4、具备测试生成,以及测试反馈,自主修改代码缺陷能力
- 5、具备使用外部工具能力,收集工具输出并对大模型进行反馈,例如git工具进行自动提交和回滚,调用测试套件工具并自动反馈修改调试代码,以及任何自定义工具的集成。
### CHAT(0) REPO(35)@coder>对这个工程的代码架构以及功能做一下详细介绍
### AI:---
这个工程是一个高度模块化的编码环境,旨在通过定义清晰的接口和类来处理和优化软件开发过程中的各项任务。以下是对该工程的主要组件及其功能的概述:
1. **编码者 (`coder`) 模块**:这是核心模块,包括与用户交互、命令处理、消息构建、编辑控制和历史记录管理等功能的组装。它贯穿整个系统,协调其他模块的工作。
2. **命令 (`cmds`) 模块**:负责解析和执行用户输入的命令。其中定义了多种命令(如退出、语言设置、聊天管理等),每种命令都实现了特定的接口,以便统一处理。
3. **构建器 (`builder`) 模块**:该模块负责根据用户的工作状态(如编码、聊天等)生成消息内容,包括代码内容构建和对话消息构建等。
4. **编辑器 (`editor`) 模块**:提供代码编辑功能,包括解析 git diff 格式的编辑、应用这些编辑以及生成编辑前后的系统提示。
5. **定义 (`defs`) 模块**:包含了整个系统使用到的接口、类型定义等,是连接各个模块的桥梁。
6. **图 (`graph`) 模块**:包含了图数据结构的定义以及图算法(如 PageRank)的实现,用于处理和分析代码中的依赖关系。
7. **历史记录 (`history`) 模块**:管理用户交互的历史记录,允许对之前的消息进行保存和查询。
8. **LLM (`llm`) 模块**:定义了与机器学习模型(如 OpenAI)交互的接口和实现,用于处理复杂的编码和消息构建任务。
9. **配置 (`conf`) 模块**:处理配置项的读取和存储,允许用户自定义工作环境的一些参数。
10. **阶段控制 (`stage`) 模块**:负责管理用户工作的不同阶段(例如编码、调试等),以便根据当前阶段调整消息构建策略。
11. **总结 (`summary`) 模块**:提供了对话和编码过程中的消息摘要生成功能,便于用户快速获取重点信息。
12. **终端 (`term`) 模块**:负责与操作系统的终端交互,包括读取用户输入和向用户输出信息。
13. **类型 (`types`) 模块**:定义了在系统中通用的数据类型,如聊天消息结构等。
14. **工作空间 (`workspace`) 模块**:管理用户的工作目录,包括文件的读写、目录的设置等。
15. **工具 (`utils`) 模块**:提供了一组实用工具函数,用于字符串处理、文件操作等通用任务。
整个系统采用了面向对象和模块化的设计理念,每个模块负责一组相关功能,通过清晰定义的接口与其他模块交互。这样的设计使得代码易于理解和维护,同时也便于未来的扩展和升级。
### ---END