TL;DRAddy Osmani 与 Google 合著的白皮书提出AI 正在重塑软件开发生命周期SDLC核心理念不是让 AI 替你写代码而是让 AI 跑在一个你设计的循环里。本文基于白皮书中的 Harness 架构模式从零搭建一条 Claude Code 驱动的自动化开发流水线——代码生成、审查、测试、文档全部串在一个可控的循环里附完整配置和可运行脚本。1. 背景SDLC 正在被重写2026 年 6 月 16 日Addy Osmani 发布了一篇名为《The New Software Lifecycle》的博文背后是他与 Google 合著的一份白皮书。核心观点很直接过去两年我们花了大量精力让 AI 写代码更快但很少有人重新思考软件开发到底该长什么样。传统的 SDLC 是线性的需求 → 设计 → 编码 → 测试 → 部署 → 维护。AI 工具最初只是被塞进编码这个环节——你问 Copilot 要一段补全让 ChatGPT 写个函数。但 Osmani 指出真正有效的模式是把 AI 放进一个循环loop而不是一个点。这个循环的核心是一个叫做 Harness挽具的架构模式。Harness 不是让一个超级 Agent 做所有事而是用多个专门化的组件自动化、工作树、技能、插件、子智能体组成一条可控的流水线人的角色从执行者变成设计者把关者。本文的目标就是把这篇白皮书里的概念翻译成一套你能直接跑的配置和脚本。2. Harness 架构拆解在动手之前先理解 Harness 的五个组件因为后面的配置都围绕它们展开自动化Automation循环的心跳。定时或事件触发让工作流自动运转而不是每次都手动敲命令。工作树Worktrees让多个任务并行而不互相踩脚。每个 Agent 在隔离的 git worktree 里工作互不干扰。技能Skills给 Agent 装上领域知识。不用每次都解释项目背景——把规范、编码风格、踩过的坑写成 skill 文件Agent 自动加载。插件/连接器Plugins Connectors让 Agent 触碰真实工具——GitHub、Slack、Linear、数据库而不是活在沙箱里。子智能体Sub-agents把创作者和审查者分开。一个 Agent 写代码另一个 Agent 审代码互相制衡。下面我们把这五个组件落成一套实际配置。3. 环境准备确保已安装 Claude Code需要 Node.js 18npminstall-ganthropic-ai/claude-code claude--version创建项目目录mkdirai-sdlc-harnesscdai-sdlc-harnessgitinitmkdir-p.claude/skills .claude/workflows scripts4. 第一步定义技能文件Skills给 Claude Code 装上项目背景。创建.claude/skills/project-context.md# 项目背景 ## 技术栈 - 前端Next.js 14 TypeScript Tailwind CSS - 后端FastAPI PostgreSQL - 部署Docker GitHub Actions ## 编码规范 - 函数不超过 40 行 - 所有公开 API 必须有类型注解 - 错误处理永远不要吞异常用结构化日志记录 ## 已知坑位 - Next.js middleware 里不能用 Node.js 原生模块 - PostgreSQL connection pool 上限 20批量操作注意释放 ## 测试要求 - 单元测试覆盖率 80% - API 端点必须有集成测试创建.claude/skills/code-review-checklist.md# 代码审查清单 审查每段代码时逐项检查 1. 安全性是否有 SQL 注入、XSS、未校验的用户输入 2. 性能是否有 N1 查询、未加索引的排序 3. 错误处理是否所有异常都有合理的处理路径 4. 可读性变量名是否自解释是否有不必要的嵌套 5. 测试是否覆盖了边界条件和异常路径5. 第二步搭建自动化流水线Automation创建.claude/workflows/daily-pipeline.sh#!/bin/bash# 每日自动化开发流水线# 用法: bash .claude/workflows/daily-pipeline.shset-eBRANCH$(date%Y-%m-%d)-autoecho[1/4] 创建今日工作分支:$BRANCHgitcheckout-b$BRANCHecho[2/4] Claude Code 生成代码...claude根据 .claude/skills/project-context.md 中的规范 在 src/ 目录下实现 TODO.md 中列出的今日任务。 每完成一个任务自己运行 npm run typecheck 验证。echo[3/4] Claude Code 自动审查...claude根据 .claude/skills/code-review-checklist.md 审查 当前分支的所有变更生成审查报告写入 .claude/review-$(date%F).mdecho[4/4] 提交并创建 PR...gitadd-Agitcommit-mauto: daily pipeline$(date%F)gitpush origin$BRANCHghprcreate--titleDaily Pipeline$(date%F)--body自动生成的每日变更赋予执行权限并测试chmodx .claude/workflows/daily-pipeline.sh6. 第三步配置工作树隔离Worktrees创建.claude/workflows/parallel-tasks.sh#!/bin/bash# 并行任务管理器——每个 Agent 在独立 worktree 工作# 用法: bash .claude/workflows/parallel-tasks.sh 实现用户模块 实现订单模块TASK1_DESC$1TASK2_DESC$2BASE_DIR$(pwd)WT_DIR$(mktemp-d)echo[1/3] 为任务 1 创建隔离 worktree...gitworktreeadd$WT_DIR/task1-bauto/task1-$(date%s)echo[2/3] 为任务 2 创建隔离 worktree...gitworktreeadd$WT_DIR/task2-bauto/task2-$(date%s)echo[3/3] 并行启动两个 Claude Code Agent...# Agent 1: 在 task1 worktree 中工作(cd$WT_DIR/task1claude$TASK1_DESC)PID1$!# Agent 2: 在 task2 worktree 中工作(cd$WT_DIR/task2claude$TASK2_DESC)PID2$!wait$PID1$PID2echo两个任务完成。审查合并...claude审查$WT_DIR/task1 和$WT_DIR/task2 的变更 检查是否有冲突生成合并建议。# 清理gitworktree remove$WT_DIR/task1gitworktree remove$WT_DIR/task2rm-rf$WT_DIR这个脚本的精妙之处在于两个 Agent 在物理隔离的文件系统中工作永远不会出现改了同一个文件的冲突。等两边都完成后再由一个审查 Agent 做合并判断。7. 第四步连接外部工具Plugins创建.claude/workflows/notify.sh让流水线完成后自动通知团队#!/bin/bash# 流水线完成后的通知# 依赖: gh (GitHub CLI), curlREPORT_FILE.claude/review-$(date%F).mdSTATUS${1:-success}if[$STATUSsuccess];thenSUMMARY$(head-20$REPORT_FILE2/dev/null||echo今日流水线完成)# 发 GitHub PR 评论ghprcomment$(ghprlist--limit1--jsonnumber-q.[0].number)\--body## 今日自动流水线报告$SUMMARY 自动生成于$(date%Y-%m-%d %H:%M)echo通知已发送elseecho流水线失败请检查日志# 可以接入 Slack webhook 等fi8. 踩坑与最佳实践坑 1Agent 的过度自信Claude Code 在生成代码时偶尔会产生幻觉——引用了不存在的 API 或库。解决方案在 skill 文件中明确列出项目的package.json依赖让 Agent 在生成代码前先确认库是否可用。也可以在流水线中加一步npm run typecheck自动拦截。坑 2worktree 清理不及时git worktree add后如果进程崩溃会留下孤儿 worktree。建议在脚本开头加git worktree prune并在 crontab 里定期执行清理。坑 3技能文件会过时当你修改了技术栈或编码规范记得同步更新 skill 文件。一个有效的做法是把 skill 文件纳入 code review 范围——每次 PR 如果改了规范相关代码但没有更新 skill 文件CI 就报 warning。坑 4成本控制每个 Claude Code Agent 调用都消耗 token。一个实用的技巧在非关键任务上使用claude --model haiku更便宜更快的模型只在核心代码生成和审查上使用完整模型。9. 让它每天自动跑用 cron 或 GitHub Actions 定时触发# 添加到 crontab每个工作日早上 9 点跑# crontab -e09* *1-5cd/path/to/projectbash.claude/workflows/daily-pipeline.sh/tmp/pipeline.log21或者用 GitHub Actions.github/workflows/daily-pipeline.ymlname:Daily AI Pipelineon:schedule:-cron:0 9 * * 1-5jobs:pipeline:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4-uses:anthropics/claude-code-actionv1with:prompt:运行 .claude/workflows/daily-pipeline.sh10. 这意味着什么Addy Osmani 的白皮书揭示了一个正在发生的转变软件工程的角色正从写代码的人变成设计系统的人。Harness 架构不是要取代工程师而是把重复性的执行工作外包给 AI 循环让人把精力花在架构决策、代码审查和领域理解上。你今天搭的这条流水线三个月后可能就是团队的标准工作方式。关键不是一步到位而是先跑通最小的循环然后逐步加组件。参考资料Addy Osmani - The New Software Lifecycle (2026-06-16)Claude Code 官方文档Google AI 白皮书The New Software Lifecycle