Skip to content

coder-wangbin/ai-driven-dev-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

AI 驱动全链路开发工作流 —— 从需求到交付的工程实践

作者: 王彬 (coder-wangbin) | 日期: 2026-06-25

本文描述了我设计并落地的一套 AI 驱动研发工具链——如何把 AI 从"只会写代码"变成"能跟着研发链路从头走到尾"。


一、背景:去年的一个发现

去年有段时间,我发现一个奇怪的现象:AI 帮我写代码确实快了,但需求上线的时间反而没怎么缩短。

后来梳理了一下时间花在哪:

  • 写代码本身:AI 提效 50%+
  • 但写之前的需求分析、写之后的部署验证、穿插其间的日志排查和各种杂事,AI 基本没帮上忙

这跟业界研究也吻合:

  • Antenna IDE 插件的遥测数据显示,开发者每天实际编码的中位数仅 52 分钟
  • Stripe 报告显示工程师约 42% 的时间花在技术债和维护上,真正写新代码只占约 32%
  • SWE-bench 数据显示模型解题能力 30 个月从 2% 涨到 80%+,瓶颈已不在模型,在模型外的工程系统

所以目标很明确:让 AI 从"只会写代码"变成"能跟着研发链路从头到尾走完"。


二、问题分解:实际踩过的坑

回顾日常开发,下面这些场景每天都在发生——不是"理论上应该优化",而是"我真的忍了很久"

2.1 需求要自己从文档下载,然后逐字看

产品把 PRD 扔文档里,我得手动打开→通读→标注疑问→拉会对齐。更烦的是,需求漏洞全靠经验发现,经常开发到一半才发现边界条件没覆盖、异常路径没定义。

2.2 开发方案手写、接口文档滞后

跟 AI 讨论完设计方案,结果要自己复制粘贴到文档里排版。前端同事三天两头反馈"接口文档跟代码对不上"——因为方案写了一次,代码改了几版,文档没跟上。

2.3 切换分支就要改数据库配置

多分支对应不同数据库,每次 git checkout 之后要手动改 DSN 配置。忘了切换就操作了错误的数据库——这事发生过不止一次。

2.4 部署靠手动、排障靠复制日志

代码写完了,要在 K8s 控制台手动更新镜像、等 Pod 起来、点进去看日志。部署挂了更痛苦:从 CI 把 job 日志复制出来,从 K8s 把 Pod 日志复制出来,然后贴给 AI 分析。AI 能告诉我问题在哪,但不能直接帮我看日志、也不能帮我修。

2.5 QA 提的 Bug,修复链路全程手工

QA 提 Bug → 手动去看 → 定位代码 → 修复 → 编译 → 重新部署 → 通知 QA 回归。修复代码可能就改两行,但整个流程跑下来至少半天。改代码 5 分钟,走流程 4 小时。

2.6 AI 写完代码不验证,问题堆到我身上

用 AI Coding 写完代码,它不会帮我编译、测试、验证——生成完就结束了。编译报错、测试失败、接口行为不对,全都得我自己去修。代码是 AI 写的,Bug 是我 debug 的。


三、解决方案:工具链全景

flowchart LR
    A["PRD Doc"] -->|Agent reads| B["Req Analysis"]
    B -->|Agent writes| C["Design Spec"]
    C -->|CodeGraph context| D["Coding"]
    D -->|ulw-loop verify| E{"Tests Pass?"}
    E -->|Yes| F["Git Push"]
    F -->|lb-CLI| G["K8s Deploy"]
    G -->|diagnose| H{"Healthy?"}
    H -->|Normal| I["Done"]
    H -->|Error| J["Alert"]
    K["Bug Report"] -->|Agent monitors| L["Auto Fix"]
    L -->|logs + context| D
Loading

核心工具:

  • Lark CLI:Agent 直接读写云文档、查询 Bug 列表
  • dbhub MCP:数据库 MCP Server,Agent 直接查询/操作数据库,分支切换自动同步
  • CodeGraph MCP:代码知识图谱,语义搜索替代多次 grep+read
  • lb CLI + MCP Server:K8s 诊断/日志/重启一站式(11 个 MCP 工具)
  • OpenCode (ulw-loop) + Codex (/goal):目标驱动开发,自动编译、测试、自验证

四、各阶段详解

4.1 需求分析 —— AI 帮你查漏补缺

原来:PRD 下载下来逐字阅读,需求漏洞靠经验发现。

现在:Agent 直接读取 PRD,自动分析需求完整性、一致性,发现漏洞和矛盾,输出待确认问题。

4.2 方案设计 —— 从对话到文档自动沉淀

原来:跟 AI 讨论完设计方案后,手动把结果复制粘贴到文档。前端总反馈"接口文档滞后于代码"。

现在:Agent 直接写入云文档,前后端接口约定在同一份文档对齐,格式规范,版本可追溯。

4.3 编码开发 —— 目标驱动 + 自我验证

模式 特点 适用场景
OpenCode /ulw-loop 持续工作→自验证→Oracle审核→不通过打回重做,loop 直到 Oracle 批准 单仓库、单次修改
Codex /goal 分解子目标,并行执行任务,自动回归验证 跨仓库、多步骤任务

ulw-loop 自验证循环

flowchart TB
    A["设定目标"] --> B["Agent 自动实现"]
    B --> C["自验证:编译/测试/LSP"]
    C --> D{"检查通过?"}
    D -->|No| E["自动修复"]
    E --> C
    D -->|Yes| F["Oracle 审核"]
    F --> G{"审核通过?"}
    G -->|不通过,打回| A
    G -->|通过| H["交付完成"]
Loading

4.4 部署验证 —— push 后全自动

原来:打开 K8s 控制台→找 Deployment→手动更新镜像→等待→点 Pod 看日志。

现在:git push → CI 自动构建 → 自动部署。核心能力:

  • Kuboard SSO 认证(5 步自动完成)
  • K8s API 代理更新镜像
  • 关联部署 + 镜像比对跳过
  • 即时通知(一次 push 一条聚合消息)
  • MCP Server 提供 11 个工具:list_pods / get_logs / deployment_status / events / diagnose / get_ingress / patch_ingress_tls / restart_deployment / get_pipeline / get_job_logs / send_notification

4.5 故障排查 —— Agent 自动诊断 + 简单问题自愈

flowchart LR
    A["部署异常"] --> B["lb diagnose"]
    B --> C{"Pod Crash?"}
    C -->|Yes| D["获取崩溃日志"]
    C -->|No| E{"CI Pipeline 失败?"}
    E -->|Yes| F["获取 CI 日志"]
    D --> G["Agent 分析根因"]
    F --> G
    G --> H{"能否自动修复?"}
    H -->|简单 Bug| I["自动修复 + 重新部署"]
    H -->|复杂问题| J["通知人工介入"]
Loading

4.6 Bug 修复 —— 全自动闭环

flowchart LR
    A["QA 提交 Bug"] --> B["Agent 定时轮询"]
    B --> C["提取 Bug 描述"]
    C --> D["AI Coding Agent"]
    D --> E["CodeGraph + lb 日志定位"]
    E --> F["生成修复 + ulw-loop 验证"]
    F --> G["Push 到 GitLab"]
    G --> H["CI 自动构建"]
    H --> I["自动部署到 K8s"]
    I --> J["部署完成"]
    J --> K["通知 + 更新状态"]
    K --> A
Loading

适用条件:适用于描述清晰、可复现的简单确定性 Bug。复杂逻辑 Bug 仍需人工介入。


五、支撑工具详解

5.1 dbhub MCP —— 数据库操作 + 分支自动切换

flowchart TB
    A["git checkout 分支"] --> B["post-checkout hook 触发"]
    B --> C["读取 conf.yml dsn"]
    C --> D["Go DSN → MySQL DSN"]
    D --> E["写入 dbhub.toml"]
    E --> F["config-watcher 热重载"]
    F --> G["Agent 自动连接正确数据库"]
Loading

5.2 CodeGraph MCP —— 代码知识图谱

将代码解析成交互式知识图谱,Agent 通过 MCP 查询比直接 grep 效率高得多。

5.3 lb CLI + MCP Server —— K8s 运维

11 个 MCP 工具覆盖日常运维核心场景:list_pods / get_logs / diagnose / events / restart_deployment / get_pipeline / get_job_logs / get_ingress / patch_ingress_tls / deployment_status / send_notification。


六、效果对比

环节 传统耗时 AI 工具链 备注
需求分析 + 查漏补缺 半天 10-60 分钟 视需求复杂度而定
开发方案 + 接口文档 1-2 天 对话中同步产出初稿 复杂架构仍需人工审校
编码 + 自测 + Review 2-3 天 目标驱动自动回归验证 依赖项目测试覆盖率
部署验证 30 分钟 push 后全自动 部署 + 健康检查 + 通知
故障诊断 1-2 小时 Agent 自动诊断 简单问题可自愈,复杂问题通知人工
Bug 修复闭环 半天 自动修复部署 适用于描述清晰的简单确定性 Bug

七、BEFORE vs AFTER

flowchart TB
    subgraph Before
        S1["下载 PRD"] --> S2["手动理解需求"]
        S2 --> S3["手写方案"]
        S3 --> S4["编码"]
        S4 --> S5["手动测试"]
        S5 --> S6{"通过?"}
        S6 -->|No| S4
        S6 -->|Yes| S7["手动部署"]
        S7 --> S8["手动验证"]
        S8 --> S9["写文档"]
    end
    subgraph After
        T1["Agent 读取 PRD"] --> T2["AI 自动分析"]
        T2 --> T3["Agent 写方案"]
        T3 --> T4["AI 编码 + 自验证"]
        T4 --> T5["push 自动部署"]
        T5 --> T6["自动诊断"]
        T6 --> T7["文档自动生成"]
    end
Loading

八、踩坑与教训

8.1 macOS 代码签名导致进程被 SIGKILL

Go 编译的二进制 ad-hoc 签名在 cp/mv 后签名缓存失效,macOS AMFI 直接 SIGKILL 进程。修复:codesign --remove-signature <binary> && codesign -s - <binary>

8.2 CodeGraph 切换分支后需重索引

切换分支后索引需要重新同步,首次索引耗时可能较长。建议在配置中设置自动初始化规则。

8.3 文档 API 的 block ID 生命周期

使用 block_insert_after 后 block ID 会变化,需要重新 fetch 才能继续操作。

8.4 Mermaid 终端渲染兼容性

mermaid-renderer 插件旧版本输出 ANSI 颜色码导致终端渲染乱码。解决方案:只保留 opencode-beautiful-mermaid,设置 colorMode: "none"


九、局限性与不适用场景

  • Bug 自动修复仅适用于简单确定性 Bug:描述清晰、可复现的才能全自动
  • 效果数字基于标准化 CRUD 场景:全新项目或遗留代码库收益会打折
  • 成本考虑:ulw-loop 多次自验证消耗较多 API 调用,简单改动可能用传统流程更经济
  • 学习曲线:新同学需要 1-2 天熟悉 CLI、配置

十、总结

AI Coding 的关键不是让模型更快地写代码,而是把需求分析、方案设计、编码开发、自动化测试、环境部署、问题排查串成全链路闭环。瓶颈不在模型,在模型外的工程系统。

从需求到交付,我的角色从"执行者"变成了"监督者"——这是这整套工具链给我带来的最大改变。


附录:dbhub 分支自动切换配置指南

背景

多分支对应不同数据库,每次 git checkout 后需要手动修改 DSN。忘了切换就操作了错误的数据库。

解决方案

利用 Git post-checkout hook,在分支切换时自动读取 conf.yml 中的 DSN 配置。

安装步骤

cp .git/hooks/dbhub-sync.sh .git/hooks/post-checkout
chmod +x .git/hooks/post-checkout
mkdir -p ~/.config/opencode/dbhub
touch ~/.config/opencode/dbhub/dbhub.toml

工作原理

  1. git checkout 触发 hook(仅分支切换,文件 checkout 不触发)
  2. 脚本提取 conf.yml 中的 dsn 字段
  3. Go 格式 DSN → MySQL 格式
  4. 写入 dbhub.toml
  5. config-watcher 检测文件变化后热重载连接

多项目扩展

复制 hook 到其他 Go 项目的 .git/hooks/ 目录即可。每个项目的 source_id 为 <项目名>-current,互不冲突。

About

AI 驱动全链路开发工作流 —— 从需求到交付的工程实践

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors