HAOVP 的功能范围和技术方向逐渐清楚后,我开始使用 Codex 辅助项目开发。
我不准备把“开发一个在线视频平台”作为一句完整指令交给 AI。这样的任务范围太大,需求、架构和验收标准也不可能一次说清。更可控的方式是由我先理解问题和做出决策,再把工作拆成可以审查和验证的小任务。
目前我先用这套方式推进项目,并在每次实现、审查和联调后调整任务拆分方法。
先明确责任边界
在这个项目中,我和 Codex 的职责并不相同。
我负责:
需求理解
技术和架构决策
任务拆解
上下文组织
代码审查
测试判断
前后端联调
最终验收
Codex 辅助:
代码实现
局部重构
测试补充
问题排查
文档整理HAOVP 是我独立完成的个人项目,责任主体是我。Codex 可以辅助很多开发工作,但不能替我决定业务规则,也不能因为代码由 AI 生成就免去审查和验证。
不从“写完整系统”开始
一个大任务往往包含太多隐含条件。比如“实现用户登录”至少需要继续确认:
- 使用什么登录凭据;
- 密码怎样保存;
- 登录成功返回什么;
- 身份凭证怎样刷新和失效;
- 网关与业务服务分别校验什么;
- 错误响应使用什么格式;
- 哪些异常路径需要测试。
因此,我会先把目标变成一组小任务:
确认认证需求
-> 设计接口契约
-> 建立数据模型
-> 实现核心逻辑
-> 补充异常处理
-> 编译和测试
-> 联调每个任务尽量有清楚的输入、输出和完成条件。
给 Codex 足够但不过量的上下文
只描述“帮我写一个接口”,Codex 不知道项目结构和现有约定;一次塞入整个仓库,又可能让真正的问题失去重点。
我会整理与当前任务直接有关的内容:
- 模块职责和目录位置;
- 已经确定的接口或数据模型;
- 现有统一响应和异常处理方式;
- 需要复用的公共能力;
- 不允许改变的边界;
- 编译、测试和验收条件。
涉及配置时,只提供变量名称和脱敏结构,不提供真实密码、Token、地址和连接信息。
先让它理解现有代码
在修改已有模块前,我会先让 Codex 阅读相关文件并说明调用关系,而不是直接重写。
定位入口
-> 阅读接口与实现
-> 查找数据访问和配置
-> 说明当前行为
-> 列出修改影响
-> 再开始改动如果它对现有行为的理解不准确,后面的实现很可能沿着错误方向继续。理解阶段发现的不确定项要明确标记,不能用常见框架经验代替仓库事实。
一个任务只解决一个主要问题
我会避免在同一个任务里同时修改认证、视频上传、评论和前端页面。改动范围越大,越难审查,也越难判断错误来自哪里。
一个较小的任务可以是:
- 为某个接口补齐参数校验;
- 完成一个服务内的数据查询;
- 统一一类错误响应;
- 为现有逻辑补充单元测试;
- 调整一个页面与接口的字段映射;
- 更新一份与代码一致的文档。
我会按实际优先级从这些小任务中逐项推进,每一项都单独记录实现和验证状态。
代码生成后先看改了什么
Codex 完成实现后,我不会只看最终回答,而是检查实际变更:
- 修改了哪些文件;
- 是否超出任务范围;
- 是否重复实现已有工具;
- 是否改变接口兼容性;
- 是否增加不必要依赖;
- 异常和边界是否处理;
- 是否写入敏感配置;
- 测试是否真正覆盖改动。
如果出现大范围无关重构,我会要求缩小改动,而不是为了保留生成结果继续接受。
编译通过只是第一道门
我准备采用逐层验证方式:
静态阅读
-> 编译
-> 单元或模块测试
-> 接口请求
-> 前后端联调
-> 异常与权限路径
-> 更新任务状态编译通过只能证明语法和依赖在当前条件下基本成立。接口返回成功,也不能证明数据状态、权限和副作用正确。
当前项目仍处于早期开发阶段,我先把注意力放在每个小任务的编译、接口和联调结果上。
让测试成为任务的一部分
测试不应该等到所有功能完成后再统一补充。拆任务时,我会同时写出需要验证的正常和异常条件。
例如一个创建类接口至少要考虑:
- 合法输入能够创建;
- 缺少必填字段会被拒绝;
- 无权限用户不能操作;
- 重复请求怎样处理;
- 业务失败时是否留下不完整数据;
- 返回结果是否与数据库状态一致。
Codex 可以辅助补充测试代码和边界清单,但测试是否足够、结果是否可以接受由我判断。
文档要跟随代码更新
AI 辅助开发很容易快速产生代码,如果文档和任务状态没有同步,过几天就难以判断哪些是设计、哪些已经实现。
我会区分:
- 规划中的功能;
- 正在实现的任务;
- 已编译但未联调;
- 已通过接口验证;
- 仍有边界问题;
- 已完成并验收。
README 和开发文档不能只描述理想状态,需要和当前代码保持一致。
当前协作方式
截至 2025 年 12 月 27 日,我使用 Codex 开始开发 HAOVP 的方式可以概括为:我先确定目标和边界,把任务拆小并组织必要上下文;Codex 辅助实现和整理;我再检查改动、运行验证、处理联调问题并决定是否验收。
这套方式还会随着项目推进调整。现在能确定的是,AI 辅助并没有减少开发者责任,反而要求任务描述、代码审查和验证过程更明确。