作者: 王彬 (coder-wangbin) | 日期: 2026-06-25
本文描述了我设计并落地的一套 AI 驱动研发工具链——如何把 AI 从"只会写代码"变成"能跟着研发链路从头走到尾"。
去年有段时间,我发现一个奇怪的现象:AI 帮我写代码确实快了,但需求上线的时间反而没怎么缩短。
后来梳理了一下时间花在哪:
- 写代码本身:AI 提效 50%+
- 但写之前的需求分析、写之后的部署验证、穿插其间的日志排查和各种杂事,AI 基本没帮上忙
这跟业界研究也吻合:
- Antenna IDE 插件的遥测数据显示,开发者每天实际编码的中位数仅 52 分钟
- Stripe 报告显示工程师约 42% 的时间花在技术债和维护上,真正写新代码只占约 32%
- SWE-bench 数据显示模型解题能力 30 个月从 2% 涨到 80%+,瓶颈已不在模型,在模型外的工程系统
所以目标很明确:让 AI 从"只会写代码"变成"能跟着研发链路从头到尾走完"。
回顾日常开发,下面这些场景每天都在发生——不是"理论上应该优化",而是"我真的忍了很久"。
产品把 PRD 扔文档里,我得手动打开→通读→标注疑问→拉会对齐。更烦的是,需求漏洞全靠经验发现,经常开发到一半才发现边界条件没覆盖、异常路径没定义。
跟 AI 讨论完设计方案,结果要自己复制粘贴到文档里排版。前端同事三天两头反馈"接口文档跟代码对不上"——因为方案写了一次,代码改了几版,文档没跟上。
多分支对应不同数据库,每次 git checkout 之后要手动改 DSN 配置。忘了切换就操作了错误的数据库——这事发生过不止一次。
代码写完了,要在 K8s 控制台手动更新镜像、等 Pod 起来、点进去看日志。部署挂了更痛苦:从 CI 把 job 日志复制出来,从 K8s 把 Pod 日志复制出来,然后贴给 AI 分析。AI 能告诉我问题在哪,但不能直接帮我看日志、也不能帮我修。
QA 提 Bug → 手动去看 → 定位代码 → 修复 → 编译 → 重新部署 → 通知 QA 回归。修复代码可能就改两行,但整个流程跑下来至少半天。改代码 5 分钟,走流程 4 小时。
用 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
核心工具:
- 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):目标驱动开发,自动编译、测试、自验证
原来:PRD 下载下来逐字阅读,需求漏洞靠经验发现。
现在:Agent 直接读取 PRD,自动分析需求完整性、一致性,发现漏洞和矛盾,输出待确认问题。
原来:跟 AI 讨论完设计方案后,手动把结果复制粘贴到文档。前端总反馈"接口文档滞后于代码"。
现在:Agent 直接写入云文档,前后端接口约定在同一份文档对齐,格式规范,版本可追溯。
| 模式 | 特点 | 适用场景 |
|---|---|---|
| OpenCode /ulw-loop | 持续工作→自验证→Oracle审核→不通过打回重做,loop 直到 Oracle 批准 | 单仓库、单次修改 |
| Codex /goal | 分解子目标,并行执行任务,自动回归验证 | 跨仓库、多步骤任务 |
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["交付完成"]
原来:打开 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
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["通知人工介入"]
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
适用条件:适用于描述清晰、可复现的简单确定性 Bug。复杂逻辑 Bug 仍需人工介入。
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 自动连接正确数据库"]
将代码解析成交互式知识图谱,Agent 通过 MCP 查询比直接 grep 效率高得多。
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 |
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
Go 编译的二进制 ad-hoc 签名在 cp/mv 后签名缓存失效,macOS AMFI 直接 SIGKILL 进程。修复:codesign --remove-signature <binary> && codesign -s - <binary>。
切换分支后索引需要重新同步,首次索引耗时可能较长。建议在配置中设置自动初始化规则。
使用 block_insert_after 后 block ID 会变化,需要重新 fetch 才能继续操作。
mermaid-renderer 插件旧版本输出 ANSI 颜色码导致终端渲染乱码。解决方案:只保留 opencode-beautiful-mermaid,设置 colorMode: "none"。
- Bug 自动修复仅适用于简单确定性 Bug:描述清晰、可复现的才能全自动
- 效果数字基于标准化 CRUD 场景:全新项目或遗留代码库收益会打折
- 成本考虑:ulw-loop 多次自验证消耗较多 API 调用,简单改动可能用传统流程更经济
- 学习曲线:新同学需要 1-2 天熟悉 CLI、配置
AI Coding 的关键不是让模型更快地写代码,而是把需求分析、方案设计、编码开发、自动化测试、环境部署、问题排查串成全链路闭环。瓶颈不在模型,在模型外的工程系统。
从需求到交付,我的角色从"执行者"变成了"监督者"——这是这整套工具链给我带来的最大改变。
多分支对应不同数据库,每次 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- git checkout 触发 hook(仅分支切换,文件 checkout 不触发)
- 脚本提取 conf.yml 中的 dsn 字段
- Go 格式 DSN → MySQL 格式
- 写入 dbhub.toml
- config-watcher 检测文件变化后热重载连接
复制 hook 到其他 Go 项目的 .git/hooks/ 目录即可。每个项目的 source_id 为 <项目名>-current,互不冲突。