
1. 从写代码到指挥AI干活AI-Native SDLC到底改变了什么这两年大家嘴上都在说AI 编程但真正落到日常开发流程里多数团队其实还停留在把 AI 当高级补全工具的阶段——写个函数让它补全报错了贴给它看看仅此而已。而AI-Native SDLCAI 原生软件开发生命周期说的完全是另一回事它不是给现有流程打补丁而是从需求、设计、编码、测试到交付的每一环都默认有一个能读写文件、能执行命令、能调用外部工具的智能体参与其中来重新设计。我最早接触这套思路是从Claude Code这类终端智能体开始的。它和网页版聊天最大的区别在于它能直接在你的项目目录里读文件、改代码、跑测试、执行 git 操作甚至通过MCPModel Context Protocol模型上下文协议去连接数据库、浏览器、设计稿、内部系统。换句话说它不再是一个问答窗口而是一个坐在你工位旁边、能动手的协作者。这篇文章我想聊的不是AI 有多强这种空话而是把一套能真正跑起来的 AI-Native SDLC 实践拆开讲CLAUDE.md 怎么写才有用、MCP 到底解决了什么工程问题、本地模型怎么接、多工具协作时怎么不打架、以及那些官方文档不会告诉你的坑。适合已经在用或准备上手 Claude Code、Codex、各类 MCP 服务的开发者也适合想把 AI 真正嵌进团队流程的技术负责人。哪怕你之前只听说过这些名词跟着往下看也能搭出一套自己的最小可用流程。2. CLAUDE.md把团队默契写成 AI 能读懂的契约2.1 为什么一个 Markdown 文件能决定 AI 干活的质量很多人第一次用 Claude Code上来就丢一句帮我重构这个模块然后抱怨它改得乱七八糟。问题往往不在模型而在于它不知道你的项目规矩。CLAUDE.md 就是解决这个问题的——它是放在项目根目录或子目录的一个约定文件Claude Code 在启动时会自动读取把它当作这个项目的上下文宪法。你可以把它理解成新员工入职时拿到的那份《团队开发规范》。没有它AI 只能靠猜这个项目用 pnpm 还是 npm测试跑pytest还是vitest提交信息要不要遵循 Conventional Commits目录结构里src/core和src/utils的边界在哪这些猜错的成本最后都变成你 review 时的时间。我自己的经验是CLAUDE.md 写得越具体AI 的返工率越低。一份好的 CLAUDE.md 通常包含这几块内容项目定位与技术栈一句话说清这是什么项目用了哪些框架、语言版本、包管理器。目录结构与职责边界哪些目录是核心逻辑哪些是自动生成的明确告诉 AI 别乱改。常用命令构建、测试、lint、类型检查、启动开发服务器的确切命令。代码规范命名习惯、错误处理方式、日志规范、注释语言。禁区不允许改的文件、不允许引入的依赖、不允许执行的命令。2.2 一份可直接抄的 CLAUDE.md 骨架下面这份是我在多个项目里迭代出来的模板你可以按需删减# 项目说明 这是一个基于 TypeScript Node.js 的后端服务使用 pnpm 管理依赖。 ## 技术栈 - 运行时Node.js 20 - 语言TypeScript 5.xstrict 模式 - 框架Fastify - 测试Vitest - 数据库PostgreSQL Prisma ## 常用命令 - 安装依赖pnpm install - 开发启动pnpm dev - 运行测试pnpm test - 类型检查pnpm typecheck - 代码格式化pnpm lint:fix ## 目录约定 - src/modules/业务模块每个模块独立目录 - src/shared/跨模块共享工具改动需谨慎 - prisma/数据库 schema 与迁移禁止手改生成的 client - dist/构建产物禁止编辑 ## 编码规范 - 所有导出函数必须有 JSDoc 注释 - 错误统一用 AppError 类抛出不要直接 throw new Error - 日志使用 logger 实例禁止 console.log - 提交信息遵循 Conventional Commits ## 禁区 - 不要修改 .env 和任何密钥文件 - 不要升级主版本依赖除非我明确要求 - 不要执行 git push2.3 分层放置根目录与子目录的 CLAUDE.md 怎么配合一个容易被忽略的细节是CLAUDE.md 支持分层。根目录放全局规范子目录放局部规范。比如src/modules/payment/CLAUDE.md里可以写支付模块涉及金额计算所有金额用整数分表示禁止浮点运算。当 AI 在这个目录下工作时它会同时读到根级和目录级的约定。这个机制的价值在于上下文精准投放。你不需要把所有规则都堆在根文件里让 AI 每次都读一遍而是把领域知识放在它真正需要的地方。我见过一个团队把数据库迁移的注意事项写在prisma/CLAUDE.md里结果 AI 每次改 schema 都会自动遵守他们的命名和回滚策略省了大量 review 沟通。提示CLAUDE.md 不是越长越好。超过几百行后关键规则容易被淹没。建议根文件控制在 100 行以内把细节下沉到子目录。3. MCP让 AI 从读代码进化到操作系统3.1 MCP 到底是个什么协议为什么突然到处都是MCP 全称 Model Context Protocol是一个软件层面的通信协议不是硬件协议很多人第一次听到会联想到硬件总线其实它是应用层的。它定义了一套标准接口让 AI 客户端比如 Claude Desktop、Claude Code、各类 IDE 插件能够以统一的方式连接外部能力提供方——这些提供方就叫 MCP Server。在没有 MCP 之前每接一个新工具都要单独写适配接数据库写一套接浏览器写一套接设计稿再写一套。MCP 把这个过程标准化了只要工具方实现一个 MCP Server任何支持 MCP 的客户端都能直接调用。这就是为什么你最近会看到某某接入 MCP某某 MCP 教程满天飞——它正在变成 AI 工具生态的通用插座。从工程角度看MCP Server 通常提供三类能力能力类型说明典型例子Tools可被 AI 调用的函数执行 SQL、打开网页、发请求Resources可被读取的数据源文件内容、数据库表结构Prompts预定义的提示模板代码审查模板、周报生成模板3.2 浏览器类 MCP 的选型Browser Use 与 Playwright 的差异热词里有个很实际的问题browser use mcp 跟 playwright mcp 有什么区别。这俩确实容易混我按实际使用体验说下区别。Playwright MCP本质是把 Playwright 的自动化能力暴露给 AI。它的强项是确定性操作打开指定 URL、点击某个选择器、填写表单、截图、抓取 DOM。适合做端到端测试、页面数据提取、固定流程的自动化。它的行为可预测适合写进 CI。Browser Use MCP更偏向让 AI 自主决策浏览。你给它一个目标比如帮我在这个网站找到定价页并总结套餐差异它会自己规划点击路径、判断页面元素。灵活但不确定性更高适合探索性任务。选型建议很直接流程固定、要稳定复现 → 选 Playwright MCP目标模糊、需要 AI 自己找路 → 选 Browser Use MCP两者可以共存按任务类型切换3.3 从零接一个 MCP Server 的完整过程以最常见的本地 MCP Server 为例配置通常写在客户端的配置文件里。Claude Desktop 的配置大致长这样{ mcpServers: { filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, /path/to/allowed/dir] }, postgres: { command: npx, args: [-y, modelcontextprotocol/server-postgres], env: { DATABASE_URL: postgresql://user:passlocalhost:5432/mydb } } } }几个实操要点npx -y里的-y别省。不加的话首次运行会卡在交互式确认AI 客户端等不到响应就超时了。路径要写绝对路径。相对路径在不同工作目录下解析结果不一样很容易出现文件明明在却读不到。改完配置必须重启客户端。MCP Server 是在客户端启动时拉起的热改配置不生效。权限最小化。filesystem server 只暴露你真正需要的目录别图省事把整个用户目录挂进去。3.4 MCP 排查为什么codex 无法找到 mcp这类问题我踩过不止一次排查链路基本固定先看客户端日志。MCP 连接失败几乎都会在日志里留下痕迹比瞎猜快得多。确认命令能在终端独立跑通。把配置里的command和args复制到终端手动执行如果这里就报错问题在 Server 本身而不是客户端。检查 Node 版本。很多 MCP Server 要求 Node 18 以上版本太低会静默失败。Windows 上的路径与转义。Windows 下command有时需要写成cmd /c npx ...否则找不到可执行文件。环境变量没传进去。像数据库连接串这种如果没在env里声明Server 启动就会因为缺配置而退出。注意MCP Server 崩溃时客户端往往只显示工具不可用不会告诉你具体原因。养成先看日志的习惯能省掉一半排查时间。4. 本地模型与多工具协作把成本和隐私握在自己手里4.1 Claude Code 调用本地模型的现实路径有些场景下你不想把代码发到云端内部项目、敏感数据、或者单纯想省 token 成本。这时候可以让 Claude Code 走本地模型。常见做法是通过 LM Studio 或类似工具在本地起一个兼容 OpenAI 接口的服务然后通过环境变量把 Claude Code 的请求指向本地端点。大致流程是在 LM Studio 里加载一个支持工具调用的模型比如 Qwen 系列的 coder 版本启动本地服务记下端口。设置环境变量把 API base 指向http://localhost:端口/v1并填入本地服务要求的 key通常随便填。启动 Claude Code验证它能否正常读写文件。这里有个关键前提本地模型必须支持function calling / tool use否则 Claude Code 的文件操作、命令执行这些能力全都用不了只能当普通聊天。我试过几个不支持工具调用的模型表现就是它一直在描述要做什么但从不真正动手非常迷惑。另外本地模型的上下文窗口和推理能力通常弱于云端复杂重构任务容易半途跑偏。我的建议是简单任务、隐私敏感任务走本地复杂架构任务还是用云端别硬扛。4.2 多 MCP 同时挂载时的冲突与隔离当你同时挂了文件系统、数据库、浏览器、设计稿好几个 MCP Server会出现几个典型问题工具名冲突两个 Server 都提供了叫search的工具AI 调用时可能选错。上下文膨胀每个 Server 的工具描述都塞进上下文token 消耗飙升模型反而变笨。权限交叉数据库 Server 能删表文件 Server 能删文件AI 一次误操作可能造成连锁反应。我的处理原则是按任务场景分组挂载而不是一次全开。做后端开发时只挂文件系统和数据库做前端联调时挂文件系统和浏览器做设计还原时挂文件系统和设计稿 MCP。这样既省 token又降低误操作面。如果确实需要同时挂多个给每个 Server 起语义清晰的名字比如db_readonly、fs_project让 AI 在工具选择时有更明确的线索。4.3 用 Agent Skills 把重复流程固化下来Claude 的 Agent Skills 机制值得单独说一句。它允许你把一套固定的操作流程比如发布前检查清单新模块脚手架生成写成可复用的技能AI 在需要时自动加载。这本质上是把团队 SOP 变成了 AI 可执行的资产。举个我实际用的例子我写了一个新增 API 端点的 Skill里面规定了要同时改路由、加测试、更新 OpenAPI 文档、写迁移。以前每次都要口头交代一遍现在 AI 一触发这个 Skill 就按全套流程走漏项率大幅下降。这是 AI-Native SDLC 里最被低估的一环——流程知识的结构化沉淀。5. 把 AI 嵌进交付链路从单点工具到完整工作流5.1 一个可落地的日常开发闭环说了这么多工具最终要落到每天怎么用。我现在的日常闭环大致是这样需求理解阶段把需求文档丢给 AI让它先复述一遍理解并列出它认为模糊的点。这一步能提前暴露需求歧义。方案设计阶段让 AI 基于 CLAUDE.md 里的项目约定给出实现方案和涉及的文件清单我确认后再动手。编码阶段AI 按方案改代码每改完一个模块就跑一次测试而不是全部改完再测。自检阶段让 AI 自己 review 一遍改动重点看边界条件和错误处理。提交阶段AI 生成符合规范的提交信息我确认后提交。这个闭环的核心思想是小步验证。AI 一次性改十个文件然后全崩排查成本极高改一个验一个问题定位快得多。5.2 团队协作时最容易翻车的地方个人用 AI 和团队用 AI 是两码事。团队场景下我见过几个高频翻车点CLAUDE.md 各写各的每个人本地一份规范不统一AI 行为不一致。应该把 CLAUDE.md 纳入版本控制像代码一样 review。MCP 配置散落有人挂了数据库写权限有人挂了生产环境连接串。应该统一配置模板敏感连接串走环境变量不进仓库。AI 生成的代码没人 review这是最危险的。AI 写的代码看起来对但可能藏着安全漏洞或性能陷阱。AI 可以写但必须有人签字。过度依赖导致能力退化团队里如果没人真正理解底层逻辑出问题时连排查方向都没有。保持核心成员的手写能力很重要。5.3 成本与效率的真实权衡最后聊点实在的。AI-Native SDLC 不是免费的午餐它的成本体现在几处成本项表现应对Token 消耗长上下文任务费用高按场景挂载 MCP精简 CLAUDE.md学习曲线配置 MCP、调本地模型要时间先跑通最小闭环再逐步扩展Review 负担AI 产出快人工审核跟不上建立自动化检查lint、测试先过滤返工风险需求描述不清导致方向错强制先复述再动手我的体会是AI-Native 的收益不在写代码更快而在把重复的、结构化的、有明确规范的工作自动化掉。真正省时间的是那些你本来就要做、但每次都要重复交代的事——脚手架、测试、文档、提交规范。把这些固化进 CLAUDE.md 和 Skills收益才稳定。至于那些需要判断力、需要权衡取舍的架构决策AI 目前还是辅助角色。把它当执行力极强的初级工程师来用而不是能替你做决定的架构师心态会稳很多。我在实际项目里最有效的一条经验就是让 AI 干它擅长的确定性工作把不确定性留给自己。这条线划清楚了整套流程才跑得顺。