Skip to main content

人、模型、工具与代码如何协作

AI Coding 不是“人提一句要求,AI 独自把项目做完”,而是一套由人、模型、工具与代码共同参与的协作系统。 可以先把四者记成一个团队:
  • 是负责人:定义目标、提供背景、判断取舍并验收结果;
  • 模型是智能助手:理解上下文、提出方案并生成候选内容;
  • 工具是执行环境:读取文件、修改代码、运行命令并收集反馈;
  • 代码是工作对象和事实依据:它既承载实现,也通过运行结果证明方案是否成立。
只有四者形成闭环,AI Coding 才能从“生成一段看起来正确的文字”变成“完成一个经过验证的开发任务”。

先用一个类比理解:软件开发小组

假设一个小组要改造一间房子:
  • 人像项目负责人,决定房间要给谁使用、预算多少、什么效果算完成;
  • 模型像设计顾问,根据要求提出布局和施工建议;
  • 工具像卷尺、电钻和施工设备,把方案转化为实际操作;
  • 代码像房屋本身,任何修改最终都要体现在结构中,并接受真实使用的检验。
设计顾问再聪明,也不能代替负责人决定真实需求;没有工具,设计只能停留在图纸上;不检查房屋,谁也无法确认改造是否安全。 AI Coding 中也是同样的关系:人定方向,模型出候选方案,工具负责执行,代码和测试返回事实。

一、人的职责:目标、判断与责任

人是整个协作流程的发起者和最终负责人,主要承担五项工作:
  1. 定义目标:要解决什么问题?为谁解决?
  2. 补充上下文:技术栈、相关文件、现有规则和历史背景是什么?
  3. 设置约束:哪些文件可以改?能否新增依赖?性能和安全要求是什么?
  4. 做出取舍:多个方案中选哪个?为什么?
  5. 最终验收:代码是否正确、安全、可维护并满足真实需求?
例如,“做一个登录功能”还不是完整目标。人需要进一步明确:使用密码还是验证码、是否需要找回密码、如何处理失败次数、数据如何保护,以及什么测试通过后才能上线。

二、模型的职责:理解、生成与解释

模型根据人提供的文字、代码和反馈,生成可能有用的候选内容,例如:
  • 澄清需求并提出问题;
  • 解释现有代码和报错;
  • 给出任务拆解和实现方案;
  • 生成代码、测试和文档初稿;
  • 比较多种技术方案;
  • 审查代码并指出潜在风险;
  • 根据运行结果修正方案。
模型的优势是速度快、知识面广、善于处理模式化工作;局限是不了解未提供的项目事实,也可能产生过时用法、不存在的 API 或貌似合理的错误代码。 因此,模型最适合扮演“高效但需要审查的协作者”,而不是“永远正确的决策者”。

三、工具的职责:连接模型与真实项目

模型本身只能生成文字或操作建议。工具把这些建议连接到真实开发环境中。 不同工具可能提供以下能力: 工具能力越强,AI 可以完成的步骤越多,但也越需要权限控制、修改前确认、版本管理和结果审查。

四、代码的职责:承载实现并提供事实反馈

代码不是被动的“输出结果”,而是协作过程中最重要的事实来源。 人和模型可以讨论方案,但最终要回到代码与运行结果:
  • 现有接口到底如何定义,要看真实代码;
  • 某个库是否已经使用,要看依赖配置;
  • 修改是否有效,要运行程序和测试;
  • 是否引入副作用,要查看差异和回归结果;
  • 文档和推测发生冲突时,应进一步核对可执行事实。
一句重要原则是:用代码、日志和测试验证 AI 的说法,不要只根据回答是否流畅来判断。

四者如何形成协作闭环

一个可靠的协作流程通常包含以下七步:
  1. 人提出任务:说明目标、对象与验收标准;
  2. 模型澄清问题:找出缺少的信息和可能歧义;
  3. 人补充上下文和约束:提供相关代码、环境、规则和修改范围;
  4. 模型提出计划:拆解步骤,说明准备修改什么;
  5. 工具执行最小修改:读取文件、编辑代码并运行必要命令;
  6. 代码和测试返回反馈:提供输出、报错、差异和测试结果;
  7. 人进行验收:决定接受、继续迭代、回滚或更换方案。
可以把它记成: 人定目标 → 模型出方案 → 工具做操作 → 代码给反馈 → 人做判断 这个循环可能重复多次。复杂任务越不适合一次性生成,越需要小步执行和逐步验证。

一个完整示例:给待办应用增加“截止日期”

第一步:人定义任务

一个过于模糊的要求是:
给任务加个日期。
更清晰的要求是:
在现有待办应用中增加可选的截止日期。列表按日期显示,逾期且未完成的任务标红;不要新增第三方依赖,并保持旧数据可用。完成后运行现有测试,并补充日期为空和日期过期的测试。
这一步由人负责,因为只有人知道真正需求和限制。

第二步:模型阅读上下文并提出计划

模型查看任务数据结构、列表组件、存储逻辑和测试文件后,可能提出:
  1. 在任务对象中增加可选的 dueDate
  2. 修改创建任务的表单;
  3. 在列表中显示并判断逾期状态;
  4. 兼容没有日期的旧数据;
  5. 增加对应测试。
这只是候选计划,人需要确认它没有漏掉关键需求。

第三步:工具执行修改

AI 编辑器或 Agent 根据确认后的计划修改相关文件、运行格式检查和测试。此时应限制修改范围,不要顺便重构无关模块。

第四步:代码和测试提供反馈

如果测试显示旧数据加载失败,说明方案没有真正满足“保持旧数据可用”。这个失败比模型的一句“已经兼容”更可信。

第五步:人验收并继续迭代

人检查代码差异、页面行为和测试覆盖,确认:
  • 没有日期的任务仍能正常显示;
  • 逾期判断考虑了时区;
  • 已完成任务不会错误标红;
  • 没有引入无关依赖或大范围改动。
如果不满足,就把具体反馈交给模型继续修正。

合理的人机分工

最健康的分工不是“AI 全做,人只点接受”,也不是“人拒绝使用 AI”,而是让 AI 承担高频生成和重复劳动,让人把精力放在目标、边界、证据和决策上。

常见的协作失败模式

1. 人不给上下文,模型只能猜

表现:只说“修一下”“优化一下”,却不提供代码、环境和验收标准。 改进:说明期望与实际结果,提供最小相关上下文,让 AI 先提问。

2. 模型一次改太多,工具扩大风险

表现:一个小需求修改几十个文件,还顺便升级依赖和重构架构。 改进:先审计划,限制文件和任务范围,分批执行并保留回滚点。

3. 代码能运行,就被误认为完全正确

表现:程序没有崩溃便直接提交,没有检查边界情况、安全性和真实需求。 改进:定义验收标准,运行针对性测试,查看差异并进行人工审查。

4. 人把最终判断交给模型

表现:AI 说“已经修复”“没有安全问题”,人便直接相信。 改进:要求证据,用测试、日志、代码位置和官方资料验证结论。

小练习:给四个角色分配职责

你准备让 AI 给一个购物网站增加“优惠券”功能。请判断下列任务主要应该由谁负责:
  1. 确定优惠券可以与哪些促销叠加;
  2. 根据现有代码生成折扣计算函数初稿;
  3. 修改项目文件并运行测试;
  4. 通过测试结果确认金额计算是否正确;
  5. 决定功能是否可以上线。

参考答案

**协作顺序:**人先定义规则,模型生成方案,工具执行操作,代码和测试返回证据,最后由人验收并做决定。

本节结论

在人、模型、工具与代码的协作中,没有任何一个角色可以单独保证成功:
  • 人提供方向、约束、判断与责任;
  • 模型提供理解、生成、解释与建议;
  • 工具提供读取、修改、执行与反馈能力;
  • 代码提供真实实现和可验证的结果。
真正可靠的 AI Coding,不是让 AI 获得无限自主权,而是建立一个目标明确、权限受控、修改可查、结果可测、责任归人的协作闭环。