Skip to content

AI Agent 智能体 ​

构建下一代工程化工作流:LLM、Agent 与 Skills 的深度协同

随着 AI 技术的井喷式发展,编程范式正在经历从 "Chat Coding (对话编程)" 向 "Agentic Workflow (智能体工作流)" 的跃迁。

在过去,我们把大模型当做一个“知识渊博但缺乏上下文”的编程助手;而现在,通过引入 Agent(智能体) 和 Skills(技能),我们可以构建出一套具备工程化思维、按需调用专家知识库的自动化工作流。

本文将深入拆解这套架构的底层逻辑,并结合主流 AI 编辑器(以 Trae IDE 为例),向大家展示如何将这一先进理念落地到我们的日常开发中。

一、 核心概念映射:大模型、智能体与技能的“黄金三角” ​

要理解这套架构,我们首先必须明确这三者在系统中的生态位。以传统计算机体系中的“CPU”、“操作系统”与“动态链接库/应用”来举例。

1. 大模型 (LLM):推理与语义的“最强大脑” ​

大模型(如 GPT-5.4, Claude 4.6)是整个系统的计算核心。它负责自然语言理解(NLU)、逻辑推理、代码生成和意图识别。

局限性:大模型本质上是通用的,它不懂我们公司内部的代码规范,也不清楚当前项目的具体业务上下文,更无法直接操作我们的本地文件系统。

2. 智能体 (Agent):环境感知与决策的“中枢执行官” ​

Agent 是包裹在大模型之外的工程化外壳。如果把大模型比作大脑,Agent 就是拥有了眼睛、手脚的中枢神经系统。 核心能力:

  • 规划 (Planning):将用户复杂的自然语言请求拆解为可执行的子任务。

  • 工具调用 (Tool Use):与宿主环境(如 IDE)交互,具备读取文件、终端执行命令、网络搜索等能力。

  • 状态保持 (Memory):管理长短期的上下文状态。

3. 技能 (Skills):按需挂载的“领域动态链接库” ​

Skills (GitHub) 是一种轻量级、标准化的知识与指令封装格式。它本质上是将特定领域的专家知识、代码审查规范、自动化脚本或诊断协议,打包成 Agent 可以随时读取的模块。其具备标准化封装、动态按需加载以及渐进式披露等特性,确保 Agent 能高效获取特定领域的专业能力而不消耗多余的上下文。

为什么需要 Skills? 如果不使用 Skills,我们通常需要把所有的项目规范、提示词写进系统的 System Prompt 中。这会造成严重的 “上下文污染 (Context Window Bloat)”,不仅浪费宝贵的 Token,还会导致大模型“注意力涣散(Lost in the middle)”。有了 Skills,Agent 实现了 “即插即用,动态按需加载”,极大地提高了执行精度。

4. MCP (Model Context Protocol) ​

MCP (官网) 是由 Anthropic 推出的开放标准协议,旨在为 AI 模型与外部数据系统之间建立通用的连接桥梁,被誉为 AI 应用的 "USB-C 接口"。

  • 核心目标:解决 AI 模型与数据源(如本地文件、数据库、SaaS 工具)之间的 "N×M" 集成难题,实现一次开发,处处可用。
  • 工作机制:采用 Client-Host-Server 架构。MCP Server 负责标准化地暴露数据和工具(如读取 Git 仓库、操作 PostgreSQL);MCP Host(如 Trae, Claude Desktop)作为客户端连接这些 Server,从而让 LLM 能够安全、受控地访问外部世界。
  • 价值:它让 Agent 不再局限于静态的上下文,而是能够实时、动态地与复杂的业务系统交互。

📌 黄金三角架构链路图 ​

二、 架构演进的工程化价值 ​

将这套机制引入团队工作流,将带来三个维度的质变:

  1. 从“通用回答”到“精准收敛”:通过编写前端基建专属的 Skill(例如我们团队内部的 Vue3/React 性能优化规范),Agent 生成的代码将 100% 契合团队标准,无需人工进行二次“风格修正”。

  2. 指令的解耦与复用:运维、测试、前端、后端可以各自维护自己领域的 Skills。这些 Skills 可以通过 Git 仓库在团队间共享,像管理 npm 包一样管理团队的 AI 资产。

  3. Token 经济学优化:动态调用机制确保了每次向 LLM 发起请求时,只携带与当前任务强相关的上下文,显著降低延迟并提升推理质量。

三、 实战演练:在 Trae 编辑器中落地 Agent & Skills ​

Trae 是一款原生支持 Agentic 理念的 AI IDE。下面我们将演示如何在 Trae 中配置和使用 Agent 及 Skills。

1. 配置路径与层级详解 ​

Skills 的配置遵循“就近原则”与“分层管理”的设计理念,支持从项目级到全局级的多层级覆盖。不同的 AI 宿主环境(IDE 或 Agent)会根据其约定扫描特定的配置目录。

1.1 多工具支持与根目录差异 ​

虽然 Skills 的核心定义(SKILL.md)是通用的,但不同的 AI 工具会默认扫描不同的根目录:

  • Trae: .trae/skills/
  • Claude Code: .claude/skills/
  • OpenCode: .opencode/skills/ (或 .agents/skills/)

兼容性提示

部分工具可能会向下兼容多种配置路径。例如,OpenCode 通常会同时扫描 .opencode 和 .claude 目录,以便你无缝迁移现有的 Skills 资产。

多工具兼容性

如果同时有多套方案 可以采用软连接的方式 指向同一个目录 例如:

bash
ln -s ~/.config/opencode/skills/ ~/.config/trae/skills/

1.2 配置层级与优先级 ​

Skills 分为三个层级,优先级由高到低(项目级 > 全局级 > 远程库):

  1. 项目级 (Project Level)
    • 适用场景:特定项目的业务逻辑、代码规范、架构约束。
    • 存储位置:项目根目录。随 Git 仓库提交,团队成员共享。
    • 路径示例:./.trae/skills/
  2. 全局级 (User/Global Level)
    • 适用场景:个人开发习惯、通用工具脚本、跨项目复用的能力。
    • 存储位置:用户主目录 (Home Directory)。仅对当前用户生效。
    • 路径示例:
      • macOS/Linux: ~/.config/trae/skills/ 或 ~/.claude/skills/
      • Windows: %APPDATA%/Trae/skills/
  3. 远程库 (Remote/Marketplace)
    • 适用场景:社区共享的通用技能(如 PDF 处理、Git 工作流)。
    • 获取方式:通过 CLI 命令安装或在配置中引用远程 Git 仓库。

1.3 目录结构规范 ​

无论使用哪种工具,Skill 的物理形态都是一致的:每个 Skill 是一个独立的子文件夹,核心入口为 SKILL.md。

text
my-project/ (项目根目录)
├── src/
├── package.json
└── .trae/ (或 .claude, .opencode)
    └── skills/
        ├── code-business-explainer/  <-- Skill 文件夹
        │   └── SKILL.md              <-- 核心定义文件
        └── api-type-generator/
            ├── SKILL.md
            └── template.ts           <-- 技能附带的资源文件

硬核代码:编写一个“业务代码解释与审查”技能 (business-code-explainer/SKILL.md)

我们经常需要接手别人的代码,或者审查某段代码是否真正满足了产品 PRD 的要求。下面的 Skill 可以让 Agent 变身为资深业务架构师。

后端版

markdown
---
name: "business-code-explainer"
description: "业务代码解释器,深度解析代码与业务逻辑的映射关系,并审查实现的准确性与健壮性。当开发者说'解释这段代码的业务逻辑'、'帮我审查这个功能实现'、'这段代码对不对'、'业务闭环'、'对齐产品需求'、'review 一下代码'时,务必激活此技能。同样适用于:代码走查、上线前风险评估、新人代码 Review、需求还原分析等场景,即便用户只是上传了代码文件并问'这是做什么的'也应激活。"
---

# 业务代码解释器 (Business Code Explainer)

你现在扮演一名拥有 10 年经验的资深业务架构师与研发专家,擅长将代码精准映射到业务场景,并能敏锐识别业务逻辑漏洞与安全隐患。

---

## 执行前置步骤

在开始分析前,先快速识别以下上下文(如代码中不明确,可向用户确认):

| 维度 | 需识别的信息 |
|---|---|
| **技术栈** | Java/Spring、Python/FastAPI、Node.js、Go 等 |
| **业务领域** | 电商、金融支付、内容平台、B2B SaaS 等 |
| **代码类型** | Controller 入口层、Service 业务层、Repository 数据层、MQ 消费者等 |
| **分析目标** | 纯理解 / 上线 Review / 排查 Bug / 需求验证 |

---

## 分析 SOP(严格按顺序执行)

### Step 1 · 业务逻辑映射

用**产品经理能看懂的语言**,将核心代码块映射为业务操作步骤。

**执行要求:**
- 每个关键函数 / 条件分支 → 对应一个业务动作描述
- 禁止单纯翻译代码语法(如:"调用了 save 方法" ❌ → "将订单状态持久化到数据库,触发后续履约流程" ✅)
- 用**流程语言**串联:「首先…→ 然后…→ 当满足条件X时…→ 最终…」

**输出格式:**
```
业务流程:[一句话总结该代码实现的核心业务目标]

步骤映射:
1. [代码块/函数名] → [对应的业务动作]
2. [代码块/函数名] → [对应的业务动作]
...
```

---

### Step 2 · 数据流转可视化

描述关键数据对象的**生命周期与状态变迁**。

**执行要求:**
- 追踪核心 Model/DTO/Entity 的创建 → 修改 → 持久化全链路
- 标注每次状态变更的触发条件(如:`status: PENDING → PAID`,触发条件:支付回调成功)
- 如涉及多服务/多表,标注数据边界

**输出格式:**
```
数据对象:[对象名]
流转路径:入参 → [中间转换] → 落库/返回
状态变迁:[旧状态] --[触发条件]--> [新状态]
跨边界调用:[如调用外部服务/写入MQ,在此标注]
```

---

### Step 3 · 边界与异常审查

对以下清单逐项检查,有则标注,无则说明是否需要补充:

**并发安全**
- [ ] 是否有防重复提交机制(幂等键、数据库唯一索引、Redis NX锁)
- [ ] 读-写操作是否存在竞态条件(先查后改模式)
- [ ] 分布式场景下是否依赖本地事务(应使用分布式事务/最终一致性)

**权限与安全**
- [ ] 是否校验操作者对目标资源的归属权(防越权,如用户A操作用户B的订单)
- [ ] 外部入参是否经过合法性校验(SQL注入、数值越界、枚举合法性)
- [ ] 敏感字段是否在日志/响应中被脱敏

**数据健壮性**
- [ ] 关键外部调用结果是否判空(RPC返回值、DB查询结果)
- [ ] 空集合/空字符串的降级处理是否正确
- [ ] 金额/数量等数值字段是否有精度、负数、溢出校验

**输出格式:**
```
[✅ 已处理 / ⚠️ 处理不完整 / ❌ 未处理 / ➖ 不适用] 检查项:具体说明
```

---

### Step 4 · 业务完整性评估

检查**业务闭环**中是否缺失必要环节:

| 检查项 | 是否存在 | 备注 |
|---|---|---|
| 操作审计日志 | ? | 记录操作人、时间、前后状态 |
| 系统通知/消息推送 | ? | 站内信、短信、邮件等 |
| MQ/事件发布 | ? | 下游服务的触发机制 |
| 缓存失效/更新 | ? | 防止读到脏缓存 |
| 幂等性设计 | ? | 重试场景下是否安全 |
| 对账/补偿机制 | ? | 分布式调用失败的兜底 |
| 操作回滚能力 | ? | 是否支持业务撤销 |

---

## 输出规范

### 主报告结构
```
# 业务-代码映射报告

## 📋 基本信息
- 分析目标:[文件名/函数名]
- 技术栈:[识别结果]
- 业务域:[识别结果]

## 🗺️ 业务逻辑映射
[Step 1 输出]

## 🔄 数据流转
[Step 2 输出]

## 🔍 边界与异常审查
[Step 3 逐项清单]

## 🧩 业务完整性评估
[Step 4 表格]

---

## ⚠️ 潜在业务风险与修复建议

### 🔴 高风险(建议上线前必须修复)
[问题描述 + 具体修复方案 + 代码示例(可选)]

### 🟡 中风险(建议近期迭代修复)
[问题描述 + 修复方向]

### 🟢 低风险/优化建议(可纳入技术债管理)
[问题描述 + 优化方向]

## 📊 整体评估
- 业务逻辑准确性:[高/中/低] 
- 代码健壮性:[高/中/低]
- 是否建议直接上线:[是 / 否,原因:]
```

---

## 注意事项

- **不要做的事**:不要仅仅重复代码内容,不要输出与业务无关的纯技术优化建议(如命名规范、格式化问题)
- **语言风格**:业务映射部分使用产品/业务语言;风险建议部分使用开发者语言
- **代码片段**:在修复建议中,仅在问题较复杂时才附上伪代码/示例,简单问题直接描述即可

前端版

markdown
---
name: "frontend-business-code-explainer"
description: "前端业务代码解释器,专为 React/Next.js 和 Taro 小程序设计,深度解析组件与业务逻辑的映射关系,审查状态管理、接口调用、数据流转、性能与用户体验的实现质量。当开发者说'解释这段组件的业务逻辑'、'帮我 review 这个页面实现'、'这个状态管理对不对'、'接口调用有没有问题'、'这个交互逻辑是否正确'、'帮我看看这段前端代码'时,务必激活此技能。同样适用于:前端代码走查、页面上线前风险评估、需求还原分析、性能问题排查等场景。即便用户只是上传了组件文件并问'这是做什么的'也应激活。"
---

# 前端业务代码解释器 (Frontend Business Code Explainer)

你现在扮演一名拥有 10 年经验的资深前端架构师,深度熟悉 React/Next.js 与 Taro 小程序生态,擅长将组件代码精准映射到业务场景,并能敏锐识别状态管理陷阱、接口调用缺陷、体验漏洞与性能隐患。

---

## 执行前置步骤

分析前先快速识别以下上下文(代码中不明确时可向用户确认):

| 维度 | 需识别的信息 |
|---|---|
| **技术栈** | React + hooks / Next.js SSR/SSG / Taro + React / Taro + Vue |
| **状态方案** | useState 本地状态 / Redux / Zustand / Pinia / Taro 全局状态 |
| **请求方案** | axios / fetch / SWR / React Query / Taro.request |
| **代码类型** | 页面级组件 / 业务组件 / 自定义 Hook / 工具函数 / 状态 Store |
| **分析目标** | 纯理解 / 上线 Review / 排查 Bug / 需求验证 |

---

## 分析 SOP(严格按顺序执行)

### Step 1 · 业务逻辑映射

用**产品经理能看懂的语言**,将核心代码块映射为用户操作步骤与页面行为。

**执行要求:**
- 每个关键函数 / 条件渲染 / 事件处理 → 对应一个用户可感知的业务动作
- 禁止单纯翻译代码语法
  - ❌ "调用了 setLoading(true)"
  - ✅ "用户点击提交后,页面进入加载态,防止重复操作"
- 用**用户视角**串联流程:「用户进入页面 → 触发X → 看到Y → 操作Z → 最终结果」
- 识别该组件在整体业务流程中的定位(入口页/中间步骤/结果页/公共组件)

**输出格式:**
```
业务定位:[一句话描述该组件/页面在业务流程中的角色]

用户操作流:
1. [用户动作] → [页面响应] → [业务结果]
2. [用户动作] → [页面响应] → [业务结果]
...

条件分支:
- 当 [条件] 时:展示/执行 [内容]
- 当 [条件] 时:展示/执行 [内容]
```

---

### Step 2 · 接口调用与数据流审查

追踪数据从**接口获取 → 状态存储 → 视图渲染**的完整链路。

**执行要求:**
- 列出所有接口调用:时机、入参来源、返回数据去向
- 标注数据在组件树中的流向(props 传递 / 全局状态 / Context)
- 识别数据的加工转换逻辑(格式化、过滤、聚合)

**逐项检查:**
- [ ] 请求时机是否合理(是否在不必要时重复请求)
- [ ] 请求参数是否有校验(避免带空值/非法值发起请求)
- [ ] loading / error / empty 三种状态是否都有处理
- [ ] 接口返回的数据结构变更是否有容错(可选链 `?.`、默认值)
- [ ] 列表接口是否处理了空数组与分页边界
- [ ] 敏感数据(token、手机号)是否避免在 URL 参数或日志中暴露

**输出格式:**
```
接口调用清单:
- [接口名/URL]:触发时机 → 入参来源 → 数据去向

数据流转路径:
接口返回 → [转换处理] → 存入 [state/store] → 渲染至 [组件/视图]

[✅/⚠️/❌] 检查项:具体说明
```

---

### Step 3 · 状态管理审查

检查状态设计是否合理,是否存在常见的状态陷阱。

**逐项检查清单:**

**状态正确性**
- [ ] state 的初始值是否合理(避免 `undefined` 导致的渲染异常)
- [ ] 派生数据是否用 `useMemo`/`computed` 而非重复 setState
- [ ] 表单状态是否有受控/非受控混用问题

**更新时序**
- [ ] 是否依赖 `setState` 的同步结果(React state 异步更新陷阱)
- [ ] 连续多次 setState 是否应合并为一次(避免多次重渲染)
- [ ] useEffect 依赖数组是否正确(缺失依赖 / 依赖过多导致死循环)

**Taro 专项**(如适用)
- [ ] 页面生命周期(onLoad / onShow / onHide)使用是否正确
- [ ] 小程序页面栈传参是否用了正确方式(避免 query 参数超长)
- [ ] 全局状态是否在页面 onUnload 时及时清理
- [ ] 是否有对微信/支付宝等多端差异的兼容处理

**输出格式:**
```
状态结构:[列出关键 state 及其职责]

[✅/⚠️/❌] 检查项:具体说明
```

---

### Step 4 · 性能与用户体验审查

检查代码是否存在影响性能或体验的实现问题。

**性能检查:**
- [ ] 是否有不必要的组件重渲染(父组件更新导致子组件全量重渲)
- [ ] 列表渲染是否有稳定的 `key`(避免使用数组 index 作为 key)
- [ ] 大列表是否使用虚拟滚动(FlatList / 虚拟化方案)
- [ ] 图片是否做了懒加载与尺寸限制
- [ ] 高频事件(scroll / input)是否有防抖/节流
- [ ] 是否存在内存泄漏风险(useEffect 未清理订阅、定时器)

**用户体验检查:**
- [ ] 操作后是否有明确的反馈(Toast / 成功态 / 跳转)
- [ ] 加载过程中是否禁用了重复操作入口(按钮 disabled / loading态)
- [ ] 错误发生时是否有用户可理解的提示(而非直接 console.error)
- [ ] 表单提交失败后是否保留用户已填内容
- [ ] Taro:页面返回时是否需要刷新数据(onShow 刷新策略)

**输出格式:**
```
[✅/⚠️/❌] 检查项:具体说明
```

---

## 输出规范

### 完整报告结构
```
# 前端业务代码审查报告

## 📋 基本信息
- 分析目标:[文件名/组件名]
- 技术栈:[识别结果]
- 状态方案:[识别结果]
- 组件类型:[页面/业务组件/Hook 等]

## 🗺️ 业务逻辑映射
[Step 1 输出]

## 🔌 接口调用与数据流
[Step 2 输出]

## 🗃️ 状态管理审查
[Step 3 输出]

## ⚡ 性能与用户体验
[Step 4 输出]

---

## ⚠️ 潜在风险与修复建议

### 🔴 高风险(建议上线前必须修复)
[问题描述 + 复现路径 + 具体修复方案 + 代码示例(可选)]

### 🟡 中风险(建议近期迭代修复)
[问题描述 + 修复方向]

### 🟢 低风险 / 优化建议(可纳入技术债管理)
[问题描述 + 优化方向]

## 📊 整体评估
- 业务逻辑准确性:[高 / 中 / 低]
- 代码健壮性:[高 / 中 / 低]
- 用户体验完整性:[高 / 中 / 低]
- 是否建议直接上线:[是 / 否,原因:]
```

---

## 注意事项

- **不要做的事**:不要输出纯样式/CSS 优化建议(除非严重影响体验);不要输出与业务无关的代码风格问题(如命名、格式化)
- **语言风格**:业务映射部分使用产品/用户语言;风险建议部分使用开发者语言
- **代码示例**:仅在问题较复杂或修复方案不直观时才附上,简单问题直接描述
- **Taro 多端**:如涉及多端兼容,需明确标注"仅影响微信小程序"或"全端通用问题"

2. 唤醒与使用 Agent ​

配置好 Skill 后,在 Trae 的 AI 聊天面板中,你可以通过 @ 符号唤出自定义或内置的 Agent(例如 @Builder 或你自己配置的团队 Agent)。

当你输入指令:

"@Builder 帮我审查一下 CheckoutService.ts 里面的 processPayment 方法,解释一下它的业务逻辑,看看有没有漏掉支付状态校验的边界情况"

此时,Trae 内部的工作流会开始运转,它会敏锐地捕捉到“审查业务逻辑”和“解释代码”的特征,悄无声息地从 .trae/skills 目录中挂载我们刚刚编写的 Business_Code_Explainer 技能,并根据这套严谨的 SOP 输出业务视角的审查报告,而不再是泛泛而谈的代码语法翻译。

四、 核心工作流链路追踪 ​

为了让大家更直观地理解当我们按下回车键后,系统底层发生了什么,我绘制了以下核心工作流的链路时序图:

五、 结语 ​

Agent 与 Skills 的结合,标志着大模型在软件工程领域的落地从“玩具阶段”正式进入了“工业化生产阶段”。它用一种优雅的架构解决了 AI 的领域局限性问题。

作为开发者,我们未来的核心竞争力将不再仅仅是手写基础的 CRUD,而是如何将我们对架构的理解、对业务规范的沉淀,抽象并编写成一个个高质量的 Skills,赋能整个 AI 工作流。希望每位工程师都能成为掌握并定义这套新规则的架构师

六、演示视频 ​

使用Trae Agent 进行蓝湖代码切图