# weapp-tailwindcss 上手与 AI 工作流
> 快速接入、模板、CLI 与 AI 辅助编排的完整内容,优先用于回答「如何开始」「如何让 AI 生成小程序代码」类问题。
This file contains all documentation content in a single document following the llmstxt.org standard.
## AI 编程助手落地实施方案
> 你会得到:一套“能拍板、能试点、能复制”的落地方法(可治理、可控成本、可降级、可回滚)。\
> 更新时间:2025-12-29。计价说明:人民币换算按 1 USD = ¥7.2;价格与配额可能随时调整;以供应商官网与实际账单为准。
:::tip 这篇文档怎么读(别从头硬啃)
- 只想快速决策:先看「0 一页结论」→「5 座席设计」→「11 执行清单」。
- 要做试点落地:先看「6 路线图」→「7 仓库接入」→「8 日常 SOP」→「9 网络/账号/合规」。
- 研发负责人:0 / 5 / 6 / 11
- 平台与工具团队:6 / 7 / 8 / 9
- 安全合规:2 / 7 / 9
- 采购与财务:4 / 5 / 11
:::
:::note 先记住三句话(后面所有细节都在解释这三句话)
1. 合规不清楚时,默认用国产把流程跑通。
2. 海外体验好不好,80% 取决于网络与代理是否“IDE + CLI + 登录”一致。
3. 成本能不能控住,靠“座席分层 + 预算上限 + 触顶降级”,不靠自觉。
:::
---
## 0. 一页结论(先做决策,再做对比)
### 0.1 决策最短路径(建议按这个顺序拍板)
1. **合规边界**:哪些仓库/文件允许出境?是否必须审计留痕?(决定能不能用海外、能用到什么程度)
2. **网络能力**:是否能提供“IDE + CLI + 登录”同策略代理,并有备用出口与健康检查?(决定海外体验与成本是否可控)
3. **治理能力**:是否需要 SSO/团队配额/账单中心/审计?预算上限与告警责任人是谁?(决定能不能规模化)
4. **交付策略**:默认走低价/国产,高阶/海外按任务升级(而不是全员默认高阶)(决定 ROI 与成本波动)
5. **复制方式**:仓库接入模板与 SOP 能不能“一键复制”(决定试点能不能扩散)
### 0.2 快速分流(用一句话选出“主力方案”)
```mermaid
flowchart TD
A[准备引入 AI 编程助手] --> B{代码出境/合规允许吗?}
B -- 否/不确定 --> C["主力:国产(GLM/Qoder)
先把规范、仓库分级、审计与 SOP 跑通"]
B -- 是 --> D{海外网络与采购能闭环吗?}
D -- 否 --> C
D -- 是 --> E{是否要统一 IDE 作为工作台?}
E -- 是 --> F["主力:Cursor(Business/Pro)
国产作为兜底与降级"]
E -- 否 --> G["主力:Claude Code / Codex / Gemini(CLI/插件)
国产作为兜底与降级"]
C --> H[按仓库分级 + 座席分层 + 预算上限 + 可回滚]
F --> H
G --> H
```
### 0.3 默认推荐(适用于大多数公司)
- **默认主力**:国产(GLM 或 Qoder)覆盖 70-85% 日常工作(补全、小改动、单测草稿、文档草稿)。
- **能力增强**:少量海外高阶座席(Cursor/Claude/Codex/Gemini)只用于“跨文件重构/疑难排查/核心模块审查/迁移方案”等高价值任务,并要求留痕与验收。
- **落地关键**:把“仓库分级 + 接入模板 + 预算上限 + 试点评估指标 + 回滚预案”当作一套工程系统,而不是发账号。
---
## 1. 我们要解决什么问题(落地目标与边界)
### 1.1 业务目标(建议写进 OKR)
- **效率**:提升日常编码速度(补全、重构、脚手架、查错、写测试、写文档)。
- **质量**:减少低级错误、提升可读性、一致性、单测覆盖率、PR 审查质量。
- **稳定**:在网络抖动/供应商限流/额度耗尽时,不影响核心交付(可降级/可回滚)。
- **合规**:明确哪些仓库/文件可用于 AI,上线前把出境、日志、留存、审计走通。
- **成本可控**:把“按量爆炸”风险降到最低(预算、告警、上限、分层座席)。
### 1.2 范围边界(避免项目失控)
- 本文仅讨论 **订阅型** AI 编程产品落地(IDE/CLI/Code Assist 套餐),**不单独设计“直接调用 API”的落地方案**。
- CI/CD 自动化如果要用 AI,优先使用供应商提供的 **官方能力**(如 PR Review、官方 CLI/插件),不建议自研“无限制 API 调用”。
- “AI 生成的代码”一律视为 **外部输入**:必须通过测试、代码审查、静态检查;不得直接上生产。
### 1.3 术语(让跨团队对齐)
- **补全**:Tab/Inline completion,一般成本最低、收益最高。
- **Chat / Agent**:对话式改代码、跨文件重构、读写文件、跑命令;成本更高、也更容易触碰合规边界。
- **座席分层**:并不是每个开发都用同样档位;核心成员/架构师/平台组用更高档位,其它人用基础档位。
- **仓库敏感度**:涉密/受限/合规严格的仓库与开源/公共仓库,允许的模型与策略不同。
---
## 2. 选型原则(先解决网络与合规)
### 2.1 两道门槛(Gate):先能用、再用好
- **Gate A:合规与数据边界**(能不能用、能用到什么程度)
- 代码出境是否允许?允许到什么仓库等级/目录/分支?
- 是否必须可审计(谁在什么仓库用过什么能力)?日志如何留存、谁能访问?
- **Gate B:网络与采购闭环**(能不能稳定用、成本能不能控住)
- 是否能提供“IDE + CLI + 登录”同策略代理,并有备用出口与健康检查?
- 账号归属、统一账单、成本分摊、预算上限与告警责任人是否明确?
结论:**两道门槛都过了,海外能力才适合作为日常增强;任一没过关,优先按国产方案落地,把 SOP 与治理跑通,再引入海外。**
### 2.2 前提清单(要求“可验证”,避免口头承诺)
- 海外网络稳定:有健康检查数据(延迟/失败率)与备用出口;IDE 与 CLI 同策略;故障有降级预案。
- 合规已确认:书面结论明确出境范围;敏感目录黑名单可配置;审计与留存要求能落地。
- 采购支付可闭环:统一账单与成本中心;预算上限、告警阈值、责任人明确;离职回收流程明确。
- 用量能治理:团队配额/个人上限/触顶降级策略可执行(而不是“靠自觉”)。
### 2.3 怎么对比(前提满足后再对比)
| 维度 | 权重建议 | 评分要点(示例) | 怎么验证(建议) |
| ---------- | -------- | ------------------------------------------------ | ----------------------------------------------- |
| 合规/数据 | 30% | 出境边界、敏感路径屏蔽、审计日志、企业条款 | 合规书面结论 + 管理后台能力验证 + 试点抽样审计 |
| 可治理性 | 20% | 团队配额、SSO、成员管理、账单中心、管理员策略 | 管理后台演示/截图 + 账号回收演练 + 账单样例 |
| 体验与产能 | 20% | 补全质量、跨文件编辑、上下文、延迟、稳定性 | 用统一任务集试点对比(见 6.1/8.2 的场景) |
| 成本与可控 | 15% | 订阅单价、超额机制、是否易“按量爆炸”、是否可降级 | 账单实测 + 触顶降级演练 + 故障重试成本估算 |
| 集成能力 | 10% | VS Code/JetBrains/CLI/PR Review 支持、可配置性 | 在 1-2 个真实仓库接入验证(模板/忽略规则/命令) |
| 供应商风险 | 5% | 区域可用性、风控、服务 SLA、支付风险 | 历史可用性记录 + 支付与风控预案 + 可替代性评估 |
打分建议:每个方案 1-5 分,乘以权重;**先预设权重与通过条件**,试点后再复盘调整(避免“移动门槛”)。
### 2.4 选型评审要交付什么(避免只留一句“选 A”)
- 推荐结论:**主力方案 + 备份/降级方案**(故障/额度/风控时怎么切换)。
- 约束条件:仓库分级策略、允许能力(补全/对话/Agent)、审计与留存要求。
- 座席设计:分层(L1-L4)、升级流程、个人上限与团队配额、触顶降级策略。
- 落地计划:12 周里程碑(试点范围、复制范围、验收指标与 Go/No-Go)。
- 风险与缓解:合规、网络、供应商、成本波动、误改与质量风险,以及对应回滚方案。
---
## 3. 方案概览(我们讨论的 4 种可落地方案)
> 提示:如果网络/合规未就绪,先看 GLM/Qoder 两行,其它方案先当作备选。
| 方案 | 定位 | 典型个人月成本 | 典型团队 5 人月成本 | 关键依赖 | 适用结论 |
| ---------------------------- | -------------------- | -------------------- | ------------------- | --------------- | ------------------------------ |
| Cursor | AI IDE(统一工作台) | ¥144(Pro) | ~¥1,440(Business) | 海外网络/信用卡 | 体验优先、愿意统一 IDE 的团队 |
| Claude Code / Codex / Gemini | 海外订阅(插件/CLI) | ¥136-216 | ¥900-1,900 | 海外网络/信用卡 | 已有海外账单、偏 CLI/PR Review |
| GLM | 国产高刷新额度 | ¥100(Pro) | ~¥500(Pro\*5) | 无需代理 | 国内合规/报销友好、主力方案 |
| Qoder | 国产/混合路由 | ¥144-432(Pro/Pro+) | ~¥1,080(Teams\*5) | 国产为主 | 需要审计与团队管理、混合路由 |
---
## 4. 价格与额度(只保留对企业/大多数人有用的档位)
> 说明:下表用于预算与座席设计,不用于“攀比模型能力”。落地时真正影响成本的是:谁用高档位、是否有上限、网络稳定性(减少重复调用)、是否有明确的“默认低价模型策略”。
:::note 额度口径(先搞清楚你买的是什么)
不论是 Cursor、Kiro、GitHub Copilot 这类产品,本质上都是“使用 AI 的工作台/入口 + 各自最佳实践的工程化封装”,它们并不等同于某一个模型本身。
购买订阅时,你通常同时买到了两件事:
1. **工具能力**:IDE/插件/Agent 工作流、上下文管理、代码索引、团队治理等。
2. **供应商二次封装的模型调用额度**:对外表现为“对话次数/请求次数/快速请求/每周配额”等(而不是你能直接对账的 token 用量)。
优劣势也来自这里:
- **优势**:可以在不同模型之间切换/路由,按任务选“更强/更便宜/更稳”的模型;同时工具会给出默认提示词、工作流与防呆策略。
- **劣势**:你往往看不到真实 token 消耗与单次请求的边际成本;而按“对话/请求”计数时,**简单任务与复杂任务可能消耗同样 1 次额度**,导致成本预测与审计颗粒度变粗。
落地建议:预算口径按“座席 + 额度”做上限控制,同时用“默认低价模型 + 触顶降级 + 高阶任务审批/白名单”把波动压住。
:::
### 4.1 Cursor(官网可访问:已核实)
| 套餐 | 月付 | 年付折算 | 适用人群(企业落地建议) | 人民币估算 |
| -------- | -------- | -------- | ----------------------------- | ------------ |
| Pro | $20 | $200 | 普通开发(愿意用 Cursor IDE) | ¥144/月 |
| Pro+ | $60 | - | 核心开发/架构师(重度 Agent) | ¥432/月 |
| Business | $40/用户 | - | 需要 SSO/审计/团队配额的团队 | ¥288/用户/月 |
| Ultra | $200 | - | 极重度座席(专项、平台组) | ¥1,440/月 |
来源:(抓取到 Pro/Pro+/Ultra/Business)。
### 4.2 海外订阅(Claude Code / Codex / Gemini)
> 说明:海外产品的定价页可能因地区风控(如 Cloudflare)、登录态或动态渲染而不易自动抓取;以下仅保留“企业普遍会用的档位”与常见区间用于预算讨论。正式采购前请以供应商官网与合同条款再次核对。
| 方案 | 企业常用档位 | 常见价格(USD) | 适用人群 | 关键注意点 |
| ------------------ | --------------------- | ------------------------------------- | ----------------------- | ---------------------------------- |
| Claude Code | Pro / Teams | $20 / $40/用户 | CLI/Agent 重度团队 | 区域可用性、周配额、超额策略 |
| Codex / ChatGPT | Team | ~$25/用户(年付)或 ~$30/用户(月付) | 跨团队通用 | 网页难抓取,采购前核对;设账单上限 |
| Gemini Coding Plan | Standard / Enterprise | $19 / $45 | 有 PR Review 诉求的团队 | GCP 账单体系、日配额、账号治理 |
### 4.3 GLM Coding Plan(国产,主力)
| 套餐 | 月费 | 刷新周期 | 日可用(4-5 次刷新) | 企业落地建议 |
| ---- | ---- | --------- | -------------------- | ----------------- |
| Pro | ¥100 | 每 5 小时 | 2400-3000 次 | 默认给大多数研发 |
| Max | ¥400 | 每 5 小时 | 9600-12000 次 | 核心座席/批量任务 |
### 4.4 Qoder(国产/混合)
| 套餐 | 月付标价(USD) | 人民币估算 | 企业落地建议 |
| --------------- | --------------- | ------------ | ----------------------- |
| Pro | $20 | ¥144/月 | 普通席位 |
| Pro+ | $60 | ¥432/月 | 核心席位/偶尔重任务 |
| Ultra | $200 | ¥1,440/月 | 极重度席位(专项/平台) |
| Teams(按席位) | $30/用户 | ¥216/用户/月 | 需要审计/团队治理 |
说明:Qoder 定价接口会返回折扣字段(如 `discountedPrice` / `firstMonthPrice`),活动可能变化;预算建议按标价估算更稳。\
页面:。\
接口(用于抓取标价/折扣字段):、。
---
## 5. 企业级座席设计(怎么买才不浪费)
### 5.1 分层座席(推荐)
| 层级 | 占比建议 | 目标 | 推荐档位(示例) |
| ------------- | -------- | -------------------------- | --------------------------------------------- |
| L1 普通开发 | 70-85% | 日常补全+小改动 | GLM Pro / Qoder Pro / Cursor Pro |
| L2 核心开发 | 10-20% | 跨文件改造、重构、疑难排查 | Cursor Pro+ / GLM Max / Qoder Pro+ |
| L3 审查/架构 | 3-8% | 评审、设计、复杂迁移 | Claude Code Teams / Cursor Business / GLM Max |
| L4 平台与专项 | 1-3% | 规范化、模板化、内建流程 | Cursor Ultra(少量)/ GLM Max |
### 5.2 典型公司规模预算模板
> 这里的关键是“组合”,而不是单点选择。你可以把海外座席当作“稀缺资源”,像数据库/CI 一样管理。
#### 10 人团队(初期)
- 8 人:GLM Pro(8 \* ¥100 = ¥800/月)
- 2 人:Cursor Pro(2 \* ¥144 = ¥288/月)或 Qoder Pro(2 \* ¥144 = ¥288/月)
- 合计:约 ¥1,000/月(视组合而定)
#### 30 人团队(业务线)
- 24 人:GLM Pro(¥2,400/月)
- 4 人:GLM Max(¥1,600/月)
- 2 人:海外高阶(Cursor Pro+/Claude Code Teams 按需)
- 合计:约 ¥4,000-6,000/月
#### 100 人公司(多业务线)
- 80 人:GLM Pro
- 15 人:Qoder Teams 或 GLM Max(根据是否需要审计/团队治理)
- 5 人:海外增强座席(Cursor Business/Claude Teams)
- 合计:根据审计诉求与海外座席数量决定,建议先做试点测算再采购。
---
## 6. 落地路线图(公司多团队循序渐进)
> 落地不是“一天开通全员账号”,而是建立 **规范 + 试点 + 复制 + 治理** 的闭环。
### 6.1 建议里程碑(12 周模板,可按公司节奏调整)
| 周期 | 目标 | 关键交付 | 通过标准(能不能进下一阶段) |
| ----------- | ---------- | -------------------------------------------------- | ---------------------------------- |
| 第 1-2 周 | 准备与对齐 | 使用规范、代理方案、仓库分级、预算与告警、试点名单 | 代理可用 + 合规确认 + 预算可控 |
| 第 3-6 周 | 试点落地 | 试点团队跑通补全/对话/审查 SOP;建立指标看板 | 指标不比基线差,且成本可解释 |
| 第 7-10 周 | 复制扩展 | 同业务线 3-5 个团队复制模板、固化仓库接入规范 | 运营体系可规模化(账号/配额/培训) |
| 第 11-12 周 | 公司级治理 | 座席分层、审计流程、离职回收、季度复盘机制 | 有回滚预案 + 能输出管理报告 |
### 6.2 角色与 RACI(建议落地前先定责)
| 事项 | 研发负责人 | 平台/中台 | 安全合规 | 采购财务 | 业务团队 TL |
| -------------- | ---------- | --------- | -------- | -------- | ----------- |
| 方案选型与原则 | A | C | C | C | C |
| 代理/网络方案 | C | A/R | C | - | C |
| 仓库分级与红线 | C | R | A/R | - | C |
| 账号/SSO/回收 | C | A/R | C | - | C |
| 预算/账单/告警 | A | R | C | A/R | C |
| 培训与推广 | C | R | C | - | A/R |
| 试点验收 | A | R | C | C | A/R |
说明:A=最终负责,R=执行负责,C=协作/咨询。看不懂 RACI 也没关系:关键是每一项都有明确“拍板的人”和“干活的人”。
### 6.3 试点怎么做,结果才“说得清”
很多试点翻车不是“工具不行”,而是两件事没做好:**口径不统一**、**过程不可复用**。下面这套做法的目标很简单:试点结束后,你能用数据和案例回答清楚——“值不值、为什么值、下一步怎么扩”。
**(1) 先写清楚:通过/不通过的条件(避免试点结束才开始争论)**
- 选 4 类指标(见阶段 1):产能、质量、体验、成本;每类至少 1 个“硬指标”。
- 写清楚“最低可接受标准”,例如:
- 质量不下降:CI 失败率、线上缺陷率不高于基线(或有明确可解释原因)。
- 成本可控:人均月成本不超过预算上限;触顶/故障重试可被降级策略吸收。
- 体验可用:95 分位延迟与失败率在可接受区间(由平台/IT 提供数据)。
**(2) 用一套“真实任务样本”对比(避免“挑题做”)**
建议准备 10-20 个“真实任务样本”,覆盖 8.2 的高 ROI 场景,并记录最少信息:
| 字段 | 说明 |
| ----------- | ---------------------------------------------- |
| 任务类型 | 补全/小 bug/跨文件重构/补单测/PR Review/文档 |
| 仓库等级 | S0/S1/S2(决定允许能力与工具) |
| 复杂度 | 低/中/高(或 Story Points) |
| 基线耗时 | 试点前同类任务平均耗时(2-4 周窗口) |
| AI 辅助耗时 | 试点期间耗时(含验证时间) |
| 验证方式 | 跑了哪些命令/截图/日志 |
| 成本与失败 | 是否发生重试/超额/代理故障(以及怎么降级处理) |
**(3) 先把常见“试点错觉”写进复盘(避免“看起来提升”)**
- **人选偏差**:只让最强/最爱尝鲜的人用 → 尽量选“正常团队”,或分批灰度做对照。
- **新鲜感效应**:前 1-2 周提升很大、后面回落 → 试点至少 2-4 周,并单独看第 3-4 周的表现。
- **指标选错**:只看提交数会鼓励碎片化 → 同时看交付周期、返工率、缺陷率等质量指标。
- **外部干扰**:大版本/大促/人手变动会影响指标 → 记录关键事件,必要时只对同类任务做对比。
**(4) 试点结束必须产出的 3 件东西(否则很难复制)**
- “一页结论”:是否通过、通过条件是否满足、主要收益与代价、是否建议扩展。
- “可复制资产”:仓库接入模板(7.2)、日常 SOP(8)、培训材料、故障降级预案(9.1.5)。
- “治理数据”:账单样例、触顶次数、降级次数、代理故障次数、抽样审计结果。
### 阶段 0:基础准备(1-2 周)
**输出物(交付件)**
- 《AI 编程使用规范》(Do/Don’t、允许的仓库/文件类型、敏感信息处理)。
- 《网络与代理配置手册》(IDE/CLI 统一代理、故障排查)。
- 《座席分层与预算》(谁能用什么、如何申请升级、超额如何处理)。
- 《审计与留痕要求》(日志保存、审批流、回滚机制)。
**关键动作**
- 网络:确定海外代理出口、白名单域名、稳定性指标(例如 95 分位延迟 < 300ms)。
- 合规:建立“仓库分级”(涉密/一般/开源),明确每级允许的模型与功能(仅补全/允许 Agent/禁止上传)。
- 采购:海外信用卡/虚拟卡管控;国产发票与成本中心;设置预算上限与告警责任人。
- 工程:统一 PR 模板与仓库接入模板(`AI_RULES.md`/`.aiignore`/`.cursorignore`/`CLAUDE.md`),并要求所有新仓库默认带上。
- 指标:在试点前先采集 2-4 周基线(交付周期、PR 数、缺陷率、CI 失败率),否则试点“效果”无法客观评估。
### 阶段 1:试点(2-4 周,1-2 个低风险团队/仓库)
**选试点的原则**
- 优先选择:非涉密、迭代快、指标容易量化(例如 Web/工具链/中台项目)。
- 避免选择:强合规、强审计、外包多、依赖复杂且无法量化的项目作为第一个试点。
**试点最小可行配置(MVP)**
- 主力:GLM Pro 或 Qoder Pro(覆盖绝大多数人日常)
- 增强:1-2 个海外座席(Cursor Pro 或 Claude Code Pro),用于复杂任务对比
- 策略:默认国产/低价模型;高阶模型必须手动切换并记录原因(模板见后文)
**验收指标(建议至少选 4 个)**
- 产能:人均提交数/PR 数、交付周期、返工率(对比试点前 2-4 周基线)。
- 质量:PR 审查发现问题数、线上缺陷率、单测增量。
- 体验:补全采纳率、平均响应时间、失败率/重试率。
- 成本:人均月成本、超额次数、代理故障导致的重复调用次数。
- 对比口径:尽量按“同类任务 + 同时间窗口”对比,并记录版本发布/需求波峰等关键事件,避免把波动误判为收益或损失(见 6.3)。
**回滚预案**
- 一键禁用:插件/IDE 可快速关闭;路由切换到国产。
- 代理故障:提供备用节点/备用出口;明确故障期间“只允许补全,不允许 Agent”。
### 阶段 2:业务线扩展(4-8 周,同业务线复制)
**复制的关键不是“发账号”,而是“复制模板”**
- 复制:代理配置、索引黑名单、仓库接入模板、培训材料、指标看板。
- 分层路由:
- 基线:国产(GLM/Qoder)+ 本地索引。
- 提升:评审/复杂改造才切海外高质量模型(需要审批或留痕)。
- 限额:按团队等级设月/周上限,触顶自动降级到国产/低价。
**推广培训**
- 10-15 分钟“快速上手”培训:快捷键、常用 Prompt、如何让 AI 写测试、如何审查 AI 输出。
- 30-45 分钟“进阶训练营”(核心成员):跨文件重构、定位性能问题、生成迁移方案、拆分任务。
### 阶段 3:全公司规模化(持续)
**公司级治理要点**
- 账号与权限:SSO/成员管理;离职/转岗自动回收;关键岗位开更高档位。
- 指标与报表:月度用量、超额、延迟、故障次数、单位 PR 成本;对管理层输出 1 页报告。
- 规范固化:将“AI 生成代码必须跑测试/必须评审”的规则写进工程模板与 PR 模板。
### 阶段 4:优化与复盘(季度节奏)
- 成本优化:把高阶模型使用集中到“收益最大”的场景(评审、迁移、疑难);日常用低价/国产。
- 体验优化:根据延迟与失败率,优化代理与路由策略;必要时切换主力供应商。
- 合规复核:更新敏感目录黑名单、出境白名单;抽样审计调用日志与 PR 记录。
---
## 7. “落地到每个项目”怎么做(仓库接入规范)
### 7.1 仓库分级(强烈建议公司统一)
| 等级 | 示例 | 允许的能力 | 建议工具 |
| ------------ | ------------------ | ---------------------------------------------------- | ------------------------------ |
| S0(涉密) | 核心算法、密钥仓库 | 禁止出境;允许本地索引;仅允许国产且禁止上传敏感文件 | GLM/Qoder(国产,本地索引) |
| S1(内部) | 大多数业务仓库 | 国产为主;海外白名单座席可用;必须审计 | GLM/Qoder + 少量 Cursor/Claude |
| S2(低风险) | 开源/公共/示例 | 可用海外;可更激进试验 Agent | Cursor/Claude/Codex/Gemini |
### 7.2 每个仓库必须配置的“AI 约束文件”
> 目标:让 AI 有项目上下文,同时明确“哪些不能碰”。这些文件的最大价值在于“减少误用与泄漏”,并让新团队快速复制。
**建议统一放在仓库根目录:**
- `AI_RULES.md`:团队规则(允许/禁止上传目录、如何提问、审查要求)。
- `.aiignore`:敏感目录黑名单(`.env`、`secrets/`、`*.pem`、`id_rsa`、`*.p12`、`*.key` 等)。
- `docs/ai/`:放团队 Prompt 模板、示例、常见问题。
**如使用 Claude Code:**
- `CLAUDE.md`:声明项目结构、命令、测试入口、禁止触碰目录、代码风格。
**如使用 Cursor:**
- `.cursorignore`:同 `.aiignore`,并补充构建产物目录(`dist/`、`node_modules/`)。
#### 模板:`.aiignore`(建议公司统一并长期维护)
```gitignore
# Secrets / credentials
.env
.env.*
secrets/
**/secrets/
*.pem
*.key
*.p12
id_rsa
id_ed25519
# Customer / production data
data/
**/data/
*.sql
*.dump
*.bak
*.log
# Build outputs / noise
node_modules/
dist/
build/
coverage/
.turbo/
.next/
```
#### 模板:`AI_RULES.md`(每个仓库都应有)
```md
# AI 使用规则(本仓库)
## 允许
- 允许:补全、代码解释、小范围改动(限定目录)
- 允许:生成测试草稿(仅新增测试文件)
- 允许:生成文档草稿(需人工校对)
## 禁止
- 禁止上传/粘贴:任何密钥、证书、客户数据、未脱敏日志、数据库导出
- 禁止让 AI 修改:鉴权/支付/风控/数据出境相关代码(必须人工主导)
- 禁止在 S0 仓库使用海外模型
## 目录约束
- 允许改动目录:src/
- 禁止改动目录:secrets/、scripts/release/、infra/
## 验证要求
- 所有 AI 改动必须跑:pnpm test
- 有 UI 的必须提供:截图或录屏
```
#### 模板:`.cursorignore`(Cursor 仓库)
```gitignore
# Prefer reusing .aiignore content
.env
.env.*
secrets/
node_modules/
dist/
build/
coverage/
.turbo/
.next/
```
#### 模板:`CLAUDE.md`(Claude Code 仓库)
```md
# Project guidance for Claude Code
## Repo overview
- Tech stack: TypeScript (ESM), pnpm workspace
- Style: 2-space indent, keep changes minimal and focused
## Commands
- Install: pnpm install
- Test: pnpm test
- Lint: pnpm lint
- Format: pnpm format
## Do / Don't
- DO keep edits scoped; prefer small PRs
- DON'T touch secrets/, .env*, certificates, or customer data
- DON'T change release scripts unless explicitly asked
## Where to make changes
- Prefer editing: packages/**/src
- Tests live in: **/__tests__ or **/test
```
### 7.3 PR 模板必须加的两条(防止 AI 直上生产)
- “本 PR 是否使用 AI 生成/改写代码?若是,说明使用范围与已做的验证(测试/手工验证)。”
- “涉及安全/权限/支付/数据出境变更时,必须标记并请求安全复核。”
### 7.4 为每个项目沉淀 Skill(把 SOP 变成可复制资产)
> 这里的 Skill 指“可复用的提示词/工作流模板”(Codex CLI/内部 Agent 的本地 Skill),不是 Claude Code 的 npm Skill(见 [Skill(技能系统)](./basics/skill))。
#### 7.4.1 为什么要做
- **把“怎么问 AI”产品化**:把高 ROI 的提问方式固化下来,新人照做就能用。
- **降低合规与误改风险**:把禁止目录、验收清单、默认命令写进 Skill,减少口头传达。
- **减少重复沟通成本**:同类项目的 SOP 复用,跨团队复制更快。
#### 7.4.2 每个项目的“最小 Skill 套件”(建议至少 5 个)
| Skill(示例命名) | 解决什么 | 必填输入(写进 Skill) | 输出/验收标准(写进 Skill) |
| ------------------------ | ----------------------- | ---------------------------- | ---------------------------------- |
| `project-onboarding` | 新人/新模型快速理解项目 | 项目结构、关键目录、风格规范 | 先复述约束;给出常用命令与入口 |
| `project-safe-change` | 小改动不跑偏 | 允许/禁止目录、不可改行为 | 输出变更清单 + 风险点 + 验证命令 |
| `project-bug-triage` | 定位 bug 与最小复现 | 如何跑本地、日志位置、开关 | 先给“复现步骤/假设列表/验证计划” |
| `project-test-writer` | 补测试草稿 | 测试框架、目录约定、运行命令 | 只新增测试文件;覆盖边界;能跑通 |
| `project-release-helper` | 发版/变更日志/版本策略 | 发版命令、分支策略、制品产出 | 产出 checklist;禁止直接改发布脚本 |
> 补充可选:前端项目加 `project-ui-regression`(截图/对照)、后端项目加 `project-api-contract`(接口变更与兼容)、工具链项目加 `project-ci-debug`(CI 失败定位)。
**Monorepo(pnpm workspace/Turbo 等)建议额外加 3 个**
- `monorepo-build-matrix`:把“每个 workspace 怎么 build/test/lint”的矩阵固化,避免只跑了错误的命令。
- `monorepo-deps-guard`:依赖升级/新增依赖的规则(workspace 协议、版本范围、锁文件策略、回滚方式)。
- `monorepo-release-flow`:发版与包发布的分步流程(变更集/版本号/制品校验/回滚点)。
**按项目类型,常见“加餐 Skill”**
| 项目类型 | 建议新增 Skill | 关注点(写进 Skill 的约束/验收) |
| ------------------------------- | -------------------------- | -------------------------------------------------------- |
| UI/小程序/前端应用 | `project-ui-regression` | 必须给截图/录屏;必须跑构建;避免一次性大改 UI |
| 核心库/工具包(packages) | `project-api-compat-guard` | 不破坏公共 API;必须补单测;必要时更新变更日志/Changeset |
| 性能敏感模块 | `project-perf-check` | 需要基准对比;避免引入 O(n²);给出性能验证方式 |
| e2e/快照密集项目 | `project-snapshot-guard` | 明确何时允许更新快照;更新必须附原因与验证命令 |
| 文档站/示例工程(website/demo) | `project-docs-sync` | 代码片段要可运行;链接不失效;示例与包版本同步 |
| CI/脚本/发布链路 | `project-ci-debug` | 只做最小改动;先复现再修;必须提供回滚点与验证日志 |
**企业级 Skill 库建议分 3 层(避免“每个项目各写一份”)**
- **公司基线(Company Baseline)**:合规红线、验收清单、默认输出格式、PR 声明模板。
- **技术栈预设(Stack Presets)**:Node/Java/Go/小程序等常用命令与目录约定(测试/构建/格式化)。
- **项目覆盖(Project Overrides)**:只写这个项目独有的入口、特殊目录、特殊回滚策略。
#### 7.4.3 Skill 规格模板(统一输入/输出,便于复制与审计)
为避免 Skill 退化成“散落的提示词”,建议所有项目 Skill 统一用同一份规格模板(内容可精简,但字段要齐):
```md
# Skill:
## Purpose(目的/适用场景)
- 解决什么问题?适用哪些任务?不适用哪些任务?
## Guardrails(红线与边界)
- 禁止目录/文件类型:
- 禁止行为(例如:改鉴权/支付/数据出境;改发布脚本):
- 允许改动目录:
- 是否允许新增依赖?(默认不允许)
## Commands(项目命令)
- Install:
- Build:
- Test:
- Lint/Format:
## Output Format(输出格式要求)
- 变更点列表(文件级)
- 风险点与兼容性说明
- 验证命令与预期结果
- 回退策略(如何撤销/如何拆小 PR)
## Acceptance Criteria(验收标准)
- 必须通过哪些检查/测试?
- 是否需要截图/日志/性能对比?
- 是否需要更新文档/变更日志/Changeset?
```
#### 7.4.4 治理建议(避免 Skill 变成“散落的提示词”)
- **归属**:公司级通用 Skill 由平台/中台维护;项目 Skill 由项目 TL 维护(但必须走 code review)。
- **存放**:建议用独立仓库集中管理(便于版本化与审计),并按“项目/技术栈”分组。
- **变更管理**:Skill 的更新要附带“验证任务/验证命令”;重大变更先在试点团队灰度。
---
## 8. 日常使用 SOP(把 AI 变成标准流程)
### 8.1 默认路由策略(最重要的一条)
- **默认**:国产/低价模型(用于补全、小改动、查错、写注释、生成测试草稿)。
- **升级条件**:跨文件重构、架构迁移、复杂 bug、性能问题、核心模块 PR 审查 → 申请或切换到高阶模型。
- **禁止条件**:涉密仓库、密钥/证书/个人信息文件、未脱敏的生产日志、客户数据。
#### 8.1.1 任务分级与“用什么档位”(减少争论、降低成本)
| 任务类型 | 推荐默认 | 何时升级到高阶/海外 | 验收要点 |
| ------------------------ | ----------------------- | --------------------------- | ---------------------- |
| Tab 补全/重命名 | 国产/低价 | 一般不需要 | lint/类型检查通过 |
| 小范围修 bug(1-2 文件) | 国产/低价 | 需要跨模块定位/复杂并发问题 | 有最小复现 + 单测覆盖 |
| 重构(跨 3+ 文件) | 国产(核心席位可高阶) | 影响公共 API/核心模块 | 拆小 PR + 每步测试 |
| 单测补齐 | 国产/低价 | 复杂边界/并发/时序 | 断言合理 + 覆盖边界 |
| PR Review | 国产/低价(或工具自带) | 核心模块/安全模块 | 只做建议,人工裁决 |
| 文档/变更日志 | 国产/低价 | 对外发布、合规文本 | 人工校对、避免事实错误 |
#### 8.1.2 AI 输出的“最小验收清单”(团队统一口径)
- 改动范围是否符合约束(目录/文件/接口)?
- 是否引入新依赖或新权限?如果有,是否经过评审?
- 是否提供了可复现的验证方式(命令/截图/日志)?
- 是否通过:类型检查、lint、单测(至少跑到与改动相关的部分)?
- 是否新增/更新了测试覆盖关键分支?
- 是否存在“看似合理但业务语义错误”的风险点(尤其是边界条件)?
### 8.2 六类高 ROI 场景(建议先打穿)
1. **补全与重命名**:提高编码速度,成本低。
2. **代码解释与定位 bug**:让 AI 先给可能原因 + 最小复现路径,再人工确认。
3. **重构与抽象**:先让 AI 提方案(分步、小 PR),再逐步执行。
4. **单测生成**:只生成草稿;必须人工校对断言与边界;必须跑测试。
5. **PR 审查**:AI 先扫出明显问题(命名、空指针、边界、性能),人工做最终裁决。
6. **文档与变更日志**:自动生成草稿,发布前人工校对。
### 8.3 三个必须养成的习惯(否则越用越乱)
- **先约束再生成**:在提问里写清楚“不得修改哪些文件/目录、必须保留哪些行为”。
- **先小步再合并**:要求 AI “拆成 3-5 个小 PR”,每一步都可回滚、可测试。
- **先验证再相信**:AI 输出必须通过单测/类型检查/静态检查;不通过就当作建议而不是结果。
一个最简单的写法是:**目标 + 约束 + 验收**,三段写完再让 AI 开始干活。
示例(小改动):
- 不推荐:帮我修一下这个 bug。
- 推荐:
```text
目标:修复 xxx 问题(不改变现有行为)。
约束:不改公共 API;不新增依赖;只允许改 src/xxx;不要修改 security/ 与 scripts/。
验收:给出改动点列表 + 风险点;并提供我应该运行的验证命令(pnpm test / pnpm lint)。
```
### 8.4 标准 Prompt 模板(可复制给团队)
下面 3 个模板可以直接复制,按需替换里面的占位符即可。
**模板 A:小改动(低价/国产)**
```text
目标:在不改变行为的前提下,完成【重命名/整理/修复 lint/修复小 bug】。
上下文:仓库是 ,相关代码主要在 。
约束:
- 不改公共接口(除非我明确允许)
- 不新增依赖
- 只允许改动:
- 禁止改动:
输出要求:
1) 改动点列表(按文件)
2) 风险点(可能影响的行为/边界)
3) 我应该运行的验证命令(例如 pnpm test / pnpm lint),以及预期看到什么
```
**模板 B:跨文件重构(高阶/核心座席)**
```text
目标:做一次跨文件重构/抽象(影响范围较大),但要可审查、可回滚。
约束:
- 把改动拆成 3-5 步(每步都能独立合并)
- 不要修改快照/锁文件(除非我明确允许)
- 禁止触碰 security/、scripts/release/ 等高风险目录
- 必须保持向后兼容(或明确写出破坏点并给迁移方案)
输出要求:
1) 先给分步计划:每步改哪些文件、为什么这么拆
2) 每步的验收:要跑哪些测试/命令、预期结果
3) 风险点:哪一步最容易出错、怎么回滚
```
**模板 C:单测生成**
```text
目标:为 补齐关键路径的单元测试/集成测试。
约束:
- 只允许新增测试文件(不要改业务逻辑)
- 覆盖边界:null/undefined、空数组/空字符串、异常分支、权限/鉴权(如有)
- 如果你需要 mock,请说明 mock 的理由与范围(避免过度 mock)
输出要求:
1) 测试用例清单(用一句话说明每个 case 覆盖什么)
2) 关键断言的理由(为什么这样断言)
3) 我应该运行的测试命令,以及预期看到什么
```
---
## 9. 网络、账号、合规(公司落地必须过的三关)
### 9.1 海外模型的网络打通(必做)
**核心原则:同一套代理策略覆盖 IDE + CLI + 浏览器登录。**
常见失败模式是:浏览器能登录、IDE 插件不能用、CLI 走直连被阻断,导致开发者反复重试、延迟暴涨、成本放大。
#### 9.1.1 代理部署建议(企业做法)
- 小规模(<20 人):可先用单一出口,但必须有备用节点与切换文档。
- 中大规模(20+ 人):建议由平台/IT 提供“统一代理服务”,至少具备:
- 节点健康检查与自动切换
- 按用户/团队限速(防止单人把带宽打满)
- 访问日志(用于排障与合规审计,注意脱敏)
#### 9.1.2 CLI 代理环境变量(必须统一)
macOS/Linux(`~/.zshrc` / `~/.bashrc`)示例:
```bash
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7890"
# 内网域名与本机地址不要走代理(按公司实际补充)
export NO_PROXY="localhost,127.0.0.1,.corp.internal,10.0.0.0/8,192.168.0.0/16"
```
Windows PowerShell 示例:
```powershell
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:NO_PROXY="localhost,127.0.0.1,.corp.internal"
```
#### 9.1.3 需要放行/可达的常见域名(按所选产品取舍)
- Cursor:`cursor.com`、`*.cursor.com`
- Claude/Anthropic:`claude.ai`、`claude.com`、`*.anthropic.com`
- OpenAI/ChatGPT:`openai.com`、`chatgpt.com`(部分地区可能 Cloudflare 风控更严)
- Google:`cloud.google.com`、`*.googleapis.com`、`*.gstatic.com`
建议做法:平台侧维护“域名白名单”,并在网络策略变更时同步更新。
#### 9.1.4 健康检查与排障(让开发者可自助)
- DNS:确认域名能解析(公司内网 DNS 不要劫持这些域名)。
- TLS:代理如果做了证书替换,需要明确安装企业根证书的流程(否则 IDE/CLI 会报证书错误)。
- 连通性:用 `curl -I https://cursor.com/pricing` 这类轻量请求做探测。
- 体验指标:至少记录“平均延迟/95 分位延迟/失败率”,并能定位到是“网络问题”还是“供应商限流”。
快速自检(给开发者的 1 分钟版本):
```bash
# 1) DNS 能解析吗?
nslookup cursor.com
# 2) 走代理能连上吗?(看 HTTP 状态码即可)
curl -I https://cursor.com/pricing
# 3) 如果 CLI 总失败,先检查环境变量有没有被覆盖
env | grep -E 'HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY'
```
#### 9.1.5 故障时降级策略(必须写清楚)
- 代理异常:切换备用出口;在切换完成前仅允许补全,不允许 Agent 执行命令。
- 海外额度耗尽:降级到国产或低价模型,并冻结高阶座席的使用(避免“越急越烧钱”)。
- 供应商不可用:切换到另一家可用的方案(例如从 Cursor 临时切回 GLM/Qoder)。
### 9.2 账号与权限治理(避免“离职不回收”)
#### 9.2.1 基本要求(能做就不要“人工管理账号”)
- **优先团队/企业版**:至少要有成员管理与统一账单;最好有 SSO/审计日志。
- **禁止共享账号**:共享账号无法审计,也无法在离职时回收风险。
- **MFA**:要求开发者开启 MFA(尤其是拥有高阶座席/管理权限的人)。
#### 9.2.2 权限分层与申请流程(把“谁能用高阶”制度化)
- L1 普通开发:默认基础档位(国产 Pro / Cursor Pro)。
- L2 核心开发:按项目负责人提名或按指标(比如核心模块 ownership)授权。
- L3 审查/架构:拥有跨仓库权限,但必须接受更严格的审计与使用规范。
- 申请升级必须包含:仓库名称、使用场景、预计周期、验证方式、预算来源。
#### 9.2.3 离职/转岗回收(必须自动化)
- 与 IT/HR Offboarding 流程绑定:账号停用、座席回收、API/插件 token 失效(如存在)。
- 每月一次抽查:随机抽取 5-10 个账号核对在职状态与权限是否过大。
### 9.3 合规红线(建议写进制度)
#### 9.3.1 明确“什么算敏感”(给可执行的定义)
- 凭据类:密钥、证书、token、私钥、公钥、CI 密钥、签名文件。
- 数据类:客户数据、订单/支付信息、个人信息、生产数据库导出、未脱敏日志。
- 安全类:漏洞细节、攻防脚本、内部安全策略、未公开的架构与域名资产。
#### 9.3.2 红线策略(建议写成强制规则)
- **禁止上传**:以上敏感内容一律禁止粘贴/上传到任何外部模型。
- **涉密仓库禁出境**:S0 仓库默认禁止海外模型;如确需使用,必须先脱敏并走审批。
- **高风险模块双人复核**:鉴权/支付/风控/数据出境相关改动,AI 只能“建议”,最终必须双人 code review。
- **日志留痕**:至少保留“谁在什么仓库使用了什么能力”的记录;日志本身要脱敏且控制访问权限。
---
## 10. 方案落地要点(按产品拆解:怎么用到项目里)
> 这里强调“落地动作”,而不是产品宣传。每个方案都按:管理员准备 → 成员使用 → 仓库接入 → 治理与常见坑 来写。
### 10.1 Cursor(海外,体验优先,适合统一 IDE)
**适用**
- 希望统一 IDE/工作台,并把“补全 + Agent”作为主工作流。
- 海外网络、账号与采购链路已闭环,且能提供稳定代理与故障降级。
**不适用**
- 无法提供稳定海外网络(延迟高/失败率高)或无法在组织层面治理账号与账单。
- 团队强烈不愿切换 IDE(迁移成本高于收益)。
#### 管理员准备(公司/团队层)
1. 确认代理与白名单域名已就绪(见 9.1)。
2. 选择座席策略:
- 普通开发:`Pro`
- 核心开发/架构:`Pro+`(少量)
- 需要 SSO/审计:`Business`
- 极重度专项:`Ultra`(极少量)
3. 如果上 `Business`:优先完成 SSO 与成员回收流程,避免“账号散落”。
4. 设定团队规范:哪些仓库允许开 Agent、哪些仓库只允许补全。
#### 成员上手(个人层)
1. 安装 Cursor。
2. 在系统层配置代理,确保 Cursor、浏览器登录、终端一致走代理。
3. 先把日常习惯固化:
- 80% 用 Tab 补全 + 小改动
- 20% 才用 Agent 做跨文件重构/排障
4. 遇到“答非所问”,优先补充约束:不改行为、不改公共接口、必须通过测试。
#### 仓库接入(项目层)
- 必备:`AI_RULES.md` + `.cursorignore`(参考 7.2 模板)。
- 推荐:在 `AI_RULES.md` 写清楚“本仓库验证命令”(例如 `pnpm test`、`pnpm lint`)。
- 大仓库建议:先在子目录(模块)试点索引,不要一次性喂全仓库。
#### 治理与常见坑
- 坑 1:代理抖动导致 Agent 反复失败重试 → 成本增加。解决:故障时降级为“只补全”。
- 坑 2:没有忽略规则,索引了产物目录 → 回答质量下降、耗时变长。解决:维护 `.cursorignore`。
- 坑 3:重构一次性改太多 → PR 无法审查。解决:强制要求拆小 PR。
### 10.2 Claude Code(海外,CLI/Agent 强,适合重构与排障)
**适用**
- 团队更偏 CLI 工作流,或需要更强的 Agent 执行能力(读写多文件、跑命令、分步迁移)。
- 已经有相对标准的工程命令与仓库规范(安装/构建/测试/格式化),适合写进 `CLAUDE.md` 固化。
**不适用**
- 项目命令与工程规范不稳定(今天能跑、明天跑不了),或无法在仓库层面明确“允许/禁止目录”。
- 对执行命令与写文件权限无法做组织级边界约束与审计。
#### 管理员准备(公司/团队层)
1. 统一 Node 版本(建议 Node >= 18)与 npm 代理策略(避免装不上 CLI)。
2. 以团队为单位开通座席(`Pro`/`Teams`),并明确哪些成员有权限在 S1/S2 仓库使用。
3. 建立 `CLAUDE.md` 模板库:不同技术栈(Node/Java/Go)各一份,复制到仓库即可用。
#### 成员上手(个人层)
1. 安装 CLI(示例):`npm i -g @anthropic-ai/claude-code`。
2. 登录:按官方流程授权;注意不要用个人账号绑定公司付费座席。
3. 使用方式建议:
- 先让 Claude “写计划”,再让它“按步骤执行”
- 对每一步要求输出:改动点 + 风险点 + 验证命令
#### 仓库接入(项目层)
- 必备:`CLAUDE.md` + `AI_RULES.md` + `.aiignore`。
- `CLAUDE.md` 要明确:
- 如何跑测试/构建/格式化
- 允许改动目录与禁止目录
- 代码风格与约束(例如 2 空格、ESM、禁新增依赖)
#### 治理与常见坑
- 坑 1:Agent 默认“能写文件能跑命令”,权限边界不清。解决:`CLAUDE.md` 写清楚允许范围。
- 坑 2:把“执行命令”当作最终答案。解决:命令输出必须进入 PR 说明与人工复核。
- 坑 3:复杂迁移不拆分。解决:要求先输出 3-5 步迁移计划,并逐步合并。
### 10.3 Codex / ChatGPT Team(海外,团队通用,偏“知识+草稿”)
**适用**
- 跨团队通用场景:代码解释、技术调研、设计草稿、评审检查点、测试用例清单等“产出草稿/清单”的任务。
- 希望用 Team/企业版统一成员与账单,并把“深度改代码”留在 IDE/CLI 工具里完成。
**不适用**
- 把它当作“自动落地改代码”的主工具(缺少仓库上下文与工程约束时,风险高且质量不可控)。
#### 管理员准备(公司/团队层)
1. 优先 Team:统一成员、权限、账单,避免个人报销与账号散落。
2. 输出团队 Prompt 规范:
- 必须写约束(目录/接口/依赖/测试)
- 必须写验收方式(测试命令/截图/日志)
3. 为“核心模块”建立更严格的规则:AI 只能提供建议,不直接落地改动。
#### 成员上手(个人层)
- 典型用法:
- 解释陌生代码、做技术调研、写设计草稿
- 生成 PR Review 检查点列表
- 生成测试用例清单(不是直接改业务代码)
#### 仓库接入(项目层)
- 依然需要仓库侧规则:`AI_RULES.md` + `.aiignore`。
- 核心模块 PR 要求:AI 输出必须包含“验证命令”,并在 PR 描述中说明已执行。
#### 治理与常见坑
- 坑 1:缺少仓库上下文导致“看起来对、实际错”。解决:让模型先复述项目约束与现有实现。
- 坑 2:生成大量代码但无测试。解决:把“必须补测试草稿”写进 SOP。
### 10.4 Gemini Coding Plan(海外,偏 PR Review 与 GCP 生态)
**适用**
- PR Review 辅助与质量扫描是核心诉求,且团队本身在 GCP 生态中工作较多。
- 账号与账单体系可以纳入公司治理(而不是个人零散账号)。
**不适用**
- 团队没有稳定的 Google 账号与账单体系,或无法满足组织级成员管理与审计要求。
#### 管理员准备(公司/团队层)
1. 确认 Google 账号与 GCP 账单体系可用(否则推进会卡住)。
2. 明确 PR Review 权责:AI 是辅助审查,最终由代码所有者裁决并承担责任。
3. 选择座席:Standard 覆盖多数人;Enterprise 给审查角色或核心项目。
#### 成员上手(个人层)
- 建议把 Gemini 用在两类任务:
- PR Review:提示潜在 bug、边界条件、性能问题
- 与 GCP 相关的代码/配置:更容易给出生态内建议
#### 仓库接入(项目层)
- PR 模板明确:AI Review 只是建议,必须人工确认与验证。
- 对大型 PR:限制 diff 大小、先拆 PR 再用 AI 审查。
### 10.5 GLM(国产主力,适合全员普及)
**适用**
- 合规与报销友好,希望快速全员覆盖,把补全/小改动/补测先规模化落地。
- 希望把“默认路由”稳定在国产/低价侧,通过座席分层控制成本波动。
**不适用**
- 强依赖海外生态(账号/插件/模型)且无法接受国产作为默认兜底的组织(这类通常要先解决 Gate 条件)。
#### 管理员准备(公司/团队层)
1. 以 GLM Pro 作为默认座席(覆盖 70-85% 人群),Max 作为核心席位。
2. 把“5 小时刷新”写进团队排班:批量重构/补测任务集中在刷新后执行。
3. 建立用量看板:每日/每周触顶风险提示(尤其是 Max 席位)。
#### 成员上手(个人层)
- 优先打穿三件事:
1. Tab 补全
2. 小范围修 bug(要求先给复现与验证命令)
3. 单测草稿(要求覆盖边界与异常)
#### 仓库接入(项目层)
- 必备:`AI_RULES.md` + `.aiignore`。
- S0 仓库:只允许国产,并强制启用敏感目录黑名单。
#### 治理与常见坑
- 坑 1:刷新周期误解导致“额度突然用完”。解决:把批量任务集中到刷新后窗口。
- 坑 2:把 AI 当成“自动提交器”。解决:统一验收清单(8.1.2)与 PR 模板。
### 10.6 Qoder(国产/混合,治理友好)
**适用**
- 既要国产可用性/合规友好,又希望在少数仓库/少数人上引入海外增强,并要求审计与团队治理。
- 希望把“混合路由”做成可控的白名单能力(默认关、按需开、可追溯)。
**不适用**
- 混合路由无法在组织层面做审批与审计(否则风险会集中爆发在“默认开”上)。
#### 管理员准备(公司/团队层)
1. 普通席位 `Pro`,重度/混合需求 `Pro+`,需要审计与成员管理用 `Teams`。
2. 建立混合路由白名单:哪些仓库/分支允许海外模型,谁可以开。
3. 配额策略:团队配额 + 个人上限,触顶自动降级到国产模型。
#### 成员上手(个人层)
- 建议默认国产路由,只有在“确实需要高质量推理/迁移方案”时才申请混合。
- 大改动先输出分步计划,再开始改代码。
#### 仓库接入(项目层)
- 必备:`AI_RULES.md` + `.aiignore`;团队版建议开启审计与操作留痕。
- 对涉密仓库:强制关闭海外路由。
#### 治理与常见坑
- 坑 1:混合路由“默认开”会直接引入合规风险。解决:默认关、审批开。
- 坑 2:缺少审计导致问题难追溯。解决:团队版启用审计并定期抽查。
---
## 11. 执行清单(公司落地逐项勾)
### 11.1 决策与采购
- [ ] 完成 Gate A/B:合规出境范围书面结论 + 海外网络与采购闭环确认。
- [ ] 明确默认主力(国产/海外)与增强座席策略。
- [ ] 选定座席分层与数量(L1/L2/L3/L4)。
- [ ] 账单中心与预算上限、告警责任人。
- [ ] 供应商可用性评估(区域、风控、支付)。
- [ ] 输出选型评审交付物(见 2.4):主力+降级、约束条件、落地计划、风险与回滚。
### 11.2 网络与合规
- [ ] 海外代理可用(IDE/CLI 同策略),有备用出口。
- [ ] 代理健康检查与故障降级策略可执行(见 9.1.4/9.1.5)。
- [ ] 仓库分级(S0/S1/S2)完成,并绑定策略。
- [ ] 敏感目录黑名单(`.env`/`secrets/`/证书/客户数据)固化到模板。
- [ ] 审计与留痕(谁用、用在哪个仓库、做了什么)可追溯。
### 11.3 项目接入
- [ ] 每个仓库落地 `AI_RULES.md` / `.aiignore` /(可选)`CLAUDE.md` / `.cursorignore`。
- [ ] 关键工作流沉淀为项目 Skill(见 7.4),并用 1-2 个真实任务验证可用。
- [ ] PR 模板增加 AI 使用声明与验证说明。
- [ ] 将“必须跑测试/必须 code review”固化到工程规范。
### 11.4 运营与复盘
- [ ] 试点指标看板(效率/质量/体验/成本)建立。
- [ ] 试点“一页结论”与可复制资产沉淀(见 6.3):模板、SOP、培训、降级预案、账单样例。
- [ ] 月度复盘机制:座席调整、路由调整、代理优化、合规抽查。
- [ ] 回滚预案演练(代理故障/额度耗尽/供应商不可用)。
---
## AI 编码助手五大方案选型指南
# AI 编程五大方案选型指南
## 概述
本文档将深入对比当前最主流的五种 AI 编程方案:**AWS Kiro**、**GitHub Copilot**、**Cursor IDE**、**Claude Code** 和 **OpenAI Codex**,帮助开发者根据自身需求选择最适合的工具。
| 方案 | 国内可用性 | 网络要求 |
| ---------------- | ---------- | ------------------- |
| **AWS Kiro** | ✅ 可直接用 | 无需代理 |
| **GitHub Copilot** | ✅ 可直接用 | 无需代理 |
| **Cursor IDE** | ❌ | 需要美国节点/代理 |
| **Claude Code** | ❌ | 需要美国节点/代理 |
| **OpenAI Codex** | ❌ | 需要美国节点/代理 |
---
## 国内直接可用方案
> **说明**:以下方案在中国大陆地区可直接访问,无需复杂的网络配置。
### 方案一:AWS Kiro ✅ 国内直接可用
### 选择理由
**Kiro** 是 Amazon AWS 推出的 AI 原生 IDE,采用独特的 Spec-Driven(规格驱动)开发模式:
- **国内直接可用**:通过 AWS 中国区域提供服务,**中国大陆用户无需代理即可访问**
- **AWS 背景加持**:由 Amazon 官方支持,依托 AWS 基础设施,企业级可靠性
- **Spec-Driven 开发**:独特的"先计划后构建"模式,将需求转化为可执行的规格说明
- **Claude 4.5 全系列**:支持 **Claude Opus 4.5**、Sonnet 4.5、Haiku 4.5 全系列模型
- **智能模型选择**:Auto 模式可根据任务复杂度自动选择最合适的模型
- **VS Code 架构**:基于 VS Code fork,界面熟悉,上手容易
- **Agent Hooks**:支持自动化触发器,工作流可定制
- **新用户福利**:注册后第一个月赠送 500 积分用于体验
### ⚠️ 中国用户注意事项
> **重要提示**:虽然 Kiro 目前在中国可通过 AWS 中国区域访问,但需要注意:
>
> 1. **政策风险**:各类产品的迭代与政策可能随时变化,不能保证一直可以在国内使用
> 2. **Anthropic 限制**:Claude 官方已于 2025 年 9 月更新政策,禁止中国控制的实体使用 Claude 服务
> 3. **AWS Bedrock 渠道**:Kiro 通过 AWS Bedrock 提供 Claude 模型访问,目前 AWS 中国区域仍可正常使用
> 4. **变化无常**:如遇访问问题,建议关注 AWS 中国官方公告或考虑替代方案
### 个人订阅方案
| 套餐 | 月费 | Credits | 超量使用 |
| --------- | ------- | --------------------------------- | ------------------------ |
| **试用** | - | 50 credits/月 + 首月赠送 500 | 不可超量,用完需等待下月 |
| **Pro** | $20/月 | 1,000 credits/月 | $0.04/credit |
| **Pro+** | $40/月 | 2,000-3,000 credits/月 | $0.04/credit |
| **Power** | $200/月 | 10,000 credits/月 | $0.04/credit |
**使用说明**:
- **试用额度**:每月 50 credits,新用户第一个月额外赠送 500 credits
- **刷新周期**:每月按订阅日期重置
- **超额处理**:付费套餐(Pro/Pro+/Power)可超量使用,按 $0.04/credit 计费
- **升级保留**:30 天内升级可保留未使用的试用额度
### 团队订阅方案
| 套餐 | 价格 | 最低人数 | 核心功能 |
| -------------- | -------- | --------- | ------------------------------------------------------------------------- |
| **Enterprise** | 定制定价 | **20 人** | 所有个人功能 + SSO/SCIM + 集中许可证管理 + 组织策略 + AWS 集成 + 专属支持 |
### 技术特点
| 特性 | 说明 |
| --------------- | ------------------------------------------------------ |
| **Spec-Driven** | 将想法转化为"活的可执行规格",自动应用软件工程最佳实践 |
| **主要模型** | **Claude Opus 4.5**、Sonnet 4.5、Haiku 4.5 |
| **架构基础** | 基于 VS Code |
| **扩展协议** | 支持 MCP (Model Context Protocol) |
#### Claude 4.5 模型 Credit 倍率
| 模型 | Credit 倍率 | 适用场景 |
| ---------------- | ----------- | -------------------------------- |
| **Haiku 4.5** | 0.4× | 快速、低成本任务 |
| **Sonnet 4.5** | 1.3× | 复杂代理和编码(推荐大多数场景) |
| **Opus 4.5** | 2.2× | 最强推理能力,最具挑战性的任务 |
### 参考链接
- [Kiro 官方网站](https://kiro.dev/)
- [Kiro 官方定价页面](https://kiro.dev/pricing/)
- [AWS 中国 Kiro CDK 教程](https://aws.amazon.com/cn/blogs/china/blog-03-kiro-ai-cdk-development/)
---
### 方案二:GitHub Copilot ✅ 可直接用
### 选择理由
**GitHub Copilot** 是由 GitHub 和 OpenAI 联合开发的 AI 编程助手,是目前市场上最早的、用户基数最大的 AI 编码工具:
- **市场先驱**:2021年首次发布,用户数超过 150 万,占 AI 编程工具市场主导地位
- **深度集成**:与 GitHub 生态深度整合,支持 VS Code、Visual Studio、JetBrains 全系列 IDE
- **多模型支持**:支持 **Claude 4.5**(Sonnet/Opus/Haiku)、**GPT 5.2**、**Gemini Pro 3** 等多种模型
- **企业级支持**:GitHub 背书,企业版提供完善的权限管理和安全合规
- **Premium 请求系统**:2025年引入新的 premium requests 计费模式
- **⚠️ 国内限制**:中国大陆地区访问需要稳定的网络环境
### 个人订阅方案(2025-2026 最新)
| 套餐 | 月费 | 年费 | 核心额度 |
| ----------- | ---------- | --------------- | ------------------------------------------------------------ |
| **Free** | 免费 | 免费 | 基础代码补全,有限的 Copilot Chat 功能 |
| **Pro** | $10/月 | $100/年 (省17%) | 完整代码补全 + Copilot Chat + CLI + 多文件编辑 |
| **Pro+** | $39/月 | - | 全模型访问 + **1,500 次 premium 请求/月** + 超量 $0.04/次 |
**使用说明**:
- **Free 限制**:基础代码补全,有限的 Chat 功能
- **Pro 功能**:完整 Copilot 功能,包括代码补全、Chat、CLI
- **Pro+ 额度**:每月 1,500 次 premium 请求(使用更强大的模型)
- **超量计费**:Pro+ 超出部分按 **$0.04/次** 计费
- **刷新周期**:每月按订阅日期重置
### 支持的 AI 模型(2026)
| 模型分类 | 具体模型 | 说明 |
| -------------- | ------------------------------------- | ------------------------ |
| **OpenAI** | **GPT 5.2**、o3、o4-mini | OpenAI 最新推理模型 |
| **Anthropic** | **Claude 4.5**(Sonnet/Opus/Haiku) | Claude 最新高性能模型 |
| **Google** | **Gemini Pro 3** | Google 最新推理模型 |
> **注意**:模型可用性会根据 GitHub 和各 AI 提供商的合作协议动态调整。部分高级模型需要 Pro+ 订阅。
### 团队订阅方案
| 套餐 | 价格 | 最低人数 | 核心功能 |
| -------------- | ------------- | ---------- | ----------------------------------------------------------------------------- |
| **Business** | $19/人/月 | - | Pro 功能 + 管理控制台 + 组织策略 + 数据不训练 + 使用统计 |
| **Enterprise** | $39/人/月 | - | Business 全部 + SSO 单点登录 + 审计日志 + 私有化部署 + 专属支持 + 合规认证 |
**Business/Enterprise 额外功能**:
- **管理控制台**:集中管理用户许可证和策略
- **单点登录 (SSO)**:支持 SAML 2.0 和 SCIM
- **数据隐私**:承诺不使用企业代码训练模型
- **使用统计**:详细的使用报告和分析
- **合规认证**:SOC 2、ISO 27001 等认证
### 技术特点
| 特性 | 说明 |
| ----------------- | ------------------------------------------------------------ |
| **支持的 IDE** | VS Code、Visual Studio、JetBrains 全系列、Vim/Neovim |
| **Copilot Chat** | 交互式对话编程,支持代码库级别的上下文理解 |
| **Copilot CLI** | 命令行工具,可直接在终端使用 |
| **Copilot Workspace** | AI 驱动的开发环境,支持从需求到代码的完整工作流 |
### 参考链接
- [GitHub Copilot 官方定价页面](https://github.com/features/copilot/plans)
- [GitHub Copilot 官方文档](https://docs.github.com/en/copilot/get-started/plans)
- [GitHub Copilot 支持的 AI 模型](https://docs.github.com/zh/copilot/reference/ai-models/supported-models)
- [GitHub Copilot 请求计费说明](https://docs.github.com/en/copilot/concepts/billing/copilot-requests)
- [GitHub Copilot Pricing Guide 2026](https://userjot.com/blog/github-copilot-pricing-guide-2025)
---
## 需要美国节点的方案
> **说明**:以下方案在中国大陆地区**无法直接访问**,需要美国节点或海外代理。
### 方案三:Cursor IDE ❌ 需要美国节点
### 选择理由
**Cursor** 是目前市场上最成熟的 AI 原生 IDE,基于 VS Code fork 而来,深度集成 AI 能力:
- **AI 原生体验**:专为 AI 编程设计,而非插件形式,体验更流畅
- **预测式补全**:可预测 5-10 行代码,补全质量业界领先
- **跨文件重构**:支持项目级别的代码理解和重构
- **Agent 模式**:Background Agent 可在后台自动完成复杂任务
- **生态完善**:v1.0/v1.1 新增 BugBot 审查、Memory 能力
- **市场地位**:估值 99 亿美元,年化收入 5 亿美元
- **⚠️ 国内限制**:中国大陆地区访问需要稳定的网络环境
### 个人订阅方案
| 套餐 | 月费 (月付) | 月费 (年付) | 核心额度 |
| --------- | ----------- | --------------- | ---------------------------------------------------- |
| **Hobby** | 免费 | 免费 | 基础功能,有限 AI 模型访问 |
| **Pro** | $20/月 | ~$16/月 (省20%) | 约 500 次 fast premium requests/月,包含 $20 API额度 |
| **Pro+** | $60/月 | - | 3x 所有模型使用额度,包含 $70 API额度 |
| **Ultra** | $200/月 | - | 20x 所有模型使用额度,包含 $400 API额度 |
**使用说明**:
- **Fast Requests**:Pro 计划每月约 500 次快速请求
- **Slow Requests**:超出后自动切换到慢速请求,无次数限制
- **刷新周期**:每月按订阅日期重置(如 15 日订阅则每月 15 日重置)
- **部分恢复**:用尽额度后 5-24 小时内可能会恢复少量额度
### 团队订阅方案
| 套餐 | 价格 | 核心功能 |
| -------------- | --------- | ---------------------------------------------------------------------------- |
| **Teams** | $40/人/月 | 所有 Pro 功能 + SSO 单点登录 + 管理控制台 + 使用分析 + 组织级隐私模式 + RBAC |
| **Enterprise** | 定制定价 | Teams 全部功能 + SCIM 用户预配 + 数据不用于训练 + 专属支持 + 更多企业功能 |
**Teams 最低要求**:无明确最低人数要求
### 参考链接
- [Cursor 官方定价页面](https://cursor.com/pricing)
- [Cursor Teams 定价详情](https://cursor.com/docs/account/teams/pricing)
- [Cursor 企业版介绍](https://cursor.com/enterprise)
---
### 方案四:Claude Code ❌ 需要美国节点
### 选择理由
**Claude Code** 是 Anthropic 推出的 CLI 工具,可与现有开发环境无缝集成:
- **顶尖代码能力**:Claude Opus 4.5 在编程基准测试中表现卓越
- **CLI 工具**:不改变现有 IDE 习惯,通过命令行与 AI 交互
- **深度代码理解**:可处理大型代码库,支持跨文件重构和代码审查
- **MCP 协议支持**:可扩展连接各种工具和数据源
- **成本效益**:相对较低的价格获得高质量编程辅助
- **⚠️ 国内限制**:Anthropic 已禁止中国用户使用
### 个人订阅方案
| 套餐 | 月费 (月付) | 月费 (年付) | 核心额度 |
| ----------- | ----------- | ----------------- | ---------------------------------------------------------- |
| **Pro** | $20/月 | $17/月 (年付$200) | 约 5x 免费用量,优先队列 |
| **Max 5x** | $100/月 | - | 5x Pro 额度,预计 140-280 小时 Sonnet 4/周 |
| **Max 20x** | $200/月 | - | 20x Pro 额度,约 900 条消息/5小时 或 200-800 prompts/5小时 |
**使用说明**:
- **刷新周期**:5 小时滚动窗口
- **周限额**:自 2024 年 8 月 28 日起引入周限额
- **超额处理**:达到限制后可选择升级或等待刷新
### 团队订阅方案
| 套餐 | 价格 | 最低人数 | 核心功能 |
| ------------------- | ------------------------------------ | -------- | ----------------------------------------------------------- |
| **Team (Standard)** | $30/人/月 (月付)$25/人/月 (年付) | **5 人** | Sonnet/Opus 高额度 + 团队共享池 + 管理后台 + 成员管理 + SSO |
| **Team (Premium)** | $150/人/月 | 5 人 | Standard 全部 + Premium 优先队列 + 更高配额 + 审计日志 |
| **Enterprise** | 联系销售 | - | 企业级功能 + DPA/BAA 合同 + 专属支持 + 定制部署 |
### 参考链接
- [Claude 官方定价页面](https://claude.com/pricing)
- [Claude Code 使用指南](https://support.claude.com/en/articles/11145838-using-claude-code-with-your-pro-or-max-plan)
---
### 方案五:OpenAI Codex (ChatGPT) ❌ 需要美国节点
### 选择理由
**OpenAI Codex** 已整合到 ChatGPT 订阅中,提供业界领先的代码生成能力:
- **GPT 5.2 模型**:最新一代模型,代码生成能力业界领先
- **o3/o4-mini 推理模型**:专为复杂编程和推理优化
- **深度集成**:ChatGPT 网页版、CLI、API 全覆盖
- **Code Interpreter**:可执行代码进行数据分析
- **生态成熟**:插件系统最完善,第三方工具支持最广泛
- **多模态能力**:支持图像、音频等多种输入方式
> **注意**:原独立 Codex API 已整合到 GPT-5 模型家族中,不再单独提供
### 个人订阅方案
| 套餐 | 月费 | 核心额度 |
| -------- | ------- | ------------------------------------------------------------------------------------------- |
| **Free** | 免费 | GPT 5.2: 约 10 条/5小时 |
| **Plus** | $20/月 | GPT 5.2: 160 条/3小时o3-mini: 150 条/天o3: 100 条/周o4-mini: 300 条/天 |
| **Pro** | $200/月 | 声称"无限消息"+ GPT 5.2 Pro更快图像生成 + 最大深度研究额度实际仍可能遇到 5 小时限制 |
**使用说明**:
- **Free 刷新周期**:5 小时滚动窗口
- **Plus 刷新周期**:3 小时滚动窗口(GPT 5.2),部分模型按天/周计算
- **Pro 说明**:官方宣传"无限",但用户报告仍可能遇到限制
### 团队订阅方案
| 套餐 | 价格 | 最低人数 | 核心功能 |
| -------------- | ------------------------------------ | ----------------- | --------------------------------------------- |
| **Team** | $30/人/月 (月付)$25/人/月 (年付) | **2 人** | GPT 5.2 访问 + 协作工具 + 团队管理 + 数据不训练 |
| **Business** | $25-30/人/月 | - | Team 全部 + 管理控制台 + SSO + 数据分析 |
| **Enterprise** | 联系销售 | 通常 100-150 人起 | 企业级合规 + DPA/BAA + 私有端点 + 专属支持 |
**Team/Business 额外功能**:
- 管理控制台和用户管理
- 单点登录 (SSO)
- 数据不用于训练保证
- 团队协作空间
- 使用分析和报告
### API 定价(按量计费)
如需通过 API 使用 Codex 能力:
| 模型 | 输入 Token | 缓存输入 | 输出 Token |
| ---------------------- | ----------------- | ------------------ | ------------------ |
| **GPT 5.2-mini** | $0.25 / 1M tokens | $0.025 / 1M tokens | $1.00 / 1M tokens |
| **GPT 5.2** | $1.75 / 1M tokens | $0.175 / 1M tokens | $14.00 / 1M tokens |
**新用户福利**:新 API 账户可获得 $5 免费额度(约 400 万 GPT 5.2 tokens)
### 参考链接
- [ChatGPT 官方定价页面](https://chatgpt.com/pricing)
- [ChatGPT Pro 方案](https://chatgpt.com/plans/pro/)
- [OpenAI API 定价](https://openai.com/api/pricing/)
- [OpenAI 定价说明](https://platform.openai.com/docs/pricing)
- [ChatGPT 使用限制说明](https://northflank.com/blog/chatgpt-usage-limits-free-plus-enterprise)
- [OpenAI Codex 定价指南](https://userjot.com/blog/openai-codex-pricing)
- [GPT-5.2 定价说明](https://www.glbgpt.com/hub/chatgpt-5-2-price-guide-2025/)
---
## 五大方案对比总结
### 价格对比(个人版)
| 方案 | 入门价格 | 中级价格 | 高级价格 | 刷新周期 |
| ------------------ | ------------------------------ | ----------------- | ------------------ | -------- |
| **AWS Kiro** | 50 积分/月 + 首月赠送 500 | $20/月 (Pro) | $200/月 (Power) | 月度重置 |
| **GitHub Copilot** | $10/月 (Pro) | $39/月 (Pro+) | - | 月度重置 |
| **Cursor** | $20/月 (Pro) | $60/月 (Pro+) | $200/月 (Ultra) | 月度重置 |
| **Claude Code** | $20/月 (Pro) | $100/月 (Max 5x) | $200/月 (Max 20x) | 5小时/周 |
| **OpenAI Codex** | $20/月 (Plus) | - | $200/月 (Pro) | 3-5小时 |
### 价格对比(团队版)
| 方案 | 团队价格 | 最低人数 | 企业版 |
| ------------------ | -------------- | ---------- | ------------------ |
| **AWS Kiro** | - | **20 人** | 定制 |
| **GitHub Copilot** | $19/人/月 | - | $39/人/月 |
| **Cursor** | $40/人/月 | 无明确要求 | 定制 |
| **Claude** | $25-30/人/月 | **5 人** | 定制 |
| **OpenAI** | $25-30/人/月 | **2 人** | 定制 (通常100人起) |
### 刷新周期对比
| 方案 | 个人版刷新 | 团队版刷新 | 特点 |
| ------------------ | ---------- | ---------- | ------------------------ |
| **AWS Kiro** | 每月重置 | 每月重置 | 支持$0.04/credit超量计费 |
| **GitHub Copilot** | 每月重置 | 每月重置 | Pro+ 超量 $0.04/次 |
| **Cursor** | 每月重置 | 每月重置 | 5-24小时可能部分恢复 |
| **Claude** | 5小时/周 | 5小时/周 | 窗口期最短 |
| **OpenAI** | 3-5小时 | 3-5小时 | Plus 3小时,Free 5小时 |
### 国内可用性对比
| 方案 | 国内直接访问 | 需要美国节点 | 说明 |
| ------------------ | ------------ | ------------ | ------------------------------------- |
| **AWS Kiro** | ✅ | ❌ | 通过 AWS 中国区域可访问,但有政策风险 |
| **GitHub Copilot** | ✅ | ❌ | 可直接访问 |
| **Cursor** | ❌ | ✅ | 需要美国节点或代理 |
| **Claude Code** | ❌ | ✅ | 需要美国节点或代理 |
| **OpenAI Codex** | ❌ | ✅ | 需要美国节点或代理 |
### 选型建议
**选择 AWS Kiro 如果**:
- **位于国内**,希望无需代理即可使用
- 偏好 Spec-Driven(规格驱动)开发模式
- 团队已使用 AWS 生态系统
- 需要企业级可靠性和数据合规
- 可以接受潜在的政策变化风险
**选择 GitHub Copilot 如果**:
- 已习惯使用 VS Code/JetBrains 等 IDE
- 需要最成熟稳定的 AI 编码工具
- 预算有限,$10-39/月的价格更有吸引力
- 团队已深度使用 GitHub 生态
- 需要企业级合规和支持
**选择 Cursor 如果**:
- 希望使用 AI 原生 IDE,不想折腾插件
- 需要预测式代码补全和跨文件重构
- 团队需要统一的 IDE 环境和管理
- 预算 $20-200/月可接受
- 有稳定的海外网络环境
**选择 Claude Code 如果**:
- 已习惯现有 IDE (VS Code/JetBrains),不想切换
- 需要顶尖的代码理解和审查能力
- 希望通过 CLI 与 AI 交互
- 需要频繁处理大型代码库
- 有稳定的海外网络环境
**选择 OpenAI Codex 如果**:
- 需要 GPT-5.2/o3 等最新推理模型
- 需要多模态能力(图像、音频)
- 需要 Code Interpreter 进行数据分析
- 需要 API 接入自定义应用
- 有稳定的海外网络环境
---
## 附录:Anthropic 公司股东与融资信息
### 公司背景
**Anthropic** 是一家美国人工智能安全公司,由 Dario Amodei 和 Daniela Amodei 于 2021 年创立。公司前身为 OpenAI 的核心成员,后独立发展专注于 AI 安全研究。Anthropic 推出了 Claude 系列 AI 模型,包括 Haiku、Sonnet 和 Opus。
### 融资历程与估值
#### 最新融资(2026 年 1 月)
| 融资轮次 | 金额 | 估值 | 领投方 | 状态 |
| -------- | ------------- | ------------- | ------------- | ------------ |
| **Series G** | **$100 亿** | **$3500 亿** | **GIC**(新加坡主权财富基金) | 洽谈中 |
#### 历史主要融资
| 时间 | 轮次 | 金额 | 估值 | 主要投资方 |
| ---------- | --------- | ------------ | ----------- | ------------------------------------ |
| 2025年9月 | Series F | $130 亿 | $1830 亿 | Lightspeed、Fidelity 等 |
| 2024年 | 多轮 | 累计约 $170+亿 | - | Google、Amazon、Spark Capital 等 |
| 2023年 | - | $40 亿(Amazon投资) | - | Amazon |
| 2023年 | - | $20 亿(Google投资) | - | Google |
**累计融资金额**:至少 **$400 亿**(约 14 轮融资)
### 主要股东与投资方
#### 机构投资者
| 投资方 | 类型 | 投资轮次/金额 |
| ------------------- | ------------------- | -------------------------------- |
| **GIC** | 新加坡主权财富基金 | 领投 Series G(洽谈中) |
| **Lightspeed Venture Partners** | 风险投资 | Series F 领投 |
| **Fidelity Management & Research** | 资产管理 | 多轮投资 |
| **Google (Alphabet)** | 战略投资者 | $20 亿 + 多轮投资 |
| **Amazon** | 战略投资者 | $40 亿投资,云服务合作 |
| **Spark Capital** | 风险投资 | 早期及后续轮次 |
| **Menlo Ventures** | 风险投资 | 早期投资者 |
#### 战略合作
- **Amazon AWS**:Anthropic 选择 AWS 作为主要云服务提供商,Amazon 累计投资 $40 亿
- **Google Cloud**:Google 投资并提供云基础设施支持
### 财务预期
| 指标 | 数据 |
| --------------- | ----------------------------- |
| **2025 年 ARR 预期** | $90 亿 |
| **2026 年收入预期** | $200-260 亿 |
| **增长率** | 3 年期内约 13-28% 增长预期 |
### 上市计划
根据多家媒体报道:
- **IPO 时间窗口**:最早可能在 **2026 年底** 或 2027 年
- **上市地点**:预计在美国公开市场上市
- **当前状态**:已开始筹备上市相关工作
### 参考链接
- [Anthropic 寻求 100 亿美元融资,估值达 3500 亿美元 - The New York Times](https://www.nytimes.com/2026/01/07/technology/anthropic-funding-valuation.html)
- [Anthropic 以 3500 亿美元估值筹集 100 亿美元 - Wall Street Journal](https://www.wsj.com/tech/ai/anthropic-raising-10-billion-at-350-billion-value-62af49f4)
- [Anthropic 瞄准 3500 亿美元估值进行大规模融资 - Yahoo Finance](https://finance.yahoo.com/news/anthropic-eyes-350-billion-valuation-190120429.html)
- [Anthropic 计划以 3500 亿美元估值筹集 100 亿美元 - Seeking Alpha](https://seekingalpha.com/news/4537469-anthropic-plans-to-raise-10b-at-350b-valuation)
- [Anthropic 寻求 100 亿美元融资,估值 3500 亿美元 - SiliconANGLE](https://siliconangle.com/2026/01/07/anthropic-reportedly-seeking-raise-10b-350-billion-valuation/)
- [Anthropic 公司介绍 - Wikipedia](https://en.wikipedia.org/wiki/Anthropic)
- [Anthropic 股权投资指南 - TSG Invest](https://tsginvest.com/anthropic-pbc/)
---
> **最后更新时间**:2026 年 1 月
>
> **注意**:以上价格和额度信息可能随时间变化,请以官方页面为准。如需最新信息,请访问各方案的官方定价页面。Anthropic 融资信息基于公开媒体报道,实际数据以公司官方披露为准。
---
## AI 共有的不足和缺陷
## 数据与知识层面
- 训练数据不可追溯:来源不透明,更新不可再现,难以审计和监管(例:医疗对话数据混入论坛内容,错误建议无法追责)。
- 时效性缺失:回答容易引用过时信息,对实时数据与趋势不敏感(例:被问到最新利率或 CVE 时仍返回去年数据)。
- 事实幻觉:缺少可验证引用,虚构数字、文献和代码依然常见(例:编造论文标题、捏造 npm 包版本或接口字段)。
- 领域不均衡:中文、少数语言、专业术语、方言与长尾格式支持薄弱(例:中医方剂、法律条文引用常错位,粤语/方言指令被误解)。
- 偏见与刻板印象:历史数据里的歧视被放大,跨地区/行业使用易冲突本地法规与文化(例:求职推荐偏向性别刻板印象,触犯当地公平招聘规定)。
- 检索依赖:RAG 质量受索引时效、噪声和稀疏影响,无法一劳永逸解决事实性(例:索引未刷新导致产品文档已改版但回答仍指向旧参数)。
## 模型与算法局限
- 概率当确定性:缺少置信度表达,难以分级处理高风险场景(例:医疗问答把低概率诊断当肯定结论)。
- 长文本脆弱:上下文窗口有限,早期约束易被遗忘,推理链断裂(例:合同审阅漏掉前文免除条款)。
- 多模态裁决不足:图文冲突时缺少稳健的决策逻辑,新攻击面频出(例:图中文字写“禁止吸烟”但模型按图像场景回答“可以吸烟”)。
- 逻辑/数值/物理推理弱:多步因果、数量守恒、空间推理常犯低级错误(例:流水线产能计算时把单位搞混、数量不守恒)。
- 微调与漂移:定向微调易被脏数据污染,旧能力遗忘,新行为难预测(例:加入少量脏数据后把安全回复改成敏感输出)。
- 解释性薄弱:难给出因果链与可追溯证据,审核与合规成本高(例:风控拒绝原因无法溯源到具体特征或规则)。
## 系统与工程稳定性
- 输出波动与延迟:服务抖动、偶发崩溃,难以满足 SLA 与韧性要求(例:高峰期响应从 1s 抖到 20s+)。
- 格式不稳定:结构化输出常偏离协议,需要大量后处理与人工兜底(例:约定 JSON 却混入自然语言或缺字段)。
- 工具/函数调用脆弱:异常返回、超时、限流易让模型陷入死循环或空洞回复(例:重试未设上限导致 API 雪崩)。
- 成本不可控:冗长上下文、重试和插件调用叠加,账单常超预期(例:一次客服对话因多次检索与重试耗费数十倍预估成本)。
- 资源与供应链风险:GPU/TPU 供应紧张或权重合规受限会整体拖垮服务质量(例:突发算力抢占导致延迟飙升)。
- 监控与回溯不足:缺少在线评测、自动报警和可重放数据,问题多依赖用户投诉暴露(例:生产错误格式连续数小时未被发现)。
- 代码执行高风险:AI 生成或运行的脚本若无隔离,可能修改全局配置甚至误删磁盘(例:未在沙箱跑安装脚本导致 `rm -rf /` 误删服务器数据)。
## 安全、对抗与隐私
- 提示注入与越权:系统提示泄露、对抗样本和花式绕过依然高效(例:用户通过“忽略之前指令”拿到后台工具调用说明)。
- 隐私泄漏:模型记忆输入,日志和回答中可能暴露敏感信息(例:复述先前工单中的手机号或订单号)。
- 价值观与伦理红线:安全策略在多地区/行业下易失效,输出仍可能触碰红线(例:未屏蔽地区敏感话题或行业合规禁区)。
- 权限与会话隔离弱:多用户上下文混用,存在跨会话泄漏风险(例:多人协作时引用了其他用户的历史聊天内容)。
- 安全基线缺失:缺少灾难恢复、降级与熔断策略,异常时容易雪崩(例:上游检索宕机导致整体对话不可用,没有降级答案)。
## 产品化与运营挑战
- 需求澄清能力弱:遇到模糊请求时少主动追问,倾向冗长且模糊的回答(例:用户问“做个活动页”未反问目标、预算、设备渠道)。
- 用户体验漂移:同一问题答案随时间、状态或微小措辞变化大,难以做稳定运营(例:FAQ 一天内多次输出不同价格策略)。
- 人力成本高:提示词工程、对话状态管理和后处理需要持续人工投入(例:为保持 JSON 输出要不断调整 system prompt)。
- 反馈闭环慢:负面反馈难以被快速吸收,模型迭代周期长,线上修复滞后(例:用户举报错误后需多周才能进入新版本权重)。
- 规则对齐难:模型不了解业务 KPI、调用成本或限流策略,易触发额外成本或风险(例:忽略调用限额反复触发付费 API 导致账单爆表)。
## 典型高风险场景
- 医疗、金融、法律:事实幻觉、过时信息与偏见会直接影响合规和人身/财产安全(例:给出不符合当地指南的用药建议;引用废止条款)。
- 工业控制、自动驾驶、能源调度:延迟、抖动和边界条件下的不稳定推理难以满足安全要求(例:异常传感器数据时仍输出正常指令)。
- 内容审核、舆情与推荐:偏见、对抗样本与格式不稳定会放大审核漏报或误报(例:被对抗样本绕过暴恐文本检测)。
- 代码与配置生成:忽略运行时依赖、版本兼容与安全基线,可能引入漏洞(例:生成的依赖存在已知 CVE,或配置未加鉴权)。
- 客服与多轮对话:错误累积、缺乏自我纠错和澄清,容易形成错误链(例:一次误解订单号后续全程使用了错误上下文)。
## 人的主导作用与落地原则
- 人定流程,机做辅助:关键环节先定义人类决策流程,AI 仅做草稿、对照或检索;最终决策与签字由人负责(例:招投标由人定评分表,AI 只初筛标书)。
- 明确“人类监督”角色:指定责任人审核高风险输出(医疗/金融/法律/自动驾驶/安全变更),建立双人复核或结对审查(例:医疗报告需主治与质控双人签字,AI 草稿仅供参考)。
- 人保准入,机做建议:让 AI 给选项而非直接执行,审批、下单、推送、发布、调度等动作必须经过人工确认(例:AI 生成折扣方案,运营手工确认后再上线)。
- 人控知识,机用引用:知识库由人维护版本与生效时间,AI 只能引用,不得自行增删;更新流程需人工验收与回溯标签(例:客服 FAQ 由知识管理员审核后上线,并标注生效日期)。
- 人验安全,机跑流程:安全策略、脱敏规则、合规模板由人制定;AI 输出必须过人设的校验(格式、术语、敏感词、地区合规)(例:代码生成需通过人写的安全扫描规则后才能提交)。
- 人管成本,机限配额:费用预算、配额和重试上限由人配置,AI 调用受限,超限直接降级或中止(例:每日检索调用超过配额时自动转为摘要模式并通知负责人)。
- 人做澄清,机做收敛:对模糊需求,先由人或前置问卷澄清核心参数,再让 AI 生成;避免 AI 自行假设(例:活动页需求先收集预算和渠道,再让 AI 出页面草稿)。
- 人设指标,机供度量:业务 KPI、安全阈值、可解释性要求由人定义;AI 需要输出置信度/引用/可追溯数据供人审阅(例:风控模型需附置信度和引用规则,审核员决定是否拒绝)。
- 人定迭代节奏:线上反馈、红队结果与误报/漏报统计由人评审,决定是否更新提示词、检索索引或模型版本(例:每周复盘高风险对话,人工决定是否切换新模型)。
## 应对建议(简要)
- 数据:做好来源审计、去偏与时效刷新,检索链路监控召回/精排质量(例:每周重建索引并人工抽检医疗条目)。
- 模型:提供置信度或自评估,限制长上下文依赖,针对关键任务做专项评测(例:财报问答需展示置信度并通过专门算例测试)。
- 系统:加熔断、降级和重试上限,强制结构化输出校验,建立在线监控与回溯(例:工具调用超时即降级为静态答案并记录重放日志)。
- 安全:定期红队,对抗样本库更新,隔离系统提示与用户输入,保护日志与隐私(例:每月红队拉通提示注入用例,更新过滤策略)。
- 运营:标准化提示与模板,AB/灰度发布,快速回滚通道,建立反馈闭环与标签体系(例:新客服提示先灰度 5% 流量,异常立即回滚)。
把模型当作不稳定的外部依赖来治理:先明确人类的职责、审批和复核流程,再让 AI 进入关键路径;留足监控、评测、韧性与人工兜底的预算,确保“人是决策者,AI 是工具”。
---
## AI 编程方案选型指南
## 一、方案概述
本文档旨在为公司提供全面的 AI 编程工具选型参考,涵盖国际主流与国产优秀方案,从订阅服务、IDE 工具到插件扩展,帮助决策者根据团队需求、预算和使用场景做出最优选择。
---
## 二、详细对比文档
对于更深入的模型和工具对比分析,可参考以下文档:
| 文档 | 说明 | 链接 |
| ---- | ---- | ---- |
| **国外顶尖编程模型选型建议书** | Claude Opus 4.5、GPT-5.2、Gemini 3 Pro 三大模型的深度对比,含价格、刷新周期、额度用完后如何继续使用 | [international-ai-models-comparison.md](./international-ai-models-comparison.md) |
| **AI 编程工具选型建议书** | GLM-4.7 + Claude Code CLI 最佳组合,Qoder vs Cursor IDE 对比,含刷新周期和额度限制详解 | [qoder-vs-glm47-cursor-claude-comparison.md](./qoder-vs-glm47-cursor-claude-comparison.md) |
> **核心要点**:
> - **刷新周期对比**:GLM-4.7/ChatGPT 每 **5 小时**(最快)> Gemini Code Assist 每 **日** > GitHub Copilot/Qoder/Cursor 每 **月** > Claude Code 每 **7 天**(最慢)
> - **额度用完后方案**:等待刷新周期 / 使用 API KEY 按量计费 / 切换其他订阅账号 / 升级更高版本套餐
---
## 三、核心平台特点总结
- **AI 编程能力排行**:可随时查看 **[LLM Stats](https://llm-stats.com/)** 获取最新模型榜单与分数,用于快速对比模型迭代效果。
- **综合榜单(能力/价格/上下文)**:如需更全面的横向对比,可参考 **[Vellum Leaderboard](https://www.vellum.ai/llm-leaderboard)**。
- **真实工程 Bug 修复基准**:SWE-bench(含真实 GitHub Issues)可参考 **[官方网站](https://www.swebench.com)**。
- **国产模型评测榜单**:OpenCompass(国内权威评测体系之一)可查看 **[排行榜](https://rank.opencompass.org.cn/home)**。
- **国产模型国际榜单入口**:AI Rank 汇总多家国际评测的国产模型成绩,可访问 **[AI Rank](https://airank.dev/)**。
- **上海人工智能实验室-国产模型评测项目**:开源评测框架 OpenCompass(国人自研,涵盖多维度对比)仓库见 **[github.com/open-compass/opencompass](https://github.com/open-compass/opencompass)**。
### 2.1 国际主流 AI 平台
#### **ChatGPT (OpenAI)**
- **核心优势**: GPT-5.2 在 SWE-Bench Pro 达到 55.6%,o1 pro 模式专为复杂编程优化
- **适用场景**: Plus 版 ($20/月) 适合个人开发者,Pro 版 ($200/月) 适合高强度专业用户,API 调用额度高 15-20 倍
- **评价**: o 系列模型在编程、数学、科学问题求解方面表现突出,业界认可度高
**ChatGPT 订阅梯度(以官网为准)**
| 功能 | Plus ($20/月) | Pro ($200/月) | Team ($25/人/月,≥5 人) |
| ---------------------------- | ------------------------------------ | ------------------------------------------------- | ------------------------------------------------------ |
| 价格 | $20/月 | $200/月 | $30/人/月(按月) $25/人/月 (按年)(起售 5 席) |
| 模型访问 | GPT-5.2 / GPT-5.2 mini,o1-mini 轻量 | GPT-5.2 / GPT-5.2 mini,o1-pro & o3-mini 更高配额 | GPT-5.2 / GPT-5.2 mini,团队共享配额 |
| 高级推理 | o1-mini 低频 | o1-pro 高频、长上下文 | o1-pro 团队配额,可分配席位 |
| 上下文/文件 | 更高文件大小与上下文 | 最高文件大小/上下文,适合长文档与代码库 | 与 Pro 类似,可团队共享 |
| 代码执行(Code Interpreter) | 更高并发与用量 | 最高并发/用量,适合数据分析与脚本 | 团队并发/用量共享 |
| 自定义工具/Memory | ✓ | ✓(更高容量) | ✓(团队共享,权限可管控) |
| 团队/组织 | 个人订阅 | 可与 Team/Enterprise 联动 | 席位制,含团队管理/审计入口 |
- 定价计算: [OpenAI Pricing](https://openai.com/pricing) / [API Pricing](https://openai.com/api/pricing)
#### **Claude (Anthropic)**
- **核心优势**: Claude Code 编程能力业界顶尖,开发者用其完成 95% 编码工作,效率提升 3 倍以上
- **适用场景**: Pro 版 ($20/月) 提供 Sonnet 模型,Max 版 ($100/$200/月) 在 IDE 中独家使用 Opus 4 模型
- **评价**: 11.5 万开发者使用,单周处理 1.95 亿行代码,被评价为 "超值" 的编程助手
**Claude 订阅梯度(以官网为准)**
| 功能 | Pro ($20/月) | Team 标准席位 ($25/人/月,≥5 人) | Team Premium 席位 ($150/人/月) |
| -------------------- | --------------------------------- | ------------------------------------------------------ | ------------------------------------- |
| 价格 | $20/月 | $30/人/月(按月) $25/人/月 (按年)(起售 5 席) | $150/人/月 |
| 模型访问 | Sonnet 高额度,Opus/Opus 预览限量 | Sonnet/Opus 高额度,优先新模型 | Sonnet/Opus 高额度 + Premium 优先队列 |
| 消息额度 | ~5x 免费用量、优先队列 | 团队更高用量、共享池 | 更高配额,适合高频审查/重构 |
| 上下文/文件 | 更长上下文/文件上传 | 最高上下文/文件上限 | 最高上限,适合跨大仓库重构 |
| Artifacts / Projects | ✓ | ✓(团队项目/共享空间) | ✓(Premium 同享) |
| 管理与审计 | ✗ | 管理后台、成员管理、单点登录 | 管理后台、审计、Premium 支持 |
- 定价计算: [Claude Pricing](https://claude.com/pricing)
#### **Gemini Pro 3 / Flash (Google)**
- **核心优势**: 长上下文(百万级,具体以官方发布为准),工具调用与代码补全兼顾,多模态(文本/图像/音频)理解;Flash 版本主打低延迟与低成本,适合实时交互与批量脚本。
- **适用场景**: Pro 3 用于复杂推理、跨文件重构、代码审查;Flash 用于低延迟补全、对话式问答、批量生成;AI Pro/Ultra 套餐对创意多模态(图生图、视频生成)和深度研究额度提升明显。
- **计费/托管**: Google AI Studio 提供订阅(AI Pro $20/月,AI Ultra $250/月,均含免费试用期)与免费层,企业可通过 Vertex AI 获得 VPC-SC、CMEK、审计与私有服务访问(以官方定价为准);部分功能限美国地区。
- **评价**: 在推理速度/性价比上优势明显,结合 Vertex AI 的安全与合规能力适合对合规有要求的团队;AI Ultra 独享 Deep Think / Project Mariner,适合重度研究或创意团队。
**Gemini Pro 3 订阅梯度**
| 功能 | AI Pro ($20/月) | AI Ultra ($250/月) |
| ------------------------- | ------------------ | ----------------------- |
| 价格 | $20/月(首月免费) | $250/月(前 3 月 $125) |
| Gemini 3 Pro 对话 | 更高权限 | 最高用量 |
| Deep Think | ✗ | ✓(Ultra 专属) |
| Gemini Agent | ✗ | ✓(仅限美国) |
| Deep Research(深度研究) | 20 份/天 | 200 份/天 |
| Gemini Code Assist/CLI | 更高上限 | 最高上限 |
| Jules(程式设计代理) | 更高额度 | 最高额度 |
- 定价计算: [Google AI Studio Pricing](https://ai.google.dev/pricing) / [Vertex AI Pricing](https://cloud.google.com/vertex-ai/pricing)
| Project Mariner | ✗ | ✓(抢先体验,仅限美国) |
**ChatGPT vs Claude vs Gemini Pro 3 对比(Team 编码场景)**
| 维度 | ChatGPT | Claude | Gemini Pro 3 |
| ------------- | ------------------------------------ | ------------------------------------ | ----------------------------------------- |
| 起步价格 | Plus $25/人/月 (按年) | Pro $25/人/月 (按年) | AI Pro $20/月 |
| 推理/代码 | o1-pro 强推理,Code Interpreter 稳定 | Sonnet/Opus 代码审查与长上下文表现佳 | Pro 3 长上下文,推理性价比高,纯代码稍弱 |
| 长上下文/文件 | Pro 版最高上下文与文件上传 | Team 版最高上下文与团队共享文件 | Ultra 更高上下文,适合跨文件重构 |
| 代码工具/代理 | Code Interpreter,工具/Memories | Artifacts/Projects,团队协作 | Gemini Code Assist/CLI,Jules(编程代理) |
| 适用场景 | 复杂编码/数据分析/脚本 | 代码审查、跨文件重构、团队配合 | 长上下文重构 + 研究/Agent 编排 |
### 2.2 国产 Coding Plan 平台
#### **GLM 智谱清言 (智谱 AI)**
- **核心优势**: GLM-4.6 代码能力对齐 Claude Sonnet 4,国内最强 Coding 模型,token 消耗比前代少 30%
- **性价比**: 最低 ¥40/月,约 Claude 价格的 1/7,性能达 Claude 的 9/10
- **评价**: 在 CC-Bench 等 7 大权威测试中表现卓越,真实编程测试中超过 Claude Sonnet 4
- **定价**: [bigmodel.cn/pricing](https://bigmodel.cn/pricing)
#### **MiniMax M2**
- **核心优势**: 专为 Agent 和代码而生,SWE-bench 冠军 (44% 成功率超 GPT-5 Codex),价格仅 Claude 的 8%,速度是其 2 倍
- **技术参数**: 100 亿激活参数,2300 亿总参数,20 万+ 上下文窗口
- **评价**: 开源排名第一,前端设计和交互方案表现尤为出色
- **定价**: [MiniMax 定价](https://platform.minimaxi.com/docs/guides/pricing?key=68aec7e84c75b9c918ccd10d)
#### **Kimi K2 Thinking (月之暗面)**
- **核心优势**: 万亿参数混合专家架构,支持 256K 上下文,能执行 200-300 次连续工具调用
- **技术特点**: 原生 INT4 量化,低延迟模式下 2 倍加速且无损性能
- **评价**: NIST 评估为当时中国最强 AI 模型,在 SWE-Multilingual 得分 61.1%
- **定价**: [Kimi 定价](https://kimi.moonshot.cn/pricing)
#### **通义千问 (阿里云 Qwen 系列)**
- **最新模型族**: Qwen3(通用)/Qwen3-Coder(代码)/Qwen3-VL(多模态)/Qwen-Long(超长上下文)及轻量推理款 QwQ;覆盖推理、代码、视觉与长文档需求
- **核心能力**: 原生函数/工具调用、检索/联网、代码补全与跨文件重构,多模态理解(图文/表格/公式),长上下文版本可支持跨文件与长文档分析
- **适用场景**: 百炼平台一键编排多模型与工具,适合电商/内容/客服/代码等多轮推理场景;长文档与多模态(设计稿还原、表格解析)场景表现稳健
- **计费/托管**: 百炼提供按量/订阅与企业版(VPC、审计、CMEK、数据不出境),支持私有化或混合云部署,便于满足国内合规
- **评价**: 中文语料和行业场景打磨成熟,工程化与性价比兼顾,是国内团队可长期依赖的主力模型
- **定价**: [百炼模型市场-Qwen](https://bailian.console.aliyun.com/#/model-market/detail/qwen-max)
#### **火山方舟 (豆包 Doubao-Seed-Code)**
- **核心优势**: 国内首个支持视觉理解的编程模型,可根据 UI 设计稿/截图生成代码,在 TRAE 环境中 SWE-Bench Verified 达 78.80% (SOTA)
- **成本优势**: 业界综合成本降低 62.7%,国内最低价,同样任务成本仅为 Claude 的 8%,GLM 的 44%
- **评价**: 前端页面复刻能力 "遥遥领先",兼容 Anthropic API,易于迁移
- **定价**: [Doubao 定价](https://www.volcengine.com/product/doubao)
### 2.3 IDE 与开发环境
#### **Cursor**
- **市场地位**: 估值 99 亿美元,年化收入 5 亿美元且每两月翻番,行业领导者
- **核心功能**: 预测式代码补全 (预测 5-10 行)、跨文件重构引擎、交互式调试
- **评价**: v1.0/v1.1 新增 BugBot 审查、Background Agent、Memory 能力,社区生态最完善
#### **GitHub Copilot**
- **核心优势**: 与 GitHub 深度集成,生态完善,2025 年 12 月新增组织级代码审查功能
- **Premium Requests**: Pro 版 300 次/月,Pro+ 版 1,500 次/月,超量 $0.04/次
- **评价**: 超时率从 4.3% 降至 1.1%,稳定性显著提升,适合 GitHub 重度用户
#### **Windsurf (Codeium)**
- **技术创新**: 全球首个 AI Flow 范式 IDE,Cascade 技术实现多步骤协同,Supercomplete 预测高层意图
- **定价优势**: 免费版 25 积分/月,Pro 版 $15/月 (500 积分),可免费使用 GPT-4o 和 Claude 3.5 Sonnet
- **评价**: 上下文理解能力优于 Cursor,适合需要深度代码库理解的团队
#### **Trae (字节跳动)**
- **本土优势**: 中国首个 AI 原生 IDE,原生中文支持,配置 Doubao-1.5-pro/DeepSeek R1/V3
- **核心功能**: Builder 模式 (从零构建项目)、Solo 模式 (全流程自动化)
- **评价**: 目前完全免费,效率提升 300%,但低配置环境下性能问题明显
#### **Qoder(阿里)**
- **定位**: 阿里推出的全栈 AI IDE,强调跨文件重构与代码审查
- **核心功能**: 长上下文补全、Agent 式任务分解、项目级搜索与重构、终端/工具调用
- **定价**: Pro+ $30/月,Ultra $100/月(更高上下文与 Agent 并发)
#### **Kiro (AWS)**
- **核心特点**: 规格驱动开发 (Spec-Driven),强制 "先计划后构建",Agent Hooks 自动化触发器
- **技术架构**: 专用 Claude Sonnet 3.7/4.0 模型
- **评价**: 适合企业级项目管理和流程规范化,目前公测阶段免费
### 2.4 VSCode 插件
#### **Augment**
- **核心优势**: SWE-Bench Verified 冠军 (65.4%),20 万 token 上下文窗口,基于 Claude Sonnet 4
- **功能特点**: Agent 智能体模式、持久记忆学习编码风格、支持多模态输入 (截图/Figma)
- **多 IDE 支持**: JetBrains、VS Code、GitHub、Slack、Vim 全覆盖
- **定价**: 新用户半月免费试用,之后 $60/月
---
## 三、选型建议
### 3.0 不同规模团队的决策要点
- **提效优先结论**:追求最佳 AI 编程提效时,优先选 Claude Code(AI 工程化最完善,$100/月足够覆盖重度开发);成本敏感可选 codex(工程化稍弱,约 $20/月满足多数场景)。
- **多模态优势**:Gemini Pro 3 在图像/视觉理解上领先,适合涉及设计稿还原或多模态需求的团队,纯编程能力弱于 Claude Code/codex。
- **极致降本路径**:在 SaaS 订阅外,还可组合开源项目自建中转站与号池,进一步压缩调用成本(需评估合规与运维成本)。
- **个人 / 1-10 人**:优先 ChatGPT Plus、Claude Pro、Cursor Pro(或 Windsurf Free/Pro)+ Copilot Pro;关注易用与成本封顶。
- **10-50 人**:Cursor Pro/Pro+ + Claude Max / ChatGPT Pro;国内可选 Doubao Lite/Pro + Windsurf Pro;统一 1-2 款 IDE,建立提示词与代码片段库。
- **50-200 人**:国际(Cursor Pro+/Ultra + Claude Max / ChatGPT Pro)+ 国内(Doubao Pro 或 GLM Pro/Max + Windsurf/Trae);开始启用 SSO、审计、内网代理,分团队额度管理。
- **200-300 人(大型研发)**:国际+国内双栈并行,企业版或 Team/Business 版启用 SSO/SCIM、审计日志、VPC/专线;指标化复盘(拒答率、幻觉率、代码审查命中率)。
- **300 人以上 / 跨境上市公司**:必须满足 SOX/内部控制、数据主权、GDPR/CCPA、渗透与安全评估;采用企业合同(DPA/BAA/SOW),双 Region 数据隔离,DLP + 本地检索,关键产出需人工复核留痕。
- **共通动作**:统一 IDE/插件、分级仓库访问、敏感项目禁传公有端点、月度成本与质量复盘,逐步升级模型与额度。
### 3.1 按预算分类
- **低成本方案**: MiniMax M2 (¥29 起)、火山方舟 (¥40 起)、Trae (免费)
- **中等预算**: GLM (¥40 起)、Windsurf Pro ($15)、GitHub Copilot Pro ($10)
- **高端方案**: Cursor Ultra ($200)、ChatGPT Pro ($200)、Claude Max ($200)
### 3.2 按使用场景分类
- **个人开发者**: ChatGPT Plus、Claude Pro、GLM Lite
- **中小团队**: Cursor Pro、Trae、Windsurf、MiniMax
- **企业级团队**: Cursor Teams、GitHub Copilot Enterprise、Kiro、Augment
- **前端开发优先**: 火山方舟 (视觉理解)、MiniMax M2
- **中文环境优先**: Trae、GLM、火山方舟、Kimi
### 3.3 按技术栈分类
- **VSCode 生态**: Augment、Trae、Windsurf 插件
- **JetBrains 用户**: Augment、Windsurf 插件
- **GitHub 重度用户**: GitHub Copilot
- **多语言项目**: Cursor、Kimi K2、GLM-4.6
### 3.4 推荐组合示例(多规模适用)
| 需求 | 推荐组合 | 说明 |
| ----------------------- | -------------------------------------------------------- | ------------------------------------------- |
| 代码生成 + 评审(国际) | Cursor Pro+/Ultra + Claude Max / ChatGPT Pro | 大上下文 + 强代理调度,覆盖多语言与复杂重构 |
| 代码生成 + 评审(国内) | Windsurf Pro 或 Trae + Doubao Seed-Code / GLM-4.6 | 便于内网代理与中文语境,成本可控 |
| IDE 轻量补全 | GitHub Copilot Business/Enterprise | 统一 GitHub 权限与审计,团队管理成熟 |
| Agent 式自动化 | Cursor Background Agent / Trae Solo 模式 / MiniMax Agent | 适合批量脚手架、重构、测试生成 |
| 合规/隔离 | OpenAI/Anthropic Enterprise 或 Doubao/GLM 私有化选项 | 支持 SSO、审计、VPC/专线、模型封装 |
### 3.5 模型与方案汇总表(选型速览)
| 类别 | 代表模型/方案 | 适合规模 | 主要优势 | 价格级别 | 合规要点 |
| ----------- | --------------------------------------- | ---------- | ----------------------------------- | -------- | ----------------------------------- |
| 国际通用 | ChatGPT Pro / Claude Max | 个人-200人 | 全能生成、复杂推理、API 额度高 | $$$ | 开启 SSO/日志控制;敏感仓库少量上传 |
| 国际企业 | OpenAI/Anthropic Enterprise | 200人以上 | 合规合同(DPA/BAA)、审计、私有端点 | $$$$ | 支持专线/VPC、数据隔离、可签 SOW |
| 国内主力 | Doubao Seed-Code / GLM-4.6 | 10-300人 | 中文/视觉理解强,成本低 | $$ | 企业版支持专线,需国内数据合规 |
| 性价比 | MiniMax M2 / Kimi K2 | 1-200人 | 价格低、长上下文 | $-$$ | 避免敏感代码上传公有端点 |
| IDE/Agent | Cursor Pro+/Ultra / Windsurf Pro / Trae | 10-300人 | IDE 深度集成,Agent/Flow 协同 | $-$$$ | 企业代理、最少遥测、私有仓库索引 |
| 补全/审查 | GitHub Copilot Business/Enterprise | 10-300人 | GitHub 权限与审计成熟 | $$ | 绑定组织 SSO/SCIM,禁外发私仓代码 |
| VSCode 插件 | Augment | 10-200人 | 大上下文,Agent/多模态 | $$ | 控制上传范围与日志,必要时本地检索 |
---
## 订阅计划
### ChatGPT
| **套餐等级** | **月度** |
| ----------------- | ------------- |
| **Plus** | $20 |
| **Pro** | $200 |
| **Business/Team** | $30/person |
| **Enterprise** | Sales Contact |
### Claude
[Pricing](https://platform.claude.com/docs/en/about-claude/pricing)
| **套餐等级** | **月度** |
| ------------ | -------- |
| **Pro** | $20 |
| **Max 5x** | $100 |
| **Max 20x** | $200 |
## IDE/插件
## Coding Plan
提供 API,可接入 Claude Code,Cline 和 Chat 软件中使用。
### GLM (z.ai)(智谱清言)
[Pricing](https://bigmodel.cn/glm-coding)
最新模型:GLM-4.6 GLM-4.6V
| **套餐等级** | **月度** | **季度** | 年度 | **用量说明 (每 5 小时)** | **对应 Claude 额度** |
| ------------ | -------- | -------- | ----- | ------------------------ | -------------------- |
| **Lite** | ¥40 | ¥120 | ¥480 | ~120 Prompts | Claude Pro 的 3 倍 |
| **Pro** | ¥200 | ¥600 | ¥2400 | ~600 Prompts | Lite 的 5 倍 |
| **Max** | ¥400 | ¥1200 | ¥4800 | ~2400 Prompts | Pro 的 4 倍 |
### MiniMax M2
[Pricing](https://platform.minimaxi.com/docs/pricing/coding-plan)
最新模型:MiniMax M2
| **套餐等级** | **月度** | **季度** | **年度** | **用量说明 (每 5 小时)** | **对应 Claude 额度** |
| ------------ | -------- | -------- | -------- | ------------------------ | ----------------------- |
| **Starter** | ¥29 | ¥87 | ¥348 | 40 Prompts | 约 Claude Pro 的 1 倍 |
| **Plus** | ¥49 | ¥147 | ¥588 | 100 Prompts | 约 Claude Pro 的 2.5 倍 |
| **Max** | ¥119 | ¥357 | —— | 300 Prompts | 约 Claude Pro 的 7.5 倍 |
## Kimi
[Pricing](https://www.kimi.com/membership/pricing)
最新模型:Kimi K2 Thinking
| **套餐等级** | **月度** | **季度** | **年度** | **用量说明 (每 5 小时)** | **对应 Claude 额度** |
| -------------- | -------- | -------- | -------- | ------------------------ | -------------------- |
| **Andante** | ¥49 | —— | —— | 1024 Prompts | —— |
| **Moderato** | ¥99 | —— | —— | 2048 Prompts | —— |
| **Allegretto** | ¥119 | —— | —— | 7168 Prompts | —— |
## 火山方舟(豆包)
[Pricing](https://www.volcengine.com/activity/codingplan)
最新模型:Doubao-Seed-Code DeepSeek-V3.2
| **套餐等级** | **月度** | **季度** | **年度** | **用量说明 (每 5 小时)** | **对应 Claude 额度** |
| ------------ | -------- | -------- | -------- | ------------------------ | -------------------- |
| **Lite** | ¥40 | ¥120 | ¥480 | ~120 Prompts | Claude Pro 的 3 倍 |
| **Pro** | ¥200 | ¥600 | ¥2400 | ~600 Prompts | Lite 的 5 倍 |
## IDE
### Cursor
[Pricing](https://www.cursor.com/pricing)
| **套餐** | **月度 (USD)** | **额度** |
| -------- | -------------- | ---------------------------------------------------------- |
| Hobby | $0 | 1 周试用 + 有限 Agent/Tab |
| Pro | $20 | 无限 Tab/Auto + $20 frontier model 额度 (~225 次 Sonnet 4) |
| Pro+ | $60 | Pro 的 3 倍模型使用额度 |
| Ultra | $200 | Pro 的 20 倍模型使用额度 |
| Teams | $40/人 | Pro 额度 + 团队管理 |
### Github Copilot
[Pricing](https://github.com/features/copilot/plans)
| **套餐** | **月度 (USD)** | **额度** |
| ---------- | -------------- | ------------------------------------------------- |
| Free | $0 | 2,000 completions/月 + 50 premium requests/月 |
| Pro | $10 | 无限 completions + 300 premium requests/月 |
| Pro+ | $39 | 无限 completions + 1,500 premium requests/月 |
| Business | $19/人 | 无限 completions + 300 premium requests/用户/月 |
| Enterprise | $39/人 | 无限 completions + 1,000 premium requests/用户/月 |
#### Winsurf
[Pricing](https://windsurf.com/pricing)
| **套餐** | **月度 (USD)** | **额度** |
| ---------- | -------------- | ------------------- |
| Free | $0 | 25 credits/月 |
| Pro | $15 | 500 credits/月 |
| Teams | $30/人 | 500 credits/人/月 |
| Enterprise | 联系销售 | 更高额度 + 企业功能 |
#### Trae
[Pricing](https://www.trae.ai/pricing)
[Billing](https://docs.trae.ai/ide/billing)
| **套餐** | **月度 (USD)** | **额度** |
| -------- | -------------- | ------------------------- |
| Free | $0 | 基础功能(有限额度) |
| Pro | $10 | 新用户首月 $3(原价 $10) |
#### Kiro
[Pricing](https://kiro.dev/pricing)
| **套餐** | **月度 (USD)** | **额度** |
| ---------- | -------------- | -------------------------------------- |
| Free | $0 | 50 credits |
| Pro | $20 | 1,000 credits/月(超量 $0.04/credit) |
| Pro+ | $40 | 2,000 credits/月(超量 $0.04/credit) |
| Power | $200 | 10,000 credits/月(超量 $0.04/credit) |
| Enterprise | 联系销售 | 自定义额度 + 企业功能 |
### VSCode 插件
#### Augment
[Pricing](https://augmentcode.com/pricing)
| **套餐** | **月度 (USD)** | **额度** |
| ---------- | -------------- | --------------------- |
| Indie | $20 | 40,000 credits/月 |
| Standard | $60 | 130,000 credits/月 |
| Max | $200 | 450,000 credits/月 |
| Enterprise | 联系销售 | 自定义额度 + 企业功能 |
## 共享方案
### New API
[GitHub](https://github.com/QuantumNous/new-api)
若上方的 coding plan 提供了 apikey 的方式,则可以将 apikey 添加到 new api 中进行聚合,然后分发出去。
### Claude Relay Service
[GitHub](https://github.com/Wei-Shaw/claude-relay-service)
若没有直接提供 key,例如 Claude Code, Codex 等,则可以部署 CRS 来登录 Claude Code 和 OpenAI 的账号来分发
## 注意点
Claude Code 由于环境要求严格,容易封号,所以部署环境要至少需要使用美国家庭宽带代理,否则容易封号 (虽然会退款)。
## 促销活动
- 当前 chatgpt 的 business 方案存在 $0 一个月,具有 5 个席位的 team 方案,市面上会有 ¥10/个席位并提供质保的商家,结束时间取决于 openai 的官方政策。
- GLM 存在首年/季度/年优惠,可使用多个账号购买并通过上方的方式共享和分发。
### Claude code/Codex 中转站
当前市面上存在 Claude Code/Codex 中转站,以 Claude Code 为例,价格普遍在每刀 ¥0.3-¥1 之间。由于价格计算涉及倍率/中转站内部计费规则,故不列出。
---
## AI Agent(智能体)
## 概述
**AI Agent(人工智能智能体)** 是一个能够**自主感知环境、做出决策并执行行动**的 AI 系统。与传统的聊天式 AI 不同,Agent 可以:
- 主动调用工具
- 规划多步骤任务
- 处理复杂的工作流
- 在失败时自动重试
> **核心特点**:自主性、交互性、反应性、主动性
---
## 核心概念
### 1. Agent 的定义
**Agent** 是能够:
1. **感知** (Perceive):获取环境信息
2. **推理** (Reason):分析情况并制定计划
3. **行动** (Act):执行具体操作
4. **学习** (Learn):从反馈中改进
### 2. Agent 与 Chatbot 的区别
| 特性 | Chatbot | AI Agent |
| ---- | ------- | -------- |
| **交互方式** | 问答式 | 任务导向 |
| **主动性** | 被动响应 | 主动规划 |
| **工具使用** | 有限 | 丰富 |
| **任务复杂度** | 单步任务 | 多步骤任务 |
| **记忆能力** | 会话级 | 长期记忆 |
| **自主决策** | 无 | 有 |
---
## Agent 的架构
### 基本架构
```
┌─────────────────────────────────────────────────────────┐
│ AI Agent 架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 输入 │ ──▶│ 推理 │ ──▶│ 输出 │ │
│ │ Input │ │ Reasoning│ │ Output │ │
│ └─────────┘ └────┬────┘ └─────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 工具调用 │ │
│ │ Tools │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 环境反馈 │ │
│ │ Feedback │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
### 核心组件
#### 1. 规划模块 (Planning)
- 任务分解
- 步骤排序
- 资源分配
- 时间估算
#### 2. 记忆模块 (Memory)
- 短期记忆(当前会话)
- 长期记忆(向量存储)
- 上下文管理
- 知识检索
#### 3. 工具模块 (Tools)
- 文件操作
- API 调用
- 命令执行
- 数据库查询
#### 4. 反思模块 (Reflection)
- 结果验证
- 错误处理
- 策略调整
- 重试机制
---
## Agent 的类型
### 1. 单 Agent 系统
由一个 Agent 完成所有任务:
```
┌─────────────────┐
│ Agent │
│ ┌───────────┐ │
│ │ Planning │ │
│ │ Memory │ │
│ │ Tools │ │
│ │ Action │ │
│ └───────────┘ │
└─────────────────┘
```
**特点**:
- 实现简单
- 适合单领域任务
- 容易调试
### 2. 多 Agent 系统
多个 Agent 协同工作:
```
┌─────────────────────────────────────────────────────────┐
│ Multi-Agent System │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Planner │ ──▶│ Coder │ ──▶│ Tester │ │
│ │ Agent │ │ Agent │ │ Agent │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ └───────────────┴───────────────┘ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Coordinator │ │
│ │ Agent │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
**特点**:
- 专业化分工
- 可并行处理
- 适合复杂任务
**常见角色**:
| Agent 角色 | 职责 |
| ---------- | ---- |
| **Planner** | 任务规划、分解 |
| **Coder** | 代码生成、修改 |
| **Reviewer** | 代码审查、验证 |
| **Tester** | 测试用例生成 |
| **Debugger** | 问题定位、修复 |
| **Documenter** | 文档生成 |
### 3. 层级 Agent 系统
Agent 之间存在上下级关系:
```
┌─────────────────────────────────────────────────────────┐
│ Hierarchical Agent System │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────┐ │
│ │ Manager Agent (L1) │ │
│ │ 任务分配、进度监控、协调 │ │
│ └─────────────┬─────────────────────────┘ │
│ │ │
│ ┌──────────┼──────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Coder ││Tester││Doc │ (L2) │
│ │Agent ││Agent ││Agent │ │
│ └──────┘ └──────┘ └──────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## 主流 Agent 框架
### 1. LangChain Agent
```python
from langchain.agents import create_openai_functions_agent
from langchain.tools import Tool
# 定义工具
tools = [
Tool(
name="calculator",
func=lambda x: eval(x),
description="执行数学计算"
)
]
# 创建 Agent
agent = create_openai_functions_agent(
llm=chat_model,
tools=tools,
prompt=prompt
)
```
### 2. AutoGen
```python
from autogen import AssistantAgent, UserProxyAgent
# 创建 Agent
assistant = AssistantAgent(
name="assistant",
llm_config={"model": "gpt-4"}
)
user_proxy = UserProxyAgent(
name="user_proxy",
code_execution_config={"work_dir": "coding"}
)
# 启动对话
user_proxy.initiate_chat(
assistant,
message="计算斐波那契数列的第 10 项"
)
```
### 3. Claude Code Task Agent
```typescript
// 使用 Claude Code 的子代理
import { Task } from '@anthropic-ai/claude-code';
const result = await Task({
description: "分析项目代码结构",
subagentType: "explore",
model: "claude-opus-4-5"
});
```
### 4. Cursor Composer
Cursor 的 Agent 系统:
- **Composer**:多步骤任务执行
- **Background Agent**:后台处理
- **Multi-Agent Interface**:并行多智能体
---
## Agent 的设计模式
### 1. ReAct (Reasoning + Acting)
```
Thought (思考) → Action (行动) → Observation (观察) → Thought (思考) → ...
```
**示例**:
```
Thought: 我需要读取文件内容
Action: ReadFile(path="src/main.js")
Observation: 读取到 100 行代码
Thought: 我看到了问题所在
Action: EditFile(...)
```
### 2. Chain of Thought
逐步推理,展示思考过程:
```
问题:用户报告登录失败
思考步骤:
1. 检查认证逻辑
2. 查看日志文件
3. 验证 API 配置
4. 定位问题原因
```
### 3. Plan-and-Execute
先规划再执行:
```
1. 规划阶段:
- 分析需求
- 制定计划
- 分解任务
2. 执行阶段:
- 按步骤执行
- 记录进度
- 处理异常
```
### 4. Self-Refine
自我反思和改进:
```
1. 生成初始方案
2. 自我审查
3. 识别问题
4. 改进方案
5. 重复 2-4
```
---
## Agent 的最佳实践
### 1. 明确目标
- 清晰定义任务边界
- 设定成功标准
- 明确输出格式
### 2. 工具设计
- 工具功能单一
- 输入输出明确
- 错误处理完善
### 3. 记忆管理
- 合理设置上下文窗口
- 使用向量存储长期记忆
- 定期清理无关信息
### 4. 安全考虑
- 限制可执行的操作
- 实施权限控制
- 记录所有行动
### 5. 可观测性
- 记录决策过程
- 监控执行状态
- 追踪资源使用
---
## Agent 的应用场景
| 场景 | Agent 类型 | 说明 |
| ---- | ---------- | ---- |
| **代码生成** | Coder Agent | 生成、修改代码 |
| **代码审查** | Reviewer Agent | 审查代码质量 |
| **自动化测试** | Tester Agent | 生成测试用例 |
| **Bug 修复** | Debugger Agent | 定位和修复问题 |
| **文档生成** | Documenter Agent | 生成技术文档 |
| **数据分析** | Analyst Agent | 处理数据任务 |
| **运维自动化** | Ops Agent | 自动化运维操作 |
---
## 参考资源
### 论文
- [ReAct: Synergizing Reasoning and Acting in Language Models](https://arxiv.org/abs/2210.03629)
- [AutoGen: Enabling Next-Gen LLM Applications](https://arxiv.org/abs/2308.08155)
### 框架文档
- [LangChain Agents](https://python.langchain.com/docs/modules/agents/)
- [AutoGen Documentation](https://microsoft.github.io/autogen/)
- [Claude Code CLI](https://docs.anthropic.com/claude-code)
---
**文档更新时间:2025 年 12 月**
---
## AI 沙箱(Sandbox)
# AI 沙箱(AI Sandbox)
## 概述
**AI 沙箱** 是一个**隔离的执行环境**,用于安全地运行 AI 生成的代码、执行命令或进行实验。沙箱确保 AI 操作不会影响宿主系统,同时提供可控的测试环境。
> **核心价值**:安全性 + 可控性 + 可重复性
---
## 为什么需要 AI 沙箱
### 1. 安全风险
没有沙箱的情况下,AI 可能:
- 删除重要文件
- 执行恶意命令
- 访问敏感数据
- 消耗系统资源
- 感染网络环境
### 2. 典型场景
| 场景 | 风险 | 沙箱解决方案 |
| ---- | ---- | ----------- |
| AI 生成代码执行 | 代码可能包含恶意逻辑 | 在容器中执行 |
| AI 调用系统命令 | 命令可能破坏系统 | 限制可用命令 |
| AI 访问网络 | 可能访问恶意网站 | 网络隔离/代理 |
| AI 修改文件 | 可能删除重要文件 | 文件系统隔离 |
---
## 沙箱的类型
### 1. 进程级沙箱
隔离单个进程:
```
┌─────────────────────────────────────────────────────────┐
│ 进程沙箱 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 宿主系统 │ │ 沙箱进程 │ │
│ │ │ │ │ │
│ │ ┌────────┐ │ ──▶ │ ┌────────┐ │ │
│ │ │ 其他 │ │ │ │ AI 代码 │ │ │
│ │ │ 进程 │ │ │ │ 执行 │ │ │
│ │ └────────┘ │ │ └────────┘ │ │
│ │ │ │ │ │
│ └──────────────┘ └──────────────┘ │
│ ▲ ▲ │
│ └─────────────────────────┘ │
│ 权限隔离(chroot, namespace) │
│ │
└─────────────────────────────────────────────────────────┘
```
**技术**:
- Linux: chroot, namespace, seccomp
- macOS: sandbox_exec
- Windows: Job Objects, Restricted Tokens
### 2. 容器级沙箱
使用容器技术隔离:
```
┌─────────────────────────────────────────────────────────┐
│ 容器沙箱 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 宿主系统 │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Docker/Podman 容器 │ │ │
│ │ │ ┌─────────────────────────────┐ │ │ │
│ │ │ │ AI 执行环境 │ │ │ │
│ │ │ │ - 独立文件系统 │ │ │ │
│ │ │ │ - 独立网络栈 │ │ │ │
│ │ │ │ - 资源限制 │ │ │ │
│ │ │ └─────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
**技术**:
- Docker
- Podman
- Kubernetes (Pod)
- gVisor (用户空间内核)
### 3. 虚拟机级沙箱
完整的虚拟化隔离:
```
┌─────────────────────────────────────────────────────────┐
│ 虚拟机沙箱 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 宿主操作系统 │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Hypervisor (KVM/VMware) │ │ │
│ │ │ ┌─────────────────────────────┐ │ │ │
│ │ │ │ 虚拟机操作系统 │ │ │ │
│ │ │ │ ┌─────────────────────┐ │ │ │ │
│ │ │ │ │ AI 执行环境 │ │ │ │ │
│ │ │ │ │ - 完整隔离 │ │ │ │ │
│ │ │ │ │ - 独立内核 │ │ │ │ │
│ │ │ │ │ - 硬件虚拟化 │ │ │ │ │
│ │ │ │ └─────────────────────┘ │ │ │ │
│ │ │ └─────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
**技术**:
- KVM / QEMU
- VMware
- VirtualBox
- Firecracker (微虚拟机)
### 4. Web 沙箱
在浏览器/服务器端执行 JavaScript:
```
┌─────────────────────────────────────────────────────────┐
│ Web 沙箱 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 浏览器/服务器 │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ iframe / Web Worker │ │ │
│ │ │ ┌─────────────────────────────┐ │ │ │
│ │ │ │ AI 生成的 JavaScript │ │ │ │
│ │ │ │ - SOP 限制 │ │ │ │
│ │ │ │ - CSP 策略 │ │ │ │
│ │ │ │ - 内存隔离 │ │ │ │
│ │ │ └─────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
**技术**:
- iframe + sandbox 属性
- Web Workers
- Service Workers
- QuickJS (嵌入式 JS 引擎)
---
## 主流 AI 沙箱方案
### 1. E2B
专为 AI 代码执行设计的沙箱:
```bash
# 安装 E2B
pip install e2b
# 使用示例
from e2b import Sandbox
sandbox = Sandbox()
result = sandbox.run_code("print('Hello from AI!')")
```
**特点**:
- 专为 LLM 设计
- 预装常用工具
- 支持多种编程语言
- API 简单易用
### 2. Docker Exec
直接使用 Docker 作为沙箱:
```bash
# 运行容器执行代码
docker run --rm -v $(pwd):/workspace python:3.12 \
python /workspace/script.py
# 限制资源
docker run --rm \
--memory="512m" \
--cpus="1.0" \
--network=none \
python:3.12 python script.py
```
### 3. Firecracker
AWS Lambda 使用的微虚拟机:
```json
{
"boot_source": {
"kernel_image_path": "vmlinux.bin"
},
"drives": [
{
"drive_id": "rootfs",
"path_on_host": "rootfs.ext4",
"is_root_device": true,
"is_read_only": false
}
],
"machine_config": {
"vcpu_count": 1,
"mem_size_mib": 512
}
}
```
### 4. WebAssembly (WASM)
在浏览器中安全执行:
```javascript
// QuickJS WASM 沙箱
import { getQuickJS } from 'quickjs-emscripten';
const { evalCode } = await getQuickJS();
// 在隔离环境中执行代码
const result = evalCode(`
const sum = (a, b) => a + b;
sum(1, 2);
`);
```
---
## AI 工具中的沙箱使用
### Claude Code CLI
Claude Code 使用系统级沙箱:
```typescript
// 安全执行命令
const result = await Bash({
command: "npm test",
options: {
timeout: 30000,
cwd: workspaceDir,
env: { ...process.env, NODE_ENV: 'test' }
}
});
```
**安全措施**:
- 命令超时限制
- 工作目录限制
- 环境变量过滤
- 文件访问权限控制
### Cursor IDE
Cursor 使用容器执行代码:
- 每个 Tab 在独立环境中运行
- 文件系统访问需用户授权
- 网络请求可配置
### GitHub Codespaces
完整的云开发环境作为沙箱:
```
用户代码 → Codespaces 容器 → 隔离执行环境
↓
资源限制
↓
网络隔离
```
---
## 构建自己的 AI 沙箱
### 基础方案:Python subprocess
```python
import subprocess
import tempfile
import os
def execute_in_sandbox(code: str, timeout: int = 30):
"""在临时目录中执行代码"""
with tempfile.TemporaryDirectory() as tmpdir:
# 写入代码文件
code_file = os.path.join(tmpdir, 'script.py')
with open(code_file, 'w') as f:
f.write(code)
# 执行代码(带超时)
result = subprocess.run(
['python', code_file],
cwd=tmpdir,
timeout=timeout,
capture_output=True,
text=True
)
return result.stdout, result.stderr, result.returncode
```
### 中级方案:Docker
```python
import docker
def execute_in_docker(code: str, language: str = 'python'):
"""在 Docker 容器中执行代码"""
client = docker.from_env()
# 运行容器
container = client.containers.run(
f'{language}:3.12-slim',
command=['python', '-c', code],
mem_limit='512m',
cpu_quota=100000,
network_disabled=True,
detach=True
)
# 等待执行完成
result = container.wait()
logs = container.logs()
# 清理
container.remove()
return logs.decode('utf-8')
```
### 高级方案:gVisor
```bash
# 使用 gVisor 运行容器
docker run --runtime=runsc --rm python:3.12 python -c "print('Hello')"
```
---
## 沙箱的最佳实践
### 1. 资源限制
| 资源 | 建议限制 | 原因 |
| ---- | -------- | ---- |
| CPU | 1-2 核心 | 防止 CPU 占用 |
| 内存 | 512MB-2GB | 防止内存耗尽 |
| 磁盘 | 1GB | 限制存储使用 |
| 网络 | 禁用或代理 | 防止恶意访问 |
| 时间 | 30-60秒 | 防止无限循环 |
### 2. 文件系统隔离
- 使用临时文件系统
- 禁止访问宿主目录
- 提供虚拟文件系统
### 3. 网络隔离
- 默认禁用网络
- 需要时使用白名单
- 记录所有网络请求
### 4. 日志和监控
- 记录所有操作
- 监控资源使用
- 异常行为告警
### 5. 清理机制
- 执行后自动清理
- 定时清理残留
- 资源回收
---
## 沙箱方案对比
| 方案 | 隔离级别 | 性能 | 复杂度 | 适用场景 |
| ---- | -------- | ---- | ------ | -------- |
| **进程级** | 低 | 高 | 低 | 简单脚本 |
| **容器** | 中 | 高 | 中 | 通用场景 |
| **虚拟机** | 高 | 中 | 高 | 高安全要求 |
| **Web WASM** | 中 | 中 | 低 | 浏览器环境 |
| **E2B** | 中 | 高 | 低 | 快速集成 |
---
## 参考资源
### 开源项目
- [E2B](https://github.com/e2b-dev/e2b) - AI 代码执行沙箱
- [gVisor](https://github.com/google/gvisor) - 用户空间内核
- [Firecracker](https://github.com/firecracker-microvm/firecracker) - 微虚拟机
- [QuickJS](https://github.com/quickjs-ng/quickjs) - 轻量级 JS 引擎
### 文档
- [Docker 安全](https://docs.docker.com/engine/security/)
- [Linux Namespace](https://man7.org/linux/man-pages/man7/namespaces.7.html)
- [seccomp](https://man7.org/linux/man-pages/man2/seccomp.2.html)
---
**文档更新时间:2025 年 12 月**
---
## 上下文窗口(Context Window)
## 概述
**上下文窗口 (Context Window)** 是大语言模型在单次对话中**能够记忆和处理的最大 Token 数量**。它决定了模型能"看到"和"理解"多少信息。
> **简单理解**:上下文窗口 = 模型的"短期记忆容量"
---
## 核心概念
### 1. 上下文窗口的组成
```
┌─────────────────────────────────────────────────────────┐
│ 上下文窗口 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 系统提示 │ │对话历史 │ │ 用户 │ │
│ │ System │ │ History │ │ Query │ │
│ │ Prompt │ │ │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ [========|============|============] │
│ └───────────────────────────────────────────────────┘ │
│ 总 Token 数 ≤ 上下文窗口 │
│ │
└─────────────────────────────────────────────────────────┘
```
### 2. 输入 vs 输出窗口
| 类型 | 说明 |
| ---- | ---- |
| **输入窗口** | 模型能接收的最大 Token 数 |
| **输出窗口** | 模型能生成的最大 Token 数(通常 < 输入) |
---
## 主流模型的上下文窗口
### 超长上下文模型 (>500K)
| 模型 | 上下文长度 | 发布时间 |
| ---- | ---------- | -------- |
| **Gemini 2.0 Pro** | 2M tokens | 2025.02 |
| **Gemini 1.5 Pro** | 1M tokens | 2024.02 |
| **GPT-5.2** | 1M tokens | 2024.12 |
| **Claude 3** | 200K tokens | 2024.03 |
### 标准上下文模型 (100K-200K)
| 模型 | 上下文长度 |
| ---- | ---------- |
| **Claude Opus 4.5** | 200K |
| **Claude Sonnet 4.5** | 200K |
| **GPT-4o** | 128K |
| **GLM-4.7** | 128K |
### 中等上下文模型 (32K-100K)
| 模型 | 上下文长度 |
| ---- | ---------- |
| **GPT-4** | 32K / 8K |
| **Claude 2** | 100K |
| **Llama 3.1** | 128K |
### 小上下文模型 (<32K)
| 模型 | 上下文长度 |
| ---- | ---------- |
| **GPT-3.5** | 16K / 4K |
| **原始 Claude** | 9K / 72K |
| **Llama 2** | 4K |
---
## 上下文窗口的演进
```
2020 ────── 2022 ────── 2024 ────── 2026
│ │ │ │
2048 → 32K → 128K → 2M
(GPT-3) (GPT-4) (GPT-4 Turbo) (Gemini)
```
**关键里程碑**:
| 时间 | 模型 | 窗口大小 | 意义 |
| ---- | ---- | -------- | ---- |
| 2020.06 | GPT-3 | 2K | 首次大规模应用 |
| 2023.03 | GPT-4 | 32K | 长文本处理 |
| 2023.07 | Claude 2 | 100K | 超长上下文 |
| 2024.02 | Gemini 1.5 | 1M | 百万级突破 |
| 2025.02 | Gemini 2.0 | 2M | 当前最大 |
---
## 上下文窗口的作用
### 1. 代码分析
```
项目规模 所需窗口 推荐模型
────────────────────────────────────
单个文件 1K 任意
小型项目 50K-100K Claude, GPT-4
中型项目 200K-500K Gemini 1.5
大型项目 1M+ Gemini 2.0 Pro
全库分析 2M+ Gemini 2.0 Pro (需分块)
```
### 2. 文档处理
| 文档类型 | 长度 | 所需模型 |
| -------- | ---- | -------- |
| 短文章 | <5K tokens | 任意 |
| 长文章 | 20-50K tokens | Claude 3, GPT-4 |
| 书籍 | 100-500K tokens | Gemini 1.5, Claude 3 |
| 法律文档 | 500K-1M tokens | Gemini 2.0 Pro |
### 3. 多轮对话
```
对话轮数 平均Token/轮 总Token 需要模型
────────────────────────────────────────
10轮 500 5K 任意
50轮 500 25K Claude, GPT-4
100轮 500 50K Claude 3
500轮 500 250K Gemini 1.5+
```
---
## 上下文管理技术
### 1. 滑动窗口
```
原始上下文: [A][B][C][D][E][F][G][H][I][J]
窗口大小: 4
步骤1: [A][B][C][D]
步骤2: [B][C][D][E]
步骤3: [C][D][E][F]
步骤4: [D][E][F][G]
...
```
### 2. 重要性采样
```
完整上下文: [A][B][C][D][E][F][G][H][I][J]
重要性: ↑ ↑ ↑ ↑
保留: [A][C][E][G][I]
```
### 3. 分块处理
```
大文档: [==== ==== ==== ==== ==== ====]
↓
分块: [块1][块2][块3][块4][块5][块6]
↓
汇总: [摘要1][摘要2][摘要3][摘要4][摘要5][摘要6]
↓
最终: [综合摘要]
```
### 4. 向量检索 (RAG)
```
用户问题 → 向量化 → 检索相关片段 → 添加到上下文
↓
[系统提示] + [检索片段] + [用户问题]
↓
模型回答
```
---
## 超长上下文技术
### 1. 注意力机制优化
**核心问题**:传统注意力的复杂度是 O(n²)
| 技术 | 复杂度 | 说明 |
| ---- | ------ | ---- |
| **Flash Attention** | O(n²) | 优化内存访问 |
| **Ring Attention** | O(n²) | 块级计算 |
| **Linear Attention** | O(n) | 线性近似 |
### 2. 位置编码
| 技术 | 最大长度 | 说明 |
| ---- | -------- | ---- |
| **绝对位置编码** | 2048 | GPT-3 使用 |
| **相对位置编码** | 8192 | T5 使用 |
| **RoPE (旋转位置)** | ∞ | LLaMA, Gemini 使用 |
| **ALiBi** | ∞ | BLOOM 使用 |
### 3. KV Cache 压缩
```
原始 KV Cache: [==== ==== ==== ==== ====] (占用大量内存)
压缩后: [== == == == ==] (保留关键信息)
```
---
## 上下文窗口的最佳实践
### 1. 选择合适的模型
| 场景 | 推荐模型 | 窗口大小 |
| ---- | -------- | -------- |
| 简单对话 | GPT-4o-mini, Claude Haiku | 128K |
| 代码审查 | Claude Opus 4.5 | 200K |
| 全库分析 | Gemini 2.0 Pro | 2M |
| 文档问答 | Gemini 1.5 Pro | 1M |
### 2. 优化上下文使用
```diff
- 包含整个文件历史
+ 只包含当前修改的部分
- 重复发送相同信息
+ 使用引用或缓存
- 冗长的系统提示
+ 精简有效的提示词
```
### 3. 监控 Token 使用
```python
import anthropic
client = anthropic.Anthropic()
# 检查 Token 使用
response = client.messages.count_tokens(
model="claude-3-opus-20240229",
text="你的内容..."
)
print(f"输入 Token: {response.input_tokens}")
print(f"窗口使用率: {response.input_tokens / 200000 * 100:.1f}%")
```
---
## 上下文窗口的局限性
### 1. 质量下降
当上下文接近窗口上限时,模型可能:
- 遗忘早期信息
- 回答质量下降
- 出现幻觉
### 2. 成本增加
```
Token 数量 ∝ API 成本
```
### 3. 延迟增加
```
上下文长度 → 推理时间
10K tokens → ~2秒
100K tokens → ~10秒
1M tokens → ~60秒+
```
---
## 参考资源
### 论文
- [Transformer-XL](https://arxiv.org/abs/1901.02860) - 超长上下文 Transformer
- [Ring Attention](https://arxiv.org/abs/2310.01889) - 块级注意力
- [MegaByte](https://arxiv.org/abs/2310.05414) - 百万级上下文
### 技术博客
- [Anthropic Context Window](https://www.anthropic.com/index/context-window)
- [Google Gemini 1.5](https://blog.google/technology/ai/google-gemini-next-generation-model-february-2025/)
---
**文档更新时间:2025 年 12 月**
---
## LLMs.txt(LLM 友好文档)
## 概述
**llms.txt** 是一个项目根目录下的文本文件,用于为**大语言模型(LLM)提供项目上下文**。它类似于 `README.md`,但专门为 AI 工具(如 Claude Code、Cursor、Cline)设计,帮助 AI 更好地理解和操作代码库。
> **核心价值**:让 AI 快速理解项目结构、编码规范、技术栈,提供更精准的帮助
---
## llms.txt 的作用
### 1. 为 AI 提供项目上下文
```
传统方式:
AI: "这个项目是做什么的?"
用户: "这是一个小程序项目..."
AI: "使用什么框架?"
用户: "使用原生小程序..."
AI: "有什么编码规范?"
用户: "......"
有了 llms.txt:
AI 直接读取 llms.txt → 自动了解项目信息 → 精准提供帮助
```
### 2. 与 Claude Code CLAUDE.md 的关系
| 文件 | 目标用户 | 内容侧重 |
| ---- | -------- | -------- |
| **llms.txt** | 通用 LLM | 项目概述、技术栈、快速开始 |
| **CLAUDE.md** | Claude Code 专属 | 详细的工作流、命令、最佳实践 |
### 3. 标准 vs 自定义
```
llms.txt (标准)
├── 通用格式
├── 所有 LLM 都能理解
└── 社区标准
自定义命名
├── .cursorrules (Cursor 专属)
├── .clinerules (Cline 专属)
└── project_context.md (自定义)
```
---
## llms.txt 的标准格式
### 推荐结构
```markdown
# 项目名称
## 项目概述
一句话描述项目
## 技术栈
- 框架: ...
- 语言: ...
- 工具: ...
## 项目结构
简短的目录说明
## 快速开始
如何运行项目
## 编码规范
代码风格要求
## 重要说明
其他需要注意的事项
```
---
## llms.txt 模板
### 完整模板
```markdown
# [项目名称]
## 项目概述
[一句话描述项目是做什么的]
## 技术栈
- **框架**: [使用的主要框架]
- **语言**: [主要编程语言]
- **构建工具**: [如 webpack, vite, gulp]
- **测试框架**: [如 vitest, jest]
- **其他工具**: [其他重要依赖]
## 项目结构
```
src/
├── components/ # 组件目录
├── utils/ # 工具函数
├── pages/ # 页面
└── styles/ # 样式文件
```
## 快速开始
### 安装依赖
```bash
pnpm install
```
### 开发模式
```bash npm2yarn
npm run dev
```
### 构建
```bash npm2yarn
npm run build
```
### 测试
```bash npm2yarn
npm test
```
## 编码规范
- 使用 TypeScript 严格模式
- 组件使用函数式声明
- 文件命名使用 kebab-case
- 遵循 ESLint 规则
## 重要说明
- [特殊约定]
- [注意事项]
- [已知问题]
```
### 小程序项目模板
```markdown
# 小程序项目名称
## 项目概述
一个基于原生小程序框架的 [功能描述] 应用
## 技术栈
- **框架**: 原生小程序 (微信/支付宝/抖音)
- **构建**: gulp + weapp-tailwindcss
- **样式**: TailwindCSS (原子化 CSS)
- **语言**: JavaScript / TypeScript
## 项目结构
```
pages/ # 页面目录
├── index/ # 首页
├── profile/ # 个人中心
components/ # 组件目录
utils/ # 工具函数
styles/ # 全局样式
assets/ # 静态资源
```
## 快速开始
```bash
# 安装依赖
pnpm install
# 开发模式 (微信小程序)
pnpm dev:wechat
# 构建
pnpm build
```
## 编码规范
- 组件命名使用 kebab-case
- 页面命名使用 kebab-case
- 样式使用 TailwindCSS 原子类
- 避免使用 id 选择器
## 重要说明
- 使用 weapp-tailwindcss 进行 CSS 转换
- 图片资源需放在 assets/ 目录
- 遵循小程序开发规范
```
### React 项目模板
```markdown
# React 项目名称
## 项目概述
使用 React + TypeScript 构建的 [项目描述]
## 技术栈
- **框架**: React 18+
- **语言**: TypeScript
- **构建**: Vite
- **状态管理**: Zustand / Redux
- **路由**: React Router
- **UI**: TailwindCSS + shadcn/ui
## 项目结构
```
src/
├── components/ # 通用组件
├── pages/ # 页面组件
├── hooks/ # 自定义 Hooks
├── store/ # 状态管理
├── services/ # API 服务
├── types/ # TypeScript 类型
└── utils/ # 工具函数
```
## 快速开始
```bash
pnpm install
pnpm dev
```
## 编码规范
- 组件使用函数式声明 + hooks
- 使用 TypeScript 类型
- 遵循 ESLint + Prettier 规则
```
---
## AI 工具对 llms.txt 的支持
### 1. Claude Code
Claude Code 会**自动读取**项目根目录的 `llms.txt`:
```
项目根目录/
├── llms.txt ← AI 自动读取
├── CLAUDE.md ← Claude Code 专属配置
├── package.json
└── src/
```
### 2. Cursor
Cursor 支持 `llms.txt`,同时也支持 `.cursorrules`:
```diff
+ llms.txt # 通用 LLM 上下文
+ .cursorrules # Cursor 特定规则
```
### 3. Cline
Cline(VS Code 插件)读取 `.clinerules` 或 `llms.txt`:
```
项目根目录/
├── .clinerules ← Cline 配置
├── llms.txt ← 备用
└── src/
```
### 4. 其他工具
| 工具 | 支持的文件 |
| ---- | ---------- |
| **Roo Code** | `roo-rules.txt` |
| **Continue** | `continue_config.json` |
| **Aider** | `.aider.conf.yml` |
---
## llms.txt 最佳实践
### 1. 保持简洁
```markdown
# ❌ 太详细
本项目是一个复杂的企业级应用,包含......(长篇大论)
# ✅ 简洁明确
电商小程序,包含商品展示、购物车、支付功能
```
### 2. 结构化信息
```markdown
# ✅ 使用列表和代码块
## 技术栈
- React 18
- TypeScript
- TailwindCSS
## 命令
```bash
pnpm dev # 开发
pnpm build # 构建
```
```
### 3. 突出重点
```markdown
## 重要约定
1. 所有 API 请求必须经过 services/api.ts
2. 组件必须使用 TypeScript 定义 props
3. 样式只能使用 TailwindCSS 原子类
```
### 4. 保持更新
```markdown
## 最后更新
2025-12-26
## 最近变更
- 迁移到 Vite 6
- 添加 PWA 支持
```
---
## llms.txt 示例
### 示例 1:小程序项目
```markdown
# 小程序商城
## 项目概述
微信小程序商城,支持商品浏览、购物车、微信支付
## 技术栈
- 原生小程序框架
- weapp-tailwindcss (TailwindCSS)
- gulp 构建工具
## 项目结构
```
pages/
├── home/ # 首页
├── category/ # 分类
├── product/ # 商品详情
├── cart/ # 购物车
└── order/ # 订单
components/
├── product-card/ # 商品卡片
├── address-picker/# 地址选择
utils/
├── request.js # API 封装
└── auth.js # 登录认证
```
## 快速开始
```bash
pnpm install
pnpm dev:wechat
```
## 编码规范
- 组件命名: kebab-case
- 样式: TailwindCSS 原子类
- 不使用 id 选择器
- 图片路径使用绝对路径
## API 配置
- 基础 URL: `https://api.example.com`
- 需要登录的接口自动带上 token
## 重要说明
- 使用微信登录获取用户信息
- 支付使用微信支付 API
```
### 示例 2:全栈项目
```markdown
# 全栈任务管理系统
## 项目概述
全栈任务管理应用,包含前端、后端和数据库
## 技术栈
### 前端
- React 18 + TypeScript
- Vite
- TailwindCSS + shadcn/ui
- React Query (TanStack Query)
### 后端
- Node.js + Express
- TypeScript
- Prisma ORM
- PostgreSQL
## 项目结构
```
frontend/ # React 前端
├── src/
│ ├── components/
│ ├── pages/
│ ├── hooks/
│ └── services/
backend/ # Node.js 后端
├── src/
│ ├── routes/
│ ├── services/
│ ├── models/
│ └── middleware/
```
## 快速开始
```bash
# 前端
cd frontend && pnpm dev
# 后端
cd backend && pnpm dev
# 数据库
docker-compose up -d postgres
```
## 编码规范
- 前后端都使用 TypeScript
- API 遵循 RESTful 规范
- 组件使用函数式声明
- 使用 ESLint + Prettier
## 环境变量
```
DATABASE_URL=postgresql://...
JWT_SECRET=your-secret
API_URL=http://localhost:3001
```
```
---
## llms.txt 与 CLAUDE.md 的配合
### 推荐的配置结构
```
项目根目录/
├── llms.txt # AI 通用上下文(所有 LLM)
├── CLAUDE.md # Claude Code 专属配置
├── .cursorrules # Cursor 专属规则(可选)
└── .clinerules # Cline 专属规则(可选)
```
### 内容分工
| 文件 | 内容 |
| ---- | ---- |
| **llms.txt** | 项目概述、技术栈、结构、快速开始 |
| **CLAUDE.md** | Claude 专属工作流、命令、插件配置 |
### llms.txt 示例
```markdown
# 项目名称
## 项目概述
一个 React + Node.js 的全栈应用
## 技术栈
- React 18 + TypeScript
- Node.js + Express
- PostgreSQL
## 快速开始
pnpm install
pnpm dev
```
### CLAUDE.md 示例
```markdown
# Claude Code 配置
## 项目上下文
本项目使用 React + Node.js 全栈架构
## 工作流
1. 新功能先在 frontend/src/ 中创建组件
2. API 变更在 backend/src/routes/ 中修改
3. 运行 pnpm test 验证
## 常用命令
- pnpm dev: 启动开发服务器
- pnpm test: 运行测试
- pnpm lint: 代码检查
## 注意事项
- 前端组件必须使用 TypeScript
- API 路由需要添加认证中间件
```
---
## 参考
### 官方资源
- [llmstxt.org](https://llmstxt.org) - llms.txt 官方网站
- [llms.txt 规范](https://github.com/pydantic/llms.txt)
### 相关文档
- [CLAUDE.md 最佳实践](https://docs.anthropic.com/claude-code/project-knowledge)
- [Cursor Rules](https://cursor.com/docs/rules)
---
**文档更新时间:2025 年 12 月**
---
## MCP (Model Context Protocol)
## 概述
**MCP (Model Context Protocol)** 是一个开放协议,用于连接 AI 助手与系统上下文(数据源、工具、环境)。它由 Anthropic 于 2024 年 11 月发布,旨在解决 AI 应用与外部系统集成的标准化问题。
> **官方文档**:[https://modelcontextprotocol.io](https://modelcontextprotocol.io)
> **GitHub**:[https://github.com/modelcontextprotocol](https://github.com/modelcontextprotocol)
---
## 核心概念
### 1. MCP 的定义
MCP 是一种**客户端-服务端协议**,定义了:
- AI 应用(客户端)如何请求数据和操作
- 数据源/工具(服务端)如何暴露其能力
- 消息传输的标准格式
### 2. 架构组件
```
┌─────────────────────────────────────────────────────────┐
│ MCP 架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ MCP Client │ ───────▶│ MCP Server │ │
│ │ (AI 应用) │ ◀──────│ (数据源) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Claude Code │ │ 文件系统 │ │
│ │ Cursor IDE │ │ 数据库 │ │
│ │ Cline │ │ API 服务 │ │
│ │ 自定义应用 │ │ Git 仓库 │ │
│ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## MCP 的核心能力
### 1. 资源 (Resources)
**资源**是服务端暴露给客户端的**数据读取接口**。
```typescript
// 资源示例
{
"uri": "file:///Users/project/README.md",
"name": "项目 README",
"description": "项目根目录的 README 文件",
"mimeType": "text/markdown"
}
```
**常见资源类型**:
| 类型 | URI 示例 | 说明 |
| ---- | -------- | ---- |
| 文件 | `file:///path/to/file` | 本地文件系统 |
| Git | `git:///repo/file` | Git 仓库内容 |
| 数据库 | `postgres://query` | 数据库查询结果 |
| API | `https://api/data` | HTTP API 响应 |
| 内存 | `memory://variable` | 运行时数据 |
### 2. 提示词模板 (Prompts)
**提示词模板**是服务端提供的**预定义提示词**。
```typescript
// 提示词模板示例
{
"name": "code-review",
"description": "代码审查提示词",
"arguments": {
"file": "要审查的文件路径",
"focus": "审查重点(安全/性能/风格)"
}
}
```
### 3. 工具 (Tools)
**工具**是服务端暴露的**可执行功能**。
```typescript
// 工具示例
{
"name": "execute_command",
"description": "在终端执行命令",
"inputSchema": {
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "要执行的命令"
}
}
}
}
```
---
## MCP 传输层
MCP 支持多种传输方式:
### 1. STDIO(标准输入/输出)
适用于**本地进程间通信**:
```bash
# 通过 STDIO 启动 MCP 服务端
claude-code mcp install my-server
my-server --stdio
```
### 2. SSE(Server-Sent Events)
适用于**本地 HTTP 通信**:
```typescript
// SSE 连接
const client = new MCPClient({
url: "http://localhost:3000/sse",
transport: "sse"
});
```
### 3. 自定义传输
支持自定义 WebSocket、gRPC 等传输层。
---
## 使用场景
### 1. Claude Code 中的 MCP
Claude Code 原生支持 MCP,可以:
- 通过 MCP 读取项目文件
- 通过 MCP 执行 Git 命令
- 通过 MCP 访问数据库
- 通过 MCP 调用外部 API
**配置示例**:
```json
// .claude/mcp_config.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/project"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}
```
### 2. Cursor IDE 中的 MCP
Cursor 支持 MCP 扩展:
- 安装 MCP 兼容的服务端
- Cursor 自动发现可用资源
- 在 Chat 中引用 MCP 资源
### 3. Cline 中的 MCP
Cline(VS Code 插件)支持 MCP:
- 通过 MCP 获取项目上下文
- 通过 MCP 执行构建命令
- 通过 MCP 访问测试结果
---
## MCP 服务端示例
### 文件系统服务端
```bash
# 官方文件系统服务端
npx -y @modelcontextprotocol/server-filesystem /path/to/directory
```
### GitHub 服务端
```bash
# 官方 GitHub 服务端
npx -y @modelcontextprotocol/server-github
```
### 数据库服务端
```bash
# PostgreSQL 服务端
npx -y @modelcontextprotocol/server-postgres "postgresql://..."
```
### 自定义服务端
```typescript
// 自定义 MCP 服务端
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server({
name: 'my-custom-server',
version: '1.0.0'
});
// 添加资源
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
resources: [
{
uri: 'custom://data',
name: '自定义数据',
description: '我的自定义数据源'
}
]
}));
// 启动服务端
const transport = new StdioServerTransport();
await server.connect(transport);
```
---
## MCP 的优势
| 优势 | 说明 |
| ---- | ---- |
| **标准化** | 统一的协议,无需为每个 AI 应用单独适配 |
| **模块化** | 数据源独立于 AI 应用,可复用 |
| **可扩展** | 支持自定义传输层和数据源 |
| **安全性** | 明确的权限控制和数据隔离 |
| **开放性** | 开源协议,社区驱动发展 |
---
## MCP 与其他方案的对比
| 方案 | MCP | LangChain Tools | OpenAI Function Calling |
| ---- | --- | --------------- | ---------------------- |
| **标准化程度** | ✅ 开放协议 | ❌ 厂商特定 | ❌ 厂商特定 |
| **传输层** | 多种支持 | HTTP/RPC | HTTP |
| **AI 兼容性** | 多模型 | 主流 LLM | OpenAI only |
| **社区生态** | 快速增长 | 成熟 | 成熟 |
| **学习曲线** | 简单 | 中等 | 简单 |
---
## 快速开始
### 1. 安装 Claude Code MCP 集成
```bash
# 安装 Claude Code CLI
npm install -g @anthropic-ai/claude-code
# 初始化 MCP 配置
claude-code mcp init
```
### 2. 添加 MCP 服务端
```bash
# 添加文件系统服务端
claude-code mcp install @modelcontextprotocol/server-filesystem
# 添加 GitHub 服务端
claude-code mcp install @modelcontextprotocol/server-github
```
### 3. 在 Claude Code 中使用
```
@mcp://filesystem/Users/project/src 请分析这个目录下的代码结构
```
---
## 参考资源
### 官方资源
- [MCP 官方网站](https://modelcontextprotocol.io)
- [MCP GitHub](https://github.com/modelcontextprotocol)
- [MCP SDK 文档](https://modelcontextprotocol.io/sdk)
### 社区资源
- [MCP 服务端列表](https://github.com/modelcontextprotocol/servers)
- [MCP 客户端列表](https://github.com/modelcontextprotocol/clients)
- [Claude Code MCP 文档](https://docs.anthropic.com/claude-code/mcp)
---
**文档更新时间:2025 年 12 月**
---
## Power(规范驱动编程)
# Power(规范驱动编程能力)
## 概述
**Power** 是由 **Kiro** 提出的一个概念,用于衡量 **AI 工具理解复杂规范并生成符合规范代码的能力**。在 Spec-Driven Development(规范驱动开发)的语境下,Power 指的是 AI 将非结构化的需求描述转换为结构化的技术规范,并最终生成可执行代码的能力。
> **核心理念**:Power = 规范理解能力 × 代码生成能力 × 约束遵循能力
---
## Power 的定义
### 1. 基本概念
**Power** 是 AI 编程工具的核心能力指标:
```
┌─────────────────────────────────────────────────────────┐
│ Power 的构成 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 规范理解 (Spec Understanding) │ │
│ │ 理解自然语言需求 → 结构化规范 │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 规范生成 (Spec Generation) │ │
│ │ 生成 API、数据模型、UI 规范 │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 代码实现 (Code Implementation) │ │
│ │ 根据规范生成符合要求的代码 │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 约束遵循 (Constraint Adherence) │ │
│ │ 遵循编码规范、技术约束、业务规则 │ │
│ └──────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
### 2. Power 的维度
| 维度 | 说明 | 评估标准 |
| ---- | ---- | -------- |
| **理解力** | 理解复杂需求的能力 | 能否准确提取关键信息 |
| **结构化** | 生成结构化规范的能力 | 规范是否完整、一致 |
| **实现力** | 生成可执行代码的能力 | 代码是否可用、正确 |
| **遵循力** | 遵循约束的能力 | 是否符合规范要求 |
| **一致性** | 多次输出的稳定性 | 相同输入是否得到相似结果 |
---
## Power 的级别
### Level 0: 无规范能力
```
特征:
- 无法理解结构化需求
- 只能处理简单指令
- 生成代码需要大量人工修改
示例:
输入: "写个登录"
输出: [基础代码,但缺类型、验证、错误处理]
```
### Level 1: 基础规范理解
```
特征:
- 能理解简单的结构化需求
- 能生成基本的代码框架
- 需要人工补充细节
示例:
输入: "用 React + TypeScript 写登录,包含邮箱和密码"
输出: [带类型的组件,但可能缺验证逻辑]
```
### Level 2: 中级规范能力
```
特征:
- 能理解多层级规范
- 能生成完整的 API 规范
- 代码基本可用,需少量调整
示例:
输入: "用户登录功能,需验证、错误处理、JWT"
输出: [完整的登录流程,含前后端]
```
### Level 3: 高级规范能力
```
特征:
- 能理解复杂的业务规范
- 能生成前后端联调代码
- 包含测试和文档
示例:
输入: "完整的用户认证系统(注册、登录、登出、权限)"
输出: [全栈代码 + API 文档 + 测试用例]
```
### Level 4: 专家级规范能力
```
特征:
- 能理解企业级规范
- 自动处理边界情况和异常
- 生成生产级代码
示例:
输入: "电商订单系统(含支付、库存、物流、退款)"
输出: [微服务架构 + 数据库设计 + 完整实现]
```
---
## Power 的评估
### 1. 评估维度
```markdown
## Power 评估卡
### 需求理解
- [ ] 能识别核心功能
- [ ] 能识别非功能需求(性能、安全)
- [ ] 能识别依赖和约束
- [ ] 能识别边界条件
### 规范生成
- [ ] API 规范完整性
- [ ] 数据模型合理性
- [ ] 错误处理覆盖
- [ ] 验证规则完整
### 代码质量
- [ ] 语法正确性
- [ ] 类型安全性
- [ ] 代码可读性
- [ ] 最佳实践遵循
### 约束遵循
- [ ] 技术栈约束
- [ ] 编码规范约束
- [ ] 业务规则约束
- [ ] 性能约束
```
### 2. 评分标准
| 分数 | 描述 |
| ---- | ---- |
| **0-20** | 几乎无法理解规范 |
| **20-40** | 能理解简单规范,代码需大量修改 |
| **40-60** | 能理解中等规范,代码需少量修改 |
| **60-80** | 能理解复杂规范,代码基本可用 |
| **80-100** | 完全理解规范,生成生产级代码 |
### 3. 自动化评估
```python
# Power 评估脚本示例
def evaluate_power(ai_tool, test_cases):
scores = []
for case in test_cases:
# 生成规范
spec = ai_tool.generate_spec(case.requirement)
# 生成代码
code = ai_tool.generate_code(spec)
# 评估
score = {
"spec_completeness": check_spec_completeness(spec, case),
"code_correctness": check_code_correctness(code),
"constraint_adherence": check_constraints(code, case.constraints),
"test_pass_rate": run_tests(code, case.tests)
}
scores.append(score)
return aggregate_scores(scores)
```
---
## Power 在不同工具中的体现
### 1. Cursor Composer
Cursor 的 **Composer** 特性:
```
特点:
├── 自动规划任务步骤
├── 跨文件代码生成
├── 上下文感知
└── 迭代优化
Power 水平: Level 2-3
```
### 2. Claude Code
Claude Code 的 **Plan Mode**:
```
特点:
├── 深度代码理解
├── 分步实施计划
├── 人工确认机制
└── 详细说明
Power 水平: Level 3
```
### 3. GitHub Copilot Workspace
Copilot 的 **Workspace**:
```
特点:
├── Issue → Spec → Code 流程
├── 测试生成
├── Pull Request 描述
└── 迭代改进
Power 水平: Level 2-3
```
---
## 提升 Power 的技巧
### 1. 编写更好的规范
#### 使用结构化格式
```markdown
# ❌ 模糊的规范
"做一个用户管理功能"
# ✅ 结构化的规范
## 功能:用户管理
### 需求
- 用户列表(分页、搜索)
- 用户详情
- 创建用户
- 编辑用户
- 删除用户(软删除)
### 字段定义
- id: UUID
- name: 字符串,2-50字符
- email: 邮箱格式,唯一
- role: 枚举(admin, user, guest)
- status: 枚举(active, inactive)
- created_at: 时间戳
### 验证规则
- name 必填
- email 唯一
- role 默认为 user
### API 设计
GET /api/users # 列表
GET /api/users/:id # 详情
POST /api/users # 创建
PUT /api/users/:id # 更新
DELETE /api/users/:id # 删除
### 技术要求
- React + TypeScript
- RESTful API
- 使用 Prisma ORM
```
### 2. 使用模板
```markdown
# 功能规范模板
## 功能概述
[一句话描述]
## 用户故事
作为 [角色],我想要 [功能],以便 [目的]
## 验收标准
- [ ] 标准1
- [ ] 标准2
## 技术规范
### 数据模型
### API 接口
### UI 规范
## 非功能需求
### 性能
### 安全
### 兼容性
```
### 3. 渐进式规范
```
第一版(粗略):
"用户登录功能"
第二版(添加细节):
"用户登录,邮箱和密码,需要验证"
第三版(完整规范):
[完整的功能规范,含所有细节]
第四版(迭代优化):
[基于反馈的优化版本]
```
### 4. 提供示例
```
# 在规范中添加示例
## 输入示例
{
"email": "user@example.com",
"password": "SecurePass123"
}
## 输出示例
成功(200):
{
"success": true,
"token": "eyJhbGc...",
"user": {...}
}
失败(401):
{
"success": false,
"error": "Invalid credentials"
}
```
---
## Power 的局限
### 1. 复杂业务逻辑
```
问题: AI 难以理解复杂的业务规则
解决:
- 分解为多个小功能
- 提供详细规则说明
- 添加决策树/流程图
```
### 2. 隐性知识
```
问题: AI 无法获取团队隐性知识
解决:
- 使用 llms.txt/CLAUDE.md
- 维护项目规范文档
- 建立代码示例库
```
### 3. 上下文限制
```
问题: 大型项目规范超出上下文窗口
解决:
- 分模块编写规范
- 使用 RAG 检索相关规范
- 建立规范层次结构
```
---
## Power 与 Spec-Driven Development
### 关系
```
┌─────────────────────────────────────────────────────────┐
│ Power 在 SDD 中的作用 │
├─────────────────────────────────────────────────────────┤
│ │
│ Spec-Driven Development 流程: │
│ │
│ 1. 需求 → 规范 │
│ └── Power 决定转换质量 │
│ │
│ 2. 规范 → 代码 (Spec → Code) │
│ └── Power 决定代码质量 │
│ │
│ 3. 代码 → 测试 (Code → Test) │
│ └── Power 影响测试覆盖 │
│ │
│ 结论: Power 越高,SDD 效率越高 │
│ │
└─────────────────────────────────────────────────────────┘
```
### 最佳实践
1. **高 Power 工具 + 完整规范** = 最佳效果
2. **低 Power 工具 + 简单规范** = 基础自动化
3. **高 Power 工具 + 简单规范** = 过度设计
4. **低 Power 工具 + 复杂规范** = 效果有限
---
## Power 的发展趋势
### 当前状态 (2025)
```
Level 1-2: 主流
- 大多数 AI 编码工具处于这个水平
- 适合简单到中等复杂度任务
Level 3: 先进
- 少数工具达到
- 需要良好的规范编写
Level 4: 探索
- 研究阶段
- 需要更强的模型和更好的工具支持
```
### 未来方向
```
┌─────────────────────────────────────────────────────────┐
│ Power 的未来 │
├─────────────────────────────────────────────────────────┤
│ │
│ 短期(1-2年) │
│ ├── 更好的规范理解 │
│ ├── 更准确的代码生成 │
│ └── 更强的约束遵循 │
│ │
│ 中期(2-3年) │
│ ├── 自动化规范生成 │
│ ├── 规范版本管理 │
│ └── 团队协作支持 │
│ │
│ 长期(3-5年) │
│ ├── 自演进规范 │
│ ├── 跨项目规范复用 │
│ └── 规范市场/交换 │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## 参考资源
### 相关文档
- [Spec-Driven Development](./spec-driven-development)
- [Vibe Coding](./vibe-coding)
- [Prompt Engineering](./prompt-engineering)
### 工具
- [Cursor](https://cursor.sh) - Composer 功能
- [Claude Code](https://claude.ai/code) - Plan Mode
---
**文档更新时间:2025 年 12 月**
---
## Prompt Engineering(提示词工程)
## 概述
**Prompt(提示词)** 是用户输入给大语言模型的**指令或问题**。**Prompt Engineering(提示词工程)** 是设计和优化提示词以获得更好输出结果的技术。
> **核心原则**:好的提示词 = 清晰、具体、有结构
---
## 什么是提示词
### 1. 基本定义
**提示词** 是与 AI 交互的文本输入:
```
用户输入: "帮我写一个快速排序算法"
↑
这就是 Prompt
```
### 2. 提示词的组成部分
```
┌─────────────────────────────────────────────────────────┐
│ 提示词结构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 角色/身份设定 │ │
│ │ "你是一个资深前端工程师..." │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 任务描述 │ │
│ │ "帮我实现一个登录表单..." │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 上下文/背景信息 │ │
│ │ "使用 React + TypeScript..." │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 约束/要求 │ │
│ │ "使用 shadcn/ui 组件,遵循以下规范..." │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 输出格式 │ │
│ │ "以 Markdown 格式输出,包含代码块..." │ │
│ └──────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 示例/参考 │ │
│ │ "参考以下代码风格..." │ │
│ └──────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## 好的提示词原则
### CREATE 框架
| 原则 | 说明 | 示例 |
| ---- | ---- | ---- |
| **C**lear | 清晰明确 | "用 Python 写一个冒泡排序" |
| **R**ole | 设定角色 | "你是一个资深前端工程师" |
| **E**xact | 精确具体 | "生成 10 个随机整数,范围 1-100" |
| **A**udience | 明确受众 | "向初学者解释闭包的概念" |
| **T**one | 设定语气 | "用专业但友好的语气" |
| **E**xample | 提供示例 | "参考以下代码风格" |
---
## 好的提示词 vs 差的提示词
### 示例 1:代码生成
#### ❌ 差的提示词
```
写一个登录功能
```
**问题**:
- 没有指定技术栈
- 没有说明需求细节
- 没有定义输入输出
#### ✅ 好的提示词
```
你是一个资深前端工程师。请帮我创建一个 React + TypeScript 的登录表单组件:
需求:
1. 包含邮箱和密码输入框
2. 使用 shadcn/ui 组件库
3. 支持表单验证(邮箱格式、密码最少8位)
4. 包含"记住我"复选框
5. 登录按钮在加载时显示 Loading 状态
6. 使用 TypeScript 定义类型
请提供完整的组件代码和类型定义。
```
---
### 示例 2:Bug 修复
#### ❌ 差的提示词
```
这段代码有问题,帮我看看
```
**问题**:
- 没有说明具体问题
- 没有提供错误信息
- 没有说明期望行为
#### ✅ 好的提示词
```
我的 React 组件有问题,需要你帮忙排查:
问题描述:
点击"提交"按钮后,表单没有提交,也没有任何提示
代码:
```tsx
function SubmitForm() {
const handleSubmit = () => {
console.log('Form submitted')
}
return
}
```
期望行为:
点击按钮后应该显示"提交成功"的提示
请分析问题并给出修复后的代码。
```
---
### 示例 3:代码重构
#### ❌ 差的提示词
```
优化这段代码
```
**问题**:
- 没有说明优化目标
- 没有说明约束条件
- 没有说明优先级
#### ✅ 好的提示词
```
请帮我优化以下代码,目标是提升可读性和性能:
代码:
```typescript
const getUserData = async (id: string) => {
const user = await fetchUser(id)
const posts = await fetchPosts(user.id)
const comments = await fetchComments(posts.map(p => p.id))
return { user, posts, comments }
}
```
优化要求:
1. 减少不必要的等待(并行处理)
2. 添加错误处理
3. 添加 TypeScript 类型
4. 保持函数命名清晰
请提供优化后的代码和改动说明。
```
---
### 示例 4:文档编写
#### ❌ 差的提示词
```
帮我写个文档
```
#### ✅ 好的提示词
```
请为以下函数编写 API 文档:
函数:
```typescript
async function createUser(data: {
email: string
password: string
name: string
}): Promise<{id: string; email: string}>
```
文档格式:
- 函数描述
- 参数说明(类型、是否必填)
- 返回值说明
- 使用示例
- 可能抛出的错误
使用 Markdown 格式输出。
```
---
### 示例 5:代码审查
#### ❌ 差的提示词
```
审查这段代码
```
#### ✅ 好的提示词
```
请作为代码审查专家,审查以下 React 组件:
审查重点:
1. 类型安全性
2. 性能问题(不必要的重渲染)
3. 错误处理
4. 代码可读性
5. 最佳实践遵循情况
代码:
```tsx
import { useState, useEffect } from 'react'
export function UserProfile({ userId }: { userId: string }) {
const [user, setUser] = useState(null)
const [posts, setPosts] = useState([])
useEffect(() => {
fetchUser(userId).then(setUser)
fetchUserPosts(userId).then(setPosts)
}, [userId])
if (!user) return Loading...
return (
{user.name}
{posts.map(p => - {p.title}
)}
)
}
```
请以列表形式输出:
- 发现的问题
- 严重程度(高/中/低)
- 修复建议
```
---
## 高级提示词技巧
### 1. Few-Shot Prompting(少样本提示)
提供示例帮助 AI 理解期望:
```
请将以下自然语言转换为 SQL 查询语句。
示例1:
输入:查找所有姓张的用户
输出:SELECT * FROM users WHERE name LIKE '张%'
示例2:
输入:查找年龄大于25的用户
输出:SELECT * FROM users WHERE age > 25
示例3:
输入:查找今年注册的用户
输出:SELECT * FROM users WHERE YEAR(created_at) = YEAR(CURDATE())
现在请转换:
输入:查找所有状态为"活跃"且注册时间在2024年之后的用户
输出:
```
### 2. Chain of Thought(思维链)
引导 AI 展示推理过程:
```
请使用逐步推理的方式解决以下问题:
问题:如果一个数列的前三项是 2, 6, 18,求第四项。
推理过程:
1. 观察相邻两项的关系
2. 计算比例关系
3. 验证规律
4. 应用规律求解
请按照以上步骤逐步推理并给出答案。
```
### 3. 角色设定
```
你是一个有 10 年经验的前端工程师,擅长 React 和 TypeScript。
你熟悉各种设计模式和最佳实践。
你的回答应该专业、准确,并包含实用的代码示例。
```
### 4. 结构化输出
```
请以以下格式输出:
## 问题描述
[问题简述]
## 根本原因
[根本原因分析]
## 解决方案
### 选项1
[方案描述]
优点:...
缺点:...
### 选项2
[方案描述]
优点:...
缺点:...
## 推荐
[推荐方案及理由]
## 代码示例
```typescript
[代码]
```
```
### 5. 约束和边界
```
请生成一个随机密码生成函数。
约束条件:
- 密码长度:16-32 位(可配置)
- 必须包含:大写字母、小写字母、数字、特殊字符
- 不能包含容易混淆的字符(如 l, 1, O, 0)
- 使用 TypeScript 实现
请不要使用任何外部库。
```
---
## 常见提示词模板
### 代码生成模板
```
你是一个{语言/框架}专家。
请帮我实现以下功能:
{功能描述}
技术要求:
- 框架:{框架名称}
- 语言:{编程语言}
- 样式:{CSS方案}
- 状态管理:{状态方案}
功能需求:
{详细需求列表}
请提供:
1. 完整的代码实现
2. 必要的说明注释
3. 使用示例
代码风格:
{风格要求}
```
### Bug 修复模板
```
我遇到了一个问题,需要你帮忙解决:
**问题描述**
{问题描述}
**错误信息**
```
{错误日志}
```
**相关代码**
```{language}
{代码}
```
**环境信息**
- 框架:{框架和版本}
- 运行环境:{浏览器/Node版本}
- 构建工具:{webpack/vite等}
**已尝试的解决方案**
{尝试过的方案}
请分析问题原因并提供修复方案。
```
### 代码审查模板
```
请审查以下代码:
**审查重点**
{审查重点列表}
**代码**
```{language}
{代码}
```
**上下文**
{相关背景信息}
请输出:
1. 发现的问题
2. 风险评估
3. 改进建议
```
### 重构建议模板
```
请分析以下代码并提供重构建议:
```{language}
{代码}
```
重构目标:
{目标:如提升性能、提高可读性、降低复杂度}
约束条件:
{约束:如保持 API 不变、不引入新依赖}
请提供:
1. 当前代码的问题分析
2. 重构后的代码
3. 改动说明
```
---
## 提示词反模式
### ❌ 需要避免的模式
| 反模式 | 问题 | 改进 |
| ------ | ---- | ---- |
| **模糊指令** | "帮我优化" | "优化性能,减少 50% 响应时间" |
| **过多信息** | 冗长的背景描述 | 提取关键信息 |
| **矛盾要求** | "简单但功能全" | 明确优先级 |
| **缺少上下文** | "这个函数怎么改" | 提供完整代码和目的 |
| **假设过多** | "你应该知道..." | 明确说明所有信息 |
### ✅ 良好模式
| 模式 | 说明 |
| ---- | ---- |
| **明确目标** | 清晰说明想要什么 |
| **提供上下文** | 给出必要的背景信息 |
| **结构清晰** | 使用分段和列表 |
| **具体约束** | 明确限制和要求 |
| **示例引导** | 用示例说明期望 |
---
## 针对不同场景的提示词
### 1. 前端开发
```
请创建一个 React + TypeScript 的用户列表组件:
需求:
- 使用 TypeScript 定义 User 类型:{ id, name, email, avatar }
- 使用 shadcn/ui 的 Table 组件展示用户列表
- 支持分页(每页 10 条)
- 支持按姓名搜索
- 点击行可查看用户详情
API 接口:GET /api/users?page=1&limit=10&search=keyword
返回格式:{ data: User[], total: number }
请提供完整组件代码和必要的类型定义。
```
### 2. 后端开发
```
请用 Node.js + Express 创建一个用户认证 API:
需求:
- POST /api/auth/register - 用户注册
- POST /api/auth/login - 用户登录
- POST /api/auth/logout - 用户登出
- GET /api/auth/me - 获取当前用户信息
技术要求:
- 使用 TypeScript
- 使用 Prisma ORM
- 使用 JWT 进行认证
- 密码使用 bcrypt 加密
- 数据库使用 PostgreSQL
数据模型(User):
- id: UUID
- email: 唯一
- password: 加密存储
- name: 用户名
- createdAt: 创建时间
请提供完整的路由、控制器和中间件代码。
```
### 3. 数据分析
```
请帮我分析以下数据:
销售数据:
```
月份,Q1,Q2,Q3,Q4
产品A,120,150,180,200
产品B,80,90,100,110
产品C,200,180,150,120
```
请提供:
1. 季度增长趋势分析
2. 产品表现对比
3. 潜在问题识别
4. 改进建议
使用 Markdown 格式输出,包含数据可视化建议。
```
### 4. 文档生成
```
请为以下 API 生成 Swagger/OpenAPI 文档:
API 端点:POST /api/users
请求体:
{
"email": "string (required, email format)",
"password": "string (required, minLength: 8)",
"name": "string (required)"
}
成功响应(201):
{
"id": "uuid",
"email": "string",
"name": "string",
"createdAt": "datetime"
}
错误响应:
- 400: 参数验证失败
- 409: 邮箱已存在
请生成完整的 OpenAPI 3.0 规范(YAML 格式)。
```
---
## 提示词迭代优化
### 迭代流程
```
第一版(基础版)
"写一个登录功能"
↓
❌ 结果不符合预期
↓
第二版(添加细节)
"用 React 写一个登录表单,包含邮箱和密码"
↓
⚠️ 接近了,但还不完美
↓
第三版(精细化)
"请创建一个 React + TypeScript 登录表单,使用 shadcn/ui..."
↓
✅ 满意
```
### 迭代技巧
1. **从简单开始**:先给基础版本
2. **逐步添加细节**:一次只加一个要求
3. **观察输出**:分析不符合预期的部分
4. **针对性修正**:指出具体问题
5. **验证结果**:确认是否满足需求
---
## 参考资源
### 官方文档
- [OpenAI Prompt Engineering Guide](https://platform.openai.com/docs/guides/prompt-engineering)
- [Anthropic Prompt Library](https://docs.anthropic.com/prompt-library)
- [Google Prompting Guide](https://ai.google.dev/gemini-api/prompting-strategies)
### 学习资源
- [Learn Prompting](https://learnprompting.org/)
- [Prompt Engineering Guide](https://www.promptingguide.ai/)
### 社区资源
- [Awesome Prompt Engineering](https://github.com/f/awesome-prompt-engineering)
- [Prompt Examples](https://github.com/matthew-burrell/prompt-examples)
---
**文档更新时间:2025 年 12 月**
---
## RAG(检索增强生成)
## 概述
**RAG (Retrieval-Augmented Generation)** 是一种结合了**信息检索(Retrieval)**和**生成式AI(Generation)**的技术架构。它让大语言模型在生成回答时,能够先从外部知识库中检索相关信息,然后基于检索到的内容生成更准确、更及时的回答。
> **核心价值**:解决 LLM 的知识滞后和幻觉问题,让 AI 拥有"外挂知识库"
---
## RAG 的核心概念
### 1. 为什么需要 RAG
```
纯 LLM 的问题:
├── 知识截止:训练数据有时间边界
├── 幻觉问题:可能生成不准确的内容
├── 领域知识:缺乏专业领域的私有数据
└── 可追溯性:无法验证信息来源
RAG 的解决:
├── 实时知识:可检索最新信息
├── 准确性:基于真实文档生成
├── 私有数据:可接入企业内部知识
└── 可验证:提供信息来源引用
```
### 2. RAG vs Fine-tuning
| 维度 | RAG | Fine-tuning(微调) |
| ---- | --- | ------------------- |
| **知识更新** | 实时更新 | 需要重新训练 |
| **数据来源** | 外部知识库 | 模型权重 |
| **实施成本** | 低 | 高 |
| **幻觉控制** | 好 | 中 |
| **领域适应** | 快速适应 | 需要训练数据 |
| **隐私安全** | 数据不进入模型 | 数据融入模型 |
| **适用场景** | 知识查询、问答 | 风格适应、格式化 |
---
## RAG 的工作原理
### 1. 基本流程
```
┌─────────────────────────────────────────────────────────────────┐
│ RAG 工作流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户问题 │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 向量化 (Embedding) │ │
│ │ 问题 → 向量 │ │
│ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 相似度检索 │ │
│ │ 在向量库中搜索 │ │
│ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 获取相关文档 │ │
│ │ Top-K 结果 │ │
│ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Prompt 构建 │ │
│ │ 问题 + 文档上下文│ │
│ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ LLM 生成回答 │ │
│ │ 基于检索内容 │ │
│ └─────────────────┘ │
│ │ │
│ ▼ │
│ 带引用的回答 │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 2. 关键组件
#### 向量嵌入 (Embedding)
```
文本: "人工智能是计算机科学的一个分支"
│
▼
向量化模型 (如 OpenAI Embeddings)
│
▼
向量: [0.123, -0.456, 0.789, ...] (1536 维)
```
#### 向量数据库 (Vector Database)
| 数据库 | 特点 |
| ------ | ---- |
| **Pinecone** | 托管服务,易用 |
| **Chroma** | 轻量级,本地部署 |
| **Qdrant** | 高性能,开源 |
| **Milvus** | 企业级,可扩展 |
| **Weaviate** | 支持多种数据类型 |
#### 相似度计算
```python
# 余弦相似度
similarity = cosine_similarity(query_vector, document_vector)
# 欧氏距离
distance = euclidean_distance(query_vector, document_vector)
```
---
## RAG 的实现方式
### 1. Naive RAG(基础 RAG)
最简单的 RAG 实现:
```python
# 伪代码
def naive_rag(query):
# 1. 向量化查询
query_vector = embedding_model.encode(query)
# 2. 检索相关文档
docs = vector_db.search(query_vector, top_k=5)
# 3. 构建 Prompt
prompt = f"""
基于以下文档回答问题:
{docs}
问题:{query}
"""
# 4. 生成回答
answer = llm.generate(prompt)
return answer
```
### 2. Advanced RAG(高级 RAG)
包含更多优化技术:
```
┌─────────────────────────────────────────────────────────┐
│ Advanced RAG │
├─────────────────────────────────────────────────────────┤
│ │
│ 查询理解 │
│ ├── 查询重写 (Query Rewriting) │
│ ├── 查询扩展 (Query Expansion) │
│ ├── 查路由 (Query Routing) │
│ └── 多重查询 (Multi-Query) │
│ ↓ │
│ 混合检索 │
│ ├── 向量检索 (Semantic Search) │
│ ├── 关键词检索 (Keyword Search) │
│ └── 结果融合 (Result Fusion) │
│ ↓ │
│ 重排序 (Reranking) │
│ └── 使用更精细的模型重新排序 │
│ ↓ │
│ 上下文管理 │
│ ├── 长上下文压缩 │
│ └── 动态选择相关片段 │
│ ↓ │
│ 生成回答 │
│ │
└─────────────────────────────────────────────────────────┘
```
### 3. Modular RAG(模块化 RAG)
可灵活组合的 RAG 模块:
```
RAG 模块:
├── 检索模块
│ ├── 单路检索
│ ├── 递归检索
│ └── 混合检索
├── 生成模块
│ ├── 单次生成
│ ├── 迭代生成
│ └── 分步生成
└── 优化模块
├── 查询优化
├── 文档优化
└── 结果优化
```
---
## RAG 的优化技术
### 1. 查询优化
#### 查询重写
```python
# 原始查询
"怎么用这个功能"
# 重写后
"如何使用 [产品名称] 的 [具体功能名称]?"
```
#### 多重查询
```python
# 生成多个查询变体
query_variants = [
"人工智能的发展历史",
"AI 发展历程",
"机器学习和深度学习的起源"
]
# 并行检索后合并结果
```
#### 查询路由
```python
def route_query(query):
if is_code_question(query):
return "code_kb_index"
elif is_business_question(query):
return "business_kb_index"
else:
return "general_kb_index"
```
### 2. 文档优化
#### 分块策略 (Chunking)
```python
# 固定大小分块
chunk_size = 512
overlap = 50
# 语义分块(按段落、章节)
chunks = split_by_semantic_unit(document)
# 递归分块
chunks = recursive_split(document, max_length=1000)
```
#### 元数据增强
```python
{
"content": "文档内容...",
"metadata": {
"source": "user_manual.pdf",
"page": 15,
"chapter": "安装指南",
"last_updated": "2024-01-15",
"author": "技术文档团队"
}
}
```
### 3. 检索优化
#### 混合检索
```python
# 结合向量检索和关键词检索
vector_results = vector_search(query, top_k=10)
keyword_results = bm25_search(query, top_k=10)
# 结果融合
final_results = reciprocal_rank_fusion(vector_results, keyword_results)
```
#### 重排序 (Reranking)
```python
# 初步检索
initial_results = vector_db.search(query, top_k=50)
# 使用更强的模型重排序
reranker = CrossEncoderReranker()
final_results = reranker.rerank(query, initial_results, top_k=10)
```
### 4. 生成优化
#### 引用生成
```markdown
根据以下内容回答,并标注引用来源:
[文档1] 我们app支持 iOS 和 Android...
[文档2] 安装包大小约为 50MB...
[文档3] 需要注册账户才能使用...
问题:这个应用支持哪些平台?
回答:该应用支持 iOS 和 Android 平台 [1]。
```
#### 自我修正 (Self-RAG)
```
生成回答 → 检查相关性 → 检查支持性 →
如果不相关/不支持 → 重新检索 → 重新生成
```
---
## RAG 的应用场景
### 1. 企业知识库
```
员工: "公司的报销流程是什么?"
↓
RAG: [从员工手册、OA系统文档中检索]
↓
回答: "根据《员工手册》第5章,
报销流程如下:1.提交申请 2.主管审批..."
来源: employee-handbook.pdf, page 23
```
### 2. 客户服务
```
客户: "产品如何保修?"
↓
RAG: [从产品手册、售后政策中检索]
↓
回答: "本产品提供2年质保,
保修范围包括..."
来源: warranty-policy.html
```
### 3. 代码助手
```
开发者: "这个项目怎么用 Webpack 构建?"
↓
RAG: [从项目 README、文档中检索]
↓
回答: "根据项目文档,
运行 pnpm build 即可..."
来源: README.md, docs/build.md
```
### 4. 技术文档问答
```
用户: "TailwindCSS 怎么在小程序中使用?"
↓
RAG: [从 weapp-tailwindcss 文档中检索]
↓
回答: "在 weapp-tailwindcss 中,
配置 postcss.config.js..."
来源: docs/getting-started.md
```
---
## RAG 的评估指标
### 1. 检索质量
| 指标 | 说明 |
| ---- | ---- |
| **Precision@K** | 前K个结果中有多少是相关的 |
| **Recall@K** | 所有相关文档中检索到了多少 |
| **MRR** | 第一个相关结果的倒数排名 |
| **NDCG** | 考虑位置的相关性评分 |
### 2. 生成质量
| 指标 | 说明 |
| ---- | ---- |
| **Faithfulness** | 回答是否与检索内容一致 |
| **Answer Relevance** | 回答是否解决了问题 |
| **Context Precision** | 检索的上下文是否相关 |
| **Context Recall** | 是否检索到了所有必要信息 |
### 3. 端到端评估
```python
# RAG 评估框架示例
from ragas import evaluate
results = evaluate(
dataset=test_dataset,
metrics=[
"faithfulness",
"answer_relevancy",
"context_precision",
"context_recall"
]
)
```
---
## RAG 的常见问题
### 1. 检索不到相关内容
**原因**:
- 向量质量差
- 分块策略不当
- 知识库内容缺失
**解决**:
- 使用更好的 Embedding 模型
- 调整分块大小和重叠
- 补充知识库内容
- 使用混合检索
### 2. 回答不准确
**原因**:
- 检索内容不相关
- 上下文过长导致注意力分散
- 模型理解能力不足
**解决**:
- 提高检索精度(重排序)
- 压缩上下文
- 使用更强的生成模型
### 3. 回答缺少引用
**原因**:
- Prompt 设计不当
- 模型未遵循指令
**解决**:
- 明确要求标注来源
- 使用结构化输出
- 后处理添加引用链接
---
## RAG 开源框架
### 1. LangChain
```python
from langchain.chains import RetrievalQA
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
# 创建 RAG 链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectordb.as_retriever(search_kwargs={"k": 3}),
return_source_documents=True
)
```
### 2. LlamaIndex
```python
from llama_index import VectorStoreIndex, SimpleDirectoryReader
# 创建索引
documents = SimpleDirectoryReader('data').load_data()
index = VectorStoreIndex.from_documents(documents)
# 查询
query_engine = index.as_query_engine()
response = query_engine.query("问题")
```
### 3. Haystack
```python
from haystack import Pipeline, Document
from haystack.nodes import BM25Retriever, FARMReader
# 创建 RAG Pipeline
retriever = BM25Retriever(document_store)
reader = FARMReader(model_name="deepset/roberta-base-squad2")
pipe = Pipeline()
pipe.add_node(retriever, name="Retriever", inputs=["Query"])
pipe.add_node(reader, name="Reader", inputs=["Retriever"])
```
### 4. FastRAG / RAGFlow
专注于 RAG 的轻量级框架。
---
## RAG 实现清单
### 数据准备
- [ ] 收集文档数据
- [ ] 清洗和预处理
- [ ] 选择分块策略
- [ ] 添加元数据
### 向量化
- [ ] 选择 Embedding 模型
- [ ] 选择向量数据库
- [ ] 构建向量索引
- [ ] 测试检索质量
### Prompt 设计
- [ ] 设计系统提示词
- [ ] 定义输出格式
- [ ] 添加引用要求
- [ ] 处理无结果情况
### 评估优化
- [ ] 准备测试数据集
- [ ] 评估检索质量
- [ ] 评估生成质量
- [ ] 迭代优化
---
## 参考资源
### 论文
- [Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks](https://arxiv.org/abs/2005.11401) - RAG 原始论文
- [Building RAG-based Applications with LangChain](https://blog.langchain.dev/building-a-full-rag-application-with-langchain/)
### 工具
- [LangChain](https://langchain.com) - AI 应用开发框架
- [LlamaIndex](https://llamaindex.ai) - 数据框架
- [Pinecone](https://pinecone.io) - 向量数据库
- [Qdrant](https://qdrant.tech) - 开源向量数据库
### 学习资源
- [RAG Tutorial](https://github.com/langchain-ai/rag-from-scratch)
- [Building RAG Applications](https://www.deeplearning.ai/short-courses/building-evaluating-advanced-rag/)
---
**文档更新时间:2025 年 12 月**
---
## Skill 发布与同步
`sonofmagic/weapp-tailwindcss` 的 `skills/` 是官方 Skill 内容的唯一事实源。用户安装使用的 `sonofmagic/skills` 是聚合仓库,不在这里手工维护副本。
## 同步关系
```text
sonofmagic/weapp-tailwindcss@main:skills/
-> sonofmagic/skills@main:skills/weapp-tailwindcss/
```
聚合仓库的 `Sync Skills From Upstreams` workflow 根据 `.github/skills-sources.json` 定时拉取整个 `skills/` 目录。新增、删除或重命名 Skill 时不需要直接提交聚合仓库。
## 发布前检查
1. 校验目录、frontmatter、references、UI 元数据和触发用例:
```bash
pnpm skills:validate
```
2. 使用官方 skill validator 逐个校验目录。
3. 本地检查可发现的名称:
```bash
npx skills add . --list
```
4. 临时安装完整套件,确认每个 `--skill` 名称有效。
5. 用正向、相邻边界和负向提示词做独立前向测试。
6. 同步 README、AI 首页、Skill 页面与 LLM 入口后构建 website。
## 发布流程
1. 在本仓库提交 `skills/**`、验证语料和文档入口。
2. 合并到 `main`。
3. 等待聚合仓库定时同步,或在需要立即发布时手动运行聚合仓库的 `Sync Skills From Upstreams` workflow。
4. 检查同步提交是否包含 7 个 Skill 目录。
5. 从 `sonofmagic/skills` 执行 `--list` 和临时安装验证。
Skill 不再使用独立 `skill-weapp-tailwindcss-v*` tag 或 GitHub Release 作为内容分发机制。版本历史以源仓库提交和聚合仓库同步提交为准。
## 用户安装命令
文档中的完整套件命令保持一致:
```bash
npx skills add sonofmagic/skills \
--skill weapp-tailwindcss \
--skill weapp-tailwindcss-setup \
--skill weapp-tailwindcss-migrate \
--skill weapp-tailwindcss-troubleshoot \
--skill weapp-tailwindcss-runtime \
--skill weapp-tailwindcss-custom-build \
--skill weapp-tailwindcss-react-native \
-y
```
不要对聚合仓库使用 `--all` 代替该命令,因为聚合仓库还包含其他项目的 Skill。
---
## Skill(技能系统)
`weapp-tailwindcss` 官方 Skill 面向业务项目使用者。它把当前 v5 的接入、迁移、排障和高级能力拆成独立工作流,避免一个大 Skill 同时维护所有框架与 API。
本项目使用 [`vercel-labs/skills`](https://github.com/vercel-labs/skills) 安装 Skill。`sonofmagic/weapp-tailwindcss` 是内容事实源,`sonofmagic/skills` 是面向用户的聚合安装仓库。
## 安装完整套件
```bash
npx skills add sonofmagic/skills \
--skill weapp-tailwindcss \
--skill weapp-tailwindcss-setup \
--skill weapp-tailwindcss-migrate \
--skill weapp-tailwindcss-troubleshoot \
--skill weapp-tailwindcss-runtime \
--skill weapp-tailwindcss-custom-build \
--skill weapp-tailwindcss-react-native \
-y
```
只安装兼容协调入口也可以:
```bash
npx skills add sonofmagic/skills --skill weapp-tailwindcss
```
协调入口负责识别任务并推荐专用 Skill;完整实现和参考资料位于各专用 Skill 中。
查看聚合仓库全部可安装内容:
```bash
npx skills add sonofmagic/skills --list
```
## Skill 分工
| Skill | 使用场景 |
| --- | --- |
| `weapp-tailwindcss` | 泛化请求、任务识别、安全基线与兼容入口 |
| `weapp-tailwindcss-setup` | 新接入、框架选型、Tailwind CSS 4 与多端配置 |
| `weapp-tailwindcss-migrate` | v4 到 v5、旧 patch/生成插件与环境迁移 |
| `weapp-tailwindcss-troubleshoot` | 样式生成、class 转译、rpx、HMR 和运行端排障 |
| `weapp-tailwindcss-runtime` | 动态 class、merge、cva、variants 与 escape/unescape |
| `weapp-tailwindcss-custom-build` | Core API、自研 bundler、样式注入和分包隔离 |
| `weapp-tailwindcss-react-native` | Expo Metro、Native manifest 和 Android/iOS 运行时 |
## 当前共同基线
- 当前主线只维护 Tailwind CSS 4。
- 当前 `weapp-tailwindcss` manifest 要求 Node.js `^22.18.0 || >=24.11.0`;HBuilderX 项目至少使用 5.11。
- 同一次受管构建只由 `WeappTailwindcss` 生成 Tailwind CSS,不叠加官方 Tailwind PostCSS/Vite 生成插件。
- Tailwind 入口使用纯 CSS,必须被项目实际导入;`cssEntries` 使用绝对路径且不能替代构建图导入。
- H5/Web 通常保留插件,由 generator 自动选择 Web target。
- JavaScript class 只转换 Tailwind 验证过的 `classNameSet` 精确候选。
## 本地开发安装
在本仓库根目录执行:
```bash
npx skills add . \
--skill weapp-tailwindcss \
--skill weapp-tailwindcss-setup \
--skill weapp-tailwindcss-migrate \
--skill weapp-tailwindcss-troubleshoot \
--skill weapp-tailwindcss-runtime \
--skill weapp-tailwindcss-custom-build \
--skill weapp-tailwindcss-react-native \
-y
```
## 提示词示例
```text
使用 $weapp-tailwindcss-setup,为新的 uni-app Vue3 Vite 项目配置微信小程序和 H5,给出完整文件与验证步骤。
```
```text
使用 $weapp-tailwindcss-migrate,把仍在运行 weapp-tw patch 和 @tailwindcss/vite 的旧项目迁移到 v5。
```
```text
使用 $weapp-tailwindcss-troubleshoot,定位为什么新加的任意值 class 在第二次 HMR 后不再生成。
```
```text
使用 $weapp-tailwindcss-custom-build,设计基于 weapp-tailwindcss/core 的内存转换和分包样式注入时序。
```
```text
使用 $weapp-tailwindcss-react-native,为 Expo SDK 54 配置 Metro 并验证 manifest warnings。
```
## 维护与验证
源码位于 `skills//`。每个目录包含 `SKILL.md`、`agents/openai.yaml` 和按需加载的 `references/`。
```bash
pnpm skills:validate
npx skills add . --list
```
发布链路见:[Skill 发布与同步](/docs/ai/basics/skill-release)。
---
## Spec-Driven Development(规范驱动开发)
## 概述
**Spec-Driven Development (SDD)** 或 **Spec-Driven Coding** 是一种**以规范(Specification)为先导**的软件开发方法论。开发者先编写详细的需求规范,然后由 AI 根据规范自动生成代码。
> **核心理念**:明确规范 → 自动实现 → 减少沟通成本
---
## 核心概念
### 1. 什么是 Spec(规范)
**Spec** 是对软件功能的**精确、可执行的描述**:
```markdown
# 用户登录功能规范
## 功能描述
用户可以使用邮箱和密码登录系统。
## 输入
- email: 字符串,符合邮箱格式
- password: 字符串,8-32位,包含字母和数字
## 输出
- 成功:返回用户信息和 JWT token
- 失败:返回错误信息
## 验证规则
- 邮箱必须已注册
- 密码必须正确
- 连续失败5次后锁定账户30分钟
## API 端点
POST /api/auth/login
```
### 2. Spec-Driven vs 传统开发
| 开发方式 | 流程 | 优势 | 劣势 |
| -------- | ---- | ---- | ---- |
| **传统开发** | 需求 → 设计 → 编码 | 灵活 | 沟通成本高 |
| **Spec-Driven** | 规范 → AI 生成代码 | 自动化、可追溯 | 需要编写规范 |
| **敏捷开发** | 用户故事 → 迭代 | 快速响应 | 文档缺失 |
---
## Spec-Driven Development 的流程
```
┌─────────────────────────────────────────────────────────┐
│ Spec-Driven Development 流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 需求收集 │
│ │ │
│ ▼ │
│ 2. 编写规范 (Spec) ┌─────────────────┐ │
│ │ │ 自然语言规范 │ │
│ ├────────────────────▶│ API 规范 │ │
│ │ │ 数据模型规范 │ │
│ │ │ UI 规范 │ │
│ │ └─────────────────┘ │
│ │ │
│ ▼ │
│ 3. AI 代码生成 ┌─────────────────┐ │
│ │ │ Claude Code │ │
│ ├────────────────────▶│ Cursor Agent │ │
│ │ └─────────────────┘ │
│ │ │
│ ▼ │
│ 4. 代码审查 │
│ │ │
│ ▼ │
│ 5. 测试验证 │
│ │ │
│ ▼ │
│ 6. 部署上线 │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Spec 的类型
### 1. 功能规范
描述软件应该做什么:
```markdown
## 功能:用户注册
### 需求
用户可以注册新账户
### 输入字段
- username: 3-20字符,字母数字下划线
- email: 有效的邮箱地址
- password: 最少8位,必须包含大小写字母和数字
### 业务规则
- 用户名必须唯一
- 邮箱必须未被注册
- 注册后自动发送验证邮件
```
### 2. API 规范
描述 API 接口:
```yaml
# OpenAPI 规范
openapi: 3.0.0
info:
title: 用户认证 API
version: 1.0.0
paths:
/auth/login:
post:
summary: 用户登录
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
format: email
password:
type: string
minLength: 8
responses:
'200':
description: 登录成功
```
### 3. 数据模型规范
描述数据结构:
```typescript
// TypeScript 接口规范
interface User {
id: string;
username: string;
email: string;
createdAt: Date;
updatedAt: Date;
}
interface LoginRequest {
email: string;
password: string;
}
interface LoginResponse {
success: boolean;
token?: string;
user?: User;
error?: string;
}
```
### 4. UI 规范
描述界面要求:
```markdown
## 登录页面 UI 规范
### 布局
- 居中卡片式布局
- 宽度 400px
### 组件
- 邮箱输入框
- 密码输入框(带显示/隐藏切换)
- "记住我" 复选框
- "忘记密码" 链接
- 登录按钮
### 样式
- 主色调:#3B82F6
- 圆角:8px
- 阴影:0 4px 6px rgba(0,0,0,0.1)
```
---
## 支持 Spec-Driven 的工具
### 1. Cursor Composer
Cursor 的多步骤任务执行:
```typescript
// 用户输入
"实现用户认证功能,包含注册、登录、登出"
// Cursor 自动规划
1. 分析需求 → 生成规范
2. 设计数据模型
3. 实现 API 端点
4. 创建 UI 组件
5. 编写测试用例
```
### 2. Claude Code CLI
通过 CLAUDE.md 定义规范:
```markdown
# 项目规范
## 编码规范
- 使用 TypeScript 严格模式
- 遵循 ESLint 规则
- 组件使用函数式声明
## API 规范
- RESTful 风格
- 统一错误处理
- JWT 认证
## 测试规范
- 单元测试覆盖率 > 80%
- 使用 Vitest
```
---
## Spec 编写最佳实践
### 1. SMART 原则
| 原则 | 说明 | 示例 |
| ---- | ---- | ---- |
| **Specific** | 具体明确 | "用户可以登录" 而非 "实现认证" |
| **Measurable** | 可衡量 | "密码8-32位" 而非 "密码足够复杂" |
| **Achievable** | 可实现 | 考虑技术限制 |
| **Relevant** | 相关性 | 与业务目标一致 |
| **Time-bound** | 有时限 | "在2秒内完成" |
### 2. 结构化规范
```markdown
## 功能概述
一句话描述功能
## 用户故事
作为 [角色],我想要 [功能],以便 [目的]
## 验收标准
- [ ] 场景1:描述
- [ ] 场景2:描述
## 技术规范
### 数据模型
### API 接口
### 业务逻辑
## 非功能需求
### 性能:响应时间 < 200ms
### 安全:HTTPS + JWT
### 兼容:支持主流浏览器
```
### 3. 使用规范语言
- 使用**自然语言**但保持结构化
- 避免歧义词汇("尽可能"、"大概")
- 使用**具体数字**("3次"而非"多次")
- 包含**边界条件**("空值"、"超长输入")
---
## Spec-Driven vs 其他开发方式
### Spec-Driven vs Vibe Coding
| 维度 | Spec-Driven | Vibe Coding |
| ---- | ----------- | ----------- |
| **规划** | 详细规范 | 随性发挥 |
| **可追溯** | 高 | 低 |
| **团队协作** | 容易 | 困难 |
| **AI 参与** | 核心 | 辅助 |
| **适用场景** | 大型项目、团队 | 原型、个人项目 |
### Spec-Driven vs Test-Driven Development
| 维度 | Spec-Driven | TDD |
| ---- | ----------- | --- |
| **起点** | 规范 | 测试 |
| **顺序** | 规范 → 代码 → 测试 | 测试 → 代码 |
| **AI 友好** | 是 | 否 |
| **可组合** | 可组合 | 相对独立 |
---
## 实施建议
### 1. 规范模板
```markdown
# [功能名称] 规范
## 背景
为什么需要这个功能
## 目标
这个功能要达到什么效果
## 功能描述
详细的功能说明
## 验收标准
如何判断功能完成
## 技术考虑
- 性能要求
- 安全考虑
- 兼容性要求
## 依赖
依赖的其他功能或模块
```
### 2. 工具配置
```json
// .claude/spec-template.json
{
"template": "# 功能规范\n\n## 功能概述\n{summary}\n\n## 需求\n{requirements}\n\n## 验收标准\n{acceptance}",
"requiredFields": ["summary", "requirements"],
"outputFormat": "markdown"
}
```
### 3. 版本管理
```
specs/
├── v1.0/
│ ├── auth-spec.md
│ ├── user-spec.md
│ └── api-spec.md
├── v1.1/
│ ├── auth-spec.md (更新)
│ └── payment-spec.md (新增)
```
---
## 参考资源
### 相关工具
- [Cursor Composer](https://cursor.com/docs/composer)
- [OpenAPI Specification](https://swagger.io/specification/)
### 相关方法论
- [Behavior-Driven Development (BDD)](https://en.wikipedia.org/wiki/Behavior-driven_development)
- [Feature-Driven Development (FDD)](https://en.wikipedia.org/wiki/Feature-driven_development)
---
**文档更新时间:2025 年 12 月**
---
## Token(词元)
## 概述
**Token** 是大语言模型(LLM)处理文本的**基本单位**。不同于人类理解的"单词"或"字符",Token 是模型内部使用的最小语义单元。
> **核心概念**:1 Token ≈ 0.75 个英文单词 ≈ 4 个字符 ≈ 2-3 个汉字
---
## Token 的本质
### 1. 什么是 Token
Token 是将文本切分成的**序列片段**:
```
输入文本: "Hello, world!"
Token序列: ["Hello", ",", "world", "!"]
Token数量: 4
```
### 2. 分词 (Tokenization)
将文本转换为 Token 序列的过程:
```python
# GPT 分词示例
text = "Artificial Intelligence is amazing"
tokens = ["Art", "ificial", " Int", "elligence", " is", " am", "azing"]
# 7 tokens
# Claude 分词示例
text = "Artificial Intelligence is amazing"
tokens = ["Art", "ificial", " Intelligence", " is", " amazing"]
# 5 tokens(不同模型分词不同)
```
### 3. 字节对编码 (BPE)
主流的 Tokenization 方法:
```
原始: "unbelievable"
步骤1: u n b e l i e v a b l e (字符级)
步骤2: un bel ieve able (词级+字符级混合)
步骤3: ["un", "believable"] (最终Token)
```
---
## Token 的计数规则
### 1. 英文文本
| 文本类型 | Token 估算 |
| -------- | ---------- |
| 1 个单词 | ~1.3 tokens |
| 1 个句子 (15词) | ~20 tokens |
| 1 段落 (100词) | ~130 tokens |
| 1 页文档 (500词) | ~650 tokens |
### 2. 中文文本
| 文本类型 | Token 估算 |
| -------- | ---------- |
| 1 个汉字 | ~0.5-1 token |
| 1 个词 (2-3字) | ~1-2 tokens |
| 1 个句子 (20字) | ~10-15 tokens |
| 1 段落 (100字) | ~50-70 tokens |
### 3. 代码
| 代码类型 | Token 估算 |
| -------- | ---------- |
| 1 行简单代码 | ~10-20 tokens |
| 1 行复杂代码 | ~30-50 tokens |
| 1 个函数 (50行) | ~300-500 tokens |
| 1 个文件 (500行) | ~3000-5000 tokens |
### 4. 特殊场景
| 场景 | Token 计数 |
| ---- | ---------- |
| 空格 | 1 token |
| 换行 | 1 token |
| 缩进 (2空格) | 1 token |
| 制表符 | 1 token |
| 数字 (12345) | 1-2 tokens |
| URL | ~10-20 tokens |
---
## 各模型的 Token 限制
### 上下文窗口 (Context Window)
| 模型 | 上下文长度 | 输出限制 |
| ---- | ---------- | -------- |
| **Claude Opus 4.5** | 200K tokens | ~8K 输出 |
| **Claude Sonnet 4.5** | 200K tokens | ~8K 输出 |
| **GPT-4o** | 128K tokens | ~4K 输出 |
| **GPT-5.2** | 1M tokens | ~8K 输出 |
| **Gemini 2.0 Pro** | 2M tokens | ~8K 输出 |
| **Gemini 1.5 Pro** | 1M tokens | ~8K 输出 |
| **GLM-4.7** | 128K tokens | ~4K 输出 |
### Token 价格对比($/百万 tokens)
| 模型 | 输入 | 输出 |
| ---- | ---- | ---- |
| **Claude Opus 4.5** | $15 | $75 |
| **Claude Sonnet 4.5** | $3 | $15 |
| **GPT-4o** | $5 | $15 |
| **GPT-5.2** | $2 | $8 |
| **Gemini 2.0 Pro** | $1.25 | $5 |
| **GLM-4.7** | ¥2.2 (≈$0.3) | ¥6.6 (≈$0.9) |
---
## Token 实用计算
### 1. 快速估算
```
英文: 字符数 ÷ 4 ≈ Token 数
中文: 字符数 ÷ 2 ≈ Token 数
代码: 行数 × 10 ≈ Token 数
```
### 2. 精确计算工具
#### Tiktoken (OpenAI)
```python
import tiktoken
# GPT-4 编码器
encoding = tiktoken.encoding_for_model("gpt-4")
text = "Hello, world!"
tokens = encoding.encode(text)
print(f"Token 数量: {len(tokens)}")
```
#### Anthropic Tokenizer
```python
import anthropic
client = anthropic.Anthropic()
response = client.messages.count_tokens(
model="claude-3-opus-20240229",
text="Hello, world!"
)
print(f"Token 数量: {response.input_tokens}")
```
#### 在线工具
- [Token 计算](https://platform.openai.com/tokenizer)
- [Claude Token 计数](https://calculator.anthropic.com/)
---
## Token 使用优化
### 1. 减少 Token 消耗
| 优化方法 | 效果 |
| -------- | ---- |
| **删除无用信息** | 节省 20-40% |
| **精简提示词** | 节省 30-50% |
| **使用压缩格式** | 节省 10-20% |
| **避免重复内容** | 节省 15-30% |
### 2. 系统提示词优化
```diff
- verbose: "You are a highly intelligent and capable assistant designed to help users with a wide variety of tasks..."
+ concise: "你是一个智能助手,擅长代码开发和问题解决。"
```
### 3. 上下文管理
```python
# 只包含相关文件
relevant_files = [
"src/utils/auth.ts", # 包含
"src/utils/helpers.ts", # 包含
# "src/utils/deprecated.ts", # 排除
]
# 使用摘要代替全文
file_summary = summarize_large_file("large_file.ts") # 100 tokens
# vs 完整文件: # 5000 tokens
```
### 4. 缓存策略
| 缓存类型 | 说明 | 节省 |
| -------- | ---- | ---- |
| **系统提示缓存** | Claude/GPT 支持 | 可重用 |
| **文档缓存** | 预处理文档 | 减少重复输入 |
| **向量检索** | 只取相关片段 | 大幅减少上下文 |
---
## Token 成本计算
### 1. 成本估算示例
假设使用 GPT-4o 分析代码库:
```
代码库规模: 100,000 行代码
Token 估算: 100,000 × 10 = 1,000,000 tokens
输入成本: 1M × $5/1M = $5
输出成本: 50K × $15/1M = $0.75
总成本: ~$6
```
### 2. 不同模型成本对比
假设处理 1M tokens:
| 模型 | 输入成本 | 总成本 |
| ---- | -------- | ------ |
| **Claude Opus 4.5** | $15 | ~$90 |
| **Claude Sonnet 4.5** | $3 | ~$18 |
| **GPT-4o** | $5 | ~$30 |
| **GPT-5.2** | $2 | ~$12 |
| **Gemini 2.0 Pro** | $1.25 | ~$7.50 |
| **GLM-4.7** | ¥2.2 (≈$0.3) | ~¥15 (≈$2) |
---
## Token 常见问题
### Q1: 为什么中英文 Token 数不同?
中文使用 Unicode 编码,一个汉字可能被拆分成多个字节,因此需要更多或更少的 tokens。
### Q2: 空格和换行算 Token 吗?
是的,空格、换行、缩进等空白字符都会被计入 tokens。
### Q3: 代码注释是否计入 Token?
是的,所有发送给模型的内容都会计入,包括注释。
### Q4: 如何减少 API 成本?
- 使用更小的模型(如 Sonnet 代替 Opus)
- 优化提示词长度
- 使用缓存和向量化
- 批量处理
### Q5: Token 和字符的精确比例?
| 语言 | Token/字符 |
| ---- | ---------- |
| 英文 | ~1:4 |
| 中文 | ~1:2 |
| 代码 | ~1:3-5 |
---
## 参考资源
### 官方文档
- [OpenAI Tokenizer](https://platform.openai.com/tokenizer)
- [Anthropic Token 计数](https://calculator.anthropic.com/)
- [Google Token 计数](https://gemini.google.com/token)
### 开源工具
- [tiktoken](https://github.com/openai/tiktoken) - OpenAI 分词器
- [tokenizers](https://github.com/huggingface/tokenizers) - Hugging Face 分词器
---
**文档更新时间:2025 年 12 月**
---
## Vibe Coding(直觉编程)
## 概述
**Vibe Coding**(直觉编程、感觉编程)是一种**依赖直觉、经验和即时反馈**的编程方式。开发者不严格遵循规范或计划,而是根据"感觉"来编写和调整代码。
> **核心理念**:跟着直觉走,快速迭代,边做边改
---
## 核心概念
### 1. 什么是 Vibe Coding
**Vibe Coding** 的特点:
- **无明确规划**:不写详细设计文档
- **快速迭代**:写代码 → 调整 → 再调整
- **依赖直觉**:凭"感觉"判断代码好坏
- **即时反馈**:边运行边修改
- **AI 辅助**:用 AI 快速探索想法
### 2. Vibe Coding vs 传统编程
| 维度 | 传统编程 | Vibe Coding |
| ---- | -------- | ----------- |
| **规划** | 详细设计 | 即兴发挥 |
| **文档** | 先写文档 | 代码即文档 |
| **流程** | 需求→设计→编码 | 想法→代码→调整 |
| **测试** | 先写测试 | 后补测试 |
| **灵活性** | 结构化 | 高度灵活 |
---
## Vibe Coding 的风格
### 1. 探索式编程
```
想法: "我想做一个简单的待办事项应用"
↓
快速原型: 用 AI 生成基础代码
↓
运行测试: 看看效果如何
↓
直觉调整: "这个颜色不好看,改一下"
↓
添加功能: "再加个分类功能"
↓
继续调整: "布局有点乱,重构一下"
```
### 2. 对话式编程
```
开发者: "帮我做个登录页面"
AI: [生成代码]
开发者: "颜色太深了"
AI: [调整颜色]
开发者: "加个忘记密码链接"
AI: [添加功能]
开发者: "这个位置不对"
AI: [调整布局]
...
```
### 3. 试错式编程
```
尝试1: [方案A] → 不行,太复杂
尝试2: [方案B] → 还是不对
尝试3: [方案C] → 感觉对了!
完善: [方案C改进] → 完成
```
---
## Vibe Coding 的场景
### 适合场景
| 场景 | 原因 |
| ---- | ---- |
| **原型开发** | 快速验证想法 |
| **创意项目** | 需要灵活探索 |
| **学习新技术** | 边做边学 |
| **个人项目** | 无需团队协作 |
| **黑客马拉松** | 时间有限,求快 |
### 不适合场景
| 场景 | 原因 |
| ---- | ---- |
| **大型团队项目** | 缺乏规范导致混乱 |
| **安全关键系统** | 需要严格验证 |
| **长期维护项目** | 技术债务积累 |
| **复杂业务系统** | 需要详细设计 |
---
## Vibe Coding + AI
### 1. AI 作为"直觉放大器"
```
开发者的直觉 → AI 快速实现 → 即时反馈 → 强化直觉
↑ ↓
└────────────────────────────────────────┘
持续迭代循环
```
### 2. 工具支持
| 工具 | Vibe Coding 支持 |
| ---- | --------------- |
| **Cursor** | 快速生成、即时修改 |
| **Claude Code** | 对话式开发 |
| **Cline** | VS Code 内的快速迭代 |
| **Replit** | 浏览器内即时运行 |
### 3. 典型工作流
```bash
# 1. 想到什么直接让 AI 做
claude-code "创建一个 React 待办组件"
# 2. 看着效果,凭直觉调整
claude-code "把按钮改成圆角,加个阴影"
# 3. 继续添加功能
claude-code "加个删除按钮,用红色"
# 4. 发现问题
claude-code "删除没反应,检查一下"
# 5. 重构调整
claude-code "代码有点乱,整理一下"
```
---
## Vibe Coding 的技巧
### 1. 快速原型
```
第一步: 5分钟实现核心功能
第二步: 运行看看效果
第三步: 凭直觉调整
第四步: 继续添加
第五步: 随时重构
```
### 2. 最小可行产品
```
不要一开始就想完整
先做最简单的能用的版本
然后逐步完善
```
### 3. 相信直觉
```
"感觉这个颜色不对" → 改
"感觉逻辑有点复杂" → 简化
"感觉这里可以优化" → 优化
```
### 4. 拥抱不完美
```
Vibe Coding 接受:
- 代码可能不够优雅
- 结构可能不够完美
- 测试可能不够完整
但重点是: 快速做出能用的东西
```
---
## Vibe Coding vs Spec-Driven Development
### 对比表
| 维度 | Vibe Coding | Spec-Driven Development |
| ---- | ----------- | ------------------------ |
| **规划** | 随性 | 严格 |
| **文档** | 代码即文档 | 详细规范 |
| **灵活性** | 极高 | 中等 |
| **可维护性** | 低 | 高 |
| **团队协作** | 困难 | 容易 |
| **学习曲线** | 低 | 高 |
| **AI 参与度** | 高 | 高 |
| **适用规模** | 小 | 大 |
### 何时使用
| 场景 | 推荐 |
| ---- | ---- |
| **创意验证** | Vibe Coding |
| **黑客马拉松** | Vibe Coding |
| **个人项目** | Vibe Coding |
| **团队项目** | Spec-Driven |
| **企业级系统** | Spec-Driven |
| **长期产品** | Spec-Driven |
---
## Vibe Coding 的最佳实践
### 1. 保持代码整洁
即使采用 Vibe Coding,也要:
```
- 定期重构
- 删除无用代码
- 保持一致的命名
- 添加必要注释
```
### 2. 使用 Git 分支
```
main (稳定版本)
↑
feature/experiment (随意尝试)
↓
实验成功了 → 合并到 main
实验失败了 → 直接删除
```
### 3. 设置时间限制
```
- 单次会话不超过 2 小时
- 避免陷入无休止的调整
- 定期回顾和整理
```
### 4. 记录重要决策
```
即使不写详细文档,也要记录:
- 为什么选择这个方案
- 遇到的坑和解决方案
- 下次改进的方向
```
---
## Vibe Coding 的风险
### 1. 技术债务
```
快速原型 → 技术债务积累
↓
如果不及时还债
↓
项目变得难以维护
```
### 2. 缺乏可追溯性
```
"为什么这样写?"
"我也不知道,当时感觉这样对"
```
### 3. 团队协作困难
```
"这个代码是什么意思?"
"我也不懂,是他凭感觉写的"
```
### 4. 难以复现
```
"这个功能怎么实现的?"
"忘记了,当时随便写的"
```
---
## 混合策略
### Vibe + Spec
最好的方式是**结合两者**:
```
┌─────────────────────────────────────────────────────────┐
│ Vibe + Spec 混合策略 │
├─────────────────────────────────────────────────────────┤
│ │
│ 探索阶段 (Vibe) │
│ ├── 快速原型 │
│ ├── 验证想法 │
│ └── 找到方向 │
│ ↓ │
│ 稳定阶段 (Spec) │
│ ├── 编写规范 │
│ ├── 重构代码 │
│ └── 添加测试 │
│ ↓ │
│ 迭代循环 │
│ │
└─────────────────────────────────────────────────────────┘
```
### 实践建议
```
1. 个人项目: 多用 Vibe Coding
2. 团队项目: 核心用 Spec,边缘用 Vibe
3. 紧急需求: 先 Vibe 解决,后 Spec 规范
4. 创新探索: Vibe 先行,Spec 跟进
```
---
## 参考资源
### 相关概念
- [Spaghetti Code](https://en.wikipedia.org/wiki/Spaghetti_code) - 反面模式
- [Technical Debt](https://en.wikipedia.org/wiki/Technical_debt) - 技术债务
- [Prototype](https://en.wikipedia.org/wiki/Software_prototyping) - 原型开发
### 工具
- [Cursor](https://cursor.sh) - AI IDE
- [Claude Code](https://claude.ai/code) - AI CLI
- [Replit](https://replit.com) - 在线 IDE
---
**文档更新时间:2025 年 12 月**
---
## AI 生成小程序代码
## 提升效率
本页面为使用 AI 快速构建小程序的专题,希望能够帮助大家不断的提升自己的开发效率
同时也希望大家一起讨论参与,快速的生成他个成百上千个小程序, APP, 和网站!
## AI 学习中心:Skill 快速安装
官方 Skill 已按任务拆分为 1 个兼容协调入口和 6 个专用工作流。推荐安装整套,以覆盖接入、迁移、排障、运行时、自定义构建和 Expo React Native:
```bash
npx skills add sonofmagic/skills \
--skill weapp-tailwindcss \
--skill weapp-tailwindcss-setup \
--skill weapp-tailwindcss-migrate \
--skill weapp-tailwindcss-troubleshoot \
--skill weapp-tailwindcss-runtime \
--skill weapp-tailwindcss-custom-build \
--skill weapp-tailwindcss-react-native \
-y
```
原来的 `weapp-tailwindcss` 名称继续作为轻量协调入口,旧安装命令不会失效。
详细说明见:[Skill(技能系统)](/docs/ai/basics/skill)
## 如何参与贡献
### 前置环境
1. `nodejs@22`
2. `pnpm@11`
3. `Github` 账号
### 开始
点击 [`fork weapp-tailwindcss`](https://github.com/sonofmagic/weapp-tailwindcss/fork), 然后 `git clone` 到本地在打开这个目录:
1. 执行 `pnpm i` 安装依赖
2. 执行 `pnpm build:pkg` 构建 `website` 的本地依赖包
3. 然后 `cd website && pnpm dev` (切换到 `website` 目录, 跑 `pnpm dev`,当然你也可以在 `vscode` 里面右键打开终端,然后 `pnpm dev` 运行)
4. 访问 `http://localhost:4000` 就是 `weapp-tailwindcss` 的官方文档网站了
然后,你可以在 `website/docs/ai` 目录下,新建 `md` / `mdx` 文件,进行写作,路由会自动映射到:
`http://localhost:4000/docs/ai/{your_doc_name}` 路径中去
> 比如你创建一个 `v0.md`,你的路由就是 `http://localhost:4000/docs/ai/v0`
>
> 假如你创建一个 `index.md`,比如这个页面就是一个 `index.md` 这个页面访问路径为 http://localhost:4000/docs/ai
假如你有素材,可以放在 `website/docs/ai/assets/{your_doc_name}` 目录下,然后在 `md` 文件中,进行引用
## 示例
### 网站
1. https://v0.dev/
2. https://docs.crewai.com/guides
3. https://bolt.new/
### 上传图片
比如要实现 `网页云音乐`,就手机上打开 `网页云音乐`,然后截长图,上传到 `v0.dev`
> 此处有截图
### 提示词
然后提示词为
- `技术栈为 uni-app vue3 tailwindcss, 实现这个页面`(根据你的需求自定义)
然后复制代码即可
> 此处有截图
---
## 国外顶尖编程模型选型建议书
> **核心结论**:在三大国外顶尖模型中,**Claude Opus 4.5** 在代码质量上保持领先,**GPT-5.2** 在数学推理上最强,**Gemini 3 Pro** 在多模态和长上下文场景表现突出。
## 执行摘要
经过对当前三大国外顶尖 AI 编程模型的深入分析,我们建议:
1. **代码质量优先**:采用 **Claude Opus 4.5**
- 代码质量排名全球第 1
- 代码理解和重构能力最强
- 适合复杂系统架构设计
- 代码审查和重构场景首选
2. **数学推理优先**:采用 **GPT-5.2**
- AIME 2025 排名第 1(1.0 分,满分)
- 算法和复杂数学问题最强
- 适合算法竞赛、科学计算、量化交易
- 逻辑推理能力领先
3. **多模态和长上下文**:采用 **Gemini 3 Pro**
- 支持 200 万 token 超长上下文
- 多模态能力最强(视频、音频、图片)
- 适合处理大规模代码库和多媒体内容
- Google 生态系统集成最佳
---
## 一、三大模型核心对比
### 1.1 基础信息对比
| 对比维度 | Claude Opus 4.5 | GPT-5.2 | Gemini 3 Pro |
| ------------------------ | ----------------- | -------------------- | -------------------- |
| **发布时间** | 2025.11.24 | 2025.12.11 | 2025.12 |
| **开发商** | Anthropic(美国) | OpenAI(美国) | Google(美国) |
| **代码能力排名** | **第 1 名** | 前 3 名 | 前 5 名 |
| **AIME 2025** | 高分 | **第 1 名(1.0分)** | 高分 |
| **最大上下文** | 200K tokens | 1M tokens | **2M tokens** |
| **多模态** | 图片、音频 | 图片、音频 | **视频、音频、图片** |
| **价格($/百万tokens)** | $5-25 | $1.75-14 | $1.25-10 |
| **开源状态** | ❌ 闭源 | ❌ 闭源 | ❌ 闭源 |
**数据来源**:[LLM Stats](https://llm-stats.com/)、各模型官方文档、权威基准测试榜单
### 1.2 核心能力雷达图
```
代码生成能力
Claude Opus 4.5: ★★★★★ (代码质量第1)
GPT-5.2: ★★★★★
Gemini 3 Pro: ★★★★
数学推理能力
Claude Opus 4.5: ★★★★
GPT-5.2: ★★★★★ (AIME满分)
Gemini 3 Pro: ★★★★
长上下文处理
Claude Opus 4.5: ★★★
GPT-5.2: ★★★★
Gemini 3 Pro: ★★★★★ (200万tokens)
多模态能力
Claude Opus 4.5: ★★★
GPT-5.2: ★★★
Gemini 3 Pro: ★★★★★ (支持视频)
中文支持
Claude Opus 4.5: ★★★
GPT-5.2: ★★★
Gemini 3 Pro: ★★★
价格竞争力
Claude Opus 4.5: ★★ (最贵)
GPT-5.2: ★★★
Gemini 3 Pro: ★★★★ (较便宜)
```
---
## 二、Claude Opus 4.5:代码质量之王
### 2.1 为什么 Claude Opus 4.5 代码质量第一?
#### 权威排名
根据 [LLM Stats](https://llm-stats.com/) 最新数据:
- **代码质量排名:全球第 1 名**
- 综合排名前 5
- 在代码生成、代码理解、重构场景中表现最优
#### 核心优势
1. **代码理解能力**
- 深度理解复杂代码结构
- 准确识别代码异味和反模式
- 跨文件依赖关系分析
2. **代码生成质量**
- 生成代码可读性强
- 遵循最佳实践和设计模式
- 类型安全和错误处理完善
3. **重构能力**
- 大规模代码重构
- 架构演进建议
- 技术债务识别和管理
4. **安全性意识**
- 主动识别安全漏洞
- 符合 OWASP 最佳实践
- 输入验证和授权建议
### 2.2 适用场景
| 场景 | 适用度 | 说明 |
| ---------------- | ------ | --------------------------------- |
| **代码审查** | ★★★★★ | 能发现深层问题,提供重构建议 |
| **系统架构设计** | ★★★★★ | 理解复杂系统,提供架构方案 |
| **技术债务管理** | ★★★★★ | 识别技术债务,制定重构计划 |
| **算法实现** | ★★★★ | 代码质量高,但数学推理略逊GPT-5.2 |
| **遗留系统迁移** | ★★★★★ | 深度理解旧代码,提供迁移方案 |
| **测试用例生成** | ★★★★★ | 覆盖边界情况,测试质量高 |
| **CI/CD 集成** | ★★★★★ | Claude Code CLI 官方工具 |
### 2.3 Claude Code CLI:官方工程化工具
Claude Opus 4.5 配合 Claude Code CLI 提供完整的工程化能力:
```
Claude Code CLI
├── 官方维护(Anthropic)
├── 成熟的 Agent 架构
├── 150+ 插件生态
├── 项目级上下文管理
├── LSP 集成
└── 企业级最佳实践
```
**关键优势**:
- Anthropic 是 AI 安全和工程化规范的核心制定者
- 符合 ASL-3 安全标准
- 企业级合规框架
- 详见:[Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
### 2.4 成本分析
#### 订阅价格与使用限制
| 版本 | 月费 | 额度刷新周期 | 使用额度 | 适用对象 |
| --------- | ------------------ | ------------ | -------- | ---------- |
| **Pro** | $20(≈¥140) | **每周** | 基础额度 | 个人开发者 |
| **Teams** | $40/人/月(≈¥280) | **每周** | 团队额度 | 小团队 |
| **Max** | $200(≈¥1400) | **每周** | 大量额度 | 重度用户 |
> **重要说明(2025年8月28日起)**:
>
> - Anthropic 引入了新的**每周使用额度限制**
> - 额度每**7天**重置一次
> - Pro 和 Max 用户均有独立的每周使用上限
> - 超出额度后需等待下一周期或升级套餐
>
> **额度用完后如何继续使用**:
>
> - **方案一**:等待下一个刷新周期(7天后自动恢复)
> - **方案二**:使用 API KEY 直接消耗 token(按量计费,无需等待)
> - **方案三**:切换/注册其他订阅账号(需遵守服务条款)
#### API 按量计费
| 场景 | 输入 | 输出 |
| -------- | ---------------- | ----------------- |
| **标准** | $1-5/百万 tokens | $3-15/百万 tokens |
> **成本对比**:
>
> - Claude Opus 是三者中最贵的
> - 但代码质量最高,复杂场景下反而更经济(减少调试时间)
> - 代码审查和重构场景 ROI 最高
---
## 三、GPT-5.2:数学推理之王
### 3.1 为什么 GPT-5.2 数学推理最强?
#### 权威排名
根据 AIME 2025(美国数学邀请赛):
- **AIME 2025 排名:第 1 名(1.0 分,满分)**
- 综合排名前 3
- 在数学、算法、逻辑推理场景中表现最优
#### 核心优势
1. **数学推理能力**
- 复杂数学问题求解
- 算法设计和优化
- 数学证明生成
- 量化策略分析
2. **逻辑推理**
- 复杂条件判断
- 多步骤推理链
- 抽象问题建模
- 逻辑漏洞识别
3. **算法能力**
- 数据结构选择
- 算法复杂度分析
- 性能优化建议
- 并发和并行计算
4. **科学计算**
- 数值分析
- 统计建模
- 机器学习算法
- 量子计算
### 3.2 适用场景
| 场景 | 适用度 | 说明 |
| ------------ | ------ | ---------------------- |
| **算法竞赛** | ★★★★★ | 数学推理满分,算法最优 |
| **量化交易** | ★★★★★ | 复杂数学模型,策略回测 |
| **科学计算** | ★★★★★ | 数值分析,统计建模 |
| **机器学习** | ★★★★★ | 算法实现,模型优化 |
| **游戏 AI** | ★★★★★ | 博弈论,策略优化 |
| **密码学** | ★★★★★ | 数学基础,安全算法 |
| **性能优化** | ★★★★ | 算法复杂度分析 |
### 3.3 GPT-5.2-Codex-Max:代码专用版本
OpenAI 提供专门的代码模型:
```
GPT-5.2-Codex-Max
├── 专注代码生成
├── 代码补全能力
├── 多语言支持
└── 深度代码理解
```
**特点**:
- 代码能力与 GPT-5.2 相当
- 专为编程场景优化
- 适合集成到 IDE 和工具
### 3.4 成本分析
#### 订阅价格与使用限制
| 版本 | 月费 | 额度刷新周期 | 使用额度 | 适用对象 |
| -------------- | ------------------ | ------------ | ---------------------------------------- | ---------- |
| **Plus** | $20(≈¥140) | **每5小时** | 30-150条消息/5小时 | 个人开发者 |
| **Pro** | $200(≈¥1400) | **每5小时** | 300-1500条本地消息或50-400个云任务/5小时 | 专业用户 |
| **Team** | $30/人/月(≈¥210) | **每5小时** | 团队共享额度 | 团队 |
| **Enterprise** | 定制 | 灵活 | 定制 | 大企业 |
> **重要说明**:
>
> - **每5小时**刷新一次额度(滚动窗口)
> - Plus 用户还有**每周限制**(约6-7次完整会话后达到上限)
> - 超出额度后会提示 _"You've hit your usage limit. Upgrade to Pro or try again in X days Y hours"_
> - Codex CLI、Chat、Agent 模式、代码审查等功能消耗"premium requests"
>
> **额度用完后如何继续使用**:
>
> - **方案一**:等待下一个刷新周期(5小时后自动恢复)
> - **方案二**:使用 API KEY 直接消耗 token(按量计费,无需等待)
> - **方案三**:升级到 Pro 版本获得更高额度
> - **方案四**:切换/注册其他订阅账号(需遵守服务条款)
#### API 按量计费
| 场景 | 输入 | 输出 |
| -------- | ------------------- | ------------------- |
| **标准** | $0.25-2/百万 tokens | $0.75-6/百万 tokens |
> **成本对比**:
>
> - GPT-5.2 价格中等,介于 Claude 和 Gemini 之间
> - 数学推理场景性价比最高
> - 适合算法密集型应用
---
## 四、Gemini 3 Pro:长上下文和多模态之王
### 4.1 为什么 Gemini 3 Pro 在长上下文和多模态领先?
#### 核心优势
1. **超长上下文**
- **200 万 tokens**(三者中最长)
- 可处理整个大型代码库
- 跨文件深度关联分析
- 长文档理解能力
2. **多模态能力**
- **视频理解**(独有)
- 音频处理
- 图片分析
- 多模态综合推理
3. **Google 生态集成**
- Google Cloud 集成
- Android 开发支持
- TensorFlow/ML 集成
- Google Workspace 协作
### 4.2 适用场景
| 场景 | 适用度 | 说明 |
| ---------------- | ------ | ------------------------- |
| **大规模代码库** | ★★★★★ | 200万tokens,一次分析全库 |
| **视频内容分析** | ★★★★★ | 独有视频理解能力 |
| **多模态应用** | ★★★★★ | 图文音视频综合处理 |
| **Android 开发** | ★★★★★ | Google 官方支持 |
| **长文档处理** | ★★★★★ | 超长文档理解 |
| **知识库构建** | ★★★★★ | 大规模资料整合 |
| **代码迁移** | ★★★★ | 全库分析,迁移方案 |
### 4.3 Gemini 2.0 Flash:速度优先版本
Google 提供轻量级版本:
```
Gemini 2.0 Flash
├── 响应速度快
├── 成本更低
├── 适合简单任务
└── 实时交互场景
```
### 4.4 成本分析
#### Gemini Code Assist 订阅价格
| 版本 | 月费 | 刷新周期 | 使用额度 | 适用对象 |
| -------------- | ------------ | -------- | ------------------ | ---------- |
| **Standard** | $19(≈¥130) | **每日** | 无限代码补全 | 个人开发者 |
| **Enterprise** | $45(≈¥310) | **每日** | 100个PR reviews/天 | 企业团队 |
> **使用限制说明**:
>
> - **代码补全**:Standard 和 Enterprise 均为无限次
> - **Pull Request 审查**:Enterprise 100次/天,Consumer 版本 33次/天
> - **Flash Free Tier**:1500 requests/天(Flash 和 Flash-Lite 共享)
> - **Gemini 3 Pro Preview**:250 messages/24小时
> - **Gemini 3.0 Ultra**:20 requests/天(2025年从250次大幅削减92%)
> - **Main Gemini App**:100 queries/天限制
>
> **额度用完后如何继续使用**:
>
> - **方案一**:等待下一个刷新周期(1天后自动恢复)
> - **方案二**:使用 API KEY 直接消耗 token(按量计费,无需等待)
> - **方案三**:升级到 Enterprise 版本获得更高额度
> - **方案四**:切换/注册其他订阅账号(需遵守服务条款)
#### API 按量计费
| 场景 | 输入 | 输出 |
| -------- | ----------------------- | ----------------------- |
| **标准** | $0.125-1.25/百万 tokens | $0.375-3.75/百万 tokens |
> **成本对比**:
>
> - Gemini 3 Pro 是三者中最便宜的
> - 长上下文场景性价比最高
> - 适合大规模代码库分析
---
## 五、三大模型深度对比
### 5.1 编程能力对比
| 能力维度 | Claude Opus 4.5 | GPT-5.2 | Gemini 3 Pro |
| ---------------- | --------------- | ------- | ------------ |
| **代码生成质量** | ★★★★★ | ★★★★★ | ★★★★ |
| **代码理解** | ★★★★★ | ★★★★ | ★★★★ |
| **代码重构** | ★★★★★ | ★★★★ | ★★★ |
| **调试能力** | ★★★★★ | ★★★★ | ★★★ |
| **测试用例生成** | ★★★★★ | ★★★★ | ★★★ |
| **文档生成** | ★★★★★ | ★★★★ | ★★★★ |
| **架构设计** | ★★★★★ | ★★★★ | ★★★ |
**结论**:
- **代码质量**:Claude Opus 4.5 全面领先
- **代码生成**:Claude 和 GPT-5.2 相当
- **文档生成**:三者都较强
### 5.2 推理能力对比
| 能力维度 | Claude Opus 4.5 | GPT-5.2 | Gemini 3 Pro |
| -------------- | --------------- | ------- | ------------ |
| **数学推理** | ★★★★ | ★★★★★ | ★★★★ |
| **逻辑推理** | ★★★★★ | ★★★★★ | ★★★★ |
| **算法设计** | ★★★★ | ★★★★★ | ★★★★ |
| **抽象思维** | ★★★★★ | ★★★★★ | ★★★★ |
| **多步骤推理** | ★★★★★ | ★★★★★ | ★★★★ |
| **创造性思维** | ★★★★★ | ★★★★ | ★★★★ |
**结论**:
- **数学推理**:GPT-5.2 一骑绝尘(AIME满分)
- **逻辑推理**:Claude 和 GPT-5.2 相当
- **创造性**:Claude 略强
### 5.3 工程化能力对比
| 能力维度 | Claude Opus 4.5 | GPT-5.2 | Gemini 3 Pro |
| -------------- | --------------- | -------- | ------------ |
| **CLI 工具** | ✅ Claude Code | ⭐⭐⭐ | ⭐⭐⭐ |
| **IDE 集成** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| **插件生态** | 150+ 插件 | ⭐⭐⭐ | ⭐⭐⭐ |
| **企业支持** | ★★★★★ | ★★★★★ | ★★★★★ |
| **API 稳定性** | ★★★★★ | ★★★★★ | ★★★★★ |
| **文档质量** | ★★★★★ | ★★★★ | ★★★★ |
**结论**:
- **工程化**:Claude Code CLI 生态最完善
- **IDE 集成**:三者都有良好支持
- **企业支持**:三家都有企业版
### 5.4 价格对比
| 价格维度 | Claude Opus 4.5 | GPT-5.2 | Gemini 3 Pro |
| ---------------- | ----------------- | ----------- | -------------- |
| **订阅费** | $20-200 | $20-200 | $19-45 |
| **API 输入** | $1-5/M | $0.25-2/M | $0.125-1.25/M |
| **API 输出** | $3-15/M | $0.75-6/M | $0.375-3.75/M |
| **额度刷新周期** | **每7天(每周)** | **每5小时** | **每日** |
| **价格竞争力** | ★★(最贵) | ★★★ | ★★★★(最便宜) |
**结论**:
- **最便宜**:Gemini 3 Pro
- **最贵**:Claude Opus 4.5
- **额度刷新频率**:GPT-5.2 最高(5小时),Gemini 次之(每日),Claude 最低(每周)
- **性价比**:需结合使用场景判断
### 5.5 特色功能对比
| 特色功能 | Claude Opus 4.5 | GPT-5.2 | Gemini 3 Pro |
| --------------- | --------------- | ---------- | -------------------- |
| **超长上下文** | 200K | 1M | **2M** |
| **视频理解** | ❌ | ❌ | ✅ |
| **代码审查** | ★★★★★ | ★★★★ | ★★★ |
| **多模态** | 图片、音频 | 图片、音频 | **视频、音频、图片** |
| **AIME 满分** | ❌ | ✅ | ❌ |
| **代码质量第1** | ✅ | ❌ | ❌ |
---
## 六、场景化选型建议
### 6.1 按应用场景选型
#### 代码质量和重构场景
**推荐:Claude Opus 4.5**
| 场景 | 推荐模型 | 原因 |
| ------------ | --------------- | ---------------------------- |
| 代码审查 | Claude Opus 4.5 | 代码质量第1,识别深层问题 |
| 遗留系统重构 | Claude Opus 4.5 | 深度理解旧代码,提供演进方案 |
| 技术债务管理 | Claude Opus 4.5 | 识别技术债务,制定重构计划 |
| 架构设计 | Claude Opus 4.5 | 系统级架构建议 |
| 测试用例生成 | Claude Opus 4.5 | 覆盖边界情况,质量高 |
#### 数学和算法场景
**推荐:GPT-5.2**
| 场景 | 推荐模型 | 原因 |
| -------- | -------- | ---------------------- |
| 算法竞赛 | GPT-5.2 | AIME满分,数学推理最强 |
| 量化交易 | GPT-5.2 | 复杂数学模型,策略优化 |
| 科学计算 | GPT-5.2 | 数值分析,统计建模 |
| 机器学习 | GPT-5.2 | 算法实现,模型优化 |
| 游戏 AI | GPT-5.2 | 博弈论,策略优化 |
#### 大规模代码库和多模态场景
**推荐:Gemini 3 Pro**
| 场景 | 推荐模型 | 原因 |
| ---------------- | ------------ | --------------------- |
| 大规模代码库分析 | Gemini 3 Pro | 200万tokens,一次全库 |
| 视频内容理解 | Gemini 3 Pro | 独有视频理解能力 |
| Android 开发 | Gemini 3 Pro | Google 官方支持 |
| 长文档处理 | Gemini 3 Pro | 超长上下文 |
| 多模态应用 | Gemini 3 Pro | 图文音视频综合 |
### 6.2 按团队规模选型
#### 个人开发者
| 预算 | 推荐方案 | 月费 |
| -------- | ------------------- | ----- |
| $30 以内 | Gemini 3 Pro API | $7-21 |
| $30-70 | GPT-5.2 Plus | $20 |
| $70-210 | Claude Opus 4.5 Pro | $200 |
#### 小团队(2-5人)
| 预算 | 推荐方案 | 月费 |
| --------- | -------------------- | -------- |
| $140-420 | Gemini 3 Pro API | $70-280 |
| $420-850 | GPT-5.2 Team | $150 |
| $850-1400 | Claude Opus 4.5 Team | $200-400 |
#### 中大团队(20+人)
| 预算 | 推荐方案 | 说明 |
| --------- | -------- | ------------------ |
| $2800+/月 | 混合策略 | 不同场景用不同模型 |
| $7000+/月 | 企业定制 | 三家都支持企业定制 |
---
## 七、混合策略:多模型协同
### 7.1 为什么需要多模型?
不同模型有不同优势,混合使用可以达到最佳效果:
```
多模型协同策略
├── Claude Opus 4.5:代码质量把关
├── GPT-5.2:算法和数学问题
├── Gemini 3 Pro:大规模代码库分析
└── 成本优化:根据任务选模型
```
### 7.2 混合策略示例
#### 开发流程中的模型分配
| 开发阶段 | 推荐模型 | 理由 |
| ------------ | --------------- | ------------------ |
| **需求分析** | Claude Opus 4.5 | 深度理解,架构设计 |
| **算法设计** | GPT-5.2 | 数学推理最强 |
| **代码实现** | Claude Opus 4.5 | 代码质量最高 |
| **代码审查** | Claude Opus 4.5 | 识别深层问题 |
| **性能优化** | GPT-5.2 | 算法复杂度分析 |
| **全库分析** | Gemini 3 Pro | 超长上下文 |
| **测试用例** | Claude Opus 4.5 | 覆盖全面 |
| **文档生成** | Gemini 3 Pro | 长文档处理 |
### 7.3 成本优化策略
#### 按任务复杂度选模型
| 复杂度 | 推荐模型 | 理由 |
| ------------ | --------------- | ------------ |
| **简单任务** | Gemini 3 Pro | 最便宜,够用 |
| **中等任务** | GPT-5.2 | 性价比高 |
| **复杂任务** | Claude Opus 4.5 | 质量优先 |
#### 成本对比示例
假设每月处理 1000 个任务:
| 策略 | 月费 | Token成本 | 总成本 |
| ---------------- | ---- | --------- | ------ |
| **全用 Claude** | $200 | $2800 | $3000 |
| **全用 GPT-5.2** | $200 | $1100 | $1300 |
| **全用 Gemini** | $0 | $550 | $550 |
| **混合策略** | $200 | $850 | $1050 |
**结论**:混合策略可以节省 **65%** 成本,同时保持高质量。
---
## 八、工程化工具对比
### 8.1 CLI 工具对比
| 工具 | Claude Code | OpenAI CLI | Gemini CLI |
| -------------- | ----------- | ---------- | ---------- |
| **官方支持** | ✅ | ⭐⭐⭐ | ⭐⭐⭐ |
| **Agent 能力** | ★★★★★ | ★★★ | ★★★ |
| **插件生态** | 150+ | ⭐⭐ | ⭐⭐ |
| **项目上下文** | ★★★★★ | ★★★★ | ★★★★ |
| **多模型支持** | ⭐⭐ | ⭐⭐ | ⭐⭐ |
**结论**:Claude Code CLI 是最完善的工程化工具。
### 8.2 IDE 集成对比
| IDE | Claude | GPT | Gemini |
| ------------------ | ------- | --- | ------ |
| **VS Code** | ✅ | ✅ | ✅ |
| **JetBrains** | ✅ | ✅ | ✅ |
| **Cursor** | ✅ 原生 | ✅ | ⭐⭐ |
| **GitHub Copilot** | ⭐⭐ | ✅ | ⭐⭐ |
**结论**:三家都有良好 IDE 支持,Cursor 对 Claude 支持最好。
---
## 九、实施建议
### 9.1 推荐方案总结
```
┌─────────────────────────────────────────────────────────┐
│ 国外顶尖模型选型方案 │
├─────────────────────────────────────────────────────────┤
│ │
│ 代码质量优先:Claude Opus 4.5 │
│ ├── 代码质量全球第1 │
│ ├── 代码审查和重构最强 │
│ ├── Claude Code CLI 工程化完善 │
│ └── 适合:代码审查、架构设计、技术债务管理 │
│ │
│ 数学推理优先:GPT-5.2 │
│ ├── AIME 2025 满分(第1名) │
│ ├── 算法和科学计算最强 │
│ └── 适合:算法竞赛、量化交易、机器学习 │
│ │
│ 长上下文优先:Gemini 3 Pro │
│ ├── 200万tokens 超长上下文 │
│ ├── 多模态能力最强(支持视频) │
│ └── 适合:大规模代码库、视频理解、Android 开发 │
│ │
│ 混合策略:根据任务选择最优模型 │
│ ├── 简单任务 → Gemini 3 Pro(最便宜) │
│ ├── 代码质量 → Claude Opus 4.5(最强) │
│ ├── 数学推理 → GPT-5.2(最强) │
│ └── 成本优化:节省65%+ │
│ │
└─────────────────────────────────────────────────────────┘
```
### 9.2 分阶段实施
#### 第一阶段:单一模型试点(1-2周)
| 步骤 | 内容 | 目标 |
| ---- | ------------------------------- | -------- |
| 1 | 选择一个主力模型(建议 Claude) | 验证效果 |
| 2 | 小范围试点(2-3人) | 收集反馈 |
| 3 | 评估成本和效果 | 决策方案 |
#### 第二阶段:混合策略(1-2个月)
| 步骤 | 内容 | 覆盖范围 |
| ---- | ---------------------- | -------- |
| 1 | 根据任务类型选择模型 | 全团队 |
| 2 | 建立使用规范和最佳实践 | 文档化 |
| 3 | 成本监控和优化 | 持续 |
#### 第三阶段:全面应用(持续)
| 步骤 | 内容 | 目标 |
| ---- | ---------------- | -------- |
| 1 | 多模型协同工作流 | 自动化 |
| 2 | 企业级部署 | 规模化 |
| 3 | 持续评估新模型 | 保持领先 |
---
## 十、成本效益分析
### 10.1 投资回报率(ROI)
假设 10 人团队,平均年薪 $15 万:
| 方案 | 月度成本 | 年度成本 | 效率提升 | 年度价值 | ROI |
| ------------------- | -------- | -------- | -------- | -------- | --------- |
| **Claude Opus 4.5** | $1700 | $20400 | 30% | $450000 | **2205%** |
| **GPT-5.2** | $1150 | $13800 | 25% | $375000 | **2717%** |
| **Gemini 3 Pro** | $700 | $8400 | 20% | $300000 | **3571%** |
| **混合策略** | $1050 | $12600 | 30% | $450000 | **3571%** |
**结论**:混合策略 ROI 最高。
### 10.2 真实成本对比
#### 10 人团队,月预算 $1400
**纯 Claude 方案**:
- Claude Teams:$40 × 10 = $400
- Claude API:$857
- 可用 tokens:约 350 万/月
- **总计:$1257/月**
**混合策略**:
- Claude Teams:$400(代码审查)
- GPT-5.2 API:$285(算法)
- Gemini API:$215(全库分析)
- **总计:$900/月,节省 28%**
---
## 十一、风险与挑战
### 11.1 潜在风险
| 风险 | 影响 | 缓解措施 |
| -------------- | ---- | ---------------------- |
| **供应商锁定** | 高 | 多模型策略,保持灵活性 |
| **成本超支** | 中 | 预算告警,成本监控 |
| **模型变化** | 中 | 持续评估,快速适配 |
| **数据安全** | 高 | 企业版,私有化部署 |
### 11.2 应对策略
1. **多模型策略**:降低供应商锁定风险
2. **成本监控**:设置预算告警
3. **持续评估**:关注新模型发布
4. **数据安全**:选择企业版或私有化部署
---
## 十二、总结与建议
### 12.1 核心结论
> **三大国外顶尖模型各有优势,推荐混合策略**
- **Claude Opus 4.5**:代码质量第1,适合代码审查和重构
- **GPT-5.2**:数学推理满分,适合算法和科学计算
- **Gemini 3 Pro**:200万tokens,适合大规模代码库
- **混合策略**:节省65%成本,同时保持高质量
### 12.2 关键论点
1. **代码质量**:Claude Opus 4.5 全球第1
2. **数学推理**:GPT-5.2 AIME满分
3. **长上下文**:Gemini 3 Pro 200万tokens
4. **工程化**:Claude Code CLI 最完善
5. **成本**:Gemini最便宜,Claude最贵
6. **混合策略**:性价比最高
### 12.3 预期收益
| 收益类型 | Claude | GPT-5.2 | Gemini | 混合策略 |
| ------------ | ---------- | ---------- | ---------- | ---------- |
| **代码质量** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| **数学推理** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| **长上下文** | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| **月费** | $200 | $200 | $0 | $200 |
| **API成本** | 高 | 中 | 低 | 中低 |
| **ROI** | 2205% | 2717% | 3571% | **3571%** |
---
## 十三、参考来源
### 官方网站
- [Claude Code](https://claude.ai/code)
- [Claude Opus 4.5 发布公告](https://www.anthropic.com/news/claude-opus-4-5)
- [OpenAI 官网](https://openai.com/)
- [GPT-5.2 发布](https://openai.com/index/introducing-gpt-5-2-codex/)
- [Google Gemini](https://gemini.google.com/)
- [Gemini 3 Pro 发布](https://blog.google/technology/ai/google-gemini-pro-update-122025/)
### 权威榜单
- [LLM Stats - 全球模型排名](https://llm-stats.com/)
- [AIME 2025 美国数学邀请赛](https://aime.mathhub.org/)
- [HumanEval 代码生成基准](https://github.com/openai/human-eval)
### 价格与成本
- [Claude Code 付费完全指南](https://www.cursor-ide.com/blog/claude-code-pricing)
- [OpenAI 定价](https://openai.com/pricing)
- [Google Gemini 定价](https://cloud.google.com/vertex-ai/generative-ai/pricing)
### 产品对比
- [Claude vs GPT vs Gemini - 2025 对比](https://www.anthropic.com/news/claude-opus-4-5)
- [2025 年顶尖 AI 模型深度评测](https://aicoding.csdn.net/686e3291080e555a88ce5407.html)
### 技术文档
- [Claude Code CLI 文档](https://docs.anthropic.com/claude-code)
- [OpenAI API 文档](https://platform.openai.com/docs/)
- [Gemini API 文档](https://cloud.google.com/vertex-ai/generative-ai/docs)
---
**文档更新时间:2025 年 12 月**
**注意**:
1. 价格信息可能随时变动,请以官方公布为准
2. AI 模型的能力排名基于公开基准测试,实际效果可能因使用场景而异
3. 混合策略需要工程化支持,建议从试点开始
4. 企业用户建议选择企业版或私有化部署以保障数据安全
---
## LLM 友好文档 (llms.txt)
## 生成方式
1. 在仓库根目录执行 `pnpm --filter @weapp-tailwindcss/website build`(或 `cd website && pnpm build`)。
2. 构建后,`website/build/` 会生成:
- `llms.txt`(索引)
- `llms-full.txt`(完整内容)
- `llms-quickstart.txt`(上手/AI 工作流)
- `llms-api.txt`(配置、API、迁移与问题)
- 去除 MDX import 的纯 Markdown 文件,方便直接喂给模型。
## 线上地址
- `https://tw.icebreaker.top/llms.txt`
- `https://tw.icebreaker.top/llms-full.txt`
- `https://tw.icebreaker.top/llms-quickstart.txt`
- `https://tw.icebreaker.top/llms-api.txt`
> 如果通过 GitHub Pages 访问,请注意前缀路径 `/weapp-tailwindcss/`。
## 给 AI 的示例提示词
> 你可以从 https://tw.icebreaker.top/llms-quickstart.txt 和 https://tw.icebreaker.top/llms-api.txt 读取 weapp-tailwindcss 的入门与配置说明,回答时请引用相关链接。
## 离线使用
- 下载 `llms-full.txt` 直接给模型。
- 或将生成阶段的 Markdown 文件整体打包后供模型上下文检索。
---
## AI 编程工具选型建议书
> **核心结论**:推荐以 **GLM-4.7** 为核心模型,配合 **Claude Code CLI** 构建 AI 工程化能力。
## 执行摘要
经过对当前主流 AI 编程工具和模型的深入分析,我们建议:
1. **模型选择**:采用 **GLM-4.7** 作为主力模型
- 原则:用新不用旧,GLM-4.7 是智谱 2025 年 12 月最新旗舰
- 能力:代码能力超越 GPT-5(官方宣称),总参数 358B
- 性价比:价格为 Claude Opus 的 1/7 - 1/12
- 世界排名第 6,是国产开源模型中排名最高
2. **工程化能力**:使用 **Claude Code CLI + GLM-4.7** 组合
- **GLM-4.7 月费**:¥40-400(远低于 Claude 的 $20-200)
- 可直接配置使用 GLM-4.7 作为底层模型
- 成熟的 Agent 架构和工具生态
- 项目级上下文管理能力
- **Token 成本仅为原生 Claude 的 12%**
- **CLI 比编辑器插件更强大、更灵活、更工程化**
3. **插件生态系统**:Claude Code CLI 拥有完整的工程化插件体系
- **PR Review Toolkit**:自动化代码审查(测试、错误处理、类型设计、代码质量)
- **Development Workflows**:Python、JavaScript/TypeScript、Backend、Frontend 专业工作流
- **Document Skills**:Excel、Word、PowerPoint、PDF 文档处理
- **Code Quality Tools**:代码重构、技术债务管理、架构审查
- **Enterprise Plugins**:150+ 命令、74+ 专业代理、GitHub 集成
- 详见:[Claude Plugins Marketplace](https://claude-plugins.dev/)
4. **工具选择**:推荐以 **CLI 为主力工具**
- CLI 具有更完整的工具链和更强大的 Agent 能力
- 不依赖特定 IDE,可在任何环境使用
- 更适合处理复杂的、多步骤的任务
- 鼓励开发者体验 Cursor、Qoder 等 IDE 了解前沿技术,但不建议作为主力工具
---
## 一、为什么选择 GLM-4.7?
### 1.0 模型质量的重要性
在深入对比之前,必须明确一个核心观点:**模型质量是 AI 辅助编程的决定性因素**。
#### 为什么模型好坏如此关键?
1. **垃圾模型 = 纯纯浪费**
- 无论如何优化 prompt、如何调整交互方式
- 无法理解复杂需求 → 生成错误代码 → 浪费调试时间
- 无法理解项目上下文 → 需要反复解释 → 浪费沟通成本
- 无法生成可用代码 → 需要人工重写 → 浪费开发时间
2. **好模型 = 效率倍增**
- 准确理解需求 → 一次生成可用代码
- 深度理解上下文 → 减少重复解释
- 代码质量高 → 调试成本低
3. **成本陷阱**
- 使用便宜但能力差的模型 → 需要多次尝试 → 实际成本更高
- 使用能力强的模型 → 一次成功 → 总成本更低
> **核心结论**:在 AI 辅助编程中,**模型质量 > 工具功能 > 交互技巧**。使用垃圾模型,再好的工具和交互技巧都是徒劳。
#### 真实案例对比
假设完成一个中等复杂度的需求(CRUD + 业务逻辑):
| 模型质量 | 交互次数 | 总耗时 | 成功率 | 结论 |
| ----------------------------------- | -------- | -------- | ------ | -------- |
| **顶级模型**(Claude Opus/GLM-4.7) | 2-3 次 | 2-4 小时 | 85-95% | 高效完成 |
| **中等模型** | 5-8 次 | 1-2 天 | 60-75% | 勉强可用 |
| **垃圾模型** | 10+ 次 | 3-5 天 | 30-50% | 纯纯浪费 |
> **结论**:使用顶级模型虽然单价高,但总耗时和总成本反而更低。
### 1.1 用新不用旧:模型迭代的核心原则
| 对比维度 | GLM-4.7 | GLM-4.6 | Claude Opus 4.5 | GPT 5.2 | GPT 5.1-codex-max |
| ------------------------- | --------------- | ---------- | ----------------- | -------------- | ----------------- |
| **发布时间** | 2025.12.22 | 2025.09.30 | 2025.11.24 | 2025.12.11 | 2025.11.19 |
| **代码能力** | 最强 | 较强 | 最强 | 最强 | 最强 |
| **世界排名** | **第 6 名** | 第 7 名 | 第 2 名 | 第 3 名 | - |
| **价格(¥/百万 tokens)** | ¥0.6-2.2 | ¥0.6-2.2 | ¥5-25 | ¥1.75-14 | ¥1.25-10 |
| **所属机构** | 智谱AI(中国) | 智谱AI | Anthropic(美国) | OpenAI(美国) | OpenAI(美国) |
| **时效性** | ⭐⭐⭐⭐⭐ 最新 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
**星级说明**:⭐ 越多代表越新、技术越先进(均为 2025 年最新一代模型)
**数据来源**:[LLM Stats](https://llm-stats.com/)、各模型官方文档、权威基准测试榜单
> **权威排名**:根据 [LLM Stats](https://llm-stats.com/) 最新数据(2025.12.23):
>
> - **GLM-4.7**:世界**第 6 名**,是国产开源模型中排名最高
> - **GLM-4.6**:世界第 7 名,621 分
> - **Claude Opus 4.5**:代码质量排名第 1,综合排名前 5
> - **GPT 5.2**:综合排名前 3,AIME 2025 排名第 1(1.0 分)
> **Qoder 模型说明**:Qoder 采用**多模型后端智能路由策略**,根据任务类型自动选择最合适的模型:
>
> - **Claude 系列**:擅长代码理解和重构
> - **GPT 系列**:代码生成能力强
> - **Gemini 系列**:多模态能力优秀
> - **通义千问系列**:阿里自研模型
>
> Qoder 提供**模型分级选择器**(Model Tier Selector),支持四个层级:
>
> - **智能路由**:自适应算法自动选择最合适模型(推荐默认)
> - **极致性能**:使用最优可用模型
> - **经济高效**:高性价比模型选择
> - **基础轻量**:基础模型服务(免费)
>
> 来源:
>
> - [Qoder 官方文档 - 模型分级选择器](https://docs.qoder.com/zh/user-guide/chat/model-tier-selector)
> - [Jimmy Song - Qoder 深度评测](https://jimmysong.io/zh/blog/qoder-alibaba-ai-ide-personal-review/)
**核心论点**:
- GLM-4.7 是智谱最新旗舰(2025年12月22日发布),面向 Agentic Coding 场景强化
- 世界排名第 6(来源:[LLM Stats](https://llm-stats.com/)),在多项编程基准测试中取得开源模型领先表现
- 代码能力超越 GPT-5(官方宣称),与 Claude Opus 4.5、GPT 5.2 同属 2025 年最新一代
- 价格仅为 Claude Opus 的 1/7 左右,成本优势显著
- 总参数 358B,是目前参数量最大的开源模型之一
- MIT 开源协议,可自由使用和修改
- **用新不用旧**:GLM-4.7 是 2025 年 12 月最新发布
### 1.2 GLM-4.7 核心优势
#### 技术优势
```
代码能力
├── Agentic Coding 场景强化
├── 长程任务规划能力
├── 工具协同能力
└── 前端美感(Artifacts)
通用能力
├── 回复简洁自然
├── 写作沉浸感强
└── 指令遵循更强
```
#### 性能表现
- **代码能力**:宣称超越 GPT-5
- **开源表现**:多项基准测试 SOTA
- **工具支持**:原生支持 Claude Code、Cline 等主流工具
#### 成本优势
| 模型 | 输入价格 | 输出价格 | 价格比 |
| ------------------- | -------- | -------- | ------ |
| **GLM-4.7** | ¥0.6-2.2 | ¥2.2-6.6 | 1x |
| **Claude Opus 4.5** | ¥5-25 | ¥15-75 | 7-12x |
| **GPT 5.2** | ¥1.75-14 | ¥5.25-42 | 3-7x |
> **成本对比**:相同任务量,GLM-4.7 成本约为 Claude Opus 的 **12%**,GPT 5.2 的 **30%**
---
## 二、GLM-4.7 + Claude Code CLI:最佳工程化组合
### 2.1 为什么选择 Claude Code CLI?
#### 核心价值:AI 工程化基础设施
```
Claude Code CLI
├── 成熟的 Agent 架构
│ ├── 子代理机制(Task 工具)
│ ├── 工具调用能力
│ └── 上下文管理
├── 完整的工具生态
│ ├── Read/Write/Edit 文件操作
│ ├── Bash 命令执行
│ ├── Grep 搜索
│ └── LSP 集成
└── 项目级能力
├── CLAUDE.md 配置
├── 全局上下文理解
└── 多文件协作
```
#### 关键特性:可配置使用 GLM-4.7
Claude Code CLI 支持自定义模型配置,可以直接将 GLM-4.7 作为底层模型:
1. **GLM-4.7 提供**:最新的代码能力和推理能力
2. **Claude Code 提供**:成熟的工程化框架和工具链
3. **组合效果**:最新模型 + 成熟架构 = 最佳工程化方案
4. **低成本订阅**:GLM-4.7 Coding Plan 月费仅 ¥40-400
> **重要优势**:使用 Claude Code CLI + GLM-4.7 组合:
>
> - **GLM-4.7 订阅费**:¥40-400/月(远低于 Claude 的 $20-200 ≈ ¥140-1400)
> - **Token 成本**:¥0.6-2.2/百万 tokens(Claude 的 12%)
> - **Claude Code CLI**:免费安装使用
### 2.2 与其他方案对比
| 方案 | 模型 | 工程化能力 | 月费 | Token/点数成本 | 推荐度 |
| ----------------------------- | ------------------- | ---------- | ---------------------- | ------------------------- | ---------- |
| **GLM-4.7 + Claude Code CLI** | GLM-4.7(世界第 6) | 成熟 | **¥40-400** | ¥0.6-2.2/M | ⭐⭐⭐⭐⭐ |
| **Qoder** | 多模型智能路由 | 较新 | $20-60 (约 ¥140-420) | 2000-6000 点数/月 | ⭐⭐⭐⭐ |
| Claude Code | Claude Opus 4.5 | 成熟 | $20-200 (约 ¥140-1400) | $1-5/M (约 ¥7-35/M) | ⭐⭐⭐⭐ |
| Cursor | Claude/GPT 5.2 | IDE 集成 | $20-200 (约 ¥140-1400) | $0.25-2/M (约 ¥1.75-14/M) | ⭐⭐⭐⭐ |
**结论**:GLM-4.7 + Claude Code CLI 在**模型时效性**、**工程化能力**、**成本**三方面都达到最优。
> **成本对比**(月费 + Token):
>
> - **GLM-4.7 + Claude Code CLI**:¥40-400 + ¥0.6-2.2/百万 tokens
> - **Qoder**:Pro $20 (约 ¥140)、Pro+ $60 (约 ¥420),包含 2000-6000 点数/月
> - **Claude Code 原生**:$20-200 (约 ¥140-1400) + $1-5/M (约 ¥7-35/百万 tokens)
> - **Cursor**:$20-200 (约 ¥140-1400) + $0.25-2/M (约 ¥1.75-14/百万 tokens)
>
> **优势**:
>
> - GLM-4.7 月费仅为 Qoder 的 **29-295%**(取决于版本)
> - GLM-4.7 月费仅为 Claude 的 **29-295%**
> - Token 成本仅为 Claude 的 **12%**
> - 世界排名第 6,代码能力最强
---
## 三、产品对比分析
### 3.1 IDE 对比:Qoder vs Cursor
#### 核心功能对比表
| 功能类别 | 功能 | Qoder | Cursor | 说明 |
| -------------- | --------------- | -------------- | ------------ | -------------------------------------------------------------------------------------------------------- |
| **基础架构** | 基于 VS Code | ✅ | ✅ | 两者都基于 VS Code |
| **插件支持** | VS Code 插件 | ✅ | ✅ | 完全兼容 VS Code 生态 |
| **代码补全** | Tab 自动补全 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Cursor 更流畅,类似 Copilot |
| | 多行编辑 | ✅ | ✅ | Cursor 更成熟 |
| | 智能重写 | ✅ | ✅ | Cursor 体验更好 |
| | 光标预测 | ❌ | ✅ | Cursor 独有 |
| **AI 聊天** | Chat 对话 | ✅ | ✅ | 两者都有 |
| | 代码库问答 | ✅ | ✅ | 都支持 |
| | @符号引用代码 | ✅ | ✅ | 都支持 |
| | 图片输入 | ❌ | ✅ | Cursor 独有 |
| | 网络搜索 | ❌ | ✅ | Cursor 的 @Web 功能 |
| | 文档引用 | ✅ | ✅ | 都支持 |
| | 即时应用 | ✅ | ✅ | 都支持 |
| **代码编辑** | Ctrl+K 快速编辑 | ✅ | ✅ | 都支持 |
| | 终端命令生成 | ❌ | ✅ | Cursor 独有 |
| | 快速提问 | ✅ | ✅ | 都支持 |
| **智能体** | Agent 模式 | ✅ | ✅ | 都有智能体功能 |
| | Composer | ❌ | ✅ | Cursor 自有模型,4x 更快 |
| | Multi-Agent | 基础 | ⭐⭐⭐⭐⭐ | Cursor 的专用多智能体界面 |
| | 并行执行 | ❌ | ✅ | Cursor 可并行多个智能体 |
| **代码库理解** | 10 万+ 文件级 | ✅ | ⭐⭐⭐⭐ | Qoder 超大规模优势 |
| | 向量检索 | ✅ | ✅ | 都支持语义检索 |
| | 代码差异可视化 | ❌ | ✅ | Cursor 独有 |
| **文档生成** | Repo Wiki | ✅ | ❌ | **Qoder 独有** |
| | Quest Mode | ✅ | ❌ | **Qoder 独有** |
| | Spec-Driven | ✅ | ❌ | **Qoder 独有** |
| **多模态** | 图片输入 | ❌ | ✅ | Cursor 独有 |
| | 语音输入 | ❌ | ✅ | Cursor 2.0 支持 |
| **中文支持** | 原生中文 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | Qoder 针对中文优化 |
| **支付方式** | 支付宝 | ✅ | ❌ | **Qoder 独有** |
| | 信用卡 | ❌ | ✅ | Cursor 主要方式 |
| **价格** | 月费 | $20-60 | $20-200 | Qoder 更便宜 |
| | 首月优惠 | $2 | ❌ | **Qoder 独有** |
| | 限时优惠 | **50% off** | ❌ | **Qoder 暂有:订阅/续费 Pro/Pro+/Ultra 享半价,详见 [优惠详情](https://docs.qoder.com/events/discount)** |
| **社区生态** | 用户社区 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Cursor 更成熟 |
| | 教程资源 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Cursor 资源更丰富 |
| | 市场成熟度 | 较新(2025.8) | 成熟(2024) | Cursor 更早 |
> **重要说明**:
>
> - **✅** 表示支持,**❌** 表示不支持
> - **⭐** 表示功能成熟度/体验评分(1-5 星)
> - Cursor 功能更全面,特别是在代码补全、多模态、智能体协作方面
> - Qoder 在超大规模代码库理解(10 万+ 文件)、自动文档生成(Repo Wiki)、中文支持方面有独特优势
#### Qoder 独有功能
| 功能 | 说明 |
| --------------------------- | -------------------------------------------------- |
| **Repo Wiki** | ✅ 自动生成项目文档/知识库,持续追踪代码和文档变化 |
| **Quest Mode** | ✅ 任务导向的自主编程,将需求自动转换为规范并执行 |
| **Spec-Driven Programming** | ✅ 规范驱动编程,开发者只需输入自然语言需求 |
| **10 万+ 文件级检索** | ✅ 超大规模代码库一次性检索(Cursor 约几万文件级) |
| **原生中文支持** | ✅ 针对中文场景深度优化 |
| **支付宝支付** | ✅ 国内用户支付便捷 |
| **首月 $2 优惠** | ✅ 低成本试用 |
#### Cursor 独有功能
| 功能 | 说明 |
| ------------------------- | ------------------------------------------------------- |
| **Composer** | ✅ Cursor 自有前沿模型,速度提升 4 倍,任务完成 < 30 秒 |
| **Multi-Agent Interface** | ✅ 专用多智能体协作界面,可并行运行多个智能体 |
| **Tab 自动补全** | ✅ 行业领先的代码补全体验,类似 GitHub Copilot |
| **光标预测** | ✅ 预测下一个光标位置,无缝导航代码 |
| **图片输入** | ✅ Chat 支持图片作为上下文 |
| **语音输入** | ✅ Cursor 2.0 支持语音输入 |
| **网络搜索** | ✅ @Web 功能获取最新信息 |
| **终端命令生成** | ✅ 在终端使用 Ctrl+K 生成命令 |
| **代码差异可视化** | ✅ 更直观的代码变更展示 |
| **VS Code 深度集成** | ✅ 更成熟的生态集成和兼容性 |
| **活跃社区** | ✅ 用户基数大,教程资源丰富 |
#### 功能对比总结
| 功能类型 | Qoder | Cursor |
| ------------------ | ---------------------- | --------------------------------- |
| **代码补全体验** | ⭐⭐⭐ 基础补全 | ⭐⭐⭐⭐⭐ 行业领先 |
| **代码库理解规模** | ⭐⭐⭐⭐⭐ 10 万+ 文件 | ⭐⭐⭐⭐ 几万文件级 |
| **多智能体协作** | ⭐⭐⭐ 基础 Agent | ⭐⭐⭐⭐⭐ Composer + Multi-Agent |
| **自动文档生成** | ⭐⭐⭐⭐⭐ Repo Wiki | ❌ 不支持 |
| **多模态支持** | ❌ 不支持 | ⭐⭐⭐⭐⭐ 图片+语音 |
| **中文支持** | ⭐⭐⭐⭐⭐ 原生优化 | ⭐⭐⭐ 部分支持 |
| **社区生态** | ⭐⭐⭐ 较新 | ⭐⭐⭐⭐⭐ 成熟活跃 |
| **功能完整性** | ⭐⭐⭐ 核心功能 | ⭐⭐⭐⭐⭐ 功能全面 |
**选型建议**:
> **推荐优先级:CLI 为主力,IDE 为补充**
1. **主力工具(强烈推荐)**
- 所有场景优先 → **GLM-4.7 + Claude Code CLI**
- 理由:成本效益最高、工程化能力最强、不依赖 IDE
2. **IDE 补充(可选)**
- 需要超大代码库理解(10 万+ 文件)→ Qoder(中文项目)
- 追求代码补全体验 → Cursor
- 需要自动生成项目文档 → Qoder
- 需要多模态输入(图片/语音)→ Cursor
- 需要多智能体协作 → Cursor
**核心观点**:
- IDE 适合特定场景(中文、超大代码库、多模态)
- 但 **CLI 才是工程化主力**,更适合复杂任务和团队协作
- 建议团队以 CLI 为主力工具,IDE 仅作补充
### 3.2 CLI 对比:Qoder CLI vs Claude Code CLI
| 对比维度 | Qoder CLI | Claude Code CLI (配 GLM-4.7) |
| -------------- | ------------------------------------- | ---------------------------- |
| **代码生成** | ✅ | ✅ |
| **文件操作** | ✅ Grep/Read/Write | ✅ Read/Write/Edit |
| **Shell 命令** | ✅ Bash | ✅ Bash |
| **代码审查** | ✅ CodeReview | ✅ |
| **子代理机制** | ✅ | ✅ Task 工具 |
| **项目上下文** | ✅ | ✅ CLAUDE.md |
| **底层模型** | 多模型智能路由 | 可配置(GLM-4.7 最优) |
| **成熟度** | 较新(2025.10) | 成熟(2025.8) |
| **月费** | Pro $20 (约 ¥140)、Pro+ $60 (约 ¥420) | **¥40-400** |
| **Token 成本** | 2000-6000 点数/月 | ¥0.6-2.2/百万 tokens |
**关键差异**:
- **Qoder CLI**:多模型智能路由(Claude/GPT/Gemini/通义千问),Pro 版 $20/月(2000 点数),Pro+ 版 $60/月(6000 点数)
- **Claude Code CLI + GLM-4.7**:月费 **¥40-400**,Token 成本 ¥0.6-2.2/百万 tokens
**选型建议**:推荐 **Claude Code CLI + GLM-4.7** 组合
- Claude Code 提供成熟的工程化框架
- GLM-4.7 提供最新的模型能力(世界排名第 6)
- 成本对比 Qoder 取决于使用量
- Token 成本仅为 Claude 的 12%,GPT 的 30%
### 3.3 主流 AI Coding Plan 价格与使用限制对比
为了让读者更清晰地了解各 AI 编程工具的定价策略和额度限制,以下是主流 Coding Plan 的详细对比:
| AI Coding Plan | 月费 | 刷新周期 | 使用额度(每周期) | 额外说明 |
| --------------------------------- | ------------------------------ | ----------- | ---------------------------------------- | -------------------------------------------- |
| **GLM-4.7 Lite** | ¥40(活动价¥54/季≈¥18/月) | **每5小时** | 约 **120 次 Prompts** | 相当 Claude Pro 用量的 3 倍 |
| **GLM-4.7 Pro** | ¥100(活动价¥270/季≈¥90/月) | **每5小时** | 约 **600 次 Prompts** | 相当 Claude Max 用量的一部分 |
| **GLM-4.7 Max** | ¥400(活动价¥540/季≈¥180/月) | **每5小时** | 约 **2400 次 Prompts** | 相当 Claude Max 5x 用量的 3 倍 |
| **Claude Code Pro** | $20(≈¥140) | **每7天** | 基础额度 | 2025年8月起新增每周限制 |
| **Claude Code Teams** | $40/人/月(≈¥280) | **每7天** | 团队额度 | 2025年8月起新增每周限制 |
| **Claude Code Max** | $200(≈¥1400) | **每7天** | 大量额度 | 2025年8月起新增每周限制 |
| **ChatGPT Plus** | $20(≈¥140) | **每5小时** | 30-150 条消息 | 还有每周限制(约6-7次完整会话) |
| **ChatGPT Pro** | $200(≈¥1400) | **每5小时** | 300-1500条本地消息 或 50-400个云任务 | Codex CLI、Chat、Agent 消耗 premium requests |
| **GitHub Copilot Free** | $0 | **每月** | 2000 次代码补全 + 50 次 premium requests | - |
| **GitHub Copilot Pro** | $10/月或$100/年(≈¥70-700/年) | **每月** | 无限标准补全 + Premium requests 限额 | 超出需额外付费 |
| **Gemini Code Assist Standard** | $19(≈¥130) | **每日** | 无限代码补全 + 33 次 PR reviews/天 | - |
| **Gemini Code Assist Enterprise** | $45(≈¥310) | **每日** | 无限代码补全 + 100 次 PR reviews/天 | - |
| **Qoder Pro** | $20(≈¥140) | **每月** | 2000 点数 | 超出需额外付费 |
| **Qoder Pro+** | $60(≈¥420) | **每月** | 6000 点数 | 超出需额外付费 |
| **Cursor Pro** | $20(≈¥140) | **每月** | 基础额度 | 使用 Claude/GPT-5.2 |
| **Cursor Business** | $40/人/月(≈¥280) | **每月** | 团队额度 | 使用 Claude/GPT-5.2 |
> **刷新周期对比**(从快到慢):
>
> 1. **GLM-4.7 / ChatGPT**:每 **5 小时** 刷新(最快)
> 2. **Gemini Code Assist**:每 **日** 刷新
> 3. **GitHub Copilot / Qoder / Cursor**:每 **月** 刷新
> 4. **Claude Code**:每 **7 天** 刷新(最慢)
> **额度用完后如何继续使用(通用方案)**:
>
> - **方案一**:等待下一个刷新周期自动恢复
> - **方案二**:使用 API KEY 直接消耗 token(按量计费,无需等待)
> - **方案三**:切换/注册其他订阅账号(需遵守各服务商条款)
> - **方案四**:升级到更高版本套餐获得更高额度
> **核心结论**:
>
> - **GLM-4.7** 在刷新频率和额度组合上最优(5小时刷新 + 高额度)
> - **ChatGPT Pro** 虽然也是5小时刷新,但价格是 GLM-4.7 Max 的 **3.5 倍**
> - **Claude Code** 的 7 天刷新周期对于重度用户来说限制最大
> - **GitHub Copilot Free** 适合轻度用户,但功能受限
> - **使用 API KEY 是绕过订阅额度限制的最可靠方案**,适合重度用户
---
## 四、GLM-4.7 详细成本分析
### 4.1 价格体系
#### API 按量计费
| 场景 | 输入 (元/百万 tokens) | 输出 (元/百万 tokens) | 缓存 (元/百万 tokens) |
| -------------------- | --------------------- | --------------------- | --------------------- |
| **短输出 [0, 0.2)** | ¥0.6 | ¥2.2 | ¥0.12 |
| **中输出 [0.2+)** | ¥1.5 | ¥5.5 | ¥0.30 |
| **长输入 [32, 200)** | ¥2.2 | ¥6.6 | ¥0.44 |
#### Coding Plan 订阅
| 版本 | 月费 | 刷新周期 | 使用额度(每周期) | 折算价格 |
| -------- | -------------------------------- | ----------- | ---------------------- | ---------------------------------------------- |
| **Lite** | ¥40/月(活动价¥54/季≈¥18/月) | **每5小时** | 约 **120 次 Prompts** | 约为 Claude Code Pro ($20 ≈ ¥140) 的 1/3 |
| **Pro** | ¥100/月(活动价¥270/季≈¥90/月) | **每5小时** | 约 **600 次 Prompts** | 约为 Claude Code Max 的 1/2-2/3 |
| **Max** | ¥400/月(活动价¥540/季≈¥180/月) | **每5小时** | 约 **2400 次 Prompts** | 约为 Claude Code Max ($200 ≈ ¥1400) 的 1/3-1/4 |
| **对比** | - | - | - | Claude Code: $20-200/月 (约 ¥140-1400/月) |
> **重要说明**:
>
> - **刷新机制**:每 **5 小时** 作为一个周期刷新一次额度
> - 额度重置后自动恢复,无需手动操作
> - 额度用完后需等待下一周期,无法叠加累积
> - 系统不会消耗其他资源包或账户余额
> - Lite 额度约等于 Claude Pro 套餐用量的 **3 倍**
> - Max 额度约等于 Claude Max (5x) 套餐用量的 **3 倍**
>
> **额度用完后如何继续使用**:
>
> - **方案一**:等待下一个刷新周期(5小时后自动恢复,一天最多刷新4-5次)
> - **方案二**:使用 API KEY 直接消耗 token(按量计费,¥0.6-2.2/百万 tokens,无需等待)
> - **方案三**:切换/注册其他订阅账号(需遵守服务条款)
> - **方案四**:升级到更高版本套餐获得更高额度
> **成本优势**:
>
> - GLM-4.7 月费仅为 Claude Code 的 **3-29%**
> - GLM-4.7 Token 价格约为 Claude Opus 的 **12%**
> - **5小时刷新周期**比 Claude 的**7天刷新周期**更灵活
### 4.2 用户分级成本估算
#### AI 使用的必然趋势:从轻度到重度
一个重要的观察:**开发者对 AI 的使用量会随时间呈指数级增长**。
```
AI 使用量增长曲线
├── 第一阶段:轻度使用(1-2 个月)
│ ├── 简单代码补全
│ ├── 偶尔咨询问题
│ ├── 10-50 次/天
│ └── 月成本:¥40-100
├── 第二阶段:中度使用(3-6 个月)
│ ├── 日常开发依赖 AI
│ ├── 复杂任务交给 AI
│ ├── 50-200 次/天
│ └── 月成本:¥100-400
└── 第三阶段:重度使用(6 个月+)
├── AI 成为核心生产力
├── 所有开发任务都通过 AI
├── 200-1000+ 次/天
└── 月成本:¥400-2000+
```
#### 为什么使用量会持续增长?
1. **信任度提升**:从"试试看"到"离不开"
- 刚开始:怀疑 AI 能力,只敢用简单任务
- 逐渐:发现 AI 确实能提高效率
- 最后:将 AI 作为第一生产力工具
2. **能力边界拓展**:从"补全代码"到"自主开发"
- 刚开始:简单的代码补全、Bug 查询
- 逐渐:复杂功能开发、架构设计
- 最后:全需求自主完成、Code Review、重构
3. **依赖性增强**:从"辅助工具"到"核心依赖"
- 刚开始:偶尔使用,提高 10-20% 效率
- 逐渐:每天使用,提高 50-100% 效率
- 最后:无法想象没有 AI 的开发,提高 200-300% 效率
#### 真实数据:使用量增长的必然性
| 时间周期 | 日均使用次数 | 月使用次数 | 月度 Token 估算(GLM-4.7) | 月度成本(GLM-4.7) |
| ------------ | ------------ | ---------- | -------------------------- | ------------------- |
| **第 1 月** | 20 次 | 600 次 | 30 万 tokens | ¥40-100 |
| **第 3 月** | 80 次 | 2400 次 | 120 万 tokens | ¥100-300 |
| **第 6 月** | 200 次 | 6000 次 | 300 万 tokens | ¥300-600 |
| **第 12 月** | 500+ 次 | 15000+ 次 | 750 万+ tokens | ¥600-1500+ |
> **关键洞察**:
>
> - **使用量 10 倍增长是常态**(从轻度到重度)
> - **成本 10 倍增长不可避免**
> - **如果使用昂贵的模型(如 Claude),月成本可能从 ¥140 飙升到 ¥1400+**
> - **如果使用 GLM-4.7,月成本从 ¥40 增长到 ¥400,压力小得多**
#### 结论:选择高性价比模型的重要性
**因为使用量必然会大幅增长,所以选择高性价比模型至关重要**:
- **Claude Opus**:轻度 ¥140 → 重度 ¥1400+(压力巨大)
- **GLM-4.7**:轻度 ¥40 → 重度 ¥400(可控范围)
> **核心观点**:不要因为当前使用量小就选择昂贵的模型,因为 6 个月后你的使用量会增长 10 倍。**选择一个能让你"用得起、用得爽"的高性价比模型,才能支撑长期的 AI 辅助开发。**
---
根据 [GLM Coding Plan 官方定价](https://bigmodel.cn/glm-coding):
> **当前活动价(按季付费)**:
>
> - Lite:¥54/季(≈¥18/月)
> - Pro:¥270/季(≈¥90/月)
> - Max:¥540/季(≈¥180/月)
>
> **日常价(按月付费)**:
>
> - Lite:¥40/月
> - Pro:¥100/月
> - Max:¥400/月
| 用户级别 | 月度交互 | GLM-4.7 成本(/人/月) | Qoder 成本(/人/月) | 节省 |
| -------- | -------------- | ------------------------ | -------------------- | --------- |
| **轻度** | 10-50 次/天 | **¥40**(120次/5小时) | $20 (约 ¥140) | **71%** |
| **中度** | 50-200 次/天 | **¥100**(600次/5小时) | $20-60 (约 ¥140-420) | **0-76%** |
| **重度** | 200-1000 次/天 | **¥400**(2400次/5小时) | $60 (约 ¥420) | **5%** |
| **顶级** | 1000+ 次/天 | **¥400+**(可能多套餐) | $60+ (约 ¥420+) | **0-5%** |
> **结论**:GLM-4.7 在轻度用户场景下节省 71%,中度和重度用户成本接近或略低于 Qoder。
> **刷新机制优势**:
>
> - **GLM-4.7**:每 **5 小时** 刷新一次,一天最多可刷新 **4-5 次**
> - **Lite 版**:每天最多可获得约 **480-600 次** Prompts(120 × 4-5)
> - **Pro 版**:每天最多可获得约 **2400-3000 次** Prompts(600 × 4-5)
> - **Max 版**:每天最多可获得约 **9600-12000 次** Prompts(2400 × 4-5)
> **注意**:
>
> - **GLM-4.7**:按日常价计算,Lite ¥40/月,Pro ¥100/月,Max ¥400/月
> - **Qoder**:Pro $20/月(2000 点数)、Pro+ $60/月(6000 点数),超出点数需额外付费
> - GLM-4.7 世界排名第 6,代码能力更强
> - **5 小时刷新机制**意味着额度恢复更快,适合高频使用场景
### 4.3 真实重度用户案例
#### 案例 1:月预算 $1000(约 ¥7000)用户
**纯 Claude Opus 方案**:
- Claude Code Max 200 订阅费:$200/月(约 ¥1400/月)
- Claude Opus API:$800/月(约 ¥5600/月)
- 可用 tokens:约 2000 万 tokens/月
- **总计:$1000/月(约 ¥7000/月)**
**GLM-4.7 + Claude Code CLI 方案**:
- GLM-4.7 专业版订阅:¥200/月(约 $30/月)
- GLM-4.7 API:¥4800(约 $685)/月
- 可用 tokens:约 **14 亿 tokens/月**
- **总计:¥5000/月(约 $715/月)**
- **效果相同,成本节省 28.5%,tokens 可用量提升 70 倍**
> **成本对比**:
>
> - GLM-4.7 方案:¥5000/月(订阅费 ¥200 + API ¥4800)
> - Claude 方案:¥7000/月(订阅费 ¥1400 + API ¥5600)
> - **节省:¥2000/月(约 28.5%)**
#### 案例 2:月预算 $3000(约 ¥21000)顶级用户
**纯 Claude Opus 方案**:
- Claude Code Max 200 订阅费:$200/月(约 ¥1400/月)
- Claude Opus API:$2800/月(约 ¥19600/月)
- 可用 tokens:约 6000 万 tokens/月
- **总计:$3000/月(约 ¥21000/月)**
**GLM-4.7 + Claude Code CLI 方案**:
- GLM-4.7 专业版订阅:¥400/月(约 $60/月)
- GLM-4.7 API:¥19600(约 $2800)/月
- 可用 tokens:约 **42 亿 tokens/月**
- **总计:¥20000/月(约 $2860/月)**
- **效果相同,成本节省约 5%,tokens 用量提升 70 倍**
> **成本对比**:
>
> - GLM-4.7 方案:¥20000/月(订阅费 ¥400 + API ¥19600)
> - Claude 方案:¥21000/月(订阅费 ¥1400 + API ¥19600)
> - **节省:¥1000/月(约 5%)**
> - 同等预算下,GLM-4.7 可用 tokens 是 Claude 的 **7 倍**
---
## 五、为什么选择 CLI 而不是编辑器插件?
> **核心观点**:CLI(命令行界面)是 AI 辅助编程的未来方向,比编辑器插件更先进、更强大、更灵活。
### 5.1 CLI vs 编辑器插件对比
#### 为什么 CLI 更先进?
```
CLI vs 编辑器插件对比
├── CLI 优势
│ ├── 更强大的 Agent 架构
│ │ ├── 子代理机制(Task 工具)
│ │ ├── 并行处理能力
│ │ └── 复杂任务拆解
│ ├── 更完整的工具链
│ │ ├── Read/Write/Edit 文件操作
│ │ ├── Bash 命令执行
│ │ ├── Grep 搜索
│ │ ├── LSP 集成
│ │ └── Git 操作
│ ├── 项目级上下文
│ │ ├── CLAUDE.md 配置
│ │ ├── 全局代码理解
│ │ └── 跨文件协作
│ ├── 更高的灵活性
│ │ ├── 可配置使用任意模型
│ │ ├── 自定义工具和脚本
│ │ └── 不依赖特定 IDE
│ ├── 完整的插件生态系统 ⭐
│ │ ├── PR Review Toolkit(代码审查)
│ │ ├── Development Workflows(专业工作流)
│ │ ├── Document Skills(文档处理)
│ │ ├── Code Quality Tools(代码质量)
│ │ ├── Enterprise Plugins(150+命令)
│ │ └── 详见:claude-plugins.dev
│ └── 更好的可移植性
│ ├── 跨平台使用
│ ├── 远程服务器开发
│ └── CI/CD 集成
└── 编辑器插件局限
├── 受限于 IDE 界面
├── 工具链不完整
├── 缺乏复杂 Agent 能力
├── 没有插件生态
└── 难以跨工具使用
```
**核心观点**:
- **CLI 是工程化工具,编辑器插件是辅助工具**
- **CLI 可以处理复杂的、多步骤的任务**
- **CLI 不依赖特定 IDE,更灵活**
- **CLI 拥有完整的插件生态系统,可对接各种工程化规范** ⭐
- **CLI 代表 AI 辅助编程的未来方向**
### 5.2 Claude Code CLI 插件生态系统
Claude Code CLI 拥有一个强大的插件市场,支持对接各种 AI 工程化规范:
| 插件类型 | 功能描述 | 安装命令 |
| ------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **PR Review Toolkit** | 自动化代码审查(测试、错误处理、类型设计、代码质量、代码简化) | `npx claude-plugins install @anthropics/claude-code-plugins/pr-review-toolkit` |
| **Python Development** | Python 3.12+、Django、FastAPI、async patterns | `npx claude-plugins install @wshobson/claude-code-workflows/python-development` |
| **JavaScript/TypeScript** | ES6+、Node.js、React、现代 Web 框架 | `npx claude-plugins install @wshobson/claude-code-workflows/javascript-typescript` |
| **Backend Development** | API 设计、GraphQL 架构、TDD 后端开发 | `npx claude-plugins install @wshobson/claude-code-workflows/backend-development` |
| **Frontend Excellence** | React 19、Next.js 15、组件架构、状态管理 | `npx claude-plugins install @dotclaude/dotclaude-plugins/frontend-excellence` |
| **Document Skills** | Excel、Word、PowerPoint、PDF 文档处理 | `npx claude-plugins install @anthropics/anthropic-agent-skills/document-skills` |
| **Code Refactoring** | 代码清理、重构自动化、技术债务管理 | `npx claude-plugins install @wshobson/claude-code-workflows/code-refactoring` |
| **Claude Flow** | 150+ 命令、74+ 专业代理、GitHub 集成 | `npx claude-plugins install @ruvnet/claude-flow-marketplace/claude-flow` |
| **Developer Essentials** | Git、SQL、错误处理、代码审查、E2E 测试 | `npx claude-plugins install @wshobson/claude-code-workflows/developer-essentials` |
> **关键优势**:
>
> - **150+ 专业命令**:覆盖开发全流程
> - **74+ 专业代理**:针对不同技术栈和工作流
> - **一键安装**:`npx claude-plugins install `
> - **开源社区**:持续更新,社区维护
> - **详见**:[Claude Plugins Marketplace](https://claude-plugins.dev/)
### 5.3 Claude Code:AI 工程化规范的制定者
**重要观点**:Claude Code 不仅仅是一个工具,更是 **AI 工程化规范的制定者之一**。
#### Anthropic 的 AI 规范制定角色
**Anthropic(Claude 的开发商)是全球 AI 安全和工程化规范的核心制定者**:
1. **Responsible Scaling Policy (RSP)**
- Anthropic 制定了前沿 AI 模型的安全和部署标准
- 定义了技术安全和运营措施的最佳实践
- 详见:[Anthropic Responsible Scaling Policy](https://www.anthropic.com/responsible-scaling-policy)
2. **AI Safety Levels (ASL) 标准**
- 参照美国政府生物安全级别(BSL)框架
- 建立了分级的 AI 安全标准体系
- 2025 年 5 月激活了 ASL-3 保护措施
- 详见:[ASL-3 Protections](https://www.anthropic.com/news/activating-asl3-protections)
3. **Claude Code 官方最佳实践**
- Anthropic 发布了官方的 AI 编码最佳实践
- 定义了企业级 AI 编码的标准和流程
- 涵盖治理、安全、CI/CD 集成、代码审查等
- 详见:[Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
4. **合规框架**
- 为加州 SB-53 等 AI 法规制定合规框架
- 参与全球 AI 安全标准的制定
- 详见:[Compliance Framework SB-53](https://www.anthropic.com/news/compliance-framework-SB53)
#### 为什么这很重要?
| 维度 | 其他 AI 工具 | Claude Code CLI |
| ---------------- | -------------- | --------------------------- |
| **规范来源** | 遵循第三方规范 | **规范制定者本身** |
| **工程化标准** | 自定义或不完整 | **符合企业级标准** |
| **安全最佳实践** | 社区实践 | **官方制定的安全标准** |
| **企业采用** | 需要额外评估 | **直接采用行业标准** |
| **长期支持** | 取决于商业公司 | **AI 规范制定者的核心产品** |
> **核心结论**:
>
> - Claude Code 由 **AI 规范制定者**(Anthropic)开发和维护
> - 采用 Claude Code = 采用 **AI 工程化的行业标准**
> - 这不是选择一个工具,而是选择一个 **经过验证的工程化体系**
> - 对于企业来说,这意味着更低的风险、更高的合规性、更成熟的最佳实践
> **企业优势**:
>
> - Anthropic 与全球政府、企业合作制定 AI 标准
> - Claude Code 内置了这些标准和最佳实践
> - 使用 Claude Code = 自动符合行业领先的 AI 工程化规范
---
## 六、实施建议
### 6.1 推荐方案总览
```
┌─────────────────────────────────────────────────────────┐
│ AI 编程工具选型方案 │
├─────────────────────────────────────────────────────────┤
│ │
│ 核心模型:GLM-4.7(智谱最新旗舰,2025.12 发布) │
│ ├── 价格:Claude 的 1/7 - 1/12 │
│ ├── 能力:代码能力超越 GPT-5(宣称) │
│ ├── 世界排名第 6 │
│ └── 原则:用新不用旧 │
│ │
│ 工程化框架:Claude Code CLI + GLM-4.7 │
│ ├── 成熟 Agent 架构 │
│ ├── 低成本订阅(GLM-4.7 月费 ¥40-400) │
│ ├── 可配置使用 GLM-4.7 │
│ ├── 项目级上下文管理 │
│ ├── CLI 比编辑器插件更强大、更灵活 │
│ ├── 插件生态:150+ 命令、74+ 代理 │
│ └── AI 规范制定者:Anthropic 核心产品 │
│ │
│ 工具理念:CLI 为主力,IDE 为前沿探索 │
│ ├── CLI:工程化工具,适合复杂任务 │
│ ├── 插件系统:对接各种工程化规范 │
│ ├── 行业标准:符合企业级 AI 安全规范 │
│ ├── IDE:了解前沿技术,不建议作为主力 │
│ └── 灵活选择,以成本效率为先 │
│ │
└─────────────────────────────────────────────────────────┘
```
### 6.2 分阶段实施计划
#### 第一阶段:试点验证(1-2 周)
| 步骤 | 内容 | 目标 | 成本 |
| ---- | ----------------------------- | -------------- | ------------------------- |
| 1 | 注册智谱 AI,申请 GLM-4.7 API | 获得访问权限 | ¥0(赠送 2000 万 tokens) |
| 2 | 安装 Claude Code CLI | 验证工程化能力 | **¥0(免费安装)** |
| 3 | 订阅 GLM-4.7 基础版并配置 | 验证模型配置 | ¥40(测试订阅费) |
| 4 | 小范围试点(2-3 人) | 收集反馈 | ¥120-200 |
**阶段目标**:验证 GLM-4.7 + Claude Code CLI 组合的可行性
**成本优势**:月费仅 **¥40**,远低于 Claude Code Pro($20 ≈ ¥140)
#### 第二阶段:团队推广(1-2 个月)
| 步骤 | 内容 | 覆盖范围 | 成本 |
| ---- | -------------------------- | ---------- | ----------- |
| 1 | 内部分享会(CLI 使用技巧) | 全体开发者 | ¥0 |
| 2 | 推广 Claude Code CLI | 10-20 人 | ¥0(免费) |
| 3 | GLM-4.7 订阅配额 | 按需分配 | ¥400-800/月 |
| 4 | 建立 CLI 使用最佳实践 | 团队文档化 | ¥0 |
**阶段目标**:50%+ 开发者采用 CLI 方案
**成本优势**:GLM-4.7 订阅费仅为 Claude Code Teams 的 **3-29%**
#### 第三阶段:全面应用(持续)
| 步骤 | 内容 | 目标 |
| ---- | -------------------- | -------------- |
| 1 | 评估私有化部署 | 20+ 人团队考虑 |
| 2 | 建立 AI 工程最佳实践 | 团队内部文档化 |
| 3 | 持续优化成本 | 多工具混合策略 |
### 6.3 不同场景的推荐配置
#### 个人开发者
| 预算 | 配置方案 | 月度成本 |
| ----------------------- | ------------------------- | ----------------------- |
| ¥200 以内(约 $30) | GLM-4.7 基础版 + API 按需 | ¥60-150(约 $10-22) |
| ¥500-1000(约 $70-140) | GLM-4.7 基础版 + 大量 API | ¥200-500(约 $30-72) |
| ¥2000+(约 $280+) | GLM-4.7 专业版 + 海量 API | ¥500-1500(约 $72-215) |
**注意**:以上价格包含 GLM-4.7 订阅费(¥40-400)+ API 费用
#### 小团队(2-5 人)
| 预算 | 配置方案 | 月度成本 | 人均 |
| ---------------- | ----------------------------- | ---------------- | ------------------------- |
| ¥2000(约 $280) | GLM-4.7 基础版团队 + API | ¥2000(约 $280) | ¥400-1000(约 $55-140) |
| ¥5000(约 $700) | GLM-4.7 专业版团队 + 大量 API | ¥5000(约 $700) | ¥1000-2500(约 $140-350) |
**注意**:GLM-4.7 月费远低于 Claude Teams($40/人/月 ≈ ¥280/人/月)
#### 中型团队(5-20 人)
| 预算 | 配置方案 | 月度成本 | 人均 |
| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------- |
| ¥10000-20000(约 $1400-2800) | GLM-4.7 专业版团队 + 大量 API | ¥10000-20000(约 $1400-2800) | ¥500-4000(约 $70-560) |
**注意**:相比 Claude Code Teams($40/人/月 ≈ ¥280/人/月),**节省 ¥5600-11200/月($800-1600/月)订阅费**
#### 大型团队(20+ 人)
| 预算 | 配置方案 | 月度成本 | 说明 |
| -------------------------- | ------------------ | -------------------- | ---------- |
| ¥50000+/月(约 $7000+/月) | GLM-4.7 私有化部署 | ¥50000+(约 $7000+) | 考虑私有化 |
**注意**:如果使用 GLM-4.7,相比 Claude Code Teams 节省约 **$800/月(¥5600/月)**
---
## 七、成本效益分析
### 7.1 投资回报率(ROI)
假设团队有 10 名开发者,平均年薪 ¥30 万:
| 方案 | 月度成本 | 年度成本 | 效率提升 | 年度价值 | ROI |
| ------------------------- | ------------ | -------------- | -------- | -------- | -------------- |
| **GLM-4.7 + Claude Code** | ¥10400-14400 | ¥124800-172800 | 30% | ¥9000000 | **5200-7200%** |
| **Claude Code 原生** | ¥14280-15400 | ¥171360-184800 | 30% | ¥9000000 | 4870-5250% |
| **无 AI** | ¥0 | ¥0 | 0% | ¥0 | 0% |
> **结论**:GLM-4.7 方案的 ROI 与 Claude Code 相当,但成本降低 **27-43%**。
### 7.2 真实成本对比
#### 10 人团队,月预算 ¥10000(约 $1400)
**Claude Code 原生方案**:
- Claude Code Teams:$40 × 10 = $400 ≈ ¥2800(**必需订阅费**)
- Claude Opus API:$857 ≈ ¥6000
- 可用 tokens:约 350 万/月
- **总计:$1257/月(约 ¥8800/月)**
**GLM-4.7 + Claude Code CLI 方案**:
- Claude Code CLI:¥0(免费)
- GLM-4.7 专业版订阅:¥400
- GLM-4.7 API:¥9600
- 可用 tokens:约 **48 亿/月**
- **总计:¥10000/月(约 $1400/月)**
> **关键洞察**:相同预算 ¥10000(约 $1400)下:
>
> - GLM-4.7 可用 tokens 是 Claude Opus 的 **1370+ 倍**
> - GLM-4.7 月费仅为 Claude Teams 的 **14%**
> - 总成本节省约 **¥1240/月(约 $177/月)**
#### 20 人团队对比
| 方案 | 订阅费(月) | API 成本(月) | 总成本(年) |
| ---------------- | ------------ | -------------- | ---------------- |
| **Claude Teams** | $800 (¥5600) | ¥10000 | ¥187,200 |
| **GLM-4.7 方案** | ¥400-800 | ¥14400-19600 | ¥178,800-244,800 |
**同样年度预算下**:
- Claude Teams:$800 × 12 = $9600/年 订阅费(约 ¥67,200)
- GLM-4.7 方案:¥4800-9600/年 订阅费,仅为 Claude 的 **7-14%**
- 将更多预算用于 API,获得 **14-140 倍以上**的 tokens
---
## 八、风险与挑战
### 8.1 潜在风险
| 风险 | 影响 | 缓解措施 |
| ------------------ | ------------------ | ---------------------- |
| **GLM-4.7 稳定性** | 新模型可能有 bug | 试点验证,逐步推广 |
| **学习曲线** | 团队需要适应新工具 | 内部分享,文档沉淀 |
| **供应商锁定** | 过度依赖单一供应商 | 保持多工具能力 |
| **成本控制** | API 使用可能超预期 | 设置预算告警,定期审查 |
### 8.2 应对策略
1. **双模型策略**:保留 Claude 作为备选
2. **分阶段推广**:从小范围试点开始
3. **成本监控**:每月审查 API 使用情况
4. **持续评估**:关注新模型发布
---
## 九、总结与建议
### 9.1 核心建议
> **推荐采用 GLM-4.7 + Claude Code CLI 组合方案**
这是基于成本效益、工程化能力、插件生态系统和行业标准综合评估后的最优选择。
---
### 9.2 关键论点
1. **用新不用旧**:GLM-4.7 是 2025 年 12 月最新旗舰,技术领先
2. **成本优势明显**:月费仅为 Claude 的 3-29%,Token 成本为 12%
3. **工程化能力成熟**:Claude Code CLI 提供完整框架
4. **可配置性强**:Claude Code CLI 可直接使用 GLM-4.7
5. **CLI 更先进**:CLI 比编辑器插件更强大、更灵活、更工程化
6. **插件生态系统完善**:150+ 专业命令、74+ 专业代理,覆盖各种工程化规范
7. **AI 规范制定者**:Anthropic 是全球 AI 安全和工程化规范的核心制定者
8. **不依赖 IDE**:CLI 可在任何环境使用,包括远程服务器
---
### 9.3 预期收益
| 收益类型 | 预期值 | 说明 |
| -------------- | ---------- | ------------------------- |
| **月费节省** | 71-97% | GLM-4.7 订阅费仅 ¥40-400 |
| **总成本节省** | 27-43% | 含订阅费和 Token 成本 |
| **Token 提升** | 14-1400x | 相同预算下可用 Token 数量 |
| **能力提升** | 20-50% | 开发效率提升 |
| **ROI** | 5200-7200% | 投资回报率 |
> **核心优势总结**:
>
> - **GLM-4.7**:世界排名第 6,月费 ¥40-400,Token 价格为 Claude 的 12%
> - **Claude Code CLI**:免费工具,比编辑器插件更强大、更灵活
> - **插件生态**:150+ 命令、74+ 代理,覆盖各种工程化规范
> - **AI 规范制定者**:Anthropic 是全球 AI 安全和工程化规范的核心制定者
> - **组合效果**:**行业标准 + CLI 工程化能力 + 插件生态 + 高性价比模型**
---
### 9.4 企业级优势:选择 AI 规范制定者的工具
#### 为什么企业应该选择 Claude Code CLI?
对于企业来说,选择 AI 工具不仅是选择一个产品,更是选择一套**工程化体系和标准**。
| 对比维度 | 其他 AI 工具(Qoder/Cursor 等) | Claude Code CLI + GLM-4.7 |
| -------------- | ------------------------------- | ------------------------------- |
| **规范来源** | 遵循第三方规范或自定义规范 | **规范制定者本身**(Anthropic) |
| **安全标准** | 社区实践或商业公司标准 | **官方 AI 安全标准(ASL-3)** |
| **工程化规范** | 不完整或自定义 | **企业级最佳实践** |
| **合规性** | 需要额外评估和适配 | **符合全球 AI 法规框架** |
| **长期维护** | 取决于商业公司生存 | **AI 规范制定者的核心产品** |
| **风险控制** | 较高(工具风险 + 合规风险) | **低(行业标准 + 合规保障)** |
#### 企业级场景的实际价值
**1. 金融、医疗等高度监管行业**
- 需要符合严格的安全和合规要求
- Claude Code 基于 Anthropic 的 Responsible Scaling Policy
- 自动符合全球领先的 AI 安全标准
- **降低合规风险,提高审计通过率**
**2. 大型企业 IT 部门**
- 需要标准化的工程流程
- Claude Code 提供官方最佳实践
- 与 CI/CD、代码审查、安全审计无缝集成
- **统一标准,降低管理成本**
**3. 政府机构和公共部门**
- 需要透明、可审计的 AI 使用
- Anthropic 与政府合作制定 AI 标准
- 符合加州 SB-53 等法规框架
- **满足政策要求,提高公众信任**
**4. 国际化企业**
- 需要符合全球不同地区的 AI 法规
- Anthropic 参与全球 AI 安全标准制定
- 一套方案,全球适用
- **简化合规流程,降低法律风险**
#### 结论
> **核心观点**:选择 Claude Code CLI = 选择 **AI 工程化的行业标准**
>
> - 这不是一个工具选择,而是一个**战略选择**
> - 降低企业风险、提高合规性、获得长期保障
> - 对于企业级部署,这是**最优解**
---
### 9.5 工具选择的灵活性
> **重要原则:允许开发者选择最适合自己的 AI 工具**
虽然我们推荐 **GLM-4.7 + Claude Code CLI** 作为主力方案,但**强烈鼓励开发者接触和体验世界最先进的 AI 工具组合**:
#### 为什么要允许开发者自由选择?
1. **接触前沿技术**
- **Cursor + Claude Opus + GPT-5.2/Codex** 是目前世界上最先进的组合
- 通过使用最顶级的 AI 工程化能力,了解 AI 辅助编程的最新进展
- 体验最新的 AI 特性和交互模式
2. **反哺团队**
- 将前沿工具的使用经验和最佳实践带回团队
- 帮助团队判断哪些新特性值得在主力方案中采用
- 提供多维度的技术选型视角
3. **个人成长**
- 保持技术敏感度,走在 AI 前沿
- 培养对 AI 工具的判断力
- 避免"工具孤岛"思维
#### 推荐的前沿工具组合
| 工具组合 | 特点 | 适用场景 | 预算 |
| ---------------------------------- | ------------------------------ | ---------------- | ---------------- |
| **Cursor + Claude Opus + GPT-5.2** | 世界最强组合,Composer 4x 速度 | 追求极致效率 | $200/月 (≈¥1400) |
| **Cursor + GPT-5.2-Codex-Max** | OpenAI 最新代码模型 | 体验 OpenAI 生态 | $100-200/月 |
| **Claude Code + Claude Opus 4.5** | Anthropic 原生组合 | 深度体验 Claude | $20-200/月 |
> **核心观点**:
>
> - **主力方案**(GLM-4.7 + Claude Code CLI):追求**性价比和稳定性**
> - **前沿探索**(Cursor + Claude + Codex):追求**技术领先和经验积累**
> - **两者并不冲突**,而是**相辅相成**
#### 实施建议
1. **团队标准方案**:采用 **GLM-4.7 + Claude Code CLI** 作为主力工具
- 优先使用 CLI 进行日常开发
- 享受 CLI 的工程化能力和灵活性
- 降低团队成本,提高效率
2. **个人前沿探索**:鼓励开发者体验 Cursor、Qoder 等 IDE
- 了解 AI 工具的最新进展
- 但不建议作为主力工具(成本高、依赖 IDE)
- 将 IDE 的优秀特性反馈到 CLI 使用中
3. **知识分享**:定期内部分享会
- 分享 CLI 使用技巧和最佳实践
- 交流前沿 IDE 工具的体验
- 建立团队的 AI 工具使用规范
4. **技术雷达**:建立 AI 工具评估机制
- 持续关注新模型发布
- 评估 CLI 工具的新特性
- 保持技术敏感度
> **最终目标**:以 **CLI 为主力工具**,以 **IDE 为前沿探索**,既保证成本效率,又保持技术敏感度。
---
## 十、代码生成能力深度分析
### 10.1 AI 代码生成现状评估
#### 整体能力评估
| 能力维度 | 前端 | 后端 | 评分 |
| ------------ | -------------- | -------------- | -------- |
| **代码生成** | UI 还原度高 | 逻辑正确率高 | ⭐⭐⭐⭐ |
| **架构设计** | 组件化良好 | 分层合理 | ⭐⭐⭐ |
| **Bug 率** | 样式问题多 | 边界情况多 | ⭐⭐⭐ |
| **调试难度** | 视觉问题难定位 | 逻辑问题易定位 | ⭐⭐⭐ |
#### 前端代码生成
**优势**:
- ✅ UI 组件还原度高(80-90%)
- ✅ 响应式布局理解到位
- ✅ 组件化思想成熟
- ✅ TailwindCSS 等工具库使用准确
**常见问题**:
- ❌ 样式细节不够精细(间距、颜色、圆角等)
- ❌ 交互逻辑偶尔有 bug(事件处理、状态管理)
- ❌ 复杂动画效果实现不理想
- ❌ 浏览器兼容性考虑不足
- ❌ 性能优化意识较弱(重复渲染、不必要的计算)
**调试难度**:⭐⭐⭐⭐(视觉问题需要逐像素对比)
#### 后端代码生成
**优势**:
- ✅ CRUD 生成准确(90-95%)
- ✅ API 设计规范(RESTful)
- ✅ 数据库操作正确(SQL/ORM)
- ✅ 错误处理机制完善
- ✅ 代码结构清晰
**常见问题**:
- ❌ 复杂业务逻辑理解偏差
- ❌ 并发/安全问题(锁、事务)
- ❌ 性能优化不足(N+1 查询、缓存)
- ❌ 边界情况处理不完整
- ❌ 安全漏洞(SQL 注入、XSS)
- ❌ 日志和监控不足
**调试难度**:⭐⭐⭐(逻辑问题可通过日志快速定位)
### 10.2 跨域开发可能性分析
#### 前端开发者写后端
| 能力要求 | 现状 | 可行性 |
| -------------- | ------------ | -------- |
| **API 设计** | 理解概念 | ⭐⭐⭐⭐ |
| **数据库操作** | 需要学习 SQL | ⭐⭐⭐ |
| **业务逻辑** | 转换思维模式 | ⭐⭐⭐ |
| **部署运维** | 完全新领域 | ⭐⭐ |
**可行性评估**:
- 简单 CRUD:**85% 可行**(AI 辅助下)
- 中等复杂度:**60% 可行**
- 高复杂度:**30% 可行**
**学习曲线**:
- 基础后端概念(API、数据库):**1-2 周**
- 实战项目(简单 CRUD):**1 个月**
- 生产级应用:**3-6 个月**
#### 后端开发者写前端
| 能力要求 | 现状 | 可行性 |
| --------------------- | ------------ | -------- |
| **HTML/CSS** | 基础了解 | ⭐⭐⭐⭐ |
| **JavaScript/TS** | 需要深入 | ⭐⭐⭐ |
| **框架(React/Vue)** | 需要系统学习 | ⭐⭐⭐ |
| **UI/UX 设计** | 完全新领域 | ⭐⭐ |
**可行性评估**:
- 简单页面:**80% 可行**(AI 辅助下)
- 中等复杂度:**50% 可行**
- 高复杂度(动画、交互):**25% 可行**
**学习曲线**:
- 基础 HTML/CSS/JS:**2-3 周**
- 单页面应用框架:**1-2 个月**
- 生产级应用(状态管理、性能优化):**3-6 个月**
### 10.3 完成需求的成本预估
#### 个人开发者完成一个需求
| 需求类型 | 传统开发 | AI 辅助开发 | 效率提升 |
| -------------- | -------- | ----------- | ---------- |
| **简单页面** | 4-8 小时 | 1-2 小时 | **4-6x** |
| **CRUD 功能** | 1-2 天 | 2-4 小时 | **3-4x** |
| **中等复杂度** | 3-5 天 | 1-2 天 | **2-3x** |
| **高复杂度** | 1-2 周 | 3-7 天 | **1.5-2x** |
#### 团队开发成本对比
假设 10 人团队,月薪 ¥30,000:
| 开发模式 | 月度人力成本 | AI 工具成本 | 总成本 | 产出对比 |
| ------------ | ------------ | ----------- | -------- | -------- |
| **传统开发** | ¥300,000 | ¥0 | ¥300,000 | 1x |
| **AI 辅助** | ¥300,000 | ¥10,000 | ¥310,000 | **2-3x** |
> **结论**:AI 辅助下,**10% 的成本增加带来 200-300% 的产出提升**。
### 10.4 AI 生成代码的常见问题
#### 前端问题分布
| 问题类型 | 占比 | 调试难度 | 预防措施 |
| ------------ | ---- | ---------- | ------------------- |
| **样式细节** | 40% | ⭐⭐⭐ | 精确描述设计稿 |
| **交互逻辑** | 25% | ⭐⭐⭐⭐ | 明确状态流转 |
| **性能问题** | 20% | ⭐⭐⭐⭐⭐ | 代码审查 + 性能测试 |
| **兼容性** | 10% | ⭐⭐⭐⭐ | 指定浏览器支持 |
| **其他** | 5% | ⭐⭐ | - |
#### 后端问题分布
| 问题类型 | 占比 | 调试难度 | 预防措施 |
| ---------------- | ---- | ---------- | --------------- |
| **业务逻辑偏差** | 35% | ⭐⭐⭐ | 详细需求文档 |
| **边界情况** | 25% | ⭐⭐⭐⭐ | 完整测试用例 |
| **性能问题** | 20% | ⭐⭐⭐⭐⭐ | 性能测试 + 优化 |
| **安全问题** | 15% | ⭐⭐⭐⭐⭐ | 安全审查 |
| **其他** | 5% | ⭐⭐ | - |
### 10.5 调试 AI 生成代码所需能力
#### 前端调试能力图谱
```
前端调试能力
├── 基础能力
│ ├── 浏览器 DevTools 使用
│ ├── Console 日志调试
│ ├── 断点调试
│ └── 网络请求分析
├── 样式调试
│ ├── CSS 选择器优先级
│ ├── Flexbox/Grid 布局
│ ├── 响应式断点
│ └── 浏览器兼容性
├── 交互调试
│ ├── 事件处理机制
│ ├── 状态管理(Redux/Vuex/Pinia)
│ ├── 异步操作(Promise/async-await)
│ └── 生命周期钩子
└── 性能调试
├── React DevTools / Vue DevTools
├── 性能分析(Performance)
├── 内存泄漏检测
└── 渲染优化
```
#### 后端调试能力图谱
```
后端调试能力
├── 基础能力
│ ├── 日志系统使用
│ ├── 断点调试
│ ├── 单元测试
│ └── 集成测试
├── 逻辑调试
│ ├── 业务流程追踪
│ ├── 数据流转分析
│ ├── 错误堆栈分析
│ └── 边界情况测试
├── 性能调试
│ ├── 慢查询分析
│ ├── 接口性能测试
│ ├── 内存/CPU 分析
│ └── 缓存命中率
└── 安全调试
├── SQL 注入检测
├── XSS/CSRF 防护
├── 权限验证
└── 数据加密
```
### 10.6 前后端互相调试的缺失能力
#### 前端开发调试后端缺失能力
| 缺失能力 | 重要程度 | 学习周期 | 影响范围 |
| ---------------- | ---------- | -------- | -------- |
| **API 设计规范** | ⭐⭐⭐⭐⭐ | 1 周 | 接口对接 |
| **数据库基础** | ⭐⭐⭐⭐⭐ | 2 周 | 数据理解 |
| **服务器部署** | ⭐⭐⭐ | 1 个月 | 环境搭建 |
| **日志分析** | ⭐⭐⭐⭐ | 2 周 | 问题定位 |
| **性能优化** | ⭐⭐⭐ | 1 个月 | 系统优化 |
| **安全意识** | ⭐⭐⭐⭐ | 持续 | 系统安全 |
**学习优先级**:
1. API 设计 + 数据库基础(**必须**,2-3 周)
2. 日志分析(**重要**,2 周)
3. 服务器部署(**建议**,1 个月)
4. 性能优化 + 安全(**持续**)
#### 后端开发调试前端缺失能力
| 缺失能力 | 重要程度 | 学习周期 | 影响范围 |
| --------------------- | ---------- | -------- | -------- |
| **CSS/Flexbox** | ⭐⭐⭐⭐⭐ | 2 周 | 页面布局 |
| **JavaScript 深入** | ⭐⭐⭐⭐⭐ | 1 个月 | 交互逻辑 |
| **框架(React/Vue)** | ⭐⭐⭐⭐⭐ | 1-2 个月 | 组件开发 |
| **浏览器 DevTools** | ⭐⭐⭐⭐ | 1 周 | 问题定位 |
| **UI/UX 基础** | ⭐⭐⭐ | 持续 | 用户体验 |
| **前端性能优化** | ⭐⭐⭐ | 1 个月 | 体验优化 |
**学习优先级**:
1. CSS/Flexbox + 浏览器 DevTools(**必须**,2-3 周)
2. JavaScript 深入 + 框架(**必须**,2-3 个月)
3. UI/UX + 性能优化(**建议**,持续)
### 10.7 AI 辅助下的学习路径
#### 路径一:前端开发者 → 全栈(AI 辅助)
**学习周期**:3-6 个月
| 阶段 | 时间 | 内容 | AI 辅助效果 |
| ------------ | ------- | --------------------------------------------- | ----------- |
| **第一阶段** | 2-4 周 | 后端基础(Node.js/Express、API 设计、数据库) | ⭐⭐⭐⭐⭐ |
| **第二阶段** | 4-8 周 | 实战项目(CRUD、认证、文件上传) | ⭐⭐⭐⭐ |
| **第三阶段** | 4-12 周 | 生产级应用(部署、监控、性能优化) | ⭐⭐⭐ |
**预期效果**:
- 3 个月后:能独立完成 80% 的全栈需求
- 6 个月后:能独立完成 95% 的全栈需求
#### 路径二:后端开发者 → 全栈(AI 辅助)
**学习周期**:4-8 个月
| 阶段 | 时间 | 内容 | AI 辅助效果 |
| ------------ | ------- | -------------------------------- | ----------- |
| **第一阶段** | 3-4 周 | 前端基础(HTML/CSS、JavaScript) | ⭐⭐⭐⭐ |
| **第二阶段** | 8-12 周 | 框架深入(React/Vue、状态管理) | ⭐⭐⭐ |
| **第三阶段** | 8-16 周 | 生产级应用(性能优化、部署) | ⭐⭐⭐ |
**预期效果**:
- 4 个月后:能独立完成 70% 的前端需求
- 8 个月后:能独立完成 90% 的前端需求
#### 路径三:零基础 → AI 辅助开发(GLM-4.7)
**学习周期**:6-12 个月
| 阶段 | 时间 | 内容 | AI 辅助效果 |
| ------------ | ------- | -------------------------------- | ----------- |
| **第一阶段** | 4-8 周 | 编程基础(语法、数据结构、算法) | ⭐⭐⭐ |
| **第二阶段** | 8-12 周 | 前端或后端专项 | ⭐⭐⭐⭐ |
| **第三阶段** | 8-16 周 | 框架 + 工程化 | ⭐⭐⭐⭐ |
| **第四阶段** | 8-24 周 | 实战项目 + 调试能力 | ⭐⭐⭐ |
**预期效果**:
- 6 个月后:能独立完成简单需求
- 12 个月后:能独立完成中等复杂度需求
### 10.8 掌握 AI 辅助开发的关键能力
#### 核心能力清单
| 能力 | 重要程度 | 学习周期 | AI 辅助效果 |
| ---------------------- | ---------- | --------- | ----------- |
| **Prompt Engineering** | ⭐⭐⭐⭐⭐ | 1-2 周 | - |
| **需求理解与拆解** | ⭐⭐⭐⭐⭐ | 持续 | ⭐⭐⭐ |
| **代码阅读能力** | ⭐⭐⭐⭐⭐ | 2-3 个月 | ⭐⭐ |
| **调试能力** | ⭐⭐⭐⭐⭐ | 3-6 个月 | ⭐⭐⭐ |
| **架构设计** | ⭐⭐⭐⭐ | 6-12 个月 | ⭐⭐⭐⭐ |
| **测试能力** | ⭐⭐⭐⭐ | 1-2 个月 | ⭐⭐⭐⭐ |
#### 学习建议
1. **先掌握 Prompt Engineering**(1-2 周)
- 学习如何清晰描述需求
- 学习如何分步骤拆解任务
- 学习如何提供上下文
2. **提升代码阅读能力**(2-3 个月)
- 阅读开源项目代码
- 理解常见设计模式
- 熟悉框架最佳实践
3. **重点培养调试能力**(3-6 个月)
- 前端:精通浏览器 DevTools
- 后端:掌握日志系统和测试
- 通用的:问题定位思路
4. **架构设计能力**(6-12 个月)
- 学习系统设计
- 理解设计模式
- 关注性能和安全
### 10.9 成功掌握 AI 辅助开发的估算
#### 不同基础的学习周期
| 当前基础 | 达成目标 | 学习周期 | 每周投入 | 成功概率 |
| ------------------------ | ------------------- | --------- | ---------- | -------- |
| **有编程基础(1-2 年)** | AI 辅助完成中等需求 | 1-2 个月 | 10-15 小时 | 95% |
| **有编程基础(3-5 年)** | AI 辅助完成复杂需求 | 2-4 周 | 10-15 小时 | 98% |
| **零基础** | AI 辅助完成简单需求 | 4-6 个月 | 15-20 小时 | 70% |
| **零基础** | AI 辅助完成中等需求 | 8-12 个月 | 20-25 小时 | 60% |
#### 知识量估算
**前端方向**:
- HTML/CSS:约 50 个核心概念
- JavaScript:约 100 个核心概念
- 框架(React/Vue):约 80 个核心概念
- 工程化:约 40 个核心概念
- **总计:约 270 个核心概念**
**后端方向**:
- 语言基础:约 80 个核心概念
- 框架:约 60 个核心概念
- 数据库:约 50 个核心概念
- 部署运维:约 40 个核心概念
- **总计:约 230 个核心概念**
**学习速度**:
- 有编程基础:每周掌握 15-20 个概念
- 零基础:每周掌握 8-12 个概念
### 10.10 关键结论
1. **前端生成代码问题更多在视觉层面**,调试难度更高
2. **后端生成代码问题更多在逻辑和安全层面**,影响更严重
3. **前端写后端可行性高于后端写前端**(85% vs 80% 简单场景)
4. **AI 辅助下,有编程基础者 1-2 个月即可掌握 AI 辅助开发**
5. **零基础需要 6-12 个月才能熟练使用 AI 辅助开发**
6. **调试能力是区分能否独立完成需求的关键**
---
## 十一、参考来源
### 官方网站
- [Claude Code Plugins - Plugin Marketplace](https://claude-plugins.dev/)
- [Anthropic Responsible Scaling Policy](https://www.anthropic.com/responsible-scaling-policy)
- [Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
- [ASL-3 Protections](https://www.anthropic.com/news/activating-asl3-protections)
- [Compliance Framework SB-53](https://www.anthropic.com/news/compliance-framework-SB53)
- [Qoder 官网](https://www.qoder.com/)
- [Qoder 定价](https://qoder.com/pricing)
- [Qoder 文档](https://docs.qoder.com/)
- [Qoder CLI 快速上手](https://docs.qoder.com/zh/cli/quick-start)
- [智谱 AI 开放平台](https://bigmodel.cn/)
- [GLM-4.7 文档](https://docs.bigmodel.cn/cn/guide/models/text/glm-4.7)
- [GLM Coding Plan 定价](https://bigmodel.cn/glm-coding)
- [智谱 AI 定价页面](https://bigmodel.cn/pricing)
- [Cursor 官网](https://cursor.sh/)
- [Claude Code](https://claude.ai/code)
### 模型发布信息
- [GLM-4.7 发布 - 新浪财经](https://finance.sina.com.cn/tob/2025-12-23/doc-inhctxhu0912725.shtml)
- [GLM-4.7 开源 - 开源中国](https://www.oschina.net/news/391481/glm-4-7)
- [GLM-4.6 文档 - 智谱AI](https://docs.bigmodel.cn/cn/guide/models/text/glm-4.6)
- [Claude Opus 4.5 发布 - Anthropic](https://www.anthropic.com/news/claude-opus-4-5)
- [GPT-5.2 发布 - OpenAI](https://openai.com/index/introducing-gpt-5-2-codex/)
- [GPT-5.1-Codex-Max - OpenAI](https://openai.com/index/gpt-5-1-codex-max/)
### 价格与成本分析
- [Qoder 降价信息 - CSDN](https://blog.csdn.net/IRpickstars/article/details/154772522)
- [Qoder 首月 $2 - 阿里云开发者社区](https://developer.aliyun.com/article/1688536)
- [Claude Code 付费完全指南](https://www.cursor-ide.com/blog/claude-code-pricing)
- [Cursor vs Codex vs Claude Code](https://www.cursor-ide.com/blog/cursor-vs-codex-vs-claude-code)
- [2025 AI 工具月度成本分析 - 知乎](https://www.zhihu.com/question/15137704620)
### 重度用户真实案例
- [员工每天花 $1000 用 Claude Code - 腾讯新闻](https://news.qq.com/rain/a/20250614A04FSW00)
- [月烧 35 万元 token,官方连夜限速 - InfoQ](https://www.infoq.cn/article/07mywmhiocsah2m9eqot)
- [用户集体大逃亡!Cursor 自杀式策略 - InfoQ](https://www.infoq.cn/article/06ov3meaqskngp6gm9od)
- [70+ 万一年的 AI 账单 - 网易](https://www.163.com/dy/article/K6UN60JI0511FQO9.html)
- [顶级用户 AI 账单 $10 万/年 - 知乎](https://zhuanlan.zhihu.com/p/1938666160594878863)
- [Cursor 再次调价,包月模式搞不下去了](https://hub.baai.ac.cn/view/49065)
- [12 小时高强度 Claude Code 使用体验 - OneV's Blog](https://onevcat.com/2025/08/claude-code/)
### 产品对比与评测
- [2025 年 AI 编程工具深度对比](https://aicoding.csdn.net/686e3291080e555a88ce5407.html)
- [AI 辅助编程工具深度评测 - 51CTO](https://www.51cto.com/article/817056.html)
- [2025 主流 AI 开发工具对比 - Lewin's Blog](https://lewinblog.com/blog/page/2025/250306-AI-IDEs.md)
- [Claude Code vs Cursor 性价比对比](https://poloapi.com/poloapi-blog/Claude%20is%20the%20king%20of%20cost-effectiveness)
### Qoder CLI 相关
- [Qoder CLI 入门指南 - 知乎](https://zhuanlan.zhihu.com/p/1962499950236632743)
- [阿里发布 Qoder CLI - InfoQ](https://www.infoq.cn/article/t3kbl5pus6watht1huya)
- [使用 Qoder 2 个月经验总结](https://www.cnkirito.moe/qoder-use-guide/)
- [Qoder CLI 社区版部署文档 - 阿里云](https://help.aliyun.com/zh/compute-nest/use-cases/qoder-cli-community-edition-service-instance-deployment-document)
- [Qoder 全栈开发实战指南 - 阿里云开发者社区](https://developer.aliyun.com/article/1687659)
### Qoder 官方文档
- [Qoder 官方文档](https://docs.qoder.com/)
- [Qoder 模型分级选择器](https://docs.qoder.com/zh/user-guide/chat/model-tier-selector)
- [Qoder CLI 使用指南](https://docs.qoder.com/zh/cli/using-cli)
- [Qoder 官网](https://www.qoder.com/)
- [Qoder Repo Wiki 文档](https://docs.qoder.com/zh/user-guide/repo-wiki)
- [Qoder 定价](https://qoder.com/pricing)
### 产品对比与评测
- [阿里Qoder vs Trae vs Cursor:谁才是2025年程序猿的效率之王? - 知乎](https://zhuanlan.zhihu.com/p/1942632539849200345)
- [Qoder:阿里巴巴推出的AI IDE,全方位了解其能力与未来 - Jimmy Song](https://jimmysong.io/zh/blog/qoder-alibaba-ai-ide-personal-review/)
- [Introducing Cursor 2.0 and Composer - Cursor Blog](https://cursor.com/blog/2-0)
- [Composer: Building a fast frontier model with RL - Cursor Blog](https://cursor.com/blog/composer)
- [阿里Qoder 体验超预期,Repo Wiki 功能迎来全新升级 - InfoQ](https://xie.infoq.cn/article/5e17452ab233d55a2403323ec)
- [从"代码补全"到"知识对齐":Qoder Repo Wiki 迎来重磅升级 - 阿里云开发者社区](https://developer.aliyun.com/article/1682576)
### 其他
- [无限量供应 Claude,AI IDE 的百亿补贴 - PingWest](https://www.pingwest.com/a/306855)
- [相信大模型成本会下降,是业内最大幻觉 - 知乎](https://zhuanlan.zhihu.com/p/1941285603967742207)
- [Token 成本下降,订阅费却飞涨 - 新浪财经](https://finance.sina.cn/2025-08-06/detail-infizhrw8528637.d.html)
---
**文档更新时间:2025 年 12 月**
**注意**:
1. 价格信息可能随时变动,请以官方公布为准
2. AI 工具的定价策略正在快速变化,建议定期查看官方最新定价
3. 重度用户成本基于真实案例,实际情况可能因使用模式而异
---
## 简介
## 总览
由于小程序运行时,本身有自己的一套 **独特的** 技术规范标准。这导致你无法使用 `web` 开发中的很多的特性,
你也无法 **直接** 使用像 [`tailwindcss`](https://www.tailwindcss.com/) 这种原子化 `css` 生成器来提升你的开发效率。
而 `weapp-tailwindcss` 就能让你,在小程序开发中使用 `tailwindcss` **大部分** 特性。
它支持目前上所有使用 `webpack` 和 `vite` 的主流多端小程序框架和使用 `webpack` / `gulp` 的原生小程序打包方式。
你可以很容易在各个框架,或原生开发中集成 `tailwindcss`。
现在,就让我们开始使用吧!
:::info
从本质上讲,它是一个字符串转义器。它负责把 `tailwindcss` 中,所采集的类名,以及生成的结果,转化成小程序中可以接受的方式。
:::
## 环境要求
- `weapp-tailwindcss@5.2.0` 起要求 Node.js `>=22.12.0`。Node.js 22 从该版本开始默认支持从 CommonJS 加载 ESM。
- 使用 HBuilderX 的 `uni-app` / `uni-app x` 项目要求 HBuilderX `>=5.11`。
## Why `weapp-tailwindcss`?
- ✅ 自动处理所有文件:以微信小程序为例,不但可以处理和转义 `wxml` / `wxss`,还能处理 `js` 和 `wxs` 产物
- ✅ 支持最原生的小程序开发,也支持许多框架如 `taro`、`uni-app`、`mpx` 等等..
- ✅ 提供多种使用方式,方便项目集成:包括 `webpack` / `vite` / `gulp` 插件和直接的 `nodejs api`
- ✅ 生态好,解决方案丰富,提供大量现成模板,可以利用许多 `tailwindcss` 现有的生态来构建小程序。
- ✅ 高效的解析和缓存机制,热更新响应时间快
- ✅ 贴合 `tailwindcss` 的设计思路,智能提示友好
## 快速开始 :rocket:
### 👉 [安装依赖](/docs/quick-start/install)
当前文档默认使用 `tailwindcss@4` 与 `weapp-tailwindcss` 当前版本。
### 👉 [各框架模板](/docs/community/templates)
如果你想直接对照可运行项目,可以优先查看模板项目。
### 👉 [Tailwind CSS 4 默认模式参考](/docs/tailwindcss/v4-reference)
这里有 CSS-first、`@source`、`@apply`、`@layer` 和 IntelliSense 的补充说明。
## 演示视频
## 另外特别感谢 [舜岳同学](https://space.bilibili.com/475498258) 为 `weapp-tailwindcss` 制作的视频
---
## 小程序多主题方案
## 自由的 web 方案
对于 `web` 来说,多主题色的需求是非常常见的,比如 `暗黑模式` 就是一个极其常见的需求,
`web` 上的解决方案无非就是,通过动态切换 `css` 变量的值达成效果,或者通过 `.dark / [data-theme]` 选择器,包裹暗黑模式下页面和组件的样式,通过增加选择器的优先级,来覆盖默认的样式等等...
那么小程序的方案应该怎么去实现呢?
答案就是有 [page-meta 页面属性配置节点](https://developers.weixin.qq.com/miniprogram/dev/component/page-meta.html) 的情况下,优先使用它的 `page-style` 属性,进行 `css` 变量的切换
没有 `page-meta` 页面属性配置节点的情况下,我们只能通过配置单个 `view` 组件的样式变量,来进行主题色的切换
## 方案的设计和实现
切换多主题主要依赖 `css` 变量切换,所以我们只要依照这个设计去实现即可
### 1. 页面属性配置节点 page-meta
利用 `page-meta` 页面属性配置节点的 `page-style` 属性,来进行 `css` 变量的切换
另外我们也可以通过 `page-meta` 组件的,来切换一些原生的样式
[page-meta 页面属性配置节点](https://developers.weixin.qq.com/miniprogram/dev/component/page-meta.html)
### 2. 自己实现 css 变量切换组件
首先既然我们无法利用**根**节点的变量切换来达成效果,但是我们可以通过组件的特性,即数据的响应式和插槽来达成效果。
我们可以设计一个 `ConfigProvider` 组件,它拥有一个`dom`节点,内部是一个插槽
其中那个`dom`节点就是我们主题相关变量寄居在的节点,而这个组件往往会作为一个根组件,在每个页面中被使用,去包裹我们真正的业务页面
甚至我们可以再设计一个 `BaseLayout` 这样的组件,去包含每个页面公共的部分,再在其中去引用 `ConfigProvider`,然后做一层插槽的透传即可。
#### 实现
> 这里我以 `vue` 的语法作为示例,因为我个人认为它比 `react` 和 `原生` 更容易让新手看懂
`ConfigProvider`的实现:
```html
```
其中,`mode` 这个 `prop` 用来模拟实现了 `` 的效果,而 `vars` 则用来模拟实现 `js api` 设置 `css` 变量的效果。
通过这 `2` 个 `props`,你既可以通过 `mode` 的切换,把多个主题以及对应的变量值全部给写在你自己的 `css`中,然后通过切换`mode`,触发样式的覆盖来切换主题,这种是为静态的切换。
又可以通过设置 `vars`的值去动态的覆盖和切换,比如从服务端获取`css`变量的值,然后`set`进组件中,这显然是非常灵活的,这种是为动态的切换。
现在有了这个组件,我们就可以用它去包裹每一个页面了。
然后下一步,自然是要我们的页面和组件,都去应用那些我们设计的 `css` 变量了。
这一块可以参考下方链接中的`动态调整系统主题色(4)`中的`CssVar`方案,里面也有和 `tailwindcss` 相结合的部分,也欢迎阅读`动态调整web系统主题` 系列文章,并与在下进行探讨。
## 动态调整主题参考链接
1. [动态调整web系统主题? 看这一篇就够了](https://icebreaker.top/articles/2021/12/18-flexible-theme)
2. [动态调整web主题(2) 萃取篇](https://icebreaker.top/articles/2022/1/15-custom-theme-2)
3. [动态调整web主题(3): 基于tailwindcss插件的主题色生成方案](https://icebreaker.top/articles/2022/9/26-custom-theme-3)
4. [动态调整系统主题色(4): CssVar 与 Variant 方案的探索](https://icebreaker.top/articles/2023/10/5-custom-theme-4)
## 参考示例
微信上搜索 `tailwind`(未交 `30` 元个人资质费用,已无法搜索),进入小程序即可,小程序码:

实现源代码详见: [weapp-tailwindcss/tailwindcss-weapp](https://github.com/sonofmagic/weapp-tailwindcss/tree/main/tailwindcss-weapp)
---
## 构建以及引入外部组件
## 前言
我们在日常的开发中,经常会去使用和封装各种各样的组件库。有些是开源的,第三方开发的UI库,有些是我们开发人员给自己的特定的业务封装的UI库。其中很多情况其实是以流行的 `开源UI库(或者fork的改版)` + `自己封装的业务组件为主的`
`开源UI库` 它们的样式相对来说是独立于整套系统的,比如它们的样式都是 `ant-`,`el-` 开头的,一般引入之后不会和原先系统里的样式产生冲突。而 `自己封装的业务组件`,由于往往和系统高度绑定也没有这样的问题。
那么如何用 `tailwindcss` 来构建/发布和引入自己封装的业务组件呢?
## 构建组件
### 核心思想
首先我必须重点把本篇文章的核心思想预先抛出:
`tailwindcss` 只是一个`css`生成器,它只是帮你按照一定的规则,从你的源代码中匹配字符串去生成`css`。所以在用它去构建组件的时候,一定要去思考你用 `tailwindcss` 生成的 `css` 的影响范围,因为大部分用 `tailwindcss` 都是默认全局应用的。但是你在组件里面的自定义样式很多情况下,是没有必要的。
根据这个核心思想,我们就可以知道在封装组件时可行和不可行的方式了,大致如下:
### 可行方案
1. `custom css selector` + `Functions & Directives`
2. `add prefix` (添加前缀)
3. `add scoped` (像 `vue` 的 `scoped` 一样添加 data-v-[hash] 类似的自定义属性,然后去修改css选择器)
4. 不打包方案 (不构建产物,直接发布,然后在项目里安装,再提取 `node_modules` 里制定的文本重新生成。)
### 不可行方案
1. module css 这会去修改 css 选择器。
## 可行方案详解
这里我写了2个`demo`分别是 `react` 和 `vue`,其中下方代码以 `vue` 为示例,`react`示例见下方的 `构建demo链接`
### custom css selector + Functions & Directives
这种方案其实非常的传统,仅仅使用到了 `tailwindcss` 中 `@apply` 和 `theme` 等等指令的功能。
比如我们有个组件 `ApplyButton.vue`,它的模板,样式和独立的 `tailwind.config.js` 分别如下所示:
```html
```
```css
@config 'tailwind.config.js';
@tailwind utilities;
.apply-button {
@apply text-white p-4 rounded;
background-color: theme("colors.sky.600")
}
```
```js
const path = require('node:path')
/** @type {import('tailwindcss').Config} */
export default {
content: [path.resolve(__dirname, './index.vue')],
// ...
}
```
然后在打包的时候,以这个文件或者导出文件(`index.ts`) 为打包入口即可。
这样它的产物css中,选择器由于是你自己定义的,就能尽可能保证它是独一无二的。
它对应的`css`产物为:
```css
.apply-button {
border-radius: 0.25rem;
--tw-bg-opacity: 1;
background-color: rgb(2 132 199 / var(--tw-bg-opacity));
padding: 1rem;
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
```
### add prefix
这个也很好理解,前缀嘛,各个UI库都是这样搞的,我们就可以创建出以下的代码:
```html
```
```js
const path = require('node:path')
/** @type {import('tailwindcss').Config} */
export default {
prefix: 'ice-',
content: [path.resolve(__dirname, './index.vue')],
}
```
它对应的`css`产物为:
```css
.ice-rounded {
border-radius: 0.25rem;
}
.ice-bg-sky-600 {
--tw-bg-opacity: 1;
background-color: rgb(2 132 199 / var(--tw-bg-opacity));
}
.ice-p-4 {
padding: 1rem;
}
.ice-text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
```
### add scoped
这个就是通过同时添加html标签属性和修改css选择器来做的了:
```html
```
这里仅仅给 `style` 加了一个 `scoped` 属性
```js
const path = require('node:path')
/** @type {import('tailwindcss').Config} */
export default {
content: [path.resolve(__dirname, './index.vue')],
}
```
`css` 生成结果为:
```css
.rounded[data-v-10205a53] {
border-radius: 0.25rem;
}
.bg-sky-600[data-v-10205a53] {
--tw-bg-opacity: 1;
background-color: rgb(2 132 199 / var(--tw-bg-opacity));
}
.p-4[data-v-10205a53] {
padding: 1rem;
}
.text-white[data-v-10205a53] {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
```
### 不打包
以上三种方式总结一下,都是通过在选择器上下功夫来制作组件库的,而且它们都有一个打包的过程,即 `src`->`dist` 然后发布 `dist`
可是这第四种方案就不怎么一样了: 核心就是 `不打包`
即我们写好组件之后,直接把 `npm`的入口文件,指向 `src` ,然后直接把里面的组件发布(比如直接发布 `vue`组件)
这种情况下,你需要让你在 `node_modules` 里的组件再次经受一遍 `js` 的处理,比如 `vue sfc compiler`,`babel`,`swc`等等。
同时你也需要配置你项目里的 `tailwind.config.js` 去提取你 `node_modules` 里的组件源代码内容:
```diff
module.exports = {
content: [
'./index.html',
'./src/**/*.{html,js,ts,jsx,tsx,vue}',
+ './node_modules/mypkg/src/components/**/*.{html,js,ts,jsx,tsx,vue}'
]
}
```
这样才能重新提取生成 `css` 在项目主`css chunk`里。
## 构建demo链接
## 相关 issues
---
## CSS 单位转化
最常见的情况是 `rem` 转 `rpx`,直接在 `WeappTailwindcss` 的 `cssOptions` 里开启 `rem2rpx`:
```js
WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
})
```
`true` 表示 `1rem = 32rpx`。这页只讲另外两种情况:`px` 转 `rpx`,以及多单位转 `px`。
## px 转 rpx
从 `weapp-tailwindcss@4.3.0` 开始,插件内置了 [`postcss-pxtransform`](https://www.npmjs.com/package/postcss-pxtransform)。需要 `px` 转 `rpx` 时,在 `cssOptions` 中开启 `px2rpx`:
```js
// vite
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
WeappTailwindcss({
cssOptions: {
px2rpx: true,
},
})
```
```js
// webpack
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
new WeappTailwindcss({
cssOptions: {
px2rpx: true,
},
})
```
`true` 会按 `1:1` 转换,比如 `10px` 输出成 `10rpx`。
如果你的设计稿是 375 宽,希望 `10px` 输出为 `20rpx`,传对象:
```js
WeappTailwindcss({
cssOptions: {
px2rpx: {
designWidth: 375,
deviceRatio: {
375: 2,
},
},
},
})
```
更多参数看 [`postcss-pxtransform`](https://www.npmjs.com/package/postcss-pxtransform)。不要为了单位转换再把 Tailwind CSS 官方 PostCSS 插件注册进来,小程序样式生成仍然由 `weapp-tailwindcss` 接管。
## 多单位转 px
`uni-app x` 等场景更适合输出 `px`。这时可以启用 `cssOptions.unitsToPx`,把 `rem`、`em`、`vw`、`vh`、`vmin`、`vmax`、`rpx` 等单位转成 `px`。
```js
// vite
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
WeappTailwindcss({
cssOptions: {
unitsToPx: true,
},
})
```
默认换算里:
- `1rem` 输出为 `16px`
- `2rpx` 输出为 `1px`
需要自定义时传对象:
```js
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
new WeappTailwindcss({
cssOptions: {
unitsToPx: {
unitPrecision: 2,
unitMap: {
rem: 16,
rpx: 0.5,
vw: 3.75,
},
},
},
})
```
如果最终想输出 `px`,不要同时开启 `cssOptions.px2rpx` 或 `cssOptions.rem2rpx`。`cssOptions.unitsToPx` 会先转成 `px`,后续还会继续被转成 `rpx`。
---
## Node.js API
`weapp-tailwindcss/core` 提供不依赖 Vite、Webpack 或 Gulp 生命周期的文本转换 API。它适合自研构建器、批处理脚本、构建平台适配器,以及需要直接管理内存产物的工具。
:::caution 高阶入口
普通 `uni-app`、Taro、Mpx、weapp-vite 或原生小程序项目,应优先使用对应的 Vite、Webpack 或 Gulp 插件。构建器插件已经负责 CSS 入口、模块图、watch/HMR、缓存和产物写回;Core API 会把这些职责交给调用方。
当前包要求 Node.js `^22.18.0 || >=24.11.0`。
:::
## 先理解职责边界
Core API 只处理传入的内存文本,不会扫描输出目录、替你写文件,也不会因为配置了 `cssEntries` 就把 CSS 入口自动加入构建图。
| 能力 | Core API 负责 | 调用方负责 |
| --- | --- | --- |
| Tailwind 类名集合 | 从明确配置的 Tailwind CSS 入口和 source 中收集、缓存与刷新 | 保证入口和 source 正确,并在合适的构建阶段触发刷新 |
| CSS | 把已经生成的 CSS 转成目标端兼容样式 | 让 Tailwind CSS 入口实际参与生成,并把结果交给 `transformWxss()` |
| WXML / AXML 等模板 | 转义静态 class 与表达式中的已确认类名 | 读取、写回产物并选择正确的平台模板文件 |
| JavaScript | 只转译运行时集合确认的 class,保留普通业务字符串 | 处理解析错误、source map、关联模块与文件写回 |
| watch / HMR | 复用同一个上下文中的运行时缓存 | 监听源码和配置变化,并在变化后重新收集运行时集合 |
Tailwind CSS v4 的样式生成必须继续由 `weapp-tailwindcss` 链路接管。不要为 Core API 额外注册 `@tailwindcss/postcss` 或 `@tailwindcss/vite` 作为生成兜底。
## 配置 Tailwind CSS 入口
Tailwind CSS v4 项目应给 `cssEntries` 传入绝对路径。入口用于识别 `@import "tailwindcss"`、`@source` 与 `@config`,但它仍然必须由你的构建流程实际加载。
```css title="src/tailwind.css"
@import "tailwindcss" source(none);
@source "./**/*.{html,wxml,js,ts,jsx,tsx,vue}";
@source not "../dist";
@source not "../unpackage";
```
```js
import path from 'node:path'
import { createContext } from 'weapp-tailwindcss/core'
const root = process.cwd()
const cssEntry = path.resolve(root, 'src/tailwind.css')
const ctx = createContext({
tailwindcssBasedir: root,
cssEntries: [cssEntry],
})
```
多入口、分包或独立分包项目应列出全部真实入口。`cssEntries` 等价于 `tailwindcss.v4.cssEntries` 的快捷配置。完整配置类型见 [`UserDefinedOptions`](/docs/api/interfaces/UserDefinedOptions) 和 [`cssEntries`](/docs/api/options/important#cssentries)。
## API 一览
`createContext(options)` 返回的四个方法共享同一份 Tailwind 运行时状态与类名集合。
| 方法 | 输入 | 返回值 | 关键行为 |
| --- | --- | --- | --- |
| `getRuntimeSet(options?)` | 刷新选项 | `Promise>` | 收集或刷新 Tailwind 已确认的运行时类名 |
| `transformWxss(rawCss, options?)` | 已生成的 CSS | `Promise` | 通过 `result.css` 读取目标端 CSS,并更新内部运行时集合 |
| `transformWxml(rawTemplate, options?)` | 模板字符串 | `Promise` | 转义 class 属性及模板表达式中的已确认类名 |
| `transformJs(rawJs, options?)` | JS 字符串 | `Promise` | 返回 `code`,并按配置返回 `map`、`error` 或 `linked` |
:::warning 返回值不是同一种类型
不要把三个 transform 的返回值都当成字符串:
- `transformWxss()` 返回 PostCSS Result,最终 CSS 在 `result.css`。
- `transformWxml()` 直接返回字符串。
- `transformJs()` 返回对象,最终 JavaScript 在 `result.code`。
:::
## 推荐调用时序
一个生产构建周期建议遵循下面的顺序:
1. 创建并复用一个 `createContext()`,不要为每个文件重新创建上下文。
2. 让 Tailwind CSS 入口先进入实际生成链路,得到待适配的 CSS。
3. 调用 `transformWxss()` 处理主样式;该步骤结束后会同步内部运行时集合。
4. 调用 `getRuntimeSet()` 读取同一集合,或在自定义生命周期中显式强制收集。
5. 使用同一个上下文调用 `transformWxml()` 和 `transformJs()`。
6. 检查 JS 解析错误,再由你的构建器通过自身产物 API 或文件流程写回结果。
如果你的构建流程先处理模板或 JavaScript,也可以先调用:
```js
const runtimeSet = await ctx.getRuntimeSet({
forceCollect: true,
})
```
未显式传入 `runtimeSet` 时,`transformWxml()` 和 `transformJs()` 会在内部集合为空时自动收集一次。显式调用的价值是让构建阶段、错误定位和 watch 刷新更加清楚。
## 完整文件处理示例
下面假设上游生成步骤已把 Tailwind CSS 写入 `.build/tailwind.generated.css`。示例只展示 Core API 的内存转换和文件写回边界。
```js title="scripts/transform.mjs"
import { mkdir, readFile, writeFile } from 'node:fs/promises'
import path from 'node:path'
import { createContext } from 'weapp-tailwindcss/core'
const root = process.cwd()
const sourceRoot = path.resolve(root, 'src')
const outputRoot = path.resolve(root, 'dist')
const ctx = createContext({
tailwindcssBasedir: root,
cssEntries: [path.resolve(sourceRoot, 'tailwind.css')],
rem2rpx: true,
})
async function main() {
const [generatedCss, rawWxml, rawJs] = await Promise.all([
readFile(path.resolve(root, '.build/tailwind.generated.css'), 'utf8'),
readFile(path.resolve(sourceRoot, 'pages/index/index.wxml'), 'utf8'),
readFile(path.resolve(sourceRoot, 'pages/index/index.js'), 'utf8'),
])
const cssResult = await ctx.transformWxss(generatedCss)
const runtimeSet = await ctx.getRuntimeSet()
const wxmlCode = await ctx.transformWxml(rawWxml)
const jsResult = await ctx.transformJs(rawJs)
if (jsResult.error) {
throw jsResult.error
}
console.log(`collected ${runtimeSet.size} Tailwind classes`)
await mkdir(path.resolve(outputRoot, 'pages/index'), { recursive: true })
await Promise.all([
writeFile(path.resolve(outputRoot, 'app.wxss'), cssResult.css),
writeFile(path.resolve(outputRoot, 'pages/index/index.wxml'), wxmlCode),
writeFile(path.resolve(outputRoot, 'pages/index/index.js'), jsResult.code),
])
}
main().catch((error) => {
console.error(error)
process.exitCode = 1
})
```
CommonJS 项目可以使用 `const { createContext } = require('weapp-tailwindcss/core')`,其余 API 契约一致。
## `getRuntimeSet()` 刷新选项
默认调用会优先复用签名未变化的缓存;如果首次结果为空,还会刷新运行时并重新收集一次。
| 选项 | 行为 | 适用场景 |
| --- | --- | --- |
| `forceCollect` | 跳过当前集合缓存,从现有 Tailwind 运行时重新提取 | watch 中源码内容变化、新增运行时 class |
| `forceRefresh` | 先重建 Tailwind 运行时,再强制提取 | CSS 入口、`@source`、`@config` 或 Tailwind 配置发生结构变化 |
| `clearCache` | 在强制收集或刷新时同步清理 Tailwind 运行时缓存 | 配置或依赖变化后需要排除旧缓存;通常与 `forceRefresh` 一起使用 |
| `allowEmpty` | 接受空集合,不执行默认的第二次刷新 | 确认当前项目允许没有 Tailwind class,或只做状态探测 |
`clearCache: true` 单独使用不保证触发刷新,应该与 `forceCollect` 或 `forceRefresh` 组合。
```js
// 初次构建或普通源码变化
await ctx.getRuntimeSet({ forceCollect: true })
// Tailwind 配置、入口或 source 图发生变化
await ctx.getRuntimeSet({
forceRefresh: true,
clearCache: true,
})
```
watch/HMR 中必须先刷新集合,再处理受影响的 JS 和模板。不要用启发式转义弥补过期的集合;新 class 尚未进入集合时,保持原值比误改业务字符串更安全。
`jsArbitraryValueFallback` 已废弃,仅用于兼容旧配置。`true` 和 `'auto'` 都不会绕过 `classNameSet`;集合为空或候选未命中时,`transformJs()` 会保持源码不变。
## `runtimeSet` 的安全边界
`transformJs()` 的核心原则是 `classNameSet` 精确命中:只有 Tailwind 生成或验证过的 class 才能进入普通 JS 字符串的转译路径。
```js
const rawJs = [
'const className = "text-[12px] w-1/2"',
'callApi("order/get_order_amount", {}, "POST")',
].join('\n')
const { code, error } = await ctx.transformJs(rawJs)
if (error) {
throw error
}
// text-[12px] w-1/2 -> text-_b12px_B w-1_f2
// order/get_order_amount 保持原样
console.log(code)
```
`transformJs(rawJs, { runtimeSet })` 是测试和自研构建器深度集成用的覆盖入口。传入它时应遵守以下约束:
- 集合应来自 `getRuntimeSet()` 或 Tailwind v4 的生成/验证结果。
- 不要把扫描器发现的所有字符串直接塞入集合。
- 不要把 API、路由、资源路径、MIME 或日志文本当成 class。
- 不要修改一个正在被其他并发转换复用的 `Set`;刷新后使用新的集合快照。
从 `weapp-tailwindcss@5.1.8` 起,非 class 上下文中的普通斜杠路径还有额外保护,但这只是纵深防御,不能替代正确的候选验证。相关回归见 [issue #903](https://github.com/sonofmagic/weapp-tailwindcss/issues/903)。
## 精确忽略冲突字符串
正常项目不需要为 API 路径配置忽略规则。如果业务字符串确实与有效 Tailwind class 完全相同,可以选择局部或全局保护。
### 局部保护
默认会识别名为 `weappTwIgnore` 的标签模板:
```js
import { weappTwIgnore } from 'weapp-tailwindcss/escape'
const value = weappTwIgnore`w-1/2`
```
### 全局规则
```js
const ctx = createContext({
jsPreserveClass: keyword => keyword.startsWith('internal-route:'),
})
```
`jsPreserveClass` 返回 `true` 时保留当前字符串。详细配置见 [`jsPreserveClass`](/docs/api/options/important#jspreserveclass) 和 [`ignoreTaggedTemplateExpressionIdentifiers`](/docs/api/options/important#ignoretaggedtemplateexpressionidentifiers)。
:::danger 谨慎使用 `alwaysEscape`
`transformJs(rawJs, { alwaysEscape: true })` 会绕过 `classNameSet` 安全边界。它只适合输入内容已经确定全部是 class 的专用转换步骤,不应对普通业务 JavaScript 启用。
:::
## 返回值与错误处理
### `transformWxss()`
返回 PostCSS Result。常用字段包括:
- `css`:最终目标端 CSS。
- `map`:启用 source map 后的 PostCSS source map。
- `messages`:PostCSS 插件产生的元数据和提示。
- `warnings()`:收集 PostCSS warning。
不传 `isMainChunk` 时默认按主样式处理。处理分包或次级样式时,应根据你的构建图显式传入正确的 `IStyleHandlerOptions`。
### `transformWxml()`
直接返回模板字符串。可以通过 `{ runtimeSet }` 覆盖当前调用使用的集合,但通常应复用上下文自动维护的集合。
### `transformJs()`
返回 `JsHandlerResult`:
- `code`:转换后的 JavaScript;解析失败时保持原始输入。
- `map`:启用时生成的 source map。
- `error`:Babel 解析错误。Core API 会把错误放在结果中,调用方必须主动检查。
- `linked`:启用 `filename + moduleGraph` 跨模块分析后产生的关联模块结果,以绝对路径为键;调用方负责把它们交回构建图。
除显式底层参数 `alwaysEscape: true` 外,`transformJs()` 只转译精确命中当前 `classNameSet` 的候选。空集合、缺失集合和未命中候选都会原样保留。
## 常见问题排查
| 现象 | 优先检查 |
| --- | --- |
| 提示“未检测到 cssEntries” | 是否传入了绝对路径;入口是否真的包含 Tailwind 引用 |
| CSS 有 class,JS/WXML 没有转义 | `@source` 是否覆盖源码;是否在 Tailwind 生成完成前收集了集合 |
| watch 新增 class 不生效 | 是否在源码变化后调用 `getRuntimeSet({ forceCollect: true })`,并在刷新后再转换产物 |
| 修改 Tailwind 配置后仍使用旧结果 | 调用 `getRuntimeSet({ forceRefresh: true, clearCache: true })` |
| API、路由或资源路径被改写 | 升级到最新版;确认未使用 `alwaysEscape`,并检查手工 `runtimeSet` 是否被普通字符串污染 |
| `transformJs()` 没有抛错但代码未变化 | 检查返回值中的 `error`;解析失败时 `code` 会保持原文 |
| 配置了 `cssEntries` 但没有 CSS 产物 | `cssEntries` 只提供入口语义,不会替代构建器加载或生成 CSS |
## 和构建器插件的区别
| 使用方式 | 适合场景 | 构建生命周期 |
| --- | --- | --- |
| `weapp-tailwindcss/vite` | Vite、uni-app Vite、Taro Vite、weapp-vite | 插件接管模块图、CSS 生成、运行时集合和 HMR |
| `weapp-tailwindcss/webpack` | Webpack、Taro Webpack、Mpx | 插件接管 compilation、loader 与产物图 |
| `weapp-tailwindcss/gulp` | 原生小程序流式构建 | 插件接管 Vinyl 文件和增量任务 |
| `weapp-tailwindcss/core` | 自研构建器、批处理脚本、平台适配器 | 调用方显式组织生成、刷新、转换和写回 |
普通项目请先阅读 [Tailwind CSS 4 默认模式参考](/docs/tailwindcss/v4-reference),再选择对应框架的接入页。
---
## uni-app HBuilderX 使用方式
:::caution
本文同时包含两条 `HBuilderX` 路线:
- `HBuilderX Vue3 Vite`:推荐
- `HBuilderX Vue2 Webpack`:仅供存量项目维护
:::
## HBuilderX Vue3 Vite
这条路线适合 HBuilderX 创建的 Vue3 Vite 项目。HBuilderX 会改变运行时的 `process.cwd()`,所以扫描路径和 `cssEntries` 都建议使用绝对路径。
当前文档面向 `tailwindcss@4`。当前文档仅维护 Tailwind CSS 4 接入说明。
### CSS 入口
```css title="src/app.css"
@import "tailwindcss";
@source "../pages/**/*.{html,js,ts,jsx,tsx,vue}";
@source "../components/**/*.{html,js,ts,jsx,tsx,vue}";
@source not "../uni_modules";
@source not "../unpackage";
```
Tailwind 4 的入口只放在纯 `.css` 文件里,不要直接写进 `scss`、`less`、`sass` 入口。VS Code IntelliSense 需要时,可以把 `tailwindCSS.experimental.configFile` 指向这个 CSS 文件。
入口 CSS 仍然要被项目实际引入,例如在 `src/App.vue` 的全局 `
```
`UNI_PLATFORM=h5`、`app` 或 `app-plus` 时,生成器默认目标会自动切换为 `web`,不再需要写 `disabled: WeappTailwindcssDisabled`。如果自定义构建环境没有注入这些变量,可以显式指定 Web 输出:
```js
WeappTailwindcss({
generator: {
target: "web",
},
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
resolve(projectRoot, "src/app.css"),
],
});
```
`disabled` 只适合完全不希望插件参与的独立原生或自定义构建,不是 H5 / 普通 App WebView 的常规配置。
生成模式下不要再注册 Tailwind 官方生成插件,不要注册 `@tailwindcss/postcss` 或 `@tailwindcss/vite`。项目已有 PostCSS 配置时,只保留框架或业务需要的非 Tailwind 插件。
`hbuilderx` 正式版本的 `vue2` 项目由于使用 `webpack4` 和 `postcss7`,不再适配当前版本。存量项目请继续停留在旧版本,或者迁移到 `HBuilderX Vue3 Vite` / `uni-app cli vue2 webpack5` 链路。
## HBuilderX 与 uni-app CLI 环境汇总
先确认项目实际使用的构建链路。下面是文档维护时的常见组合,项目以本机 HBuilderX 安装的编译插件为准:
| | webpack | vite | postcss |
| ---------------- | -------- | ---- | -------- |
| HBuilderX Vue2 | webpack4 | x | postcss7 |
| uni-app CLI Vue2 | webpack5 | x | postcss8 |
| HBuilderX Vue3 | x | √ | postcss8 |
| uni-app CLI Vue3 | x | √ | postcss8 |
当前版本推荐使用 Vite 或 Webpack5 链路。HBuilderX Vue2 Webpack4 项目建议停留在旧版插件,或迁移到 Vue3 Vite / uni-app CLI Vue2 Webpack5。
## HBuilderX Vue2 Webpack(存量项目) {#hbuilderx-vue2-webpack}
当前版本不再内置 Webpack4 / PostCSS7 / Tailwind CSS v2 兼容入口。如果你必须维护 `hbuilderx vue2` 项目,请继续使用旧版 `weapp-tailwindcss`,或迁移到上方推荐的 Vite / Webpack5 链路。
## 不建议全局改 HBuilderX Vue2 编译器
:::caution
下面这种做法会改动 HBuilderX 内置编译器,影响同一台机器上的所有 HBuilderX Vue2 项目。除非你清楚回滚成本,否则不要在日常项目里使用。
:::
早期 HBuilderX Vue2 项目通常锁在 Webpack4 / PostCSS7。有人会直接升级 `HBuilderX/plugins/uniapp-cli` 里的 `@vue/cli-*`、loader、`postcss` 和 `postcss-loader`,把内置链路改到 Webpack5 / PostCSS8。
这不是推荐路径。它会让 HBuilderX 的全局编译环境和官方插件状态不一致,升级 HBuilderX 或重新安装编译插件后也可能失效。
> macOS uniapp-cli 路径在 /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli
>
> Windows 的路径通常也在 HBuilderX 安装目录下。需要先安装 Vue2 编译插件,这个目录才会出现。
更稳的做法是迁移项目,或者用 uni-app CLI 单独维护 Vue2 Webpack5 链路。这样一个项目对应一套依赖,排查问题也简单。
## 视频演示
---
## ReactLynx / Rspeedy
`@weapp-tailwindcss/lynx` 通过 Rspeedy 的 Rspack 生命周期生成 Lynx 可消费的普通 CSS。它保留 ReactLynx 原生 `className`,不引入运行时样式表或 JSX 转换。
## 安装
```bash npm2yarn
npm install -D @weapp-tailwindcss/lynx tailwindcss
```
当前集成要求 Node.js `>=22.12.0`、Rspeedy `>=0.16.0` 和 Tailwind CSS `>=4.0.0`,仅支持 ReactLynx + Rspeedy 构建目标。
## 注册 Rspeedy 插件
```ts title="lynx.config.ts"
import { pluginReactLynx } from '@lynx-js/react-rsbuild-plugin'
import { defineConfig } from '@lynx-js/rspeedy'
import { pluginLynxTailwindcss } from '@weapp-tailwindcss/lynx'
export default defineConfig({
plugins: [pluginReactLynx(), pluginLynxTailwindcss()],
})
```
插件固定使用 `platform: 'lynx'`、`generator.target: 'web'` 与 Lynx 兼容输出。Tailwind CSS 4 的 theme 变量会在构建期静态化;应用自行定义的动态 CSS 变量保持不变。
## 配置 Tailwind CSS 入口
在应用 CSS 入口中引入 Tailwind CSS 4,并用 `@source` 指向实际源码。Lynx 不需要浏览器 preflight,推荐只引入 theme 与 utilities,以减少 Rspeedy 对浏览器专用规则的兼容警告。
```css title="src/global.css"
@layer theme, base, components, utilities;
@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/utilities.css" layer(utilities) source(none);
@source "./**/*.{ts,tsx}";
```
随后可以直接使用 ReactLynx 的 `className`:
```tsx
weapp-tailwindcss + Lynx
```
## 任意值与动态类名
任意值必须以完整静态字符串出现在 `@source` 覆盖的文件中:
```tsx
```
不要运行时拼接 `w-[${width}px]`。动态场景应枚举完整类名,或在 CSS 中显式注册候选:
```css
@source inline("w-[120px] w-[240px] bg-[#123456]");
```
Tailwind 能生成 CSS 不代表 Lynx 支持每个属性和选择器。当前 Lynx encoder 会删除 `padding-inline`、`mask-type` 等不支持的属性,以及包含复杂 `:is()` / `:where()` 的选择器。需要横向内边距时,优先使用 `pl-*` 与 `pr-*` 等物理方向 utility。伪元素、交互状态、媒体查询和复杂视觉效果必须在目标端验收。
## 构建警告
完整的 `@import "tailwindcss"` 会带入浏览器 preflight。Rspeedy 可能报告并移除 `:root`、`:host`、`:where(...)`、`::file-selector-button` 等 Lynx 不支持的规则。
- 浏览器专用 preflight 警告:改用上面的 theme + utilities 入口。
- 业务 utility 对应的属性或选择器警告:调整 Tailwind 写法,不能只忽略警告。
## 验证与示例
仓库中的完整示例位于 [`examples/react-lynx`](https://github.com/sonofmagic/weapp-tailwindcss/tree/main/examples/react-lynx)。仓库开发者可以运行:
```bash
pnpm --filter @weapp-tailwindcss/lynx test
pnpm --filter @weapp-tailwindcss/example-react-lynx build
pnpm e2e:lynx
```
静态构建只能证明 CSS 已生成并进入 bundle。iOS Simulator 与 LynxExplorer 的视觉验收可运行 `pnpm e2e:lynx:ios`。
首版不覆盖 Rspeedy Web 输出、非 React Lynx 框架、Tailwind CSS 3 或 React Native 风格的运行时样式映射。
---
## Mpx
Mpx 使用 Webpack 链路,应显式配置 `cssEntries`,让 `weapp-tailwindcss` 稳定定位 Tailwind CSS 入口。
## 注册插件
在 `vue.config.js` 中注册:
```js title="vue.config.js"
const { defineConfig } = require('@vue/cli-service')
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
const path = require('node:path')
module.exports = defineConfig({
// other options
configureWebpack(config) {
config.plugins.push(
new WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
appType: 'mpx',
cssEntries: [
path.resolve(__dirname, 'src/app.css'),
],
})
)
}
})
```
## 引入 Tailwind CSS 样式
Tailwind CSS 生成由 `WeappTailwindcss` 接管,不要再注册 Tailwind 官方 PostCSS 生成插件。
当前文档仅维护 Tailwind CSS 4 接入说明。
```css title="src/app.css"
@import "tailwindcss";
@source "../src";
@source not "../dist";
@source not "../node_modules";
```
Tailwind 4 入口请放在纯 `.css` 文件里,不要直接放进 `scss`、`less`、`sass` 入口。
### 在 app.mpx 中引入
```html title="src/app.mpx"
```
## mpx 中的 vscode tailwindcss 智能提示缺失设置
如果在 `mpx` 文件中写 `class` 没有智能提示,可以在 VS Code 的 `Tailwind CSS IntelliSense` 扩展设置里处理。
在 `include languages` 里,把 `mpx` 标记为 `html`。

保存设置后,再到 `mpx` 文件里写 `class`,就能看到智能提示。
---
## 原生开发(打包方案)
:::warning
这是原生开发的打包方案。如果你需要纯原生方案,请查看 [快速开始(纯原生)](/docs/quick-start/native/install)。
:::
> 由于原生小程序没有 `webpack/vite/gulp` 工具链暴露出来,所以我们要添加这一套机制,来整个前端社区接轨,以此来实现更强大的功能。
:::tip
给原生小程序加入编译时这块 `webpack/vite/gulp` 等等工具,思路都是一样的,然而实现起来比较复杂,损耗精力,在此不提及原理。
更改模板工具链流程前,请确保你比较熟悉工具链开发(到我这样的水平就差不多了)。
另外这些模板,只需要稍微改一下产物后缀,调整 `@source` 扫描范围就可以适配百度,头条,京东...各个平台。
:::
## gulp 模板
模板项目 [weapp-tailwindcss-gulp-template(gulp打包)](https://github.com/sonofmagic/weapp-tailwindcss/tree/main/demo/gulp-app)
## weapp-vite 模板
如果你希望原生小程序也走 Vite 构建,推荐查看 [纯原生 weapp-vite 接入](/docs/quick-start/native/install)。当前文档面向 `tailwindcss@4`。当前文档仅维护 Tailwind CSS 4 接入说明。
然后在 `vite.config.ts` 中注册 `weapp-tailwindcss/vite`:
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'weapp-vite/config'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
WeappTailwindcss({
cssEntries: [
resolve(projectRoot, 'app.css'),
],
cssOptions: {
rem2rpx: true,
},
}),
],
})
```
生成模式会接管 Tailwind CSS 生成和小程序转译,不需要再注册 `tailwindcss` PostCSS 插件,也不需要执行 `weapp-tw patch`。
Tailwind CSS 4 项目应显式配置 `cssEntries`,让 `WeappTailwindcss` 稳定读取入口 CSS 里的 `@source` 与 Tailwind 指令。`cssEntries` 只负责入口识别,入口 CSS 仍然要通过项目入口实际引入。
Tailwind CSS 4 的入口 CSS:
```css title="app.css"
@import "tailwindcss";
@source "./src/**/*.{wxml,js,ts,vue}";
@source "./app.{js,ts,json}";
@source not "./dist";
```
Tailwind 4 的入口只放在纯 `.css` 文件里。完整写法见 [纯原生 weapp-vite 接入](/docs/quick-start/native/install)。
## 组件样式的隔离性
:::tip
发现很多用户,在使用原生开发的时候,经常会问,为什么样式不生效。
这可能有以下几个原因:
1. 代码文件不在 `@source` 扫描范围内
2. 原生小程序组件是默认开启 **组件样式隔离** 的,默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响。而 `tailwindcss` 生成的工具类,都在 `app.wxss` 这个全局样式文件里面。不属于组件内部,自然不生效。
这时候可以使用:
```js
/* 组件 custom-component.js */
Component({
options: {
addGlobalClass: true,
}
})
```
来让组件应用到 `app.wxss` 里的样式。
[微信小程序相关开发文档](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E7%BB%84%E4%BB%B6%E6%A0%B7%E5%BC%8F%E9%9A%94%E7%A6%BB)
:::
## vscode tailwindcss 智能提示设置
我们知道 `tailwindcss` 最佳实践,是要结合 `vscode`/`webstorm`提示插件一起使用的。
如果在 `vscode` 的 `wxml` 文件中写 `class` 没有智能提示,可以按下面步骤处理。
这里我们以 `vscode` 为例:
1. 安装 [`WXML - Language Services 插件`](https://marketplace.visualstudio.com/items?itemName=qiu8310.minapp-vscode)(一搜 wxml 下载量最多的就是了)
2. 安装 [`Tailwind CSS IntelliSense 插件`](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)
接着找到 `Tailwind CSS IntelliSense` 的 `扩展设置`
在 `include languages` 里,把 `wxml` 标记为 `html`。

智能提示就出来了:

---
## Taro
Taro v4 可以走 Webpack,也可以走 Vite。新项目优先选 Webpack,问题少一些;Taro Vite 可以用,但更适合已有项目排障。
:::caution
如果 `tailwindcss` 工具类不生效,先检查微信开发者工具是否开启了 `代码自动热重载`。关闭它后再重新预览。
如果你同时使用 `NutUI`,或启用了 `@tarojs/plugin-html`,请先看这个[注意事项](/docs/issues/use-with-nutui)。
:::
下面的配置适用于 Taro 的 `react` / `preact` / `vue2` / `vue3`。文档默认你的源码都放在 `src` 目录下,这也是 Taro 模板的默认结构。
## Tailwind CSS 入口
当前文档面向 `tailwindcss@4`。当前文档仅维护 Tailwind CSS 4 接入说明。
小程序构建只注册 `WeappTailwindcss`。不要再在 PostCSS 中注册 `tailwindcss` 或 `@tailwindcss/postcss`,也不要为 Taro Vite 注册 `@tailwindcss/vite`。
```css title="src/app.css"
@import "tailwindcss" source(none);
@source "../src";
```
这里不用再单独写 `pages`、`components`。Taro 默认源码都在 `src` 里,扫 `../src` 更简单,也能覆盖你后面新增的 `src/features`、`src/utils`、`src/widgets` 这类目录。
`source(none)` 会关掉 Tailwind 4 的默认自动扫描,只按我们写的 `@source "../src"` 扫源码。这样不会把 `dist`、`node_modules` 这类目录带进来。
Tailwind 4 的入口请放在纯 `.css` 文件里。业务样式可以继续使用 Sass/Less,但不要把 `@import "tailwindcss"` 直接写进预处理入口。记得在 `src/app.ts` 或 `src/app.js` 里引入这个 CSS 文件:
```ts title="src/app.ts"
import './app.css'
```
## 使用 Webpack 作为打包工具
### 注册插件
在项目的配置文件 `config/index` 中注册。小程序和 H5 都需要注册 `WeappTailwindcss`:小程序目标会输出小程序可用 CSS,`TARO_ENV=h5` 时会自动切到 Web 目标。
```js title="config/index.[jt]s"
const path = require('node:path')
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
// 使用 ts 配置时,可以改用下方 import 写法
// import { WeappTailwindcss } from 'weapp-tailwindcss/webpack'
const projectRoot = path.resolve(__dirname, '..')
const weappTailwindcssOptions = {
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/app.css'),
],
}
function registerWeappTailwindcss(chain) {
chain.merge({
plugin: {
install: {
plugin: WeappTailwindcss,
args: [weappTailwindcssOptions],
},
},
})
}
{
mini: {
webpackChain(chain, webpack) {
// highlight-start
registerWeappTailwindcss(chain)
// highlight-end
}
},
h5: {
webpackChain(chain, webpack) {
// highlight-start
registerWeappTailwindcss(chain)
// highlight-end
}
}
}
```
然后正常运行项目即可。Tailwind CSS 4 项目应显式配置 `cssEntries`,同时仍要在 `src/app.ts` 或 `src/app.js` 里引入 `./app.css`。
如果你把 Tailwind 入口放到了别的目录,或者项目有多个 Tailwind 入口,把这些纯 `.css` 入口都写进 `cssEntries`:
```js title="config/index.[jt]s"
const path = require('node:path')
const projectRoot = path.resolve(__dirname, '..')
const weappTailwindcssOptions = {
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/app.css'),
],
}
```
`cssEntries` 指向的是 Tailwind 入口文件,请指向纯 `.css`。
不要在 H5 里写 `disabled: process.env.TARO_ENV === 'h5'`。小程序和 H5 都注册插件,`weapp-tailwindcss` 会按目标端处理。
:::info
`weapp-tailwindcss/webpack` 对应的推荐插件名 `WeappTailwindcss` 适用于 `webpack@5`
在使用 `Taro` 时,检查一下 `config/index` 文件的配置项 `compiler`,来确认你的 `webpack` 版本。当前版本不再内置 Webpack4 入口,推荐使用 `'webpack5'`
如果你使用了 [`taro-plugin-compiler-optimization`](https://www.npmjs.com/package/taro-plugin-compiler-optimization),建议移除。它会让打包结果变得混乱。详见 [issues/123](https://github.com/sonofmagic/weapp-tailwindcss/issues/123) [issues/131](https://github.com/sonofmagic/weapp-tailwindcss/issues/131)
`taro` 的 `prebundle` 也容易干扰排查。如果项目启动异常且原因不明,可以先关闭这个配置。
:::
## 使用 Vite 作为打包工具
:::danger
`Taro Vite` 目前整体稳定性较差,已知问题和样式链路 bug 较多,不推荐在新项目里使用。
如果你没有强依赖 `Taro Vite`,优先选择 `Taro Webpack`、`uni-app`、`weapp-vite` 等更稳定的方案。
:::
Taro Vite 需要把 `WeappTailwindcss` 注册到 `config/index` 的 `compiler.vitePlugins`,这样小程序和 H5 都能走同一份插件配置。Tailwind CSS 由 `WeappTailwindcss` 生成,不需要再注册 Tailwind 官方 Vite 或 PostCSS 插件。
### 在 `config/index.ts` 中注册插件
```ts title="config/index.[jt]s"
import type { Plugin } from 'vite'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const baseConfig: UserConfigExport<'vite'> = {
// ... 其他配置
// highlight-start
compiler: {
type: 'vite',
vitePlugins: [
WeappTailwindcss({
cssOptions: {
// rem转rpx
rem2rpx: true,
// Taro Vite 可能移除 Tailwind CSS 变量,需要重新注入变量作用域
injectAdditionalCssVarScope: true,
},
})
] as Plugin[] // 从 vite 引入 type, 为了智能提示
},
// highlight-end
// ... 其他配置
}
```
Tailwind CSS 生成由 `weapp-tailwindcss` 接管,不需要再把 Tailwind 官方生成插件注册到 PostCSS 或 Vite 配置里。`src/app.css` 按上方写 Tailwind 4 入口。
Taro Vite 也应显式配置 `cssEntries`。它只负责让 `weapp-tailwindcss` 稳定读取 Tailwind CSS 入口,入口 CSS 仍然要通过 Taro 入口实际引入。
`TARO_ENV=h5` 时,生成器默认目标会自动切换为 `web`,不再需要写 `disabled: process.env.TARO_ENV === 'h5'`。如果 RN 或 Harmony 构建不希望插件参与,可以只针对这些目标显式设置 `disabled`。
> `vite.config.ts` 只有在运行小程序时才会加载,`h5` 不会。小程序 + h5 双端兼容请把插件注册放在 `config/index` 的 `compiler.vitePlugins` 中。
> `Taro Vite` 当前仍然不稳定,这部分内容仅作为历史方案和排障参考,不建议作为新项目默认选型。
## 视频演示
---
## uni-app CLI Vue3 Vite
:::warning
这是 `uni-app cli` 创建的 Vue3 Vite 项目。如果你使用 `HBuilderX` 创建项目,请看 [uni-app HBuilderX 使用方式](/docs/quick-start/frameworks/hbuilderx)。
:::
## Tailwind 入口
当前文档面向 `tailwindcss@4`。当前文档仅维护 Tailwind CSS 4 接入说明。
Tailwind CSS 生成由 `WeappTailwindcss` 接管,不要在小程序构建里再注册 `tailwindcss`、`@tailwindcss/postcss` 或 `@tailwindcss/vite`。
```css title="src/app.css"
@import "tailwindcss";
@source "./**/*.{html,js,ts,jsx,tsx,vue}";
@source not "./uni_modules";
@source not "../node_modules";
@source not "../dist";
@source not "../unpackage";
```
Tailwind 4 的入口请放在纯 `.css` 文件里。业务里仍然可以使用 Sass/Less,但不要把 `@import "tailwindcss"` 直接写进预处理入口。
入口 CSS 还需要被项目实际引入,例如在 `src/App.vue` 的全局 `
```
## 扫描范围提醒
### 问题现象
如果项目把第三方插件或依赖放进 `src/uni_modules`,同时扫描整个 `src`,Tailwind 可能会把依赖源码里的正则片段、README 示例或产物误识别为 class,最终生成异常 CSS。
在小程序产物中,可能会看到类似:
```css
._ba-zA-Z_c__B {
a-z-a--z:;
}
```
### 根因
这不是业务代码真的写了这样的类名,而是扫描范围太宽,把第三方源码、文档或构建产物也纳入了提取范围。使用 `@source not` 排除这些目录。
### 最佳实践
- 扫描范围只覆盖业务源码,不要无差别扫整个 `src`
- 默认排除 `uni_modules`、`node_modules`、`dist`、`unpackage`
- 如果必须包含某个 `uni_modules` 包,只精确包含其中真正承载模板类名的文件
## 创建项目参考
可以通过 `cli` 命令创建项目,具体参数以 [uni-app 官网文档](https://uniapp.dcloud.net.cn/quickstart-cli.html) 为准:
- JavaScript 项目:
```bash
npx degit dcloudio/uni-preset-vue#vite my-vue3-project
```
- TypeScript 项目:
```bash
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project
```
## 视频演示
---
## uni-app x
:::info 运行环境要求
使用 `weapp-tailwindcss@5.2.0` 或更高版本时,需要 Node.js `>=22.12.0` 和 HBuilderX `>=5.11`。Node.js 22 从 `22.12.0` 开始默认支持从 CommonJS 加载 ESM;较旧的 HBuilderX 内置 Node 可能无法加载当前依赖。
:::
`uni-app x` 使用 HBuilderX 和 `@dcloudio/vite-plugin-uni`。建议配合内置的 `uniAppX` 预设使用。
当前仓库的 HBuilderX 本地 E2E 覆盖了 uni-app x Web、微信小程序、Android、iOS 和鸿蒙。小程序与 App E2E 依赖本机 HBuilderX、开发者工具或模拟器,只在本地执行。
:::warning 能力边界
`uvue` 原生 App 端不要依赖 `gap`、`gap-x-*`、`gap-y-*`,这些布局能力当前都不支持。
`space-x-*`、`space-y-*` 也不要在 `uni-app x` 中使用。请直接改用子项显式 `mt-*` / `ml-*`,或封装固定结构的间距组件。
:::
```bash npm2yarn
npm run e2e:hbuilderx:local
npm run e2e:hbuilderx:local:web
npm run e2e:hbuilderx:local:mp
npm run e2e:hbuilderx:local:android
npm run e2e:hbuilderx:local:ios
npm run e2e:hbuilderx:local:harmony
```
## 注册插件
`uniAppX` 从 `weapp-tailwindcss/presets` 导出,应显式传入 `cssEntries`。
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
import { uniAppX } from 'weapp-tailwindcss/presets'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
uni(),
WeappTailwindcss(
uniAppX({
base: projectRoot,
cssEntries: [resolve(projectRoot, 'main.css')],
rem2rpx: true,
}),
),
],
})
```
Tailwind CSS 生成由 `weapp-tailwindcss` 接管,不要再注册 `tailwindcss`、`@tailwindcss/postcss` 或 `@tailwindcss/vite`。
当前文档仅维护 Tailwind CSS 4 接入说明。
:::info Web 与 App 调试注意
`cssEntries` 用来告诉 `weapp-tailwindcss` Tailwind CSS 4 的入口文件,入口仍应是 HBuilderX / Vite 能处理到的真实 CSS 文件。Web/H5、Android 和 iOS 都需要保持 `appType: 'uni-app-x'`,不要因为运行到 Web 端手动关闭 `uniAppX`,否则 `.uvue` 模板里的任意值类名不会转换成安全选择器。
`rem2rpx`、`unitsToPx`、`unitConversion` 是 `uniAppX()` 预设的顶层选项,不要放进 `cssOptions`。
:::
## Tailwind CSS 入口
Tailwind CSS 4 使用 CSS-first 入口,`@source` 要覆盖页面、组件和可能产出类名的脚本目录:
```css title="main.css"
@import "tailwindcss" source(none);
@source "./App.uvue";
@source "./pages/**/*.{uts,uvue}";
@source "./components/**/*.{uts,uvue}";
@source "./stores/**/*.{uts,uvue}";
@source not "./uni_modules/**/*";
@source not "./unpackage/**/*";
```
不要把 `unpackage` 放进扫描范围,否则 HBuilderX 产物会反过来干扰开发构建。
## 在 App.uvue 中引入入口
`cssEntries` 负责生成入口识别,不负责把 CSS 自动加入 HBuilderX / Vite 模块图。必须在全局样式中实际导入:
```html title="App.uvue"
```
如果缺少这个导入,Tailwind 可以扫描到 `.uvue` 候选,但 Web、小程序和 App 页面都不会加载生成样式。
## 验证任意值类名
在任意页面写一段最小用例:
```html
Tailwind CSS
```
依次运行到 Web、微信小程序和目标 App 平台后,检查元素样式是否生效。App 端文本使用 ``,文本相关样式要直接写在 `` 上。
## 参考模板
- [仓库内 Tailwind CSS 4 demo](https://github.com/sonofmagic/weapp-tailwindcss/tree/next/demo/uni-app-x-hbuilderx-tailwindcss-v4)
---
## uni-app CLI Vue2 Webpack
:::caution
这条 `uni-app cli vue2 webpack` 路线已经不推荐,仓库中的对应 classic demo 也已经移除。
新项目请直接使用 [uni-app cli vue3 vite](/docs/quick-start/frameworks/uni-app-vite)。
:::
:::warning
本文仅作为存量项目归档说明保留,不再作为推荐接入方式。
:::
```js title="vue.config.js"
const path = require('node:path')
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
/**
* @type {import('@vue/cli-service').ProjectOptions}
*/
const config = {
// some option...
// highlight-start
configureWebpack: (config) => {
config.plugins.push(
new WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
cssEntries: [
path.resolve(__dirname, 'src/app.css'),
],
})
)
}
// highlight-end
// other option...
}
module.exports = config
```
`src/app.css` 使用 Tailwind CSS 4 入口。当前文档仅维护 Tailwind CSS 4 接入说明。
```css title="src/app.css"
@import "tailwindcss";
@source "./**/*.{html,js,ts,jsx,tsx,vue}";
@source not "../dist";
@source not "../node_modules";
@source not "../unpackage";
```
扫描范围写在 CSS 入口的 `@source` 里。生成模式下不要再在 PostCSS 中注册 Tailwind 官方生成插件。
`cssEntries` 只负责入口识别,存量项目仍要在 `src/App.vue` 的全局样式中 `@import './app.css';`,否则生成 CSS 不会进入 Webpack 模块图。
---
## Tailwind CSS 多入口与分包隔离
小程序拆分主包、普通分包和独立分包后,通常不希望把所有 Tailwind 工具类复制到每一份样式产物中。更合理的结果是:
- 主包入口只生成主包使用的工具类。
- 普通分包入口只生成该分包使用的工具类。
- 独立分包入口只生成该独立分包使用的工具类。
- 分包页面通过 `@import` 引用本分包入口,同时保留页面自己的局部 CSS。
独立分包尤其需要单独的样式入口,因为主包中的全局样式不会作用到独立分包。
## 三项配置分别负责什么
| 配置 | 职责 |
| --- | --- |
| `cssEntries` | 告诉 `weapp-tailwindcss` 哪些文件是 Tailwind CSS 入口 |
| 入口中的 `@source` | 决定当前入口扫描哪些模板和脚本、生成哪些候选类 |
| `styleInjector.rules` | 生成分包入口资产,并把入口通过 `@import` 注入匹配的页面或组件样式 |
`styleInjector` 不负责扫描模板,也不会替代 `cssEntries`。反过来,`cssEntries` 只负责识别和生成入口,不会自动让分包页面引用入口。三者需要一起配置。
## 目录结构
下面以 uni-app Vite + Tailwind CSS 4 为例:
```text
src/
├── main.css
├── main.ts
├── pages/
│ └── index/index.vue
├── sub-normal/
│ ├── index.css
│ └── pages/
│ ├── index.css
│ └── index.vue
└── sub-independent/
├── index.css
└── pages/
├── index.css
└── index.vue
```
`main.css`、两个分包根目录下的 `index.css` 是三份 Tailwind 入口。页面目录中的 `index.css` 只是页面局部样式,不包含 Tailwind 入口指令。
## 配置 cssEntries 与内置 Style Injector
`weapp-tailwindcss` 已内置 `weapp-style-injector`,无需再注册一个独立插件:
```ts title="vite.config.ts"
import { createRequire } from 'node:module'
import { dirname } from 'node:path'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import uni from '@dcloudio/vite-plugin-uni'
import { defineConfig } from 'vite'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const require = createRequire(import.meta.url)
const projectRoot = dirname(fileURLToPath(import.meta.url))
const uniMpVueRuntimePath = require.resolve('@dcloudio/uni-mp-vue/dist/vue.runtime.esm.js')
export default defineConfig({
plugins: [
uni(),
WeappTailwindcss({
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/main.css'),
path.resolve(projectRoot, 'src/sub-normal/index.css'),
path.resolve(projectRoot, 'src/sub-independent/index.css'),
],
styleInjector: {
rules: {
'index.css': [
'pages/**/*.css',
'pages/**/*.wxss',
'pages/**/*.acss',
'pages/**/*.ttss',
'pages/**/*.qss',
'pages/**/*.jxss',
],
},
},
}),
],
resolve: {
alias: {
'@dcloudio/uni-mp-vue/dist/vue.runtime.esm.js': uniMpVueRuntimePath,
},
},
})
```
uni-app 预设会读取 `pages.json` 中的分包根目录。规则里的 `index.css` 会分别匹配:
- `src/sub-normal/index.css`
- `src/sub-independent/index.css`
目标 glob 覆盖常见小程序样式后缀和 H5 的 `.css`。如果项目只构建微信小程序,可以缩小为 `pages/**/*.wxss`。
## 限定三个入口的扫描范围
主包入口只扫描主包页面,并显式排除两个分包:
```css title="src/main.css"
@import "tailwindcss" source(none);
@config "../tailwind.config.js";
@source "./pages/**/*.{vue,js,ts}";
@source not "./sub-normal/**/*";
@source not "./sub-independent/**/*";
```
普通分包入口只扫描普通分包:
```css title="src/sub-normal/index.css"
@import "tailwindcss" source(none);
@config "../../tailwind.config.sub-normal.js";
@source "./pages/**/*.{vue,js,ts}";
```
独立分包入口只扫描独立分包:
```css title="src/sub-independent/index.css"
@import "tailwindcss" source(none);
@config "../../tailwind.config.sub-independent.js";
@source "./pages/**/*.{vue,js,ts}";
```
每个 `@config` 的 `content` 也应保持相同边界。不要让主配置重新扫描全部分包,否则会绕过入口中的隔离意图。
## 页面只引入局部 CSS
分包页面不需要手工引入根目录的 Tailwind 入口:
```vue title="src/sub-normal/pages/index.vue"
normal subpackage
```
```css title="src/sub-normal/pages/index.css"
.normal-page-local {
border-width: 3rpx;
}
```
构建时,内置 Style Injector 会生成分包入口,并把引用插入页面产物。
## 预期产物
以微信小程序为例:
| 产物 | 应包含 | 不应包含 |
| --- | --- | --- |
| `main.wxss` | 主包专属工具类 | 普通分包、独立分包专属工具类 |
| `sub-normal/index.wxss` | 普通分包专属工具类 | 主包、独立分包专属工具类 |
| `sub-independent/index.wxss` | 独立分包专属工具类 | 主包、普通分包专属工具类 |
| `sub-normal/pages/index.wxss` | 页面局部 CSS、`@import "../index.wxss"` | 三组入口工具类的内联副本 |
| `sub-independent/pages/index.wxss` | 页面局部 CSS、`@import "../index.wxss"` | 三组入口工具类的内联副本 |
页面产物类似:
```css title="dist/build/mp-weixin/sub-normal/pages/index.wxss"
@import "../index.wxss";
.normal-page-local {
border-width: 3rpx;
}
```
隔离针对的是入口专属候选。若主包和多个分包都使用 `text-white`,每个入口各自生成该共享工具类是正常现象。
## 独立使用 weapp-style-injector
如果项目没有使用 `weapp-tailwindcss`,或者只需要注入已经生成的样式入口,可以独立注册框架预设:
```ts
import uni from '@dcloudio/vite-plugin-uni'
import { defineConfig } from 'vite'
import { StyleInjector } from 'weapp-style-injector/vite/uni-app'
export default defineConfig({
plugins: [
uni(),
StyleInjector({
rules: {
'index.css': ['pages/**/*.wxss'],
},
}),
],
})
```
已经使用 `weapp-tailwindcss` 时,优先使用内置 `styleInjector`,避免注册两套相同的构建生命周期。
## 验证
先构建微信小程序:
```bash
pnpm build:mp-weixin
```
如果项目支持其他平台,再至少检查一个非微信目标,例如支付宝或抖音:
```bash
pnpm build:mp-alipay
pnpm build:mp-toutiao
```
验证时不要只检查固定的 `app.wxss` 文件名,应按真实平台后缀检查 `.wxss`、`.acss`、`.ttss` 等产物,并同时做正向和反向断言,确认入口之间没有串包。
## 完整示例
仓库中的 [subpackage-uni-app-vite-tailwindcss-v4](https://github.com/sonofmagic/weapp-tailwindcss/tree/main/demo/subpackage-uni-app-vite-tailwindcss-v4) demo 同时覆盖:
- 内置 `styleInjector` 的隔离入口模式。
- 主包、普通分包、独立分包的候选隔离。
- 微信、支付宝、抖音和 H5 产物。
- 用于兼容性回归的单入口模式。
---
## 安装依赖
这一页只处理包安装。框架注册方式放到下一章。
## 安装当前版本
当前文档面向 `tailwindcss@4` 与最新版 `weapp-tailwindcss`。当前文档仅维护 Tailwind CSS 4 接入说明。
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
下一步:进入 [各框架注册方式](/docs/quick-start/frameworks/uni-app-vite)。
---
## IDE 智能提示设置
## VS Code
> 首先,确保你已经安装 [`Tailwind CSS IntelliSense 插件`](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)
### 让 `Tailwind CSS IntelliSense` 识别 Tailwind CSS v4
`tailwindcss-intellisense` 在 Tailwind CSS 4 中必须看到 `@import "tailwindcss"` 才会将工作区视为 Tailwind 根文件。生成模式也推荐在真实入口直接写 `@import 'tailwindcss';`,再由 `WeappTailwindcss` 输出小程序目标 CSS。
如果仍希望与源码解耦,也可以使用 CLI 为 VS Code 生成一个仅供扩展使用的辅助 CSS:
```bash npm2yarn
npx weapp-tailwindcss vscode-entry --css src/app.css
```
- 默认输出在 `.vscode/weapp-tailwindcss.intellisense.css`,其中包含 `@import 'tailwindcss';`、常见的 `@source` globs 以及你传入的 CSS 入口(例如 `src/app.css`)。
- 该文件只用于激活 IntelliSense,不需要、也不应该被打包流程引用。
- 若需自定义文件名或额外的 `@source`,可通过 `--output`、`--source`、`--force` 等参数调整,运行 `npx weapp-tailwindcss vscode-entry --help` 查看全部选项。
- 如果不想生成独立文件,可以直接在真实入口写 `@import 'tailwindcss';`,并把这个入口写入 `tailwindCSS.experimental.configFile`。
保存/重载任意文件后 VS Code 会检测到该辅助文件,从而让 Tailwind CSS 4 项目享受到完整的补全、悬浮和跳转体验。
如果你希望显式告诉 `Tailwind CSS IntelliSense`“某个 CSS 根文件对应哪些源码目录”,可以继续补充 `tailwindCSS.experimental.configFile`:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": {
".vscode/weapp-tailwindcss.intellisense.css": "src/**"
}
}
```
- 键名是给 `Tailwind CSS IntelliSense` 使用的 CSS 入口文件路径,它通常需要包含 `@import "tailwindcss";`。
- 键值是这个入口生效的源码范围,支持 glob;上面的配置表示,当你编辑 `src/**` 下的文件时,扩展会使用 `.vscode/weapp-tailwindcss.intellisense.css` 作为 Tailwind 根文件。
- 在 monorepo 或一个工作区里有多个 Tailwind 入口时,这种写法比“让扩展自动猜测”更稳定,也适合配合 `npx weapp-tailwindcss vscode-entry` 生成的辅助 CSS 一起使用。
### wxml 的智能提示
我们知道 `tailwindcss` 最佳实践,是要结合 `vscode`/`webstorm`提示插件一起使用的。
假如你遇到了,在 `vscode` 的 `wxml` 文件中,编写 `class` 没有出智能提示的情况,可以参考以下步骤。
这里我们以 `vscode` 为例:
安装 [`WXML - Language Services 插件`](https://marketplace.visualstudio.com/items?itemName=qiu8310.minapp-vscode)(一搜 wxml 下载量最多的就是了)
然后下方提供了 `2` 种方式, `全局设置` 和 `工作区设置`, 根据你的需求仍选其一即可
#### 全局设置
点击 `vscode` 左下角的设置图标里,通过搜索关键词 `tailwindcss` ,找到 `Tailwind CSS IntelliSense` 插件的 `扩展设置`
在 `include languages`,手动标记 `wxml` 的类型为 `html`

智能提示就出来了:

#### 工作区设置
在你的打开的工作区目录的根目录里,创建 `.vscode` 文件夹,然后添加 `settings.json` 内容如下:
```json
{
"tailwindCSS.includeLanguages": {
"wxml": "html"
}
}
```
这样就通过你工作区的 `vscode` 设置,去覆盖了你全局的 `vscode` 设置,也能够达到上图中的效果。
### js,jsx,ts,tsx,vue...这类文件的智能提示
#### 场景
在安装配置好插件后,我们在写代码时,写到那些标签中的 `class=`,`className=`,这种场景时,智能提示一下子就可以出来。
然而我们在写 `js` 代码的时候,很多时候是直接在代码里,去写 `tailwindcss` 字符串字面量,比如:
```jsx
const clsName = 'bg-[#123456] text-[#654321]'
return
```
写这种字符串是没有任何的智能提示的,怎么办呢?
#### 解决方案
这里给出一种基于插件的解决方案:
1. 安装 `clsx`:
```bash npm2yarn
npm i clsx
```
2. 进入你的 `vscode` 设置的 [`settings.json`](https://code.visualstudio.com/docs/getstarted/settings)
在里面加入下方的配置:
```json
{
"tailwindCSS.experimental.classRegex": [
[
"clsx\\(([^)]*)\\)",
"(?:'|\"|`)([^']*)(?:'|\"|`)"
]
]
}
```
这样配置之后,智能提示就出来了:

[Refer link](https://github.com/lukeed/clsx#tailwind-support)
#### 存在问题
这种原理也是依赖正则匹配,即 `Tailwind CSS IntelliSense 插件` 匹配到了当前 `vscode` 活动的文本域中,存在着 `clsx()` 方法这个关键词,所以就把智能提示给注入进去。
所以你这样写就不会生效:
```js
import { clsx as AAA } from 'clsx'
const btn = AAA('')
```
另外,你可以依据这个特性,修改/添加 `"tailwindCSS.experimental.classRegex"` 里的正则,然后自行封装一个方法,用来进行 `tailwindcss` 的智能提示。
## WebStorm
> 和 `vscode` 方式类似,同样使用 `clsx` 函数
1. 确保你的版本大于等于 [WebStorm 2023.1](https://www.jetbrains.com/webstorm/whatsnew/#version-2023-1-tailwind-css-configuration)
2. 打开设置,前往 [Languages and Frameworks | Style Sheets | Tailwind CSS](https://www.jetbrains.com/help/webstorm/tailwind-css.html#ws_css_tailwind_configuration)
3. 添加以下的配置:
```json
{
"experimental": {
"classRegex": ["clsx\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"]
}
}
```
> 如果你使用 `class-variance-authority` 的 `cva` 函数,只需再添加 `"cva\\(([^)]*)\\)"` 正则即可。
## HbuilderX
---
## 1. 安装与配置 Tailwind CSS
## 前言
本教程演示原生微信小程序 JS 模板接入 `tailwindcss@4` 与 `weapp-tailwindcss` 的方式。重点是两件事:源码要进入 Tailwind 扫描范围,小程序目标转译交给 `weapp-tailwindcss`。
当前文档仅维护 Tailwind CSS 4 接入说明。
### 运行环境
从 `weapp-tailwindcss@5.2.0` 开始,需要 Node.js `>=22.12.0`。Node.js 22 从该版本开始默认支持从 CommonJS 加载 ESM,这也是当前仓库与核心包的 engines 要求。Node 版本不满足时,不建议用 `--ignore-engines` 硬装,后续构建错误会更难排查。
如果项目通过 HBuilderX 运行 `uni-app` 或 `uni-app x`,还需要升级到 HBuilderX `>=5.11`,确保 IDE 内置 Node 能正确加载当前 ESM 依赖。
## 创建项目
打开微信开发者工具, 点击 `+` 创建一个项目,依次选择:
0. `AppID` 使用测试号
1. 开发模式: `小程序`
2. 后端服务: `不使用云服务`
3. 模板选择: 第二项选择 `基础`
4. 选择 `JS 基础模板`

> 使用 JS 基础模板创建的项目,依然可以使用 `Typescript`
先把 Tailwind CSS 的入口准备好,下一页再注册 `weapp-tailwindcss` 和 `weapp-vite`。
## 0. 初始化 `package.json`
如果使用原生 JS 模板创建项目,项目目录里通常没有 `package.json`。
这时需要先执行:
`npm init -y`,在项目下创建 `package.json`。
## 1. 安装 Tailwind CSS
```bash npm2yarn
# 安装 tailwindcss 和 weapp-tailwindcss
npm i -D tailwindcss weapp-tailwindcss
```
`weapp-tailwindcss` 会接管 Tailwind CSS 生成,不要再创建 Tailwind 专用的 `postcss.config.js`。如果项目已有 PostCSS 配置,只保留业务自己的非 Tailwind 插件。
## 2. 配置扫描范围
Tailwind CSS 4 在 CSS 入口里写扫描范围:
```css title="app.css"
@import "tailwindcss";
@source "./components/**/*.{wxml,js,ts}";
@source "./pages/**/*.{wxml,js,ts}";
@source "./app.{js,ts,json}";
@source not "./node_modules";
@source not "./dist";
```
Tailwind 4 的入口请放在纯 `.css` 文件里。不要直接写进 `less`、`scss`、`sass` 入口。
## 3. 引入 Tailwind CSS
在小程序项目入口样式文件中写 Tailwind 入口,使用上方的 `@import "tailwindcss";` 和 `@source`。
在入口 CSS 加入这一段代码后,微信开发者工具可能会先报错。这通常是因为 `weapp-tailwindcss` 插件还没有注册完成。
下一步继续安装并注册 `weapp-tailwindcss`。
---
## 2. 安装这个插件并运行
## 安装插件
在项目目录下,执行:
```bash npm2yarn
npm i -D weapp-tailwindcss weapp-vite
```
这样 `weapp-tailwindcss` 和 `weapp-vite` 就被安装在你的本地了
## 执行初始化命令
在命令行中运行
```sh
npx weapp-vite init
```
这个命令会对现有的原生小程序项目,进行 `weapp-vite` 的初始化
执行后,会发现主要有许多文件改动,`CLI` 主要做了 `3` 件事情:
- 创建 `vite.config.ts` 文件,这个是 `weapp-vite` 和 `vite` 的配置文件
- 修改 `package.json`, 添加 `dev` 和 `build` 开发和构建脚本,还有构建 `npm` 和打开微信开发者工具
- 修改 `project.config.json` 内容,来适配构建产物
- 添加适配 vite 的 `dts` 和 `tsconfig.json`
## 安装所有的依赖包
在执行完成 `weapp-vite init` 初始化命令之后,我们需要在项目里执行一下安装命令:
```bash npm2yarn
npm i
```
## 注册插件
在你的 `vite.config.ts` 里对插件进行注册:
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'weapp-vite/config'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
// highlight-start
plugins: [
WeappTailwindcss({
cssEntries: [
resolve(projectRoot, 'app.css'),
],
cssOptions: {
rem2rpx: true,
},
}),
],
// highlight-end
})
```
Tailwind CSS 4 的扫描范围写在 CSS 入口的 `@source` 里。生成模式下不要再注册 Tailwind 官方生成插件,也不需要执行 `weapp-tw patch`。当前文档仅维护 Tailwind CSS 4 接入说明。
Tailwind CSS 4 项目应显式配置 `cssEntries`。`cssEntries` 只负责让 `WeappTailwindcss` 稳定读取入口 CSS,入口 CSS 仍然要通过项目入口实际引入;如果有多个 Tailwind CSS 入口,就都写进数组:
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'weapp-vite/config'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
cssEntries: [
resolve(projectRoot, 'app.css'),
],
}),
],
})
```
## 开始运行
使用 `npm run dev` 进入开发模式, 此模式带有热更新的,主要用于开发
使用 `npm run build` 进行构建
不论是 `npm run dev` 还是 `npm run build`, 他们的构建产物,都在工程目录下的 `dist` 目录
使用微信开发者工具,直接导入工程目录,然后即可预览效果!
> 注意不是导入 `dist` 目录,是你工程的根目录! 通常是 `dist` 的父级目录,不要搞错了!
## 配置好的模板
如果配置不成功,可以用下面的模板对比配置文件:
[weapp-vite-tailwindcss-template](https://github.com/weapp-vite/weapp-vite/tree/main/apps/weapp-vite-tailwindcss-template)
或者直接执行命令:
```bash npm2yarn
npx weapp-vite create my-app
```
此命令会在当前目录下,创建一个目录名为 `my-app` 的 `weapp-vite` + `weapp-tailwindcss` 集成模板
{/* [vite-native](https://github.com/sonofmagic/weapp-tailwindcss/tree/main/apps/vite-native) */}
{/* [native-weapp-tailwindcss-template](https://github.com/sonofmagic/native-weapp-tailwindcss-template) */}
## 原生组件样式的隔离性
:::tip
发现很多用户,在使用原生开发的时候,经常会问,为什么 `tailwindcss` 样式对自定义组件不生效。
这可能有以下几个原因:
1. 代码文件不在 `@source` 扫描范围内
2. 原生小程序组件是默认开启 **组件样式隔离** 的,默认情况下,自定义组件的样式只受到自定义组件 `wxss` 的影响。而 `tailwindcss` 生成的工具类,都在 `app.wxss` 这个全局样式文件里面。不属于组件内部,自然不生效。
这时候可以在你组件的 `json` 文件配置中,设置下面一行 `styleIsolation` 来开启样式共享:
```json title="custom-component.json"
{
"styleIsolation": "apply-shared"
}
```
> `apply-shared` 表示页面 `wxss` 样式将影响到自定义组件,但自定义组件 `wxss` 中指定的样式不会影响页面;
来让组件应用到 `app.wxss` 里的样式。
更多的文档详见: [微信小程序相关开发文档](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E7%BB%84%E4%BB%B6%E6%A0%B7%E5%BC%8F%E9%9A%94%E7%A6%BB)
:::
## 想了解更多 weapp-vite
更多场景和配置,请查看 [weapp-vite 文档网站](https://vite.icebreaker.top/)
---
## React Native / Expo
`@weapp-tailwindcss/react-native` 是独立的 React Native 编译器包。它复用 `weapp-tailwindcss` 的 Tailwind CSS v4 source 扫描和候选集合,将生成的原始 CSS 编译为内存中的 RN style manifest;运行时不依赖 NativeWind 或 `react-native-css`。
## 安装
```bash
pnpm add @weapp-tailwindcss/react-native
pnpm add -D tailwindcss
```
首个版本面向 Expo SDK 54+、React 19、React Native 0.81+。项目仍然使用 `pnpm` 和仓库要求的 Node 版本。
## CSS 入口
```css title="global.css"
@import "tailwindcss";
@source "./src/**/*.{js,jsx,ts,tsx}";
```
## Metro 与 Babel
```js title="metro.config.js"
const { getDefaultConfig } = require('expo/metro-config')
const { withWeappTailwindcss } = require('@weapp-tailwindcss/react-native/metro')
const config = getDefaultConfig(__dirname)
module.exports = withWeappTailwindcss(config, {
input: './global.css',
sourceGlobs: ['./src/**/*.{js,jsx,ts,tsx}'],
})
```
```js title="babel.config.js"
module.exports = function (api) {
api.cache(true)
return {
presets: ['babel-preset-expo'],
}
}
```
Expo 只配置一次 Metro;它会把 source 扫描、manifest 生成和 Babel JSX transform 自动接起来,不再手写第二份 `classNameSet`。静态 `className="flex items-center"` 会编译为预生成的 StyleSheet lookup,不会在 render 中调用通用 `tw()`;动态 `className={condition ? "bg-red-500" : "bg-blue-500"}` 才会保留为受控的 `tw(...)` 调用。普通 inline `style` 覆盖 Tailwind class,`!important` class 覆盖 inline style。非 Expo 或定制 Metro 场景仍可显式使用 `@weapp-tailwindcss/react-native/babel`。
## 运行时与边界
Metro virtual module 会把 manifest、`Platform.OS` 和 `Appearance` 颜色模式注入 runtime,因此 `dark:`、`ios:`、`android:`、`native:` 变体可以按当前环境选择规则。编译器覆盖常用 layout、flex、spacing、sizing、colors、typography、border、radius、opacity、transform、shadow 和 arbitrary values;浏览器 preflight 默认忽略。不支持的 CSS 特性会产生中文 warning,可在 `manifest.warnings` 中检查。
类型增强从 `@weapp-tailwindcss/react-native/env` 引入;普通自定义组件只要接收 `className` 和 `style` 就可以复用同一套写法,不需要第三方组件 prop 映射。
```ts
import { tw } from '@weapp-tailwindcss/react-native/runtime'
const style = tw(condition ? 'bg-red-500' : 'bg-blue-500')
```
Tailwind 仍由 `weapp-tailwindcss` generator 生成,不要同时注册 `@tailwindcss/vite` 或 `@tailwindcss/postcss`。Expo Web 只建议作为 smoke test,Android/iOS 模拟器或真机才是首个版本的验收目标。
## 验证
```bash
pnpm --filter @weapp-tailwindcss/react-native test
pnpm --filter @weapp-tailwindcss/react-native build
pnpm --filter @weapp-tailwindcss/example-react-native-expo build
pnpm --filter @weapp-tailwindcss/example-react-native-expo test
```
---
## uni-app 条件编译样式
Tailwind CSS v4 可以直接用 `@custom-variant` 描述 uni-app 的条件编译分支,不再需要额外声明 `weapp-tailwindcss/css-macro`。它适合多端项目里少量平台差异样式,比如“微信小程序蓝色,H5 橙色”,或者“非微信小程序隐藏某个样式分支”。
## 能解决什么
uni-app 本身支持 CSS 条件编译:
```css
/* #ifdef MP-WEIXIN */
.button {
background: #1677ff;
}
/* #endif */
```
写 Tailwind 原子类时,可以先在入口 CSS 中定义条件变体:
```css
@import "tailwindcss";
@custom-variant wx {
/* #ifdef MP-WEIXIN */
@slot;
/* #endif */
}
@custom-variant not-wx {
/* #ifndef MP-WEIXIN */
@slot;
/* #endif */
}
```
然后在模板里使用语义化前缀:
```html
微信小程序为蓝色,其他平台为红色
```
也可以定义 H5 / 小程序组合条件:
```css
@custom-variant h5-or-wx {
/* #ifdef H5 || MP-WEIXIN */
@slot;
/* #endif */
}
@custom-variant not-h5-or-wx {
/* #ifndef H5 || MP-WEIXIN */
@slot;
/* #endif */
}
```
```html
H5 和微信小程序使用蓝色,其他平台使用灰色
```
## 当前生成链路
`@custom-variant` 由 Tailwind CSS v4 原生解析。`weapp-tailwindcss` 继续负责生成目标端 CSS、处理小程序选择器兼容与平台裁剪:
1. Tailwind CSS 根据 `@custom-variant` 生成带条件编译注释的工具类规则。
2. `weapp-tailwindcss` 在生成目标端 CSS 时保留条件注释结构。
3. 当构建链路能识别当前平台时,会在最终样式输出前裁剪不匹配分支;识别不到平台时,条件注释交给后续 uni-app 构建处理。
这意味着:
- 小程序目标构建会输出已经适配小程序选择器的样式,并移除不匹配的平台分支。
- H5 / Web 目标构建会保留 Web 选择器格式,并同样按平台裁剪。
- 不需要再配置 `@plugin "weapp-tailwindcss/css-macro"`。
- 不需要手动注册 `weapp-tailwindcss/css-macro/postcss`。
## 推荐写法
把平台差异集中在入口 CSS 中,模板里只使用业务可读的变体名:
```css
@import "tailwindcss";
@source "../src/**/*.{vue,js,ts,jsx,tsx,wxml,axml}";
@custom-variant wx {
/* #ifdef MP-WEIXIN */
@slot;
/* #endif */
}
@custom-variant h5 {
/* #ifdef H5 */
@slot;
/* #endif */
}
@custom-variant app {
/* #ifdef APP-PLUS */
@slot;
/* #endif */
}
```
```html
不同平台使用不同背景色
```
如果需要“非某平台”分支,单独声明反向变体:
```css
@custom-variant not-app {
/* #ifndef APP-PLUS */
@slot;
/* #endif */
}
```
```html
App 隐藏,其他平台显示
```
## 平台表达式
条件注释中的平台表达式仍然使用 uni-app 官方语法:
```css
@custom-variant mp {
/* #ifdef MP */
@slot;
/* #endif */
}
@custom-variant wx-or-alipay {
/* #ifdef MP-WEIXIN || MP-ALIPAY */
@slot;
/* #endif */
}
```
常见平台值包括:
- `H5` / `WEB`
- `MP-WEIXIN`
- `MP-ALIPAY`
- `MP-TOUTIAO`
- `MP-QQ`
- `MP`
- `APP` / `APP-PLUS`
- `QUICKAPP-WEBVIEW`
完整平台值以 uni-app 官方条件编译文档为准。
## 平台裁剪行为
当构建链路能拿到当前平台时,`weapp-tailwindcss` 会在最终样式输出前裁剪条件分支。平台来源包括 `cssOptions.platform` 和常见环境变量:
- `WEAPP_TW_TARGET`
- `WEAPP_TAILWINDCSS_TARGET`
- `UNI_PLATFORM`
- `UNI_UTS_PLATFORM`
- `TARO_ENV`
- `MPX_CLI_MODE`
- `MPX_CURRENT_TARGET_MODE`
例如当前平台为 `mp-weixin` 时:
```html
```
最终只保留匹配微信小程序的 `bg-blue-500` 分支,不会把 `#ifndef MP-WEIXIN` 的样式残留到最终样式里。
## 旧 css-macro 写法迁移
旧项目里的写法可以按下面方式迁移:
```diff
@import "tailwindcss";
-@plugin "weapp-tailwindcss/css-macro";
+@custom-variant wx {
+ /* #ifdef MP-WEIXIN */
+ @slot;
+ /* #endif */
+}
+
+@custom-variant not-wx {
+ /* #ifndef MP-WEIXIN */
+ @slot;
+ /* #endif */
+}
```
模板中把动态平台表达式改成稳定别名:
```diff
-
+
```
常规项目不要再手动添加 `weapp-tailwindcss/css-macro/postcss`:
```diff
// postcss.config.js / vite.config.ts
plugins: [
- require('weapp-tailwindcss/css-macro/postcss'),
]
```
## 在 `@apply` 中使用
条件变体也可以放进 CSS 的 `@apply`:
```css
.apply-test {
@apply wx:bg-blue-400 not-wx:bg-red-400;
}
```
和模板 class 一样,最终会按目标平台裁剪。
## IDE 智能提示
安装 VS Code / WebStorm 的 Tailwind CSS 官方插件后,在入口 CSS 中声明的 `@custom-variant` 名称可以参与补全。
如果刚改完配置没有提示,先重启编辑器的 Tailwind CSS Language Server。
---
## UnoCSS 写法兼容
`weapp-tailwindcss` 仍然使用 Tailwind CSS 作为样式生成引擎。`unocss` 配置只负责兼容一部分常见的 UnoCSS class 写法,默认关闭。
## 1. 启用方式
```ts
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
export default {
plugins: [
WeappTailwindcss({
unocss: true,
}),
],
}
```
开启后会同时做两件事:
| 能力 | 说明 |
| --- | --- |
| 裸任意值生成 | 将 `p-10%`、`bg-#fff`、`text-rgb(255,0,0)` 等候选交给 Tailwind CSS v4 运行时生成链路处理。 |
| class 名称转义 | 继续使用 `weapp-tailwindcss` 现有的 `customReplaceDictionary` 转义链路,例如默认会把 `:`、`[`、`#` 转为小程序安全字符。 |
> 注意:JS 转译仍然遵循 `classNameSet` 精确命中原则,不会对普通字符串做启发式猜测。
## 2. 支持的写法
开启 `unocss: true` 后,Tailwind CSS v4 生成链路可以识别下面这类写法:
| 类型 | 示例 |
| --- | --- |
| 尺寸与间距 | `p-10%`、`p-2.5px`、`m-4rem`、`w-100px`、`h-50vh`、`m-10rpx`、`rounded-10px` |
| 颜色 | `bg-#fff`、`text-#f00`、`border-#123456`、`from-#123`、`via-#456`、`to-#789` |
| 函数值 | `text-rgb(255,0,0)`、`bg-rgba(0,0,0,0.5)`、`w-calc(100%-1rem)`、`bg-var(--brand)` |
| 部分变体组合 | `hover:!-mt-2rem`、`dark:bg-#000`、`group-hover:bg-#fff` |
原本 Tailwind 支持的任意值写法仍然可用:
```html
```
## 3. 当前不支持的写法
`unocss` 配置不是 UnoCSS 引擎,也不会加载 UnoCSS preset。下面这些写法不属于当前兼容范围:
| 写法 | 原因 |
| --- | --- |
| `i-carbon-add` | 这是 UnoCSS Icons preset 语法,Tailwind CSS 不会生成对应图标规则。 |
| `~mt-2/4` | 这是 UnoCSS/Windi shortcut 风格,当前不会展开。 |
| `bg-$color` | 当前不支持这种变量简写。 |
| `sm:-top-1.5rem` | 小程序目标会过滤不支持的响应式变体。 |
## 4. 自定义转义规则
需要自定义 `:`、`[`、`#` 等 class 字符替换时,使用 `customReplaceDictionary`:
```ts
WeappTailwindcss({
unocss: true,
customReplaceDictionary: {
':': '-c-',
},
})
```
这样可以确保 class 转义只有 `customReplaceDictionary` 一个配置入口。
---
## Tailwindcss 2.x
目前,有些用户由于现有的项目,已经是 `webpack 4`, `postcss 7.x` 且无法往上升级,但是又想要使用 `tailwindcss`,
所以写了这个文档作为参考,在现有版本的情况下,**不推荐**任何的新项目使用
## 安装
在这种条件下,只能使用 `tailwindcss 2.x` 版本。
参考 https://v2.tailwindcss.com/docs/installation#post-css-7-compatibility-build 中的安装方式
安装好之后,一定要打开 `jit` 模式, https://github.com/icebreaker-trash/uni-app-vue2-tailwind-hbuilder-template/blob/master/tailwind.config.js
具体更多的细节,详见下方模板代码。
## vue2 hbuilderx 参考模板
注意,一定要在开发环境中设置
```js
process.env.TAILWIND_MODE = "watch"
```
才能正常热更新
模板源代码地址:
https://github.com/icebreaker-template/uni-app-vue2-tailwind-hbuilder-template
---
## 初始化 package.json
## 1. 安装
```bash npm2yarn
# 初始化 package.json
npm init
# 安装包
npm install -D tailwindcss weapp-tailwindcss
```
## 2. 添加 `vite.config.ts`
```ts title="vite.config.ts"
import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
uni(),
WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
// Tailwind CSS 入口文件绝对路径
resolve(projectRoot, 'src/app.css'),
],
}),
],
});
```
> tailwindcss@4 必须配置 `cssEntries` 并且使用绝对路径,否则 `weapp-tailwindcss` 无法稳定定位 CSS 入口。
## 3. 添加样式
在页面里写一段可观察的工具类,例如 `bg-[#123456] text-[#654321]`,再运行到微信开发者工具检查效果。
## 布局限制
- `uni-app x` 中不要使用 `gap`、`gap-x-*`、`gap-y-*`
- `uni-app x` 中也不要使用 `space-x-*`、`space-y-*`
- 需要间距时,请直接对子项写 `mt-*` / `ml-*`,或封装固定结构的间距组件
## 参考模板
- [uni-app-x-hbuilderx 模板](https://github.com/icebreaker-template/uni-app-x-hbuilderx)
- [uni-app-hbuilderx 模板](https://github.com/icebreaker-template/uni-app-hbuilderx-tailwindcss-v4)
---
## UniappCliStyle
在 `src/app.css` 中引入 Tailwind CSS,这个文件会作为 Tailwind CSS 入口:
```css title="src/app.css"
@import "tailwindcss";
@source not "dist";
@source not "../src/uni_modules";
```
为了解决 IDE 智能提示问题,需要在 VS Code 里显式告诉 `Tailwind CSS IntelliSense` 哪个文件是 Tailwind 4 的 CSS 入口。最直接的做法是把它指向真实生效的 `src/app.css`:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": "src/app.css"
}
```
如果你更想单独放一个“只给编辑器识别”的文件,也可以额外创建 `src/main.css`:
```css title="src/main.css"
@import "tailwindcss";
@source not "dist";
@source not "../src/uni_modules";
```
然后把 `experimental.configFile` 指向它:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": "src/main.css"
}
```
这个 `src/main.css` 只用于 IntelliSense,不要在 `App.vue` 里实际引入。应用运行时仍然使用 `src/app.css` 作为 Tailwind CSS 入口。
## `@source` 扫描范围排障
### 问题现象
如果你的 `uni-app` 项目把第三方插件或依赖放在 `src/uni_modules` 下,同时 Tailwind 4 的 CSS 入口又没有显式排除这个目录,那么扫描源码时也可能把依赖里的正则片段、README 示例文本或构建产物误当成候选,最终生成无意义样式。
### 根因
根因是扫描范围过宽,把业务源码以外的第三方内容也纳入了提取范围。
### 推荐配置
对于 `uni-app cli` 项目,推荐在 Tailwind 4 的 CSS 入口里显式排除:
```css title="src/main.css"
@import "tailwindcss";
@source not "dist";
@source not "../src/uni_modules";
```
### 最佳实践
- `@source` 应尽量只覆盖业务源码目录
- 默认排除 `src/uni_modules`、`node_modules`、`dist`、`unpackage`、文档和生成产物
- 如果必须扫描某个 `uni_modules` 包,只精确包含真正承载模板类名的文件,不要全量扫描整个目录
这里要写 `@import "tailwindcss"`,因为 `tailwindcss-intellisense` 当前用于触发 v4 设计系统加载的判断只认 `@import "tailwindcss"` 或 `@theme {}`,并不认 `@import "weapp-tailwindcss/index.css"`。
:::warning
千万不要在 `uni.scss` 中去引入 `tailwindcss`, `uni.scss` 本质上走的是 `scss.additionalData`, 它会在每一个 `scss` 文件的开头,都去添加 `uni.scss` 里的文件内容
所以这相当于你每个 `scss`/ `vue` 文件里面,都加了 `tailwindcss` 引入,那 `css` 体积就爆炸了
:::
---
## UniappHbuilderStyle
在 `src/app.css` 中引入 Tailwind CSS,这个文件会作为 Tailwind CSS 入口:
```css title="src/app.css"
@import "tailwindcss";
@source not "unpackage";
@source not "uni_modules";
```
为了 IDE 智能提示,需要在 VS Code 里显式告诉 `Tailwind CSS IntelliSense` 哪个文件是 Tailwind 4 的 CSS 入口。最直接的做法是把它指向真实生效的 `src/app.css`:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": "src/app.css"
}
```
如果你更想单独放一个“只给编辑器识别”的文件,也可以额外创建 `src/main.css`:
```css title="src/main.css"
@import "tailwindcss";
@source not "unpackage";
@source not "uni_modules";
```
然后把 `experimental.configFile` 指向它:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": "src/main.css"
}
```
这个 `src/main.css` 只用于 IntelliSense,不要在 `App.vue` / `App.uvue` 里实际引入。应用运行时仍然使用 `src/app.css` 作为 Tailwind CSS 入口。
## `@source` 扫描范围排障
### 问题现象
如果你的 `uni-app` / `uni-app x` 项目把第三方插件或依赖直接放在根目录下的 `uni_modules`,同时 Tailwind 4 的 CSS 入口没有显式排除它,那么 Tailwind 4 也可能把依赖源码、README 示例文本或构建产物误当成候选,最终生成无意义样式。
### 根因
根因仍然是扫描范围过宽。Tailwind 4 会根据 `@source` 收集候选,如果把 `uni_modules` 一并扫进去,就会把第三方目录中的非业务文本也纳入提取范围。
### 推荐配置
对于 `HBuilderX` 工作流,推荐在 Tailwind 4 的 CSS 入口里显式排除:
```css title="src/main.css"
@import "tailwindcss";
@source not "unpackage";
@source not "uni_modules";
```
### 最佳实践
- `@source` 应尽量只覆盖业务源码目录
- 默认排除 `uni_modules`、`node_modules`、`dist`、`unpackage`、文档和生成产物
- 如果必须扫描某个 `uni_modules` 包,只精确包含真正承载模板类名的文件,不要扫描整个目录
这里要写 `@import "tailwindcss"`,因为 `tailwindcss-intellisense` 当前用于触发 v4 设计系统加载的判断只认 `@import "tailwindcss"` 或 `@theme {}`,并不认 `@import "weapp-tailwindcss/index.css"`。
> 添加 `@source not "unpackage";` 是为了避免 `HBuilderX` 差量编译死循环问题;再加上 `@source not "uni_modules";`,则可以避免把第三方依赖源码一并扫进 Tailwind 4 的候选集合。
:::warning
千万不要在 `uni.scss` 中去引入 `tailwindcss`, `uni.scss` 本质上走的是 `scss.additionalData`, 它会在每一个 `scss` 文件的开头,都去添加 `uni.scss` 里的文件内容
所以这相当于你每个 `scss`/ `vue` 文件里面,都加了 `tailwindcss` 引入,那 `css` 体积就爆炸了
:::
---
## Mpx(V4)
:::tip
主线接入文档已合并到 [Mpx](/docs/quick-start/frameworks/mpx)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
## 安装
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
## 配置
更改 `mpx.config.js` 注册 `weapp-tailwindcss`
```js title="mpx.config.js"
const { defineConfig } = require('@vue/cli-service')
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
const path = require('node:path')
module.exports = defineConfig({
outputDir: `dist/${process.env.MPX_CURRENT_TARGET_MODE}`,
pluginOptions: {
mpx: {
plugin: {
postcssInlineConfig: {
ignoreConfigFile: true,
plugins: []
},
srcMode: 'wx',
hackResolveBuildDependencies: ({ files, resolveDependencies }) => {
const path = require('path')
const packageJSONPath = path.resolve('package.json')
if (files.has(packageJSONPath)) files.delete(packageJSONPath)
if (resolveDependencies.files.has(packageJSONPath)) {
resolveDependencies.files.delete(packageJSONPath)
}
}
},
loader: {}
}
},
configureWebpack(config) {
// 添加的代码在这里
// highlight-start
config.plugins.push(
new WeappTailwindcss({
appType: 'mpx',
cssOptions: {
rem2rpx: true,
},
cssEntries: [
// Tailwind CSS 入口文件绝对路径
path.resolve(__dirname, './src/app.css'),
],
})
)
// highlight-end
}
})
```
> tailwindcss@4 必须配置 `cssEntries` 并且使用绝对路径,否则 `tailwindcss` 生成的类名不会参与转译。
> Mpx 的 CSS 生成也由 `WeappTailwindcss` 接管,不要再注册 Tailwind PostCSS 生成插件。
> 这里的注册目标也必须是纯 `css` 入口文件,不要把 `tailwindcss@4` 放进 `scss` / `less` / `sass` 入口里,否则样式生成和 `weapp-tailwindcss` 转译都可能失效。
## 添加样式
在 `src/app.css` 中引入 Tailwind CSS:
```css title="src/app.css"
@import "tailwindcss";
@source "../src";
```
> Tailwind CSS 4.x 使用 CSS-first 入口。`@source "../src";` 用于告诉 Tailwind 扫描 Mpx 源码目录。
然后在项目目录下,小程序全局的 `app.mpx` 中,通过 `@import` 引入该文件:
```html title="app.mpx"
```
更改好配置之后,直接启动即可
## 参考模版
https://github.com/icebreaker-template/mpx-tailwindcss-v4
---
## Tailwind CSS 4 旧入口已迁移
`/docs/quick-start/v4` 不再作为快速开始入口,也不再表示 Tailwind CSS 4 是可选或实验性的额外接入方式。当前文档默认使用 Tailwind CSS 4 生成模式;CSS-first、`@source`、`@apply`、`@layer`、IntelliSense 与多端补充说明,已经迁移到 Tailwind 专题下。
请前往 [Tailwind CSS 4 默认模式参考](/docs/tailwindcss/v4-reference)。
如果你是第一次接入项目,请从 [安装依赖](/docs/quick-start/install) 开始,再进入对应框架注册页。
---
## Taro vite
:::tip
主线接入文档已合并到 [Taro](/docs/quick-start/frameworks/taro)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
:::danger
`Taro Vite` 目前不稳定,已知 bug 较多,而且依赖链版本较老,不推荐在新项目里使用。
如果没有强依赖,优先选择 `Taro Webpack`、`uni-app`、`weapp-vite` 等更稳定的方案。
:::
## 安装
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
> `Taro Vite` 里 Tailwind CSS 生成由 `weapp-tailwindcss` 接管,不需要再额外注册 `@tailwindcss/vite` 或 `@tailwindcss/postcss`。
## 配置
```js title="config/index.ts"
import path from 'node:path'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = path.resolve(__dirname, '..')
{
compiler: {
type: 'vite',
vitePlugins: [
WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/app.css'),
],
}),
]
},
}
```
> Tailwind CSS 4 项目应显式配置 `cssEntries`,并使用项目根目录解析出的绝对路径指向纯 `.css` 入口。
> 这里说的是 Tailwind CSS 4:`cssEntries` 请指向纯 `.css` 文件,不要指向 `scss` / `less` / `sass`。业务 Sass/Less 可以继续用,但 Tailwind 4 的 `@import "tailwindcss"` 入口建议单独放在 CSS 文件里。
`cssEntries` 只负责让 `WeappTailwindcss` 稳定读取 Tailwind CSS 入口,入口 CSS 仍然要通过 Taro 入口实际引入。多入口或分包入口请都写进数组:
```js
import path from 'node:path'
const projectRoot = path.resolve(__dirname, '..')
WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/app.css'),
],
})
```
## 添加样式
在项目目录下的 `src/app.css` 中,添加以下内容:
```css title="src/app.css"
@import "tailwindcss" source(none);
@source "../src";
```
> `Taro Vite` 场景同样使用 Tailwind CSS 4 的 CSS-first 入口。小程序目标 CSS 由 `WeappTailwindcss` 输出,不需要把官方 Tailwind Vite 或 PostCSS 插件加入构建。
这里默认 Tailwind 入口在 `src/app.css`。`@source "../src";` 会扫描整个源码目录,页面、组件和你自己新增的业务目录都能覆盖到。
更改好配置之后,直接运行启动项目,微信开发者工具导入这个项目,即可看到效果。
> 再强调一次:这页内容更适合作为历史接入说明与排障参考,不建议把 `Taro Vite` 作为新的默认技术选型。
## 参考模板
https://github.com/icebreaker-template/taro-vite-tailwindcss-v4
---
## Taro webpack
:::tip
主线接入文档已合并到 [Taro](/docs/quick-start/frameworks/taro)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
## 安装
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
## 配置
### 在你的 `app.css` 里面添加
```css
@import "tailwindcss" source(none);
@source "../src";
```
这段默认你的 Tailwind 入口是 `src/app.css`,所以 `../src` 指向整个源码目录。Taro 模板里的页面、组件和后续新增目录都在 `src` 下面,不需要单独写 `pages`、`components`。
### 注册插件
在项目的配置文件 `config/index` 中注册:
```js title="config/index.[jt]s"
import path from 'node:path'
import { WeappTailwindcss } from 'weapp-tailwindcss/webpack'
// 假如你使用 js 配置,则使用下方 require 的写法
// const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
{
// 找到 mini 这个配置
mini: {
// postcss: { /*...*/ },
// 中的 webpackChain, 通常紧挨着 postcss
webpackChain(chain, webpack) {
// 复制这块区域到你的配置代码中 region start
// highlight-start
const projectRoot = path.resolve(__dirname, '..')
chain.merge({
plugin: {
install: {
plugin: WeappTailwindcss,
args: [{
// 这里可以传参数
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/app.css'),
],
}],
},
},
})
// highlight-end
// region end
}
}
}
```
> Tailwind CSS 4 项目应显式配置 `cssEntries`,同时仍要在 `src/app.ts` 或 `src/app.js` 里引入 `./app.css`。
> `weapp-tailwindcss@5` 默认接管 Tailwind CSS 样式生成,不需要再创建 `postcss.config.mjs` 注册 `@tailwindcss/postcss`。如果项目已有 PostCSS 配置,只保留非 Tailwind 的业务插件即可。
多入口、入口不在 `src/app.css` 或有分包独立入口时,把所有纯 `.css` Tailwind 入口都写进 `cssEntries`:
```js
import path from 'node:path'
const projectRoot = path.resolve(__dirname, '..')
args: [{
cssOptions: {
rem2rpx: true,
},
tailwindcssBasedir: projectRoot,
cssEntries: [
path.resolve(projectRoot, 'src/app.css'),
],
}]
```
## 运行
然后执行命令发布到微信小程序
```bash npm2yarn
npm run dev:weapp
```
微信开发者工具导入这个项目,即可看到效果
## 参考模板
https://github.com/icebreaker-template/taro-webpack-tailwindcss-v4
---
## 高阶篇:性能、兼容与团队协作
Tailwind CSS 4 带来了更强大的原生语法,但在小程序环境中仍需平衡兼容性与团队协作。本篇从工程化视角出发,帮助你在真实项目中稳定地落地、优化与维护。
## 1. 处理 `@layer` 与兼容性
小程序运行时目前对 CSS Cascade Layers 支持有限,当你引用第三方组件或自定义样式时可能出现覆盖关系错乱。`weapp-tailwindcss` 内置的 `postcss-preset-env` 可将 `@layer` 转译成传统写法来提升兼容性。
```ts title="vite.config.ts"
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
export default defineConfig({
plugins: [
WeappTailwindcss({
cssEntries: [
/* ... */
],
cssOptions: {
cssPresetEnv: {
stage: 1,
features: {
'cascade-layers': true,
},
},
},
}),
],
})
```
> 如果你只在微信小程序调试,可使用开发者工具的「自定义编译」观察处理前后的差异;若仍存在覆盖问题,可结合传统的 `!important` 或布局拆分策略。
额外提示:
- `cssOptions.cssSelectorReplacement.root` 默认包含 `['page', '.tw-root', 'wx-root-portal-content']`。当页面外的容器(例如自定义 tab bar、弹出层根节点等)需要承载 Tailwind 注入的 `--tw-*` 变量时,只需在容器上加上 `class="tw-root"` 即可复用整套预设,无需额外配置。下面是一个在自定义 tab bar 中注入主题变量的示例:
```xml title="custom-tab-bar/index.mpx"
```
搭配 `cssOptions.cssPreflight` 注入的变量或自定义 `@theme`,可以把 tab bar 的主题色、渐变背景等统一交给 Tailwind 管理。若你需要覆盖其他容器名称,仍可以通过配置把 `cssOptions.cssSelectorReplacement.root` 扩展为更多选择器。
- `cssOptions.cssPresetEnv` 会参与最终构建,请在发布前执行一次 `pnpm build:apps` 或对应的 `pnpm build` 命令确认产物
## 2. 多端共存与按需构建
团队常同时维护小程序与 H5 版本,此时可以通过多个 `@source` 区分模板范围,并结合条件编译实现按需打包:
```css title="src/app.css"
@source "../src/**/*.{vue,wxml}";
@source not "../src/**/*.h5.*"; /* 排除只用于 H5 的模板 */
@import "tailwindcss";
```
当需要拆分体积时,可以把不同业务域的样式写到各自的 `entry.css`,再将路径加入 `cssEntries`:
```ts
WeappTailwindcss({
cssEntries: [
path.resolve(import.meta.dirname, './src/app.css'),
path.resolve(import.meta.dirname, './src/features/order/app.css'),
],
})
```
这样 Tailwind 只会为实际引用的模板生成原子类,避免冗余。
## 3. 产物体积与性能优化
- **控制扫描范围**:`@source` 支持 `not` 语法,排除 `dist`、`node_modules` 等目录能显著加快增量编译
- **合理使用自定义工具类**:把相同组合提炼成 `@utility`,既减少模板体积,也方便统一调整
- **按需开启 `cssOptions.rem2rpx` / `cssOptions.px2rpx`**:在仅小程序端需要 rpx 的情况下,可以在多端构建中动态开启
- **缓存管理**:Tailwind 会在 `.tailwind` 写入缓存。CI 环境可缓存该目录以提升构建速度,发布前若需彻底清理运行 `pnpm exec tailwindcss --config tailwind.config.js --clean` 或直接删除缓存目录
## 4. 调试与质量保障
- **可视化定位**:使用 `outline` 类临时标记组件边界,例如在调试时加上 `outline outline-1 outline-dashed outline-brand/60`
- **断言样式存在**:核心组件可引入快照测试或 DOM 断言,结合 Vitest + @testing-library 验证关键类名
- **lint 约束**:在 `eslint-plugin-tailwindcss` 或团队约定的 lint 规则中,限制自定义类名必须通过 `@utility`
- **回归验证**:Tailwind 升级时执行 `pnpm test`, `pnpm e2e` 确认核心链路稳定,同时在主流机型(尤其是低版本安卓)上真机预览
## 5. 升级与维护策略
1. **版本对齐**:Tailwind 4 迭代频繁,升级前先在 `CHANGELOG` 与 GitHub Release 查 Breaking Change,再在测试分支试跑。
2. **切分 Changeset**:对外发布库时遵循 [Changesets](https://github.com/changesets/changesets) 约定,确保依赖者知道何时需要手动介入。
3. **文档同步**:团队内部记录 `@utility`、`@theme` 的设计规范,推荐把核心样式写进 Storybook 或内部组件示例库。
4. **遇到问题及时回馈**:`weapp-tailwindcss` 社区对 Tailwind 4 的需求反馈快速,遇到兼容问题可通过 Issue 或 PR 参与共建。
至此,你已经掌握了 Tailwind CSS 4 在小程序中的完整落地思路:从环境搭建、组件实践到性能与协同。结合现有的框架集成文档,就能为新成员提供一套体系化的学习路径。
---
## 入门篇:快速认识 Tailwind CSS 4 与 weapp-tailwindcss
Tailwind CSS 4 把配置入口移到 `CSS`:主题变量与自定义工具都可以用原生语法声明。`weapp-tailwindcss` 已经适配这套编译流程。本篇用 30 分钟搭好一套 `tailwindcss@4` + `weapp-tailwindcss` 的基础开发环境,并说明几个必须看懂的配置点。
## 本篇能学到什么
- 搭建一套可运行的 Tailwind CSS 4 + 小程序项目骨架
- 分清核心配置(`@source`、`@reference`、`cssEntries` 等)各自负责的事情
- 理解 v5 生成模式为什么只需要注册 `WeappTailwindcss` 构建器插件
- 掌握验证样式是否生效的最小闭环,避免“写了没生效”的常见坑
如果你还未接触过 `weapp-tailwindcss`,建议先浏览 [安装依赖](/docs/quick-start/install) 和对应框架接入页,了解插件能解决的问题,再回来完成 4.x 的配置。
## 环境准备
| 名称 | 说明 |
| --- | --- |
| Node.js `>=22.12.0` | `weapp-tailwindcss@5.2.0` 起的最低版本,默认支持从 CommonJS 加载 ESM |
| pnpm ≥ 8 | Monorepo 与文档项目统一使用 `pnpm` |
| 小程序框架 | 任选 `weapp-vite`、`uni-app`、`taro` 等,推荐使用现成模板 |
| 代码编辑器 | VS Code 并安装 `Tailwind CSS IntelliSense` 插件 |
初始化项目后,执行一次 `pnpm install` 以及框架 CLI 的初始化命令(如 `pnpm create @tarojs/cli`)。随后即可进入 Tailwind CSS 配置步骤。
## 步骤一:安装依赖
在项目根目录执行:
```bash npm2yarn
npm install -D tailwindcss@latest weapp-tailwindcss
```
> `weapp-tailwindcss@5` 默认启用生成模式,大部分 Vite / Webpack 小程序项目只需要注册 `WeappTailwindcss`。不要再额外注册 `@tailwindcss/vite` 或 `@tailwindcss/postcss`。
通过 HBuilderX 运行 `uni-app` / `uni-app x` 时,还需要 HBuilderX `>=5.11`。
## 步骤二:注册 weapp-tailwindcss 插件
以 `weapp-vite` 为例(不同框架请对照对应的 [默认模式参考](/docs/tailwindcss/v4-reference) 和框架注册页):
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'weapp-vite/config'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
WeappTailwindcss({
cssEntries: [
resolve(projectRoot, 'src/app.css'),
],
// 常用内置能力:开启 px 自动转换
cssOptions: {
rem2rpx: true,
},
}),
],
})
```
Tailwind CSS 4 项目应显式配置 `cssEntries`。它让 `WeappTailwindcss` 稳定读取入口 CSS 里的 `@import "tailwindcss"`、`@source`、`@config` 与运行时 class 来源,避免不同框架、不同平台的构建图差异导致样式缺失。
`cssEntries` 不是替代 import 的开关。入口 CSS 仍然要通过框架的全局样式入口或业务入口文件被实际引入,否则框架不会生成对应 CSS 资产。多个 Tailwind CSS 入口、分包入口、独立分包入口都要写进同一个 `cssEntries` 数组。
## 步骤三:检查 PostCSS 配置
生成模式下不需要为了 Tailwind CSS 新增 `postcss.config.js`。如果项目已经有 PostCSS 配置,保留业务自己的插件即可;请不要在这里注册 `@tailwindcss/postcss` 或 `tailwindcss`,否则会和 `WeappTailwindcss` 形成两套 Tailwind 生成链路。
## 步骤四:创建入口 CSS
在 `src/app.css` 中写入:
```css title="src/app.css"
@import "tailwindcss";
/* 声明模板扫描路径,确保原子类能被收集 */
@source "../src/**/*.{vue,tsx,jsx,svelte,wxml}";
/* 需要自定义设计令牌时可在此编写 */
@theme {
--color-brand: oklch(67% 0.2 264);
--spacing-safe: clamp(12px, 1.2vw + 8px, 24px);
}
```
`@source` 是 Tailwind 4 的新写法,用于替代旧版本的 `content` 配置。路径请根据项目结构调整。若你需要在局部样式文件使用 `@apply`,在对应文件顶部添加 `@reference "./app.css";`。
## 步骤五:验证类名是否生效
创建一个最小页面(以 `src/pages/index/index.vue` 为例):
```html title="src/pages/index/index.vue"
Tailwind CSS 4
欢迎来到 weapp-tailwindcss
现在可以尝试修改 bg-brand 或自定义 utility。
```
> `py-safe` 是我们在上文 `@theme` 中声明的自定义变量(通过 `--spacing-safe` 导出),可验证主题自定义是否生效。
运行框架命令(如 `pnpm dev:weapp` 或 `pnpm run build -- --watch`),查看开发者工具中的页面是否渲染出预期样式。如果没有:
- 确认 `@source` 是否包含当前文件扩展名
- 确认入口 CSS 是否被构建器引入,并检查 `cssEntries` 是否指向这些已经被项目引入的入口 CSS
- 若在单文件组件内使用 `@apply`,确保添加了 `@reference`
## 常见下一步
- 阅读 [Tailwind CSS 4 官方文档](https://tailwindcss.com/docs/installation) 了解更多原生指令
- 针对不同框架的集成细节,请查阅「🧪Tailwind CSS @4.x」分类中的各篇文档
- 想理解 `@layer` 在小程序下的降级方案,可继续阅读本教程的 [进阶篇](/docs/quick-start/v4/tutorial/workflow) 与 [高阶篇](/docs/quick-start/v4/tutorial/advanced)
完成本篇后,可以继续看真实组件里的写法,重点关注 `@source`、`@reference` 和小程序目标 CSS 的输出结果。
---
## 进阶篇:用 Tailwind CSS 4 构建真实页面
基础环境搭建完成后,真正的挑战来自“如何把抽象的原子类应用到真实业务”。本篇精选小程序常见的页面模块,结合 `tailwindcss@4` 的新指令,总结出一套从设计拆解到代码落地的流程。
## 工具优先的心智模型
Tailwind CSS 的核心不在于背公式,而是把 UI 拆成「布局」「排版」「状态」三个维度,然后使用类名组合快速拼装。Tailwind 4 进一步引入 `@theme`、`@utility` 等指令,让自定义能力与项目约束保持同步:
- `@theme` 管理设计令牌:颜色、间距、字号、阴影等
- `@utility` 声明可复用的工具类,代替传统的 `.btn { ... }`
- `@variant` / `@custom-variant` 管理状态类(如 `dark:` 与业务属性状态)
掌握这些指令后,就可以在不离开 CSS 语法的前提下扩展 Tailwind。
:::note 小程序交互状态
小程序不支持 CSS `:active`。`weapp-tailwindcss` 默认从小程序样式产物中删除 `active:*` 生成的 selector,但 H5 与 App 的 Web 构建仍会保留。小程序按压反馈应优先使用组件的 `hover-class`。
:::
## 1. 拆解一个卡片组件
以「订单卡片」为例,先在 `src/components/order-card/index.vue` 写出骨架:
```html title="src/components/order-card/index.vue"
{{ createdAt }}
{{ amount }}
```
接下来在 `src/components/order-card/index.css` 中使用 Tailwind 原子类重构:
```css title="src/components/order-card/index.css"
@reference "../../app.css";
/* 使用 @utility 提升可读性 */
@utility order-card {
@apply block rounded-3xl bg-white shadow-lg shadow-slate-200/70 p-5 space-y-4;
}
@utility order-card__header {
@apply flex items-center justify-between gap-3;
}
@utility order-card__title {
@apply text-base font-semibold text-slate-900;
}
@utility order-card__meta {
@apply flex items-center justify-between text-sm text-slate-500;
}
@utility order-card__status {
@apply inline-flex items-center gap-1 rounded-full px-3 py-1 text-xs font-medium uppercase tracking-[0.28em];
}
/* 通过 @variant 声明业务状态 */
@custom-variant status-pending (&[data-status="pending"]);
@custom-variant status-finished (&[data-status="finished"]);
@custom-variant status-failed (&[data-status="failed"]);
.order-card__status {
@apply status-pending:bg-amber-100 status-pending:text-amber-600;
@apply status-finished:bg-emerald-100 status-finished:text-emerald-600;
@apply status-failed:bg-rose-100 status-failed:text-rose-600;
}
```
关键点:
- 使用 `@reference` 让局部样式文件继承入口 CSS 中的主题与工具
- `@utility` 让类名语义化,同时还能继续 `@apply` 原子类
- `@custom-variant`(Tailwind 4 新增)能让业务状态转换成语义化前缀
最后在组件实例上应用:
```html title="src/pages/index/index.vue"
自动续费:
```
## 2. 构建可复用的设计令牌
Tailwind 4 把主题抽象为原生 CSS 变量。你可以在 `app.css` 中集中维护令牌,再通过 `@theme` 输出:
```css title="src/app.css" {2-7}
@import "tailwindcss";
@theme {
--color-brand: oklch(66% 0.21 268);
--color-brand-muted: oklch(80% 0.04 268);
--radius-xl: 24px;
--shadow-elevated: 0 18px 40px -20px rgb(99 102 241 / 45%);
}
```
然后在业务样式中直接引用这些变量,或结合 Tailwind 的 `bg-[...]` 写法:
```css
.order-card {
@apply shadow-[var(--shadow-elevated)];
}
.order-card__status {
@apply status-finished:bg-[var(--color-brand-muted)] status-finished:text-[var(--color-brand)];
}
```
得益于 CSS 变量特性,你还可以在不同页面覆写 `:root` 或对应容器的变量,以实现主题切换。
## 3. 管理复杂布局与响应式
小程序虽然没有传统意义上的宽度断点,但我们仍可以借助媒体查询、`min()` / `max()` 等函数实现容错布局:
```css
@layer utilities {
@responsive {
@media (min-width: 560px) {
.md\\:card-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: clamp(16px, 4vw, 36px);
}
}
}
}
```
在页面中配合默认的原子类即可:
```html
```
对于需要横向滚动的卡片,Tailwind 4 提供的 `snap-x`, `snap-mandatory`, `snap-center` 等类仍旧适用,不同端的处理逻辑交给 `weapp-tailwindcss`。
## 4. 多文件协作与团队约定
当项目迎来多人协作时,建议遵循以下约定:
1. **入口 CSS 只做聚合**:集中维护 `@import`、`@source` 与 `@theme`,其余逻辑拆到独立文件。
2. **组件目录内固定 `index.css`**:组件内声明 `@utility`、`@apply`,并写在组件同名文件夹下,便于按需引用。
3. **公共工具抽成包**:例如 `src/styles/utilities/forms.css`,内部声明所有表单相关的 `@utility`。
4. **lint 与提示配置**:确保团队成员的 VS Code `tailwindCSS.experimental.classRegex` 包含 `.wxml`、`.vue` 等模板。
## 5. 调试与性能提示
- Tailwind 4 的编译沿用增量模式,`pnpm run:watch` 时生成的原子类会写入缓存。需要彻底清理时删除 `.tailwind`、`node_modules/.cache/tailwind`。
- 小程序开发者工具不支持 `@layer`,若遇到覆盖问题,可以开启 `cssOptions.cssPresetEnv` 的降级行为,详情见 [高阶篇](/docs/quick-start/v4/tutorial/advanced)。
- 借助 `pnpm dev:h5`(部分框架提供)可快速在浏览器预览,调试完后再回到真机验证。
完成本篇后,你应该可以把 Tailwind 应用到实际业务模块,并形成一套可复用的组件写法。接下来,我们会关注性能优化、跨端适配与团队协作等更高阶的话题。
---
## HBuilderX
:::tip
主线接入文档已合并到 [uni-app HBuilderX 使用方式](/docs/quick-start/frameworks/hbuilderx)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
:::caution
这条 `HBuilderX(uni-app)` 路线对应 `Vue3 + Vite`,属于推荐方案。
如果你已经使用 `HBuilderX` 工作流、插件生态或发布流程,可以直接按本文接入;如果你希望更贴近当前仓库推荐的开发方式,也可以评估 [weapp-vite](/docs/quick-start/v4/weapp-vite)。
:::
---
## uni-app cli vue3 vite(V4)
:::tip
主线接入文档已合并到 [uni-app CLI Vue3 Vite](/docs/quick-start/frameworks/uni-app-vite)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
## 1. 安装
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
## 2. 配置 `vite.config.ts`
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
uni(),
WeappTailwindcss({
cssEntries: [
resolve(projectRoot, 'src/app.css'),
],
cssOptions: {
rem2rpx: true,
},
}),
],
});
```
> Tailwind CSS 4 项目应显式配置 `cssEntries`,并使用项目根目录解析出的绝对路径指向纯 `.css` 入口。
> `cssEntries` 只负责让 `WeappTailwindcss` 稳定读取入口中的 `@source` / `@config` / Tailwind 指令,入口 CSS 仍然要通过 `App.vue`、`main.ts` 或框架全局样式入口实际引入到项目里。
> Tailwind CSS 4 入口建议放在纯 `.css` 文件里,不要直接写进 `scss`、`less` 等预处理样式文件。
## 3. 添加样式
接着直接运行 `npm run dev:mp-weixin`,
微信开发者工具导入这个项目,即可看到效果
## 参考模板
[uni-app-tailwindcss-v4](https://github.com/icebreaker-template/uni-app-tailwindcss-v4)
---
## uni-app cli vue2 webpack(V4)
:::tip
主线接入文档已合并到 [uni-app CLI Vue2 Webpack](/docs/quick-start/frameworks/uni-app)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
:::caution
这条 `uni-app cli vue2 webpack` 路线已经不推荐,仓库中的对应 classic demo 也已经移除。
请优先使用 [uni-app cli vue3 vite](/docs/quick-start/v4/uni-app-vite)。
:::
## 安装
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
## 配置
### 创建 `vue.config.js`
```js title="vue.config.js"
const { WeappTailwindcss } = require('weapp-tailwindcss/webpack')
const path = require('node:path')
/**
* @type {import('@vue/cli-service').ProjectOptions}
*/
const config = {
// some option...
configureWebpack: (config) => {
config.plugins.push(
new WeappTailwindcss({
cssOptions: {
rem2rpx: true,
},
cssEntries: [
// Tailwind CSS 入口文件绝对路径
path.resolve(__dirname, './src/app.css'),
],
})
)
}
// other option...
}
module.exports = config
```
> tailwindcss@4 必须配置 `cssEntries` 并且使用绝对路径,否则 `tailwindcss` 生成的类名不会参与转译。
## PostCSS 配置
`weapp-tailwindcss@5` 默认由 Webpack 插件接管 Tailwind CSS 样式生成,不需要再在 `postcss.config.js` 里注册 `@tailwindcss/postcss`。如果这个存量项目已经有 PostCSS 配置,只保留 `postcss-import`、`autoprefixer`、`@dcloudio/vue-cli-plugin-uni/packages/postcss` 等非 Tailwind 插件即可。
## 添加样式
然后直接运行到小程序,微信开发者工具导入这个项目,即可看到效果
## 说明
本文仅为存量项目迁移和排查保留,不再提供推荐模板。
---
## uni-app x(V4)
:::info 运行环境要求
使用 `weapp-tailwindcss@5.2.0` 或更高版本时,需要 Node.js `>=22.12.0` 和 HBuilderX `>=5.11`。Node.js 22 从 `22.12.0` 开始默认支持从 CommonJS 加载 ESM;较旧的 HBuilderX 内置 Node 可能无法加载当前依赖。
:::
:::tip
主线接入文档已合并到 [uni-app x](/docs/quick-start/frameworks/uni-app-x)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
`weapp-tailwindcss@5` 可以在 HBuilderX 的 uni-app x 项目中接入 Tailwind CSS 4。当前仓库用本地 HBuilderX E2E 覆盖了 Web、微信小程序、Android、iOS、鸿蒙,以及 Web HMR 任意值类名连续新增场景。
:::info 本地验证
HBuilderX、开发者工具和 App 模拟器都依赖开发机环境,所以小程序与 App E2E 只在本地跑,不进入 CI/CD。
```bash npm2yarn
npm run e2e:hbuilderx:local
npm run e2e:hbuilderx:local:web
npm run e2e:hbuilderx:local:mp
npm run e2e:hbuilderx:local:android
npm run e2e:hbuilderx:local:ios
npm run e2e:hbuilderx:local:harmony
```
:::
## 安装
```bash npm2yarn
npm init -y
npm install -D tailwindcss weapp-tailwindcss
```
## 注册插件
uni-app x 要使用 `uniAppX` 预设。Tailwind CSS 4 的入口应放在纯 `.css` 文件里,并通过 `cssEntries` 显式传入绝对路径。
```ts title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import { uniAppX } from 'weapp-tailwindcss/presets'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
uni(),
WeappTailwindcss(
uniAppX({
base: projectRoot,
cssEntries: [resolve(projectRoot, 'main.css')],
rem2rpx: true,
}),
),
],
})
```
不要再注册 `@tailwindcss/postcss` 或 `@tailwindcss/vite`。小程序和 App 目标下的 Tailwind 生成、类名转译与单位处理都由 `weapp-tailwindcss` 接管。
:::info Web 与 App 调试注意
`cssEntries` 用来告诉 `weapp-tailwindcss` Tailwind CSS 4 的入口文件,入口仍应是 HBuilderX / Vite 能处理到的真实 CSS 文件。Web/H5、Android 和 iOS 都需要保持 `appType: 'uni-app-x'`,不要因为运行到 Web 端手动关闭 `uniAppX`,否则 `.uvue` 模板里的任意值类名不会转换成安全选择器。
`rem2rpx`、`unitsToPx`、`unitConversion` 是 `uniAppX()` 预设的顶层选项,不要放进 `cssOptions`。
:::
## 添加 CSS 入口
```css title="main.css"
@import "tailwindcss" source(none);
@source "./App.uvue";
@source "./pages/**/*.{uts,uvue}";
@source "./components/**/*.{uts,uvue}";
@source "./stores/**/*.{uts,uvue}";
@source not "./uni_modules/**/*";
@source not "./unpackage/**/*";
```
`@source` 要覆盖页面、组件和可能产出类名的脚本目录。不要把 `unpackage` 放进扫描范围,否则 HBuilderX 产物会反过来干扰开发构建。
## 在 App.uvue 中引入入口
`cssEntries` 不会把 CSS 自动加入 HBuilderX / Vite 模块图,必须在全局样式中实际导入:
```html title="App.uvue"
```
缺少这个导入时,候选扫描仍可能成功,但 Web、小程序和 App 页面不会加载生成样式。
## 验证任意值类名
在任意页面写一段最小用例:
```html
Tailwind CSS 4
```
依次运行到 Web、微信小程序和目标 App 平台后,检查元素样式是否生效。仓库里的 App E2E 也会向页面追加 `bg-[#102938] text-[#f7fbff] w-[173px]`,再检查 HBuilderX 产物里是否出现转译后的类名。
## 布局限制
- `uni-app x` 中不要依赖 `gap`、`gap-x-*`、`gap-y-*`
- `space-x-*`、`space-y-*` 也不要作为跨端间距方案
- 原生 App 端文本使用 ``,文本相关样式要直接写在 `` 上
- 需要跨端稳定的间距时,直接给子项写 `mt-*` / `ml-*`,或封装固定结构的间距组件
## 参考模板
- [仓库内 Tailwind CSS v4 demo](https://github.com/sonofmagic/weapp-tailwindcss/tree/next/demo/uni-app-x-hbuilderx-tailwindcss-v4)
---
## Weapp-vite
:::tip
主线接入文档已合并到 [原生小程序 / weapp-vite](/docs/quick-start/native/install)。本页保留给旧链接和 Tailwind CSS 4 专项排障。
:::
## 安装
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
## 配置
更改 `vite.config.ts` 注册 `weapp-tailwindcss`
```js title="vite.config.ts"
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
import { defineConfig } from 'weapp-vite/config'
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
WeappTailwindcss({
cssEntries: [
resolve(projectRoot, 'app.css'),
],
cssOptions: {
rem2rpx: true,
},
}),
],
})
```
`weapp-tailwindcss@5` 默认启用生成模式,不需要再注册 `@tailwindcss/vite` 或 `@tailwindcss/postcss`。如果项目已有 `postcss.config.js`,可以继续保留业务自己的 PostCSS 插件,但请移除 Tailwind 官方生成插件。
Tailwind CSS 4 项目应显式配置 `cssEntries`,让 `WeappTailwindcss` 稳定读取 `app.css` 这类 Tailwind CSS 入口。`cssEntries` 只负责入口识别,入口 CSS 仍然要通过项目入口实际引入。
## 添加样式
在项目目录下,小程序全局的 `app.css` 中,添加以下内容:
```css title="app.css"
@import "tailwindcss";
@source "./src/**/*.{wxml,js,ts,vue}";
@source "./app.{js,ts,json}";
@source not "./dist";
```
更改好配置之后,直接启动即可
---
## Web 直接使用
`weapp-tailwindcss` 可以直接用于纯 Web 项目。它适合小程序、H5/Web 共用同一套 Tailwind CSS 生成链路,或者在普通 Vite Web 项目里验证浏览器原生输出。
## 安装依赖
如果项目已经安装过 `tailwindcss` 和 `weapp-tailwindcss`,可以跳过这一步。
```bash npm2yarn
npm install -D tailwindcss weapp-tailwindcss
```
## 准备 CSS 入口
入口 CSS 仍然要被 Web 项目实际引入。`cssEntries` 只负责让 `weapp-tailwindcss` 稳定读取这个入口里的 `@import "tailwindcss"`、`@source` 与 `@config`,不会替代 Vite 生成 CSS 资产。
```ts title="src/main.ts"
import './style.css'
```
```css title="src/style.css"
@import "tailwindcss";
@source "./**/*.{html,js,ts,jsx,tsx,vue}";
```
## 注册 Vite 插件
纯 Web 项目建议显式配置 `generator.target: 'web'`。这样生成结果会保留浏览器原生 Tailwind CSS 选择器,不会生成小程序转义后的 class。
```ts title="vite.config.ts"
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vite'
import { WeappTailwindcss } from 'weapp-tailwindcss/vite'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
WeappTailwindcss({
generator: {
target: 'web',
},
cssEntries: [
path.resolve(__dirname, 'src/style.css'),
],
}),
],
})
```
选择这条链路后,不要再同时注册 `@tailwindcss/vite` 或 `@tailwindcss/postcss` 来生成同一份 Tailwind CSS。Taro H5、uni-app H5、Mpx Web、Weapp-vite Web 等多端框架会按环境变量自动切到 `web` 目标;自定义 Web 构建或纯 Vite 项目建议显式配置。更多目标判断规则见 [跨多端开发 CSS 兼容](/docs/multi-platform)。
---
## wxs的转义与处理
:::info
`2.5.2+` 版本中,已经添加了对 `wxs`,`sjs`等视图层运行 `js` 的转义和处理,默认关闭
具体见配置项:
- [`wxsMatcher`](/docs/api/options/matchers#wxsmatcher)
- [`inlineWxs`](/docs/api/options/matchers#inlinewxs)
:::
---
## Tailwind CSS 4 默认模式参考
:::info
当前版本的 `weapp-tailwindcss` 已经默认按 Tailwind CSS 4 生成模式组织配置与文档。本页不是新的快速开始入口,而是补充说明默认模式下仍需要理解的 CSS-first、`@source`、`cssEntries`、`@apply`、`@layer`、IntelliSense 与多端兼容细节。
第一次接入请从 [安装依赖](/docs/quick-start/install) 和对应框架注册页开始;从 v3 或旧 v4 示例迁移时,再回到本页核对需要保留或删除的配置。
:::
本页只维护 Tailwind CSS 4 默认生成模式相关说明;Tailwind CSS 3 或历史实验接入方式请优先参考迁移文档。
## 定位的变化: 样式预处理器
`tailwindcss@4` 存在定位的重大变更
它直接变成了一个样式预处理器,和原生 `css` 已经它的规范相结合,相辅相成。
所以你在 `4.x` 版本中,不应该让 `tailwindcss` 和 `sass`,`less`,`stylus` 一起使用
详见: https://tailwindcss.com/docs/compatibility#sass-less-and-stylus
## 集成选择
`tailwindcss` 集成上提供了多种选择(`cli`、`vite`、`postcss`)。在 `weapp-tailwindcss@5` 的生成模式下,大部分小程序项目不再直接注册这些官方 Tailwind 构建插件,而是只注册 `weapp-tailwindcss` 自己的构建器插件:
1. Vite 项目注册 `weapp-tailwindcss/vite` 的 `WeappTailwindcss`。
2. Webpack 项目注册 `weapp-tailwindcss/webpack` 的 `WeappTailwindcss`。
3. Tailwind CSS 4 由 `WeappTailwindcss` 读取配置并生成目标 CSS。
4. `postcss.config.js` 里不再注册 `@tailwindcss/postcss` 或 `tailwindcss` PostCSS 插件。
这样可以避免同一个构建里同时存在两套 Tailwind 生成链路:官方 Tailwind 插件先生成一次浏览器 CSS,`weapp-tailwindcss` 再尝试二次后处理。生成模式会直接输出小程序目标 CSS,并让模板 / JS 类名转译共享同一份 `classSet`。
Mpx 也使用 `weapp-tailwindcss/webpack` 的 `WeappTailwindcss` 接管 CSS 生成、模板与 JS 转译。不要再为 Tailwind CSS 额外注册 PostCSS 生成插件。
## 小程序样式入口
在 v5 生成模式下,小程序 CSS 入口直接写 `@import "tailwindcss"`,`WeappTailwindcss` 会按默认 `target: 'weapp'` 生成小程序目标 CSS。存量项目里如果还看到 `@import "weapp-tailwindcss/index.css"`,建议迁移为 Tailwind 官方 CSS-first 入口写法。
### 为什么统一写 `@import "tailwindcss"`?
`tailwindcss@4` 的配置、主题变量和扫描范围都从 CSS 入口读取。统一使用 `@import "tailwindcss"` 可以让 Tailwind 官方 IntelliSense、`@source`、`@theme` 和 `WeappTailwindcss` 生成器读取同一份入口。小程序不支持或不适合直接保留的选择器、`@layer` 与浏览器 preflight,会在 `WeappTailwindcss` 输出小程序 CSS 时处理。
### 多端开发
假如你需要进行多端的开发,那么可以使用对应框架的样式条件编译写法,比如 `uni-app`:
`uni-app` / `uni-app x` / `Taro` / `Mpx` / `Weapp-vite` 这类多端或多构建入口项目,建议在 H5/Web 与小程序构建里都保留 `WeappTailwindcss`:插件会按环境变量把 H5/Web 生成器目标切到 `web`,小程序目标继续输出小程序 CSS。两端可以共享同一个包含 `@import "tailwindcss"`、`@theme` 和 `@source` 的 CSS 文件,但不要在同一个多端构建里同时注册两套 Tailwind 生成插件。只有独立 Web 应用不经过小程序构建链路时,才适合继续单独使用 Tailwind 官方 Vite/PostCSS 插件。
详见 https://uniapp.dcloud.net.cn/tutorial/platform.html
## css 作为配置文件
由于在 `tailwindcss@4` 中,配置文件默认为一个 `css` 文件,所以需要让 `weapp-tailwindcss` 能稳定找到你的入口 `css` 文件。
Tailwind CSS 4 项目应显式配置 `cssEntries`,让 `weapp-tailwindcss` 和 `tailwindcss` 保持一致的处理模式。多入口、分包、独立分包、Webpack、Gulp、自定义构建和多平台构建都应该写清楚这些入口,并使用项目根目录解析出的绝对路径。`cssEntries` 只负责入口识别,入口 CSS 仍然要被项目实际 import 或纳入构建图。
> `cssEntries` 为一个数组,就是你写 `@import "tailwindcss";` 的那些 CSS 入口文件,可以有多个。请使用绝对路径。
```ts
{
cssEntries: [
// Tailwind CSS 入口文件
// 比如 tarojs
path.resolve(__dirname, '../src/app.css')
// 比如 uni-app (没有 app.css 需要先创建,然后让 `main` 入口文件引入)
// path.resolve(__dirname, './src/app.css')
],
}
```
不要漏掉 `cssEntries`。一旦构建图拆分、分包 CSS 独立输出或平台产物名变化,缺少显式入口就可能导致 CSS 没生成、JS 字符串 class 已转译但缺少对应样式。
:::warning 只注册到 CSS,不要注册到预处理样式文件
`tailwindcss@4` 的入口请只放在 `.css` 文件里,例如 `app.css`。
不要把 `@import "tailwindcss"` 或对应的 `cssEntries` 指向 `scss`、`less`、`sass` 这类预处理样式文件,否则很容易导致最终样式生成失败,或者 `weapp-tailwindcss` 转译失效。
推荐做法是:
1. 新建一个纯 `css` 入口文件,例如 `src/app.css`
2. 只在这个 `css` 文件里写 `@import "tailwindcss";`
3. 再让业务里的 `scss` / `less` 去间接引用这个 `css`,或者由主入口文件引入它
:::
> 插件会自动根据已安装的 Tailwind 版本开启 v4 模式。只有在调试自定义 `tailwindcss` 目录或多版本共存时,才需要在 `tailwindcss` 配置里手动指定 `version`。
## 使用 @apply
如果你想在 页面或者组件独立的 `CSS` 模块中使用 `@apply` 或 `@variant`,你需要使用 `@reference` 指令,来导入主题变量、自定义工具和自定义变体,以使这些值在该上下文中可用。
```css
/* 到你引入 tailwindcss 的 css 相对路径 */
@reference "../../app.css";
/* 如果你只使用默认主题,没有自定义,你可以直接 reference tailwindcss */
@reference "tailwindcss";
```
详见: https://tailwindcss.com/docs/functions-and-directives#reference-directive
## @layer 在小程序的降级方案
`tailwindcss@4` 使用原生的 `@layer` 去控制样式的优先级
> 如果你不知道什么是 `@layer`,你可以阅读这篇文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/@layer
但是像 `uni-app` / `taro` 这种框架,默认都是直接引入很多内置样式的。
于是就会出现下方尴尬的情况: 优先级 `(0,1,0)` 的 `class` 选择器样式无法覆盖 `(0,0,1)` 的标签选择器样式:

这种情况,你就非常需要兼容性降级方案,即使用 [`postcss-preset-env`](https://www.npmjs.com/package/postcss-preset-env)(`weapp-tailwindcss` 已经内置了这个插件,可通过 [`cssOptions.cssPresetEnv`](/docs/api/options/important#cssoptions) 配置)。
这在开发需要兼容低版本移动端 h5 的时候很重要。
## 使用 pnpm
默认使用 `pnpm` 的时候,由于 `pnpm` 是无法使用幽灵依赖的
但是 `uni-app`/`taro` 出于一些历史原因,是需要幽灵依赖的,这时候可以在项目下创建 `.npmrc` 添加内容如下
```txt title=".npmrc"
shamefully-hoist=true
```
然后重新执行 `pnpm i` 安装包即可运行
## 智能提示
目前 `tailwindcss@4` 的 VS Code `Tailwind CSS IntelliSense` 插件,会优先从它识别到的 Tailwind 入口里推导配置与候选类名。
在小程序项目里,现在推荐直接写 `@import "tailwindcss";`。这样既符合 Tailwind CSS 4 的 CSS-first 入口,也能让 `WeappTailwindcss` 在生成模式下输出小程序目标 CSS。
相关修复可以关注这个 PR:
- https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1557
根据 `tailwindcss-intellisense` 当前实现,真正生效的做法是显式配置 `tailwindCSS.experimental.configFile`。对于 `tailwindcss@4`,这里传入的不是 `tailwind.config.js`,而是你的 **CSS 入口文件**。
如果项目只有一个入口,直接把它指向实际使用的那个 `app.css` 即可:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": "src/app.css"
}
```
这样配置后,扩展会直接把 `src/app.css` 当成 Tailwind 4 项目入口来加载,恢复补全、悬浮提示和诊断。
如果你的项目有多个 Tailwind 入口,则改用对象写法,把每个 CSS 入口映射到对应的文件范围:
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": {
"packages/a/src/app.css": "packages/a/src/**",
"packages/b/src/app.css": "packages/b/src/**"
}
}
```
如果你仍然想额外创建一个只给编辑器使用的 CSS 文件,也必须把这个文件写进 `tailwindCSS.experimental.configFile`,仅仅在 `App.vue` 里引入它并不会让 IntelliSense 绑定到该入口。
下面是一个编辑器专用入口的可选写法:
```css title="main.css"
@import "tailwindcss";
@source not "dist";
@source not "../src/uni_modules";
```
```json title=".vscode/settings.json"
{
"tailwindCSS.experimental.configFile": "src/main.css"
}
```
这个 `main.css` 只用于 IntelliSense,不需要也不应该在实际应用入口里引入。业务真正生效的入口仍然是你的 `app.css` 里的 `@import "tailwindcss"`。
这里必须使用 `@import "tailwindcss"`,而不是 `@import "weapp-tailwindcss/index.css"` 或 `@import "weapp-tailwindcss/theme.css"`。原因是 `tailwindcss-intellisense` 当前源码里,真正决定是否按 v4 设计系统加载的是 `packages/tailwindcss-language-server/src/util/v4/design-system.ts` 里的 `isMaybeV4()`,它只检查:
- `@import "tailwindcss"`
- `@theme {}`
也就是说:
- `@import "weapp-tailwindcss/index.css"`:不会触发这段 v4 识别
- `@import "weapp-tailwindcss/theme.css"`:同样不会触发
- `@import "tailwindcss"`:可以稳定触发 v4 IntelliSense
如果你的项目不是 `dist` 目录,而是 `unpackage`、`build` 等其他输出目录,请把 `@source not "dist";` 改成自己的实际产物目录。
## `uni-app` / `uni-app x` 项目里的 `@source` 扫描范围排障
### 问题现象
当 `uni-app` 项目把第三方插件或依赖放在 `src/uni_modules` 下,或者 `HBuilderX` / `uni-app x` 项目把依赖放在根目录 `uni_modules` 下时,如果 Tailwind 4 的 CSS 入口没有显式排除这些目录,扫描阶段就可能把依赖源码中的正则片段、README 示例文本或构建产物误识别为候选。
最终表现通常不是业务代码真的写了这些类名,而是产物里平白多出很多无意义样式,增加排查成本。
### 根因
根因是扫描范围过宽,把第三方源码、README 示例文本或构建产物误当成候选。
### 推荐配置
命令行 `uni-app` 项目推荐:
```css
@source not "../src/uni_modules";
```
`HBuilderX` / `uni-app x` 项目推荐:
```css
@source not "uni_modules";
```
同时保留对实际构建产物目录的排除,例如:
```css
@source not "dist";
```
或:
```css
@source not "unpackage";
```
### 最佳实践
- `@source` 应尽量只覆盖业务源码目录
- 默认排除 `uni_modules`、`node_modules`、`dist`、`unpackage`、文档和生成产物
- 如果必须扫描某个 `uni_modules` 包,应只精确包含真正承载模板类名的文件,而不是全量扫描整个目录
> **注意**:从 `tailwindcss-intellisense` 的源码来看,`experimental.configFile` 在 v4 下支持 `string` 和 `object` 两种形式,路径会相对于工作区或 `.code-workspace` 文件解析。关键是“显式声明 CSS 入口”,并且这个入口本身要满足它的 v4 识别条件。
## 如何去除 preflight 样式
使用 `@import "tailwindcss"` 时,`WeappTailwindcss` 会按当前 Tailwind 主版本注入小程序可用的基础 reset。
### 什么是 preflight 样式
一些全局的 `reset` 样式,用来让一些标签行为统一的,比如你在你的样式中,看到的:
```css
view,text,::before,::after,::backdrop {
box-sizing: border-box;
margin: 0;
padding: 0;
border: 0 solid;
}
```
类似这样的就是 `weapp-tailwindcss` 给你的应用注入的 `preflight` 样式
### 解决方案
如果你确认不需要这段基础 reset,可以在 `WeappTailwindcss` 里关闭:
```ts
WeappTailwindcss({
cssOptions: {
cssPreflight: false,
},
})
```
如果只是要覆盖其中一部分声明,可以传入对象覆盖默认值,例如:
```ts
WeappTailwindcss({
cssOptions: {
cssPreflight: {
margin: '0',
padding: '0',
},
},
})
```
## 使用大写单位 (h-[100PX]) 无效问题
默认情况下,在 `process.env.NODE_ENV === 'production'` 的时候,Tailwind CSS v4 会进入优化模式,并可能校准 CSS 单位,例如把大写的 `PX` 转为小写的 `px`。
在当前默认生成模式下,不要为了保留大写单位额外注册 `@tailwindcss/postcss` 或官方 Vite 插件。更稳妥的做法是把业务样式改成小程序推荐的 `rpx` / `px` 写法,并用目标端构建产物确认最终单位符合预期。
---
## weapp-tw CLI 使用指南
`@weapp-tailwindcss/cli` 独立发布 `weapp-tw` 和 `weapp-tailwindcss` 两个等价命令。构建命令默认输出 Web CSS,并对齐当前 Tailwind CSS CLI 的输入、输出、watch、优化和 source map 行为。
注意:npm 上的 `3.x` 与 `4.0.0-alpha.x` 是旧版原生小程序 Gulp 工具链。本 CLI 的新实现从 `5.x` 版本线开始发布;升级时请按本文档配置 CSS 输入,不再使用旧版 `init`、Sass/Less 编译或项目目录扫描流程。
CLI 直接复用 `weapp-tailwindcss` 的 Tailwind v4 generator、design system 与 source graph,不安装或调用 `@tailwindcss/cli`。watch 默认使用 `@parcel/watcher` 原生文件事件;在容器、网络文件系统或需要稳定轮询行为时,可使用 `--poll[=ms]` 切换到轮询模式。
## 安装
```bash
pnpm add -D @weapp-tailwindcss/cli weapp-tailwindcss tailwindcss
```
其中 `@weapp-tailwindcss/cli` 提供命令层,`weapp-tailwindcss` 提供生成和 CSS 转换能力,项目使用的 Tailwind CSS v4 由 `tailwindcss` 提供。
```bash
pnpm exec weapp-tw -i src/input.css -o dist/output.css
pnpm exec weapp-tw build -i src/input.css -o dist/output.css
```
## 构建参数
| 参数 | 简写 | 说明 |
| --- | --- | --- |
| `--input ` | `-i` | 输入 CSS;传 `-` 时读取 stdin。省略时使用 `@import "tailwindcss";`。 |
| `--output ` | `-o` | 输出 CSS;默认或传 `-` 时写入 stdout。 |
| `--watch[=always]` | `-w` | 监听依赖并增量重建;`always` 会在 stdin 关闭后继续监听。 |
| `--poll[=ms]` | | watch 时使用轮询而不是原生 watcher;不传间隔时默认 250ms。 |
| `--minify` | `-m` | 优化并压缩 CSS。 |
| `--optimize` | | 优化 CSS,但不压缩。 |
| `--cwd ` | | 设置输入、输出和依赖解析的工作目录。 |
| `--map[=]` | | 不传路径时内联 source map,传路径时写入独立 map 文件。 |
| `--silent` | | 隐藏非错误构建日志。 |
| `--target web\|weapp` | | 输出目标,默认 `web`。 |
stdin 与 stdout 可以组合使用:
```bash
pnpm exec weapp-tw -i - -o - --minify < src/input.css > dist/output.css
```
监听模式:
```bash
pnpm exec weapp-tw -i src/input.css -o dist/output.css --watch
pnpm exec weapp-tw -i src/input.css -o dist/output.css --watch --poll=100
```
## 小程序 CSS 目标
显式传入 `--target weapp` 后,CLI 会先生成 Tailwind CSS,再调用 `weapp-tailwindcss` 的 CSS 兼容转换链路:
```bash
pnpm exec weapp-tw -i src/input.css -o dist/app.wxss --target weapp
```
:::warning CSS-only 边界
`--target weapp` 只转换 CSS,不扫描或改写 WXML、JS、TS、JSX、TSX。完整小程序项目仍应使用 `weapp-tailwindcss/vite`、Webpack、Rspack 或 Gulp 集成,使模板、脚本和样式共享同一个 `classNameSet` 与构建生命周期。
转换后的 CSS 与 Web CSS 行号不再一一对应,因此 `--target weapp` 不支持 `--map`。
:::
## canonicalize
`canonicalize` 使用 Tailwind design system 合并等价工具类,并输出规范候选:
```bash
pnpm exec weapp-tw canonicalize "py-3 p-1 px-3"
# p-3
printf 'py-3 p-1 px-3\nmt-2 mr-2 mb-2 ml-2\n' \
| pnpm exec weapp-tw canonicalize --stream
```
可通过 `--css ` 加载自定义 theme、plugin 和 config,并通过 `--format text|json|jsonl` 选择输出格式。
## 兼容与辅助命令
| 命令 | 用途 |
| --- | --- |
| `weapp-tw doctor [--json] [--strict]` | 检查项目配置。 |
| `weapp-tw vscode-entry --css ` | 生成 Tailwind IntelliSense 辅助入口。 |
| `weapp-tw patch` / `install` | v5 兼容 no-op;应从 `postinstall` 中移除。 |
| `weapp-tw status [--json]` | 返回 patch 已不再需要的兼容状态。 |
## 常见错误
- 输入与输出解析到同一文件时命令会失败,避免覆盖入口 CSS。
- `--poll` 必须是大于 0 的毫秒数。
- `--map=-` 不表示 inline map;请直接传 `--map`。
- Windows、macOS 与 Linux 均按当前平台的文件系统路径解析,不要在脚本中手动拼接 `/`。
---
## uni-app x 专题
:::info 运行环境要求
使用 `weapp-tailwindcss@5.2.0` 或更高版本时,需要 Node.js `>=22.12.0` 和 HBuilderX `>=5.11`。Node.js 22 从 `22.12.0` 开始默认支持从 CommonJS 加载 ESM;较旧的 HBuilderX 内置 Node 可能无法加载当前依赖。
:::
跨端原子化样式方案
Tailwind CSS × uni-app x
查看已验证 demo(推荐)
或者按步骤手动集成
## 这篇文档适合谁
- 想在 uni-app x 项目里使用 Tailwind CSS 的开发者
- 需要一套能同时覆盖 Web/小程序/Android/iOS/鸿蒙 的原子化样式方案
- 已经使用 HBuilderX 运行或发布 uni-app x 项目
## 当前支持范围
当前文档面向 Tailwind CSS 4。uni-app x 项目建议通过 `WeappTailwindcss(uniAppX(...))` 注册插件,Tailwind 的生成和小程序/App 转译都交给 `weapp-tailwindcss`。
| Tailwind 版本 | 入口方式 | 扫描方式 | 当前验证 |
| --- | --- | --- | --- |
| Tailwind CSS 4 | `@import "tailwindcss" source(none);` | CSS 入口里的 `@source` | HBuilderX Web、微信小程序、Android、iOS、鸿蒙 |
:::info 本地 E2E
HBuilderX 依赖本机安装环境,所以 Web/小程序/App E2E 都在本地运行。仓库里对应的命令是 `pnpm e2e:hbuilderx:local:web`、`pnpm e2e:hbuilderx:local:mp`、`pnpm e2e:hbuilderx:local:android`、`pnpm e2e:hbuilderx:local:ios` 和 `pnpm e2e:hbuilderx:local:harmony`。
:::
## 最快开始
- 想最快跑起来:点击上方「一键使用模板项目」,按 README 步骤打开 HBuilderX 运行即可
- 想了解每一步:前往「手动集成」教程 → 快速集成
## 开发建议
- 推荐编辑器协作:用 VS Code 写代码,用 HBuilderX 负责运行与构建
- 首选 Android 端调试:CSS 兼容度一般是 Web > 小程序 > App(Android/iOS/鸿蒙)。先用 Android 模拟器打通路径,跨端成本最低
- 组件语义注意:原生 App 端文字需放在 `` 标签,且文本样式需要直接作用在该元素上
- 渐进增强:若某些样式在 App 端受限,优先保证 Android 端体验,再按需做条件编译适配小程序/Web
## 布局能力边界
- `uvue` 原生 App 端不支持 `gap`、`gap-x-*`、`gap-y-*`,包括所有 grid gap 与 flex gap 场景
- `space-x-*`、`space-y-*` 在 `uni-app x` 中也不再支持,请不要使用
- 需要稳妥跨端时,优先改为对子项显式写 `mt-*` / `ml-*`,或封装 `Stack` 一类组件统一处理间距
## 为什么推荐先用 Android
1) 原生端样式约束更严格,例如文本必须使用 ``,许多 CSS 特性仍在补齐中
2) 如果你的页面在 Android 端无告警、展示正确,迁移到小程序与 Web 的心智负担会小很多
3) iOS/鸿蒙的调试门槛更高(设备/系统要求),多数团队以 Android 作为优先目标更务实
## 常见问题
### VS Code 对 uvue/uts 的高亮与跳转
安装官方语言服务插件:
- ID: dcloud-ide.hbuilderx-language-services
- 说明: 支持 uni-app x 项目的提示、悬浮、转到定义、查找引用、校验等
- 链接: https://marketplace.visualstudio.com/items?itemName=dcloud-ide.hbuilderx-language-services
### Tailwind CSS 智能提示
VS Code 原生不识别 `uvue/uts`,建议为 Tailwind 扩展加上语言映射。在项目根目录创建 `.vscode/settings.json`:
```json title=".vscode/settings.json"
{
"tailwindCSS.includeLanguages": {
"uvue": "html",
"uts": "javascript"
}
}
```
### 运行方式
uni-app x 的运行和构建仍以 HBuilderX 为准。需要命令行自动化时,可以使用 HBuilderX CLI;本仓库的本地 E2E 就是通过 `hbuilderx launch` 跑 Web、小程序和 App 目标。
## 接下来
- 跟着步骤手动完成集成:快速集成
- 对照当前可运行配置:仓库内 uni-app x + Tailwind CSS 4 demo
---
## 快速集成
:::info 运行环境要求
使用 `weapp-tailwindcss@5.2.0` 或更高版本时,需要 Node.js `>=22.12.0` 和 HBuilderX `>=5.11`。Node.js 22 从 `22.12.0` 开始默认支持从 CommonJS 加载 ESM;较旧的 HBuilderX 内置 Node 可能无法加载当前依赖。
:::
## 最简单:直接用已验证 demo
仓库内 demo 与当前版本一起维护,并提供 HBuilderX Web、微信小程序、Android、iOS 和鸿蒙本地 E2E 用例:
查看已验证 demo
不要使用旧的 `icebreaker-template/uni-app-x-hbuilderx` 作为 Tailwind CSS 4 起点;它仍是 `tailwindcss@3 + weapp-tailwindcss@4` 配置。
---
## 手动集成
下面给出 Tailwind CSS 4 配置,当前文档仅维护 Tailwind CSS 4 接入说明。
### 前置条件
- 已安装 HBuilderX `>=5.11`,并安装 uni-app x 的 Android / iOS 编译插件
- Node.js 满足 `weapp-tailwindcss@5.2.0` 起的要求:`>=22.12.0`
- 本地 App E2E 需要 Android 模拟器或 iOS 模拟器;iOS 还需要完整 Xcode
### 1) 创建项目
在 HBuilderX 中创建新的 `uni-app x` 项目,然后在项目根目录初始化 `package.json`:
```bash npm2yarn
npm init -y
```
### 2) 安装依赖
```bash npm2yarn
npm i -D tailwindcss weapp-tailwindcss
```
### 3) 注册 weapp-tailwindcss
建议显式声明 CSS 入口,指向纯 `.css` 文件:
```ts title="vite.config.ts"
const projectRoot = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [
uni(),
WeappTailwindcss(
uniAppX({
base: projectRoot,
cssEntries: [resolve(projectRoot, 'main.css')],
rem2rpx: true,
}),
),
],
})
```
### 4) 配置 Tailwind CSS 入口
Tailwind CSS 4 使用 CSS-first 入口。入口文件应放在项目根目录或源码目录下,并在 `cssEntries` 中使用绝对路径引用:
```css title="main.css"
@import "tailwindcss" source(none);
@source "./App.uvue";
@source "./pages/**/*.{uts,uvue}";
@source "./components/**/*.{uts,uvue}";
@source "./stores/**/*.{uts,uvue}";
@source not "./uni_modules/**/*";
@source not "./unpackage/**/*";
```
### 5) 把入口 CSS 加入 HBuilderX 构建图
`cssEntries` 只告诉 `weapp-tailwindcss` 从哪里生成 Tailwind CSS,不会替代 HBuilderX / Vite 引入样式。在 `App.uvue` 的全局样式中导入入口:
```html title="App.uvue"
```
缺少这一步时,候选类可以被扫描到,但 Web、小程序和 App 页面都不会加载生成后的 CSS。这正是 issue #964 中“构建不报错但所有端样式都没有反应”的核心原因。
### 6) 运行与验证
在 HBuilderX 中依次运行到 Web、微信小程序和计划支持的 App 平台。先用一个任意值类名验证生成和转译是否生效:
```html
Hello Tailwind on uni-app x
```
本仓库的本地验证命令:
```bash npm2yarn
npm run e2e:hbuilderx:local
pnpm e2e:hbuilderx:local:web
pnpm e2e:hbuilderx:local:mp
pnpm e2e:hbuilderx:local:app
pnpm e2e:hbuilderx:local:android
pnpm e2e:hbuilderx:local:ios
pnpm e2e:hbuilderx:local:harmony
```
这些命令依赖本机 HBuilderX、模拟器和 Xcode,不放进 CI/CD。
### 7) 编辑器智能提示
VS Code 默认不认识 `uvue` / `uts`。可以给 Tailwind 扩展加语言映射:
```json title=".vscode/settings.json"
{
"tailwindCSS.includeLanguages": {
"uvue": "html",
"uts": "javascript"
}
}
```
同时安装 DCloud 的语言服务插件:`dcloud-ide.hbuilderx-language-services`。
---
## 重要限制
- 原生 App 端文本需要放在 `` 元素里,文本样式也要直接作用在 `` 上
- `uvue` 原生 App 端不支持 `gap`、`gap-x-*`、`gap-y-*`
- `space-x-*`、`space-y-*` 在 `uni-app x` 中也不要作为布局方案
- 跨端间距建议直接对子项写 `mt-*` / `ml-*`,或者封装固定结构的间距组件
- HBuilderX 控制台出现 CSS 兼容警告时,优先按目标平台限制调整样式