AI 編程
難度:入門
代码库探索与入职指南
Technical Codebase Discovery & Onboarding Prompt
作为新加入项目的开发者,借助AI编程助手深入理解现有代码库,快速掌握项目结构与技术栈,尽快提升开发效率。
適用平台:
ChatGPTClaudeGemini
**背景:**
我是一名刚加入项目的开发人员,我正在使用你,一个AI编码助手,来深入理解现有代码库。我的目标是尽快提高工作效率,并基于对当前系统的扎实理解做出明智的技术决策。
**主要目标:**
分析此项目/工作区中提供的源代码,并生成一份**详细、清晰、结构良好的Markdown文档**,解释系统的架构、功能、主要流程、关键组件和技术栈。
这份文档应作为一份**技术入职指南**。
在可能的情况下,通过提供**直接链接到相关文件、类和函数**以及有助于澄清概念的代码示例来提高可导航性。
---
## **详细说明 — 请解决以下几点:**
### 1. **README / 说明文件摘要**
- 查找诸如 `README.md`、`LEIAME.md`、`CONTRIBUTING.md` 或类似文档的文件。
- 提供一份客观但详细的摘要,包含对新开发人员最重要的部分,包括:
- 项目概述
- 如何在本地设置和运行系统
- 采用的标准和约定
- 贡献指南(如果可用)
---
### 2. **详细技术栈**
- 识别并列出项目中使用的完整技术栈:
- 编程语言,包括可检测到的版本(例如,来自 `package.json`、`pom.xml`、`.tool-versions`、`requirements.txt`、`build.gradle` 等)。
- 主要框架(后端、前端等 — 例如,Spring Boot、.NET、React、Angular、Vue、Django、Rails)。
- 数据库:
- 类型(SQL / NoSQL)
- 名称(PostgreSQL、MongoDB 等)
- 核心架构风格(例如,单体、微服务、无服务器、MVC、MVVM、整洁架构)。
- 云平台(如果可通过SDK或配置识别 — AWS、Azure、GCP)。
- 构建工具和包管理器(Maven、Gradle、npm、yarn、pip)。
- 任何其他相关技术(缓存、消息代理、容器化 — Docker、Kubernetes)。
- **引用并链接展示每个项目的配置文件。**
---
### 3. **系统概述和目的**
- 清晰描述系统做什么以及为谁服务。
- 它解决了哪些问题?
- 列出核心功能。
- 如果可能,将系统与所涉及的业务领域联系起来。
- 提供主要功能的高级描述。
---
### 4. **项目结构和阅读建议**
- **入口点:**
我应该从哪里开始探索代码?识别主要的入口点(例如,`main.go`、`index.js`、`Program.cs`、`app.py`、`Application.java`)。
**提供这些文件的直接链接。**
- **总体组织:**
解释整体的文件夹和文件结构。突出重要的约定。
**使用真实的文件夹和文件名示例。**
- **配置:**
是否有主要的配置文件?(例如,`config.yaml`、`.env`、`appsettings.json`)
哪些配置是关键的?
**提供链接。**
- **阅读建议:**
建议一个阅读顺序或一组应首先阅读的关键文件/模块,以便快速掌握项目的核心概念。
---
### 5. **关键组件**
- 识别并描述最重要或核心的模块、类、函数或服务。
- 解释每个组件的职责。
- 描述它们的职责和相互依赖关系。
- 对于每个组件:
- 包含一个代表性的代码片段
- 提供其实现位置的链接
- **尽可能提供直接链接和代码示例。**
---
### 6. **执行和数据流**
- 描述最常见或关键的工作流或业务流程(例如,订单处理、用户认证)。
- 解释数据如何在系统中流动:
- 数据持久化在哪里
- 如何读取、修改和传播
- **尽可能通过示例说明并链接到相关函数或类。**
#### 6.1 **数据库模式概述(如果适用)**
- 对于数据密集型应用程序:
- 识别主要实体/表/集合
- 描述它们的主要关系
- 如果可用,基于ORM模型、迁移或模式文件
---
### 7. **依赖项和集成**
- **依赖项:**
列出使用的主要外部库、框架和SDK。
简要解释每个的作用。
**提供它们配置或最常用位置的链接。**
- **集成:**
识别并解释与外部服务、附加数据库、第三方API、消息代理等的集成。
通信如何发生?
**指出负责的模块/类并包含链接。**
#### 7.1 **API文档(如果适用)**
- 如果项目暴露API:
- 是否有API文档工具或标准(例如,Swagger/OpenAPI、Javadoc、特定端点docstrings)的证据?
- 这些文档在哪里可以找到或如何生成?
---
### 8. **图表**
- 生成高级图表以可视化系统架构和行为:
- 组件图(突出主要模块及其交互)
- 数据流图(显示信息如何在系统中移动)
- 类图(显示关键类和关系,如果适用)
- 简化部署图(组件运行位置,如果可检测)
- 简化基础设施/部署图(如果基础设施细节明显)
- **使用Mermaid语法在Markdown文件中创建这些图表。**
- 图表应为**高级**;不需要详尽的细节。
---
### 9. **测试**
- 是否有自动化测试?
- 单元测试
- 集成测试
- 端到端(E2E)测试
- 它们在项目中的位置?
- 使用了哪些测试框架?
- 测试通常如何执行?
- 如何在本地运行测试?
- 是否有涉及测试的CI/CD策略?
---
### 10. **错误处理和日志记录**
- 应用程序通常如何处理错误?
- 是否有标准模式(例如,全局中间件、自定义异常)?
- 使用了哪个日志库?
- 是否有标准日志格式?
- 是否有与监控工具(例如,Datadog、Sentry)的可见集成?
---
### 11. **安全考虑**
- 代码中是否有明显的安全机制?
- 认证
- 授权(中间件/过滤器)
- 输入验证
- 是否突出使用了特定的安全库(例如,Spring Security、Passport.js、JWT库)?
- 是否有值得注意的安全实践?
- 秘密管理
- 防御常见攻击
---
### 12. **其他相关观察(包括构建/部署)**
- 是否有与**构建或部署**相关的文件?
- `Dockerfile`
- `docker-compose.yml`
- 构建/部署脚本
- CI/CD配置文件(例如,`.github/workflows/`、`.gitlab-ci.yml`)
- 这些文件表明应用程序是如何构建和部署的?
- 是否有其他对新开发人员至关重要或特别有帮助的信息?
- 注释中提到的已知技术债务
- 不寻常的设计模式
- 重要的编码约定
- 性能说明
---
## **最终输出格式**
- 将完整的响应生成为一份**格式良好的Markdown(`.md`)文档**。
- 使用**清晰直接的语言**。
- 根据上述编号部分,使用**标题和副标题**组织内容。
- **包含相关的代码片段**(简短且具有代表性)。
- 每当提到特定的代码元素时,**包含可点击的链接**到文件、函数、类和定义。
- 使用上述编号部分来构建文档,以提高可读性。
**在可能的情况下:**
- 包含**可点击的链接**到文件、函数和类。
- 显示**简短、有代表性的代码片段**。
- 使用**项目符号或表格**来列出内容。
---
### **重要**
分析必须考虑**所有 f**