97.9%采纳率,胶水编程:业务需求出码最佳实践【天猫AI Coding实践系列】
1. 业务需求出码为什么卡在 50% 采纳率如果你正在做 AI Coding 落地大概率遇到过这个场景Agent 能生成代码但生成出来的东西不敢直接合。组件用错、请求封装不统一、文件结构跟团队习惯对不上CR 一轮轮打回最后采纳率停在 50% 上下。这不是模型能力问题而是你给它的上下文不够“具体”。天猫团队在业务域试点半年把采纳率从 50% 拉到 90%核心动作只有一个别让 AI 从零写代码让它照着团队已有的代码抄。这套方法叫“胶水编程”——SPEC 管意图物料管执行90% 抄10% 写胶水只在缝隙处。这篇文章面向正在搭建 AI Coding 流程的前端/全栈工程师聚焦业务需求到代码的落地路径。我会把 SPEC、AGENTS.md、MCP 与 TaoToken 统一 Key/API 通道的配置骨架拆开给出可复制的 settings.json / config.toml 片段以及 CC Switch、Cline 的接入步骤和采纳率验证动作。目标很直接让你在自己的仓库里稳定复现高采纳出码。胶水编程的底层逻辑不复杂。中后台业务 90% 是 CRUD——列表页、表单页、详情页、导入导出场景高度相似。团队代码库里天然存在大量可复用模板上一个列表页的文件结构、组件选型、请求封装下一个列表页几乎能原样复制只需替换业务字段和接口地址。既然大部分代码本来就有现成参照为什么还要让 AI 从零写大语言模型的核心训练目标是预测下一个 token这让它在有参照物时表现显著优于无参照物时。给它一份已有代码作为参照它能精准拟合出风格一致的新实现。胶水编程不是限制 AI而是顺应它的能力结构——让 AI 做拟合的事。能抄不写能连不造能复用不原创。2. TaoToken 前置统一 Key 与 API 通道在展开配置之前先把模型接入这一层说清楚。胶水编程的物料体系要跑起来Agent 必须能稳定调用模型而多工具、多仓库、多人的场景下Key 管理很容易乱。TaoToken 在这里的角色是统一 Key/API 通道一个 Key 覆盖模型对话、Coding Plan、API 调用避免每个工具各配一套。官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 基地址https://taotoken.net/api不加 UTM你需要先拿到 Key再把它写进各工具的配置。下面按工具分别给配置骨架。注意Key 只存在本地配置文件或环境变量里不要提交到仓库。对于长期编码和 Agent 场景建议走 Coding Plan它在长会话、多轮工具调用下的额度策略更适合胶水编程这种“读物料 生成 校验”的循环。模型对话入口用于验证模型是否正常响应API Keys 页面用于生成和管理 Key接入文档里有各工具的详细参数说明。3. 可复制配置settings.json 与 config.toml这一节是全文的技术核心。我把 Claude Code、Cline、CC Switch 三类工具的配置拆开你可以直接复制改 Key。3.1 Claude Code 的 settings.jsonClaude Code 读取~/.claude/settings.json全局或项目级.claude/settings.json。把模型通道指向 TaoToken{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-your-taotoken-key, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, permissions: { allow: [ Read, Write, Bash(git diff:*), Bash(npm run lint:*) ] } }这里ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址ANTHROPIC_AUTH_TOKEN填你在 API Keys 页面生成的 Key。permissions.allow里放的是 Agent 在胶水编程流程中需要的高频动作——读文件、写文件、看 git diff、跑 lint。把 lint 放进 allow 列表很关键它让 Agent 在生成后能自检减少 CR 打回。3.2 Cline 的 config.tomlCline 在 VS Code 里通过配置文件接入。如果你用的是兼容 Anthropic 协议的模式配置如下[api] provider anthropic base_url https://taotoken.net/api api_key sk-your-taotoken-key model claude-sonnet-4-20250514 [agent] max_tokens 8192 temperature 0.2 [mcp_servers.knowledge] command npx args [-y, your-org/knowledge-mcp-server] env { KNOWLEDGE_API https://internal.example.com/knowledge }temperature 0.2是胶水编程的推荐值——低温度让 Agent 更倾向于“抄”而不是“发挥”。mcp_servers.knowledge这一段对应领域知识层Agent 在编码过程中通过 MCP 协议按需检索内部组件文档和踩坑记录。3.3 CC Switch 的接入步骤CC Switch 用于在多个模型通道之间切换。接入 TaoToken 的步骤第一步打开 CC Switch 的配置目录找到providers.json。第二步新增一个 provider 条目{ name: taotoken, baseUrl: https://taotoken.net/api, apiKey: sk-your-taotoken-key, models: [ claude-sonnet-4-20250514, claude-opus-4-20250514 ] }第三步在 CC Switch 界面里把当前激活的 provider 切到taotoken然后重启你的编码工具。第四步验证在 Claude Code 里输入/status确认 base URL 显示为taotoken.net/api。3.4 AGENTS.md 的静态注入骨架开发规范通过 AGENTS.md 交付给 Agent。这份文件放在仓库根目录打开仓库时自动加载。一个可用的骨架# AGENTS.md ## 物料依赖 - 优先使用 internal/admin-components禁止直接从 antd 导入 - 查包用法走 MCP 工具 knowledge.search ## 请求规范 - 使用 createFetch 系列接口地址必须以 / 开头 - URL 格式key://pathname ## 组件规范 - 导入导出使用 FileExport / FileImport 标准用法 - 表格统一使用 ProTablecacheKey 必须全局唯一 ## 页面结构 - 参考 reference/ 目录下最接近的样板间 - 文件拆分index.tsx Form.tsx Table.tsx services.ts constants.ts这份文件的关键在于“可执行”。每一条都是 Agent 能直接判断对错的约束而不是模糊的建议。比如“cacheKey 必须全局唯一”这条Agent 在生成 ProTable 时会主动检查避免列表页和详情页数据串。4. 验证请求与成功结果配置写完必须验证通道是否通。分两步先验证模型能响应再验证 Agent 能按物料出码。4.1 验证模型通道用 curl 直接打 TaoToken 的 APIcurl -X POST https://taotoken.net/api/v1/messages \ -H Content-Type: application/json \ -H x-api-key: sk-your-taotoken-key \ -H anthropic-version: 2023-06-01 \ -d { model: claude-sonnet-4-20250514, max_tokens: 128, messages: [ {role: user, content: 回复 OK 两个字母} ] }预期返回里包含text: OK。如果返回 401检查 Key 是否复制完整如果返回 404检查 base URL 是否多了或少了/v1。4.2 验证 Agent 按物料出码在仓库里打开 Claude Code输入一个真实需求帮我做一个订单列表页参考 reference/ 下的列表页样板间观察 Agent 的行为。成功的标志有三个第一Agent 先读reference/目录下的样板间文件而不是直接开始写。这说明代码模式层生效了。第二Agent 生成的文件结构是index.tsx Form.tsx Table.tsx services.ts而不是把所有逻辑塞进一个文件。这说明样板间的骨架被复制了。第三Agent 在写请求时用了createFetch接口地址以/开头。这说明 AGENTS.md 的静态注入生效了。如果这三点都满足你的胶水编程流程就通了。接下来是采纳率验证。4.3 采纳率验证动作采纳率的口径要提前定清楚。天猫团队用的是行级加权以周期内所有 CR 合并上线的代码总行数为分母其中由 AI 生成的行数为分子。不按迭代平均避免大小迭代失真。你可以在自己的仓库里做一个小样本验证# 统计本周合并的 CR 中AI 生成的行数占比 git log --since1 week ago --prettyformat:%H | while read commit; do git show --stat $commit | tail -1 done更精确的做法是在 CR 描述里标记 AI 生成比例然后汇总。跑两周你就能看到物料体系到位前后的差异。5. 本篇常见错排查配置和验证过程中有几个坑反复出现。我按现象、原因、解法列出来。5.1 Agent 不读样板间直接开始写现象Agent 收到需求后立刻生成代码没有先读reference/目录。原因System Prompt 里没有明确要求“先查样板间”。胶水编程的 System Prompt 要把 AI 定位为“代码缝合专家”而不是“代码编写专家”。解法在 AGENTS.md 或工具的自定义指令里加上开发新页面前必须先查看 reference/ 目录下的样板间代码 理解文件结构、组件组合方式和请求封装模式。 你的任务不是从零编写而是复制最接近的样板间作为骨架 替换业务字段和接口地址只在差异点编写新代码。5.2 MCP 知识库召回不相关的内容现象Agent 通过 MCP 检索领域知识时召回了一堆不相关的条目干扰编码。原因知识库条目质量参差或者检索的 query 太宽泛。解法用“调用率 × 采纳率”做四象限分析。被频繁召回但采纳率只有 20%~30% 的条目要么优化表述要么直接删除。天猫团队做这个清理后知识库关联采纳率从 18% 提升到 35%。5.3 接口地址被网关拦截现象Agent 生成的请求代码跑不通报网关错误。原因接口地址没有以/开头。这是很多内部网关的硬性约束。解法把这条写进 AGENTS.md 的请求规范里作为不可违反的底线规则。Agent 在生成时会自动检查。5.4 ProTable 的 cacheKey 重复导致数据串现象列表页和详情页之间切换时表格数据错乱。原因两个 ProTable 用了相同的 cacheKey。解法在 AGENTS.md 里写明“cacheKey 必须全局唯一”并在知识库里补一条经验知识说明这个坑的触发条件和排查方法。5.5 SPEC 写得太草率Agent 做错功能现象Agent 生成的代码风格统一、组件正确但做的不是产品要求的功能。原因物料解决的是“怎么做”SPEC 解决的是“做什么”。两者正交互补缺一不可。解法按需求的主要复杂度特征选择 SPEC 模板。表单联动用联动规则表状态流转用状态机图多弹窗用对比表。模板的必填章节确保你把最容易遗漏的信息说清楚。6. 把物料体系跑成飞轮配置和排障都通了之后最后一步是让物料体系自己转起来。胶水编程不是一次性投入它有一个内置的正循环每次需求交付都在为物料体系补充新内容。踩过的坑沉淀为领域知识。系统检测会话中的错误信号、否定信号、反复修改行为LLM 提取后质量评分 ≥ 4 自动通过进入 MCP 可检索。天猫团队的审核通过率 93.4%覆盖 30 个仓库。好的实现提炼为代码模式。域负责人判断哪些实现值得成为新的样板间评审后补充到reference/目录。架构组维护 5 个工作台级样板间作为默认兜底域按需 fork 扩展。Day 1 覆盖率就是 100%。发现的规范缺失补充到开发规范。某个约束没写导致 Agent 犯错就加一条规则到 AGENTS.md。配置跟着仓库走不跟人走。任务规格归档为 Track。每个需求在.ai/tracks/task_id/下留下spec.md和meta.json。后续 AI 编码同一模块时自动读取历史 Track理解之前的设计决策。编码过程中方案变更了通过 Skill 触发规格同步——读取 spec.md对比 git diffAI 识别差异后生成更新建议人确认后写入。这套飞轮转起来之后你的采纳率会自己往上走。模型会换代脚手架会扔掉但团队的代码模式、领域知识、开发规范只会越积越厚。90% 抄10% 写这才是 AI 编码真正的护城河。如果你还没开始建议从 AGENTS.md 和一份样板间入手。先让 Agent 有东西可抄再逐步补齐领域知识和任务规格。TaoToken 的 Coding Plan 适合长期编码和 Agent 场景模型对话入口可以用来快速验证通道API Keys 页面管理你的 Key接入文档里有各工具的完整参数。