从零散提效到体系化协作:iOS 团队 AI 研发工作流完整实践

从任务分级到知识沉淀,一套可复用的 AI 辅助研发标准化体系

随着 AI 编程工具的普及,"用 AI 写代码"早已不是难题,但如何让 AI 稳定地产出符合团队规范、边界可控、质量可验收的代码,如何平衡效率与风险,却是绝大多数团队正在面对的共性痛点。

我们团队在 iOS 业务迭代中,围绕"人做决策、AI 做执行"的核心思路,搭建了一套完整的人机协作工作流。从任务分级、输入规范,到实现自检、验证闸门,再到代码审查、知识沉淀,形成了完整的闭环。本文将完整拆解这套工作流的设计逻辑与落地细节,供同类团队参考。


一、核心原则:先划清人与 AI 的权责边界

所有流程设计的前提,是先明确人和 AI 各自的定位,避免权责模糊带来的质量失控。我们定下三条总原则:

  1. 人负责「定义 + 验收 + 合入」,AI 负责「调研 + 实现 + 自检」 需求的业务意图、改动边界、最终是否合入代码库,必须由人来决策;所有 commit 与 push 操作永远由人触发,AI 不获得代码库的直接写入权限。这是守住代码库安全的底线。
  2. 规范是唯一真源 AI 犯下的、具备复用性的错误,必须当周沉淀回团队开发规范文档,而不是散落在聊天记录里。只有写进规范的规则,才是 AI 可以稳定遵守的规则;反复在对话里纠正,本质是低效的重复劳动。
  3. 证据优先于结论 "应该没问题""自测过了"不视为完成。所有交付必须附带可复现的证据:构建命令输出、真机/模拟器截图、产物 plist 校验结果、接口返回样本等。无实证的交付,直接打回。

二、任务分级:按复杂度匹配流程,平衡效率与风险

不是所有任务都要走完整的重型流程。我们按改动范围、风险等级将任务分为 4 级,不同级别对应不同的流程链路与交付产物,兼顾小改动的效率和大改动的质量。

任务级别 典型场景 执行流程 必备交付产物
S 级(小改) 文案修正、色值/间距调整、单文件简单 Bug 修复 对话内直接修改 + Debug 环境构建验证 无,人工自查 diff 即可
M 级(常规) 单页面功能开发、组件样式重构、单一模块逻辑迭代 方案计划 → 代码实现 → 独立 AI 审查(1~2 轮) plan.md、verification.md、review.json
L 级(重型) 跨模块重构、三方库替换、缓存/网络链路改造 技术调研 → 方案评审 → 开发计划 → 实现+审查循环 → 验证门 新增 report.md(调研报告)、技术方案/设计稿
只读型 接口字段核对、问题根因定位、兼容性调研 只读调查(investigate) report.md

强制提级规则:拿不准级别就往上提一级。凡是涉及工程配置(pbxproj/xcconfig)、依赖管理(Podfile)、签名配置、Info.plist 权限变更的改动,一律至少按 M 级处理,且实施前必须先由人确认。


三、标准化任务载体:固定目录与产物约定

所有 AI 执行的任务,统一放在 .agents/tasks/<任务名>/ 目录下管理,用统一的文件结构承载全流程产出,避免信息散落在各处。

1. 目录命名规则

采用「模块-意图」的短横线命名法,例如 shelf-edit-nomore、home-auto-retry-once。同一主题的迭代优化,在同一目录下新增前缀文件,不随意新建目录,保证上下文的连续性。

2. 固定文件职责

每个任务的产物文件职责严格固定,AI 必须按模板输出,审查者无需额外理解成本:

  • plan.md:任务目标、改动文件清单、明确不做的范围、可量化的验收标准、需验证的环境
  • report.md:调研结论、接口实测结果、踩坑点(同时同步回代码注释)
  • verification.md:构建命令与结果、截图路径、功能开启/关闭双方向的实测记录
  • review.md + review.json:结构化审查结果,包含结论(通过/驳回)与问题清单

3. 关键细节约定

  • 非阻断性问题(如"其余关联页面未进行目测验证")必须明确写入交付说明,不能被"审查通过"的结论掩盖,保证信息透明。
  • 接口样本 JSON、测试截图、临时取样代码,全部放在任务目录内(已加入 gitignore),任务完成后取样代码必须清理干净,不流入主分支。

四、高质量输入:给 AI 的任务简报怎么写

AI 产出的质量上限,由输入的质量决定。一份模糊的"优化一下",只会得到一份敷衍的结果。我们要求所有给 AI 的任务简报,必须包含以下要素:

  1. 可判定的完成标准 用可量化、无歧义的语言描述目标。例如"阅读页空态推荐卡片的宽高与设计稿完全一致",而不是"优化一下空态样式"。
  2. 明确的代码起点与参考实现 给出改动文件的绝对路径,以及团队内的同类参考实现(如某指定页面控制器、某通用 Cell),让 AI 直接对标现有代码风格,减少风格不一致的问题。
  3. 指定适用的规范章节 明确标注需要遵守的规范编号(如"遵守失败分支处理规范、稀疏目录规范"),让 AI 先读取对应章节再开始编码,避免事后返工。
  4. 清晰写出「不做什么」 明确边界:不顺手重构无关代码、不新增三方依赖、不改动 Pods 与无关工程配置。这是防止 AI"过度发挥"、改动越界的最有效手段。
  5. 完整的参考素材 有设计稿就附高清设计图,有接口就附解密后的真实返回 JSON,禁止让 AI 按接口文档猜测字段结构。
  6. 功能开关约定 新功能必须明确开关名称,默认值为关闭,遵循"灰度先行"的迭代原则。

五、实现自检:把编码规范变成 AI 可执行的核对项

我们将团队沉淀的 iOS 编码规范,提炼成 AI 实现后必须逐条自检的清单,从源头减少低级错误,降低后续审查成本。

基础规范类

  • 统一前缀:新增 Swift 文件与主类型使用统一业务前缀,资源文件使用统一前缀,避免符号与资源冲突。
  • 零字面量原则:颜色、字体、间距、尺寸、文案、图片,全部调用团队设计系统封装的统一类,业务代码中禁止出现硬编码色值、字号、数字与文案。
  • 布局规范:自动布局统一使用语义化属性,禁止使用绝对左右边距与全屏边距简写,保障 RTL 语言适配一致性。

功能完整性类

  • 页面三态齐全:所有列表与内容页必须覆盖加载态、空态、失败态;上拉加载失败统一调用全局封装方法;过期缓存数据按版本号自动丢弃。
  • 安全编码约束 :禁止强制解包、禁止 try!;异步闭包统一添加弱引用;禁止裸 print 调试语句,日志统一走埋点框架。
  • 分层架构遵守:页面跳转统一走路由层,面板数据统一走仓储层,禁止业务侧直接跨模块跳转、直接读写本地存储。

专项校验类

  • 带功能开关的功能,必须附带"关闭态零行为变化"核对清单,确保开关关闭时对现有逻辑无任何侵入。
  • 涉及排版度量改动的任务,必须提交分页指纹对照结果,验证分页逻辑未发生非预期变化。

六、验证闸门:机械校验前置,节省人工审查成本

代码提交审查前,必须先通过"验证门"检查。把机械、可自动化的校验全部前置,没过验证门的任务不进入审查环节,把人的精力从重复核对中解放出来。

  1. 构建环境校验 先确认 Xcode 命令行工具路径正确,环境异常则先修正开发环境,再执行构建。

  2. 构建产物校验 默认使用 Debug 开发环境构建,要求 0 error,且新增代码 0 warning。

    • 若改动了调试宏、环境分支逻辑,必须追加 Release 生产环境构建验证;
    • 若改动了构建配置、Bundle ID、应用显示名、依赖配置、Scheme 模板,必须四个环境全部构建通过,并通过 plutil 工具核对产物 Info.plist 的关键值。
  3. UI 变更验证 涉及 UI 改动的任务,必须提供模拟器截图并存入任务目录,与设计稿进行对比;未进行目测验证的页面,必须明确标注"未目测",不隐瞒验证范围。

  4. 干净态断言 通过 grep 等命令做配置合规性检查:例如工程文件中禁止出现某类冗余配置、Info.plist 中禁止硬编码界面风格与状态栏样式等,确保工程配置的干净与统一。


七、双轮审查:AI 独立交叉审查 + 人工终审

我们采用"AI 初审 + 人终审"的审查模式,既利用 AI 提升审查效率,又守住最终质量底线。

AI 独立审查规则

  • 审查 AI 与实现 AI 使用不同的会话、优先使用不同的模型,审查方只读 diff、计划文档与团队规范,不读取实现方的自评内容,保证审查视角的独立性。
  • 审查迭代上限为 2 轮。若 2 轮后仍存在阻断性问题,停止 AI 迭代,转由人工决策处理,避免无意义的反复修改消耗资源。

人工终审的三个核心关注点

人不做机械的规则检查(这部分交给 AI 与钩子),只做三件最有价值的判断:

  1. 改动是否符合需求的业务原意;
  2. 是否存在越界改动、超出任务范围的修改;
  3. 交付的验证证据是否真实、可复现。

高风险域强制人工兜底:网络请求、加解密逻辑、缓存删除逻辑、账号级数据存储、工程配置文件,人必须逐行审查,不将核心安全风险交给 AI 判断。


八、提交合入:守住代码库的最后一道关

  1. 合入操作流程 只有人发出"push"指令后,才按标准流程执行:暂存本地改动 → 拉取最新代码并变基 → 执行构建验证 → 推送分支 → 恢复本地暂存。
  2. Commit 规范 采用 type(scope): 中文描述 的格式,一个 commit 只做一件事,精确 git add 指定文件,禁止无脑 git add .。
  3. 前置钩子约束 团队统一启用 pre-commit 钩子,提交前自动执行静态检查,不符合规范的代码在本地就被拦截。
  4. MR 模板自动生成 合并请求的四项核心内容(改动内容、影响范围、测试方法、回滚方案),直接从 plan.md 与 verification.md 中提取生成,保证信息完整且格式统一。

九、知识沉淀:让 AI 协作的效率持续复利

AI 协作的长期价值,不在于单次任务省了多少时间,而在于通过持续沉淀,让整个团队的规范越来越完善,AI 犯重复错误的概率越来越低。

  1. 踩坑即时反哺规范 每个任务收尾时,必须复盘:本次有没有"规范没写明、AI 踩了坑"的问题?如果有,就提交一条规范更新 PR。我们很多实用的边界规则(如某些系统 API 的闪退坑、容器控制器的添加时机问题),都是通过这种方式沉淀下来的。
  2. 定期归档与提炼 每月清理一次任务目录:已合入且无复用价值的任务归档处理;高频被参考的结论与方案,直接提炼进规范文档,避免 AI 去读取过时的历史报告。
  3. 规范的迭代原则 规范只补充、不乱改,每条新规则必须写清"为什么"和"实测依据"。AI 更愿意遵守有明确理由的规则,无理由的禁令只会被频繁突破。

十、未来方向:从"流程化"到"自动化"

目前这套流程仍以"人引导、AI 执行"为主,我们正在推进进一步的自动化升级:

  1. 静态扫描前置:在 pre-commit 与 AI 工具调用前置阶段,自动扫描 diff 中的违规写法(如直接调用系统图片方法、硬编码色值、禁用布局属性、调试语句等),实时拦截。
  2. 自检规则内置化:把实现自检、验证门的规则,写入 AI 代理的 steering 配置,实现类任务自动加载校验规则,无需人工反复提醒。
  3. 工作流配方封装:把常用流程封装成标准化工作流配方,例如「功能开发流」「问题调研流」,一键启动即可按步骤执行,进一步降低流程使用成本。

十一、写在最后

团队节奏:

  • 早上人集中写/审当天的任务简报,把问题定义清楚;
  • 白天并行推进 2~3 个 M 级任务,人在固定时段批量做审查与决策;
  • 下班前完成合入与当日的规范沉淀。

我们度量产出的标准,是交付质量与线上事故率,而不是 PR 数量、代码行数。

AI 时代的研发效能提升,核心从来不是"AI 有多能写代码",而是团队能否把自己的隐性经验、质量标准、工程约束,显性化、标准化、流程化,最终通过工具固化下来。

好的人机协作,从来不是用 AI 替代人,而是把人从重复、机械的劳动里解放出来,让人更专注于决策、设计与创造------这才是技术人最核心的价值。

相关推荐
leeguoo2 小时前
让 Claude Code / Codex 用上你已登录的 Chrome
前端·chrome·ai编程
Potato_土豆2 小时前
MCP Server 接入多个 AI 客户端:配置差异与 10 个真实踩坑
人工智能·后端·ai编程
Markus实验室3 小时前
一个任务烧了54亿token,我盯着账单看了十分钟
agent·ai编程
烬羽3 小时前
给 RAG Agent 装上"仪表盘":LangSmith 全链路观测与量化评估实战
深度学习·openai·ai编程
LEE3 小时前
别把 Agent 架构画成组织架构图——子代理该不该拆,用任务级 Eval 说话
前端·后端·ai编程
梦醒江南3 小时前
RAG 证据链验收:别只测答案像不像,要证明它从哪里来
前端·agent·ai编程
郝琳3 小时前
Claude Code 额度优化实践,缓存写入单价是读取的 40 倍,四条可落地的会话习惯
ai编程
红尘伴蝶舞3 小时前
加密拦截器让抓包失效,我只能从 4KB 的 logcat 碎片里拼回 JSON
android·kotlin·ai编程
码哥字节4 小时前
大厂程序员写 AI 编程半年来,我的 3 次认知推翻与 1 次生存顿悟
ai编程·claude