AI会干活 / 免费教程
接手陌生仓库,第一小时让 Codex 帮你找到路
这篇文章教你在接手一个没有交接文档的陌生仓库时,如何用 Codex 做第一小时的项目导航。你会让 Codex 先只读仓库,识别技术栈、启动入口、关键目录、最近改动和测试方式,再产出一份可以人工核对的“项目入口地图”和“首日检查清单”。
适合人群
刚接手老项目的产品型工程师
先解决什么
临时被拉进一个没有交接文档的仓库,需要当天判断能不能改一个小需求。
学完结果
一份项目入口地图和首日检查清单。
你会学到什么
让 Codex 找入口、识别技术栈、列出关键目录,并给出可验证的阅读顺序。
准备材料:仓库路径、README、package 配置、最近一次需求描述、当前分支状态。
交付物:一份项目入口地图和首日检查清单。
边界:重点是初次接手的导航,不展开具体改代码。
教程定位
这篇教程解决什么问题
这篇文章教你在接手一个没有交接文档的陌生仓库时,如何用 Codex 做第一小时的项目导航。你会让 Codex 先只读仓库,识别技术栈、启动入口、关键目录、最近改动和测试方式,再产出一份可以人工核对的“项目入口地图”和“首日检查清单”。
这里不追求让 AI 一次性“理解整个代码库”。更可靠的做法是让它把线索摊开:它说入口在哪里,就要求给文件路径;它说这是前端项目,就要求引用配置文件;它建议阅读顺序,就要求说明每一步要验证什么。第一小时的目标不是改代码,而是建立一条可验证的路。
使用场景
什么情况下最适合用这一套
你被临时拉进一个老项目。需求看起来不大:在某个列表页多展示一个字段,或者把一个按钮文案换成新的业务说法。但仓库没有交接文档,README 可能过期,原负责人也不在线。
这时最容易犯的错,是直接搜索关键词然后开改。表面上很快,风险却很高:你可能改到废弃页面,漏掉后端映射,或者不知道测试和构建怎么跑。对产品型工程师来说,更稳的第一步是先回答四个问题:
Codex 适合帮你做这件事,但要给它明确边界:先读,不改;先列证据,不下结论;先输出检查清单,不直接承诺“可以改”。
- 这个仓库到底是什么技术栈?
- 用户入口、服务入口、配置入口分别在哪里?
- 当前这个小需求最可能涉及哪些目录?
- 我今天动手之前,至少要完成哪些检查?
材料准备
开始前先把材料和边界备齐
开始前,你需要准备四类材料。材料越具体,Codex 越不容易在空泛经验里猜。
第一类是仓库路径。例如:
第二类是你手上的需求原话。不要只写“改列表页”,最好保留业务表达:
第三类是你已经知道的项目线索。即使不确定,也可以标出来:
第四类是你允许 Codex 做什么。第一小时建议只允许只读检查和本地验证:
这个边界很重要。你现在要的是地图,不是让 AI 替你开车上路。
/Users/mengmeng/work/legacy-crm运营希望客户列表新增“最近跟进人”字段。
字段来自后端已有接口,如果没有则显示“-”。
今天只需要判断能不能改,不要求马上上线。我知道这个项目可能是 React 写的,后端可能是 Node。
README 很久没更新,不能完全相信。
当前分支是 feature/customer-list-owner。允许读取文件、查看 Git 状态、分析 package 配置、列出建议阅读顺序。
不要修改文件,不要安装依赖,不要推送,不要删除任何内容。实操流程
按这套步骤把工作跑起来
第一步,让 Codex 先确认仓库现状。
你可以先让它查看当前分支、未提交变更和顶层目录。这里的重点不是收集所有文件,而是避免一上来就碰到别人正在改的内容。如果仓库已经有未提交修改,你需要知道哪些文件是别人动过的,后续不能让 Codex 回滚或覆盖。
你要让 Codex 输出三件事:当前分支、工作区是否干净、顶层目录用途猜测。注意“用途猜测”必须带证据,比如目录名、配置文件、README 片段,而不是一句“看起来是前端项目”。
第二步,让 Codex 识别技术栈和启动入口。
常见线索包括 `package.json`、`pnpm-lock.yaml`、`vite.config.*`、`next.config.*`、`src/main.*`、`src/App.*`、`server.*`、`Dockerfile`、`compose.yaml`、`Makefile`、`pyproject.toml`、`go.mod`。你不需要自己逐个读完,可以让 Codex 先找,再把结论整理成表格。
但你要特别提醒它:README 只能作为线索,不能作为事实。老项目里 README 经常写着 `npm run dev`,实际脚本早已换成 `pnpm dev`。所以每一个入口判断都要对应到真实文件。
第三步,让 Codex 做“入口地图”,不要做“全仓库总结”。
全仓库总结通常会变成一段漂亮废话:“该项目采用模块化架构,包含前端、后端、配置和测试”。这不能指导你改需求。入口地图应该更具体:
如果 Codex 不能确定,就让它写“待确认”,并附上下一步搜索建议。不要逼它装作确定。
第四步,把需求映射到可能涉及的文件。
这一步不是让 Codex 改代码,而是让它根据需求找到相关区域。例如需求是“客户列表新增最近跟进人”,它可以搜索 `customer`、`客户`、`follow`、`owner`、`assignee`、`lastContact` 这类关键词,然后把相关文件按可信度分组:
你要看的是“为什么相关”。如果它只给文件名,不给理由,这份地图还不能用。
第五步,让 Codex 给出首日检查清单。
检查清单应该是可以打勾的,不应该是“熟悉业务逻辑”“阅读核心模块”这种大词。更好的写法是:
这份清单是你当天判断“能不能改”的依据。Codex 可以帮你列,但是否足够,需要你结合业务风险确认。
第六步,只做最小验证。
第一小时的验证不一定要完整跑通项目。老仓库可能依赖旧版本 Node、私有源、环境变量或内部服务。你可以让 Codex 先做低成本验证:查看脚本、确认测试命名、查找环境变量示例、检查是否有类型检查命令。能跑就跑;不能跑也要记录阻塞原因。
一个合格结论不是“项目可以改”,而是类似这样:
这比“AI 看过了,应该没问题”可靠得多。
用户入口:src/pages/customers/index.tsx
路由入口:src/router/routes.ts
数据请求入口:src/services/customer.ts
接口类型入口:src/types/customer.ts
测试入口:src/pages/customers/__tests__/customer-list.test.tsx
构建入口:package.json scripts.build高相关:直接渲染客户列表或定义列配置的文件
中相关:客户接口、类型、mock 数据、测试
低相关:样式、通用表格组件、国际化文案- 确认客户列表页面是否仍在当前路由中使用。
- 确认后端返回里是否已有 recentlyFollowedBy 或类似字段。
- 确认表格列配置是否集中在一个文件里。
- 确认本地是否能跑起页面或至少通过类型检查。
- 确认新增字段为空时的展示规则。目前能确定客户列表入口和列配置文件,能确认本地存在类型检查命令,但因为缺少 .env.local 无法启动页面。
今天可以先做代码级影响评估;真正改动前,需要向负责人确认接口字段名和本地环境变量。输入示例
可以直接参考的输入材料
下面是一段可以直接粘给 Codex 的输入材料。你可以把路径、需求和已知线索替换成自己的。
如果你已经有 README 或 `package.json` 片段,也可以一并贴进去:
贴配置片段的好处是,Codex 可以更快判断技术栈;但最终仍然要以仓库里的实际文件为准。
仓库路径:
/Users/mengmeng/work/legacy-crm
当前任务:
我临时接手这个仓库。运营希望客户列表新增“最近跟进人”字段。
字段应该来自后端已有接口,如果为空就显示“-”。
今天只需要判断能不能改,以及改动可能涉及哪里,不要直接改代码。
已知线索:
- 这个项目可能是 React + Node,但我不确定。
- README 可能过期。
- 当前分支是 feature/customer-list-owner。
- 我不知道启动命令和测试命令。
请你只读仓库,不要修改文件,不要安装依赖,不要推送。
请先帮我找入口、识别技术栈、列关键目录,并给出一份可验证的首日检查清单。{
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "tsc && vite build",
"test": "vitest run",
"lint": "eslint src --ext .ts,.tsx"
},
"dependencies": {
"@vitejs/plugin-react": "^4.2.1",
"react": "^18.2.0",
"antd": "^5.0.0",
"axios": "^1.6.0"
}
}提示词
可复制使用的提示词
你可以直接复制下面这段提示词,把方括号里的内容替换掉。
如果仓库很大,可以再补一句:
你是我的陌生仓库第一小时导航助手。请只读仓库,不要修改文件,不要安装依赖,不要推送,不要删除任何内容。
仓库路径:
[填入本地仓库路径]
我今天要判断的小需求:
[填入需求原话,包含页面、字段、规则、限制]
我已知但不确定的线索:
[填入 README、技术栈、分支、负责人留言等线索;不确定就标注“不确定”]
请按下面步骤工作:
1. 先检查当前分支、工作区是否有未提交修改、顶层目录结构。
2. 识别技术栈、启动入口、构建入口、测试入口。每个判断都要给出证据文件路径;如果只能猜,请标注“待确认”。
3. 找出这个需求最可能涉及的目录和文件,按高相关、中相关、低相关分组,并说明理由。
4. 输出一份“项目入口地图”,包括用户入口、路由入口、数据请求入口、类型或 schema 入口、测试入口、配置入口。
5. 输出一份“首日检查清单”,每一项都要能人工打勾验证。
6. 最后列出你不能确认的事情,以及我应该向同事或负责人追问的问题。
输出要求:
- 不要声称你已经完全理解代码库。
- 不要建议我立刻改代码。
- 不要只写泛泛总结。
- 所有结论尽量带文件路径或可验证线索。如果文件太多,请先只看 README、package 配置、路由、入口文件、最近 20 次提交摘要和与需求关键词相关的文件,不要试图一次读完整个仓库。输出样例
AI 应该输出到什么程度
下面是一份理想的 Codex 输出样例。注意它不是最终事实,只是第一小时导航结果,里面仍然有待确认项。
这份输出的价值在于,它没有替你做高风险判断。它把入口、证据、疑点和下一步摆出来,让你能在第一小时结束时知道自己站在哪里。
陌生仓库第一小时导航结果
一、当前状态
- 当前分支:feature/customer-list-owner
- 工作区状态:存在未提交修改,涉及 src/pages/customers/CustomerList.tsx 和 src/services/customer.ts。建议先确认这些修改是谁做的,后续不要覆盖。
- 顶层目录初步判断:
- src/:主要业务代码,证据是 src/main.tsx 和 src/pages/。
- public/:静态资源。
- tests/:端到端或集成测试,待进一步确认。
- scripts/:项目脚本,可能包含构建或数据生成工具。
二、技术栈和入口
- 前端框架:React + Vite。证据:package.json 中有 react、@vitejs/plugin-react,且存在 vite.config.ts。
- UI 组件:Ant Design。证据:package.json 中有 antd,客户页里使用 Table。
- 语言:TypeScript。证据:tsconfig.json、src/main.tsx。
- 本地启动:pnpm dev 或 npm run dev,证据:package.json scripts.dev。实际使用哪个包管理器需要根据 lock 文件确认。
- 构建检查:package.json scripts.build = "tsc && vite build"。
- 测试:Vitest,证据:package.json scripts.test 和 vitest.config.ts。
三、项目入口地图
- 应用入口:src/main.tsx。负责挂载 React 应用。
- 路由入口:src/router/routes.tsx。客户列表路由指向 /customers。
- 客户列表页面:src/pages/customers/CustomerList.tsx。高相关,因为这里定义表格列。
- 客户数据请求:src/services/customer.ts。高相关,因为这里封装 getCustomerList。
- 客户类型定义:src/types/customer.ts。中高相关,因为 Customer 类型里可能需要确认是否已有 lastFollowerName 字段。
- Mock 数据:src/mocks/customer.ts。中相关,如果本地开发依赖 mock,需要同步字段。
- 测试入口:src/pages/customers/__tests__/CustomerList.test.tsx。中相关,用于确认新增列展示。
四、与“最近跟进人”需求的关系
高相关:
- src/pages/customers/CustomerList.tsx:直接渲染客户列表列配置,最可能新增展示列。
- src/services/customer.ts:需要确认接口返回字段是否透传。
- src/types/customer.ts:需要确认字段类型。
中相关:
- src/mocks/customer.ts:如果开发环境使用 mock,需要补样例数据。
- src/pages/customers/__tests__/CustomerList.test.tsx:可能需要补空值显示为“-”的测试。
低相关:
- src/components/DataTable.tsx:通用表格组件,除非列配置能力不足,否则不建议先改。
- src/styles/table.css:只有展示异常时再看。
五、首日检查清单
- [ ] 确认 /customers 路由仍然指向 src/pages/customers/CustomerList.tsx。
- [ ] 确认客户列表表格列配置是否集中在 CustomerList.tsx,而不是后端下发。
- [ ] 确认接口返回中是否已有最近跟进人字段;可能字段名包括 lastFollowerName、recentOwner、followUpOwner。
- [ ] 确认字段为空时现有代码是否已有统一的空值展示函数。
- [ ] 确认本地类型检查命令能否运行。
- [ ] 确认当前未提交修改是否属于别人,避免覆盖。
- [ ] 向业务或后端确认最终字段名和展示文案。
六、不能确认的事
- 不能确认 README 中的启动命令仍然有效,需要实际运行或询问维护者。
- 不能确认后端一定已有该字段,需要看接口样例或问后端。
- 不能确认这个页面是否还有旧版入口,需要通过路由和线上页面核对。
七、建议追问
- 最近跟进人展示姓名、昵称还是工号?
- 没有跟进人时是否固定显示“-”?
- 这个字段是否需要排序或筛选?
- 当前分支上的未提交修改是谁的?人工验收
人要怎么检查和改到可用
拿到 Codex 输出后,不要直接把它当成结论。你至少要做五类人工检查。
第一,检查路径是否真实存在。AI 输出里每一个文件路径都应该能在仓库中打开。如果路径不存在,先不要接受那条结论。陌生仓库里经常有重名目录、迁移残留和旧页面,路径真实是最基本的门槛。
第二,检查入口是否仍在使用。一个页面文件存在,不代表线上还走它。你要顺着路由、菜单配置、权限配置或页面跳转确认它确实是当前入口。对列表页、后台系统、移动端 H5 来说,这一步尤其重要。
第三,检查配置和实际命令是否一致。`package.json` 里有 `dev` 脚本,不代表你的机器能跑起来。Node 版本、包管理器、私有源、环境变量都可能阻塞。你要把“命令存在”和“命令已跑通”分开记录。
第四,检查需求字段是否真的来自已有接口。Codex 可以根据命名猜测字段,但不能替后端确认契约。你需要看接口文档、抓包、mock 数据、类型定义,或者直接问后端负责人。
第五,检查它有没有把“建议阅读顺序”写得太大。比如“阅读整个 src 目录”“理解所有业务模块”这类建议不可执行。你可以要求它重写成 30 到 60 分钟内能完成的检查项,每一项都要有完成标准。
你最终应该把 AI 输出改成自己的首日记录。可以保留这三个小节:
这份记录比聊天窗口里的长回答更重要,因为它会变成你和同事沟通的共同事实。
已确认:
- 客户列表当前入口是 src/pages/customers/CustomerList.tsx。
- 列配置在前端维护。
- 存在类型检查命令,但本机缺少环境变量,暂未启动成功。
待确认:
- 后端字段名。
- 空值展示是否有统一规则。
- 当前分支两处未提交修改的归属。
今天能做的下一步:
- 先补充影响评估,不直接改代码。
- 找后端确认字段名。
- 找原负责人确认本地启动所需环境变量。失败反例
这些失败反例要提前避开
反例一:让 Codex “帮我看懂这个项目”。
这个提示太大,容易得到一篇泛泛的项目介绍。它可能会总结技术栈、目录和架构风格,但你仍然不知道今天这个小需求该从哪里下手。更好的说法是:“请只围绕客户列表新增字段这个需求,找出入口、相关文件和首日检查清单。”
反例二:让 Codex 直接判断“这个需求能不能做”。
陌生仓库里,能不能做不只取决于代码,还取决于接口字段、环境变量、权限、上线流程和当前分支状态。Codex 可以帮你列影响面和阻塞项,但不能替你拍板。更稳的输出是:“目前已确认什么、还缺什么、改动前必须问谁。”
反例三:接受没有证据的路径结论。
比如 Codex 说“客户列表在 src/pages/customer/List.tsx”,但没有说明它从哪里找到的。你照着改,可能改到旧页面。正确做法是要求它给出证据:路由文件如何指向该页面、页面是否被菜单引用、是否有测试或近期提交记录。
反例四:把 README 当成唯一事实。
README 在老项目里经常落后于实际代码。它可以告诉你项目原本的设计,但启动命令、包管理器、环境变量和部署方式都可能变过。正确做法是同时看 README、配置文件、lock 文件和实际脚本。
反例五:第一小时就让 Codex 修改代码。
你还不知道当前分支有没有别人改动,不知道入口是否正确,也不知道本地检查能不能跑。此时让 AI 直接改,常见结果是改动看起来很完整,但落在错误位置。第一小时应先产出入口地图和检查清单,确认后再进入编码阶段。
反例六:让 Codex 一次性扫描全仓库并生成完整架构图。
大仓库里这样做很容易浪费时间,还会把注意力带到和需求无关的模块。第一小时更适合“窄而深”:围绕需求入口读关键文件,把其余内容标为暂不展开。
主题边界
它和相邻主题的区别
这篇只解决“刚接手陌生仓库的第一小时怎么导航”。它关注的是找入口、识别技术栈、列关键目录、建立可验证阅读顺序,产物是一份项目入口地图和首日检查清单。
它不展开具体改代码,也不讨论如何让 Codex 实现需求、写测试、修构建、做重构或提交 PR。那些主题适合放在后续文章里:比如“让 Codex 根据入口地图改一个小字段”“让 Codex 补测试并解释失败原因”“让 Codex 做 PR 前自查”。这篇的边界是:先确认路,再决定走不走。
可直接套用的流程
1. 先写清楚任务目标:这次要让 AI 帮你完成什么工作,而不是泛泛地问一个问题。
2. 再给资料边界:哪些背景、数据、约束、口径必须被使用,哪些内容不能编。
3. 最后规定输出格式:用清单、表格、方案、话术还是复盘报告,并保留人工检查。