DesignOS
构建产品设计智能体工作流

从 Skill 沉淀到 MCP 服务化,打造跨 IDE 的 AI 设计能力系统

头像
陈腾骥
DesignOS 架构图

随着 AI Agent 在设计工作流中的应用逐渐深入,我希望 AI 真正参与完整产品设计流程。
尝试在产品设计流程的不同阶段结合岗位工作输出不同的 skill 辅助设计,但在不同 IDE(如 Cursor、Trae、Claude Code 等)中使用时,遇到了几个问题:

  • 每个平台需要重复导入 Skill
  • Skill 更新后需要手动同步
  • 多设备环境无法保证版本一致
  • 不确定当前 IDE 使用的是不是最新 Skill

最初尝试通过本地映射文件解决同步问题,但仍然存在:换电脑无法同步、配置维护成本高、多环境管理困难。

因此我希望将 Skill 能力服务化,让不同 AI IDE 都能够调用同一套最新的设计能力。

Skill 能力沉淀

将产品设计经验拆解为独立 Skill,我把不同的设计方向通过不同的技能来解决分析的问题。

为了让 AI 可以精准的调用,我在每个 Skill 通过 SKILL.md 进行规范描述:

  • 使用场景
  • 触发条件
  • 执行流程
  • 输出规范
  • 专业知识约束

prd-generator

PRD 需求文档生成

为功能创建 PRD,提供结构化需求收集与文档生成工作流。

npx skills add chantezy/skills --skill prd-generator

requirements-content-analysis

需求内容分析

结构化解析需求文档,识别交互风险与设计机会点,输出分析报告。

npx skills add chantezy/skills --skill requirements-content-analysis

b-design-diverge

B端设计方案发散

通过 ASCII 示意图构建多方案对比,帮助快速锁定最优设计方案。

npx skills add chantezy/skills --skill b-design-diverge

interaction-spec

交互说明生成

生成交互说明文档,涵盖界面元素、状态说明、动效规范。

npx skills add chantezy/skills --skill interaction-spec

interaction-design-eval

交互设计评估

专业量化评审交互方案,输出 10 维度评分表、职级评估分及优化建议。

npx skills add chantezy/skills --skill interaction-design-eval

SKILL 的文档已经满足在日常工作中的调用和内容产出,但是由于会不断更新和数量增多,在不同的 IDE 产品中就需要进行反复的导入和更新,非常不便利。

通过 SKILL 管理工具的方式也只解决了管理的问题,没有解决各个版本的更新问题。

于是我想到通过 MCP(Model Context Protocol) 的方式,有个地方统一去更新内容,而 IDE 产品就负责每次启动进行内容的加载和调用,这样可以减少很多重复工作。

Skill MCP 服务化

将 Skill 封装为 MCP Server。各个 IDE 产品对于 MCP 的兼容性比 SKILL 要好,我的目标是通过同一个服务,多端 IDE 可以调用,共享最新设计能力。内容更新上是:我 push 到 github 后,npm 自动同步最新的内容。

MCP 整体结构设计为:

mcp-product-design

├── src
│
│── index.ts
│     MCP 服务入口
│     注册 Tool
│
│── skill-loader.ts
│     SKILL.md 解析
│     Skill 加载管理
│
├── scripts
│     skill 同步脚本
│
├── package.json
│
├── tsconfig.json
│
└── README.md

将沉淀的产品设计 Skill 封装为基于 npm 发布的 MCP Server,通过 npm 包管理实现 Skill 能力的统一分发与自动更新。

npm(Node Package Manager)是一个用于管理和分发代码包的平台,类似于"应用商店"。在这个方案中,我将 MCP 服务打包成一个 npm 包并发布到 npm 仓库,AI IDE 通过 npm 自动下载安装并运行最新版本的 MCP 服务。后续 Skill 内容更新后,只需要重新发布 npm 包,使用方重新加载即可获取最新能力,无需手动替换文件。

MCP Server 负责解析和管理 Skill 内容,并通过标准化 Tool 接口向不同 AI IDE 提供设计能力。只需要维护一份 Skill 源文件,发布后 Cursor、Trae、Claude Code 等支持 MCP 的 IDE 均可直接调用最新版本,无需重复配置和手动同步,整体流程为:

Skill 文件更新 Git push Actions 检测 npm publish 重启 IDE 生效

MCP调用方式

方式一:命令行指令

npm i @chantezy/mcp-product-design

方式二:手动配置

{
  "mcpServers": {
    "product-design": {
      "command": "npx",
      "args": ["-y", "@chantezy/mcp-product-design@latest"]
    }
  }
}

MCP 包括三个工具,会获取我 push 到 github 的 skill 列表,然后AI根据用户提问内容自动匹配适合的 skill 进行内容输出。

工具AI 拿到什么AI 怎么做
list_skills5 个技能的名称和描述判断哪个技能匹配用户意图
get_skill完整的 SKILL.md 工作流按照工作流里的步骤执行
get_reference参考资料内容读取领域知识辅助推理

IDE 接入 Agent

到这一步已经实现了在不同的 IDE 中调用统一 SKILL 的能力,但是有个不够完美的地方是 MCP 本质上还是主动触发的工具,用户需要明确指定调用哪个技能来进行内容输出。

我想要实现的是 AI 可以根据上下文记忆和连贯性,自动规划并调用合适的技能来完成整个设计流程。

OpenAI 自己的数据也印证了AI 发展已经从「跟 AI 对话」转向「编排 Agent 执行任务」。

AI Agent 是指人工智能代理(Artificial Intelligence Agent),是一种能够感知环境进行自主理解,进行决策和执行动作的智能体。AI Agent 具备通过独立思考、调用工具逐步完成给定目标的能力。仅需要给定一个内容,就能够实现针对目标进行独立思考并完成目标任务。

一个基于大模型的 AI Agent 系统可以拆分 LLM(大模型)、记忆(Memory)、任务规划(Planning)以及工具使用(Tool) 的集合。在 LLM 为基础的 AI Agent 系统中,大模型为 AI Agent 系统的大脑负责计算,并需要其他组件进行辅助。

MCP 服务化架构

AI Agent 是基于大模型构建的智能执行系统,可以依据模型在意图识别完成复杂任务,具备真正的组合能力,这是与 SKILL 和 MCP 的主要区别。

Skill vs MCP vs Agent 对比

维度SkillMCPAgent
本质单一能力模块通信协议/通道智能决策系统
功能执行具体设计任务(写交互说明、评审方案等)提供技能内容的访问接口规划任务、组合技能、输出完整方案
架构层级工具层传输层控制层
调用方式被动调用(IDE 触发)中介代理(连接 IDE 和技能)主动规划(自动判断和组合)
输入用户的具体指令IDE 的请求用户自然语言需求
输出单一技能的执行结果技能内容数据结构化的完整方案
智能程度按指令执行传递信息具备推理和决策能力
跨 IDE 需在每個 IDE 中单独配置 一次配置,所有 IDE 使用 基于 MCP 实现,跨 IDE
更新方式手动更新文件依赖 Skill 更新依赖 Skill + 系统提示词更新

而相对于一般的对话模型,在流程上也有区别:

  • 普通 LLM:用户输入 Prompt → 模型生成回答
  • Agent:用户目标 → 理解任务 → 制定计划 → 调用工具 → 执行任务 → 输出结果

在本方案中:

  • Agent 负责判断用户意图和任务流程
  • MCP 负责提供专业设计工具
  • Skill 负责具体设计方法

当用户在 IDE 中说:

  • "帮我写交互说明" → 匹配 generate_spec
  • "帮我评审交互方案" → 匹配 evaluate_interaction
  • "帮我发散设计方案" → 匹配 design_diverge

IDE 会自动完成这个匹配。

用户提问
   │
   ▼
┌─────────────────────────────────────┐
│         Agent 层(新增)              │
│  ┌─────────┐ ┌─────────┐ ┌───────┐ │
│  │ 意图识别 │ │ 对话历史 │ │任务规划│ │
│  └────┬────┘ └────┬────┘ └───┬───┘ │
│       └───────────┴──────────┘      │
│              │                       │
│              ▼                       │
│  "需要调用 design_diverge 和        │
│   generate_spec,分两步执行"        │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│         MCP Tool 层                 │
│  ┌─────────┐ ┌─────────┐ ┌───────┐ │
│  │analyze_ │ │ design_ │ │evalua │ │
│  │require  │ │ diverge │ │_inter │ │
│  └─────────┘ └─────────┘ └───────┘ │
│  ┌─────────┐ ┌─────────┐           │
│  │generate │ │ prd_    │           │
│  │_spec    │ │ generate│           │
│  └─────────┘ └─────────┘           │
└─────────────────────────────────────┘
举一个案例解释:
用户:"帮我分析这个需求,然后做几个设计方案对比"
       │
       ▼
   Agent 理解意图
       │
       ├── 第一步:调用 analyze_requirements
       │         │
       │         ▼
       │     得到分析结果
       │
       ├── 第二步:调用 design_diverge
       │         │
       │         ▼
       │     得到设计方案
       │
       └── 第三步:整合结果,给出最终回复
               │
               ▼
           返回完整方案

在 TRAE 中配置智能体

通过 MCP 配置,让 IDE 中的 Agent 自动调用设计能力。

【提示词 + 调用场景 + MCP 工具】

配置说明

自动调用逻辑

根据具体使用场景定义何时触发相应的 SKILL

requirements-content-analysis
需求内容分析
何时调用
  • 用户提供了 PRD、需求文档、产品需求描述
  • 用户说"帮我分析这个需求"、"拆解需求"
  • 需要理解需求目标、核心功能、用户路径
  • 识别潜在的交互风险和设计机会点
典型场景
  • "帮我分析一下直播首页的优化需求"
  • "拆解这个电商后台的功能需求"
  • "分析一下这个移动端产品的用户路径"
b-design-diverge
B端设计方案发散
何时调用
  • 用户需要探索多个设计方案进行对比
  • 用户说"做几个设计方案"、"发散一下思路"、"对比方案"
  • 需要通过 ASCII 示意图展示不同方案
  • 在需求分析之后,评审之前
典型场景
  • "基于刚才的分析做几个设计方案对比"
  • "帮我发散一下支付流程的设计思路"
  • "给我三个不同的仪表盘布局方案"
interaction-design-eval
交互设计评估
何时调用
  • 用户上传了设计方案文档、原型说明、PRD 交互部分
  • 用户说"评估一下"、"打分"、"测评"、"评审"、"帮我看看这个方案怎么样"
  • 需要对方案进行专业量化评分(10 维度)
  • 需要评估方案与设计师职级的匹配度
典型场景
  • "帮我评审一下这个交互方案"
  • "给这个设计打个分"
  • "测评一下这个方案的交互质量"
interaction-spec
交互说明生成
何时调用
  • 用户提到"交互说明"、"交互文档"、"标注说明"、"PRD 交互部分"
  • 用户提到"组件行为描述"、"状态说明"、"动效规范"、"操作反馈"
  • 用户说"帮我写下这个页面的说明"、"描述一下这个功能怎么用"
  • 需要将设计转化为研发可理解的逻辑表达
典型场景
  • "帮我写一下登录页面的交互说明"
  • "描述一下这个弹窗的状态切换逻辑"
  • "生成这个表单的交互文档"
prd-generator
PRD 生成
何时调用
  • 用户说"创建 PRD"、"写产品需求文档"、"帮我做 PRD"
  • 需要生成完整的产品要求文档
  • 在需求分析之后,设计之前
典型场景
  • "帮我创建一个直播功能的 PRD"
  • "写一份电商后台的产品需求文档"
  • "为这个新功能生成 PRD"

技能组合路径

不需要手动选择技能,智能体会自动识别并组合调用。

示例:
用户:"帮我分析直播首页需求,然后做设计方案"

智能体内部流程:

  1. 调用 list_skills → 看到 5 个技能的触发条件
  2. 判断:"分析需求"匹配 requirements-content-analysis
  3. 判断:"设计方案"匹配 b-design-diverge
  4. 判断顺序:先分析后设计
  5. 调用 get_skill("requirements-content-analysis") → 执行分析
  6. 调用 get_skill("b-design-diverge") → 执行设计
  7. 整合两个结果返回
用户需求调用顺序示例输入
快速验证requirements-content-analysis → b-design-diverge"分析需求然后做设计方案"
完整方案requirements-content-analysis → b-design-diverge → interaction-design-eval → interaction-spec"从需求到交互说明的完整流程"
文档输出requirements-content-analysis → prd-generator"分析需求然后生成 PRD"
设计评审b-design-diverge → interaction-design-eval"做设计方案然后评审"
方案落地b-design-diverge → interaction-spec"做设计方案然后写交互说明"

最后的实现效果如下:

技能组合路径示例

Intent Router 的优化策略

用户输入 Intent Router 匹配 Skill 执行 Skill 返回结果

虽然我相信 AI 对于自然语言的意图识别能力,但是我想在语义模糊的时候做一些规则来限制 token 的消耗浪费,我针对用户的模糊语境增加了两个兜底规则。

1、函数解析 SKILL.md 时提取 trigger

我在每个 SKILL 中都增加了 trigger,用一句自然语言描述 Skill 的典型适用场景。Intent Router 可以优先根据 trigger 进行快速匹配,而无需完整加载 Skill 内容。并且设置了已调用SKILL的记忆设置,重复调用无需重复加载。

mcp-server/src/index.tslist_skills 工具里,把 trigger 展示给 AI:

const lines = skills.map(
  (s) => `- **${s.name}**  —  ${s.trigger || "查看描述了解适用场景"}`,
);

根据用户意图,选择最匹配的 skill 调用 get_skill

  • b-design-diverge — 当用户需要发散 B 端设计方案、对比多个设计思路、生成设计示意图时使用
  • interaction-design-eval — 当用户需要评估/打分/评审交互设计方案、测评设计质量、或做设计师职级能力盘点时使用
  • interaction-spec — 当用户需要撰写交互说明文档、组件行为描述、状态说明、动效规范时使用
  • requirements-content-analysis — 当用户需要分析产品需求、梳理业务流程、识别用户痛点时使用
  • prd-generator — 当用户需要撰写产品需求文档、PRD 时使用

2、当用户输入无法明确匹配时,使用兜底规则

如果用户输入模糊,比如:

  • "帮我设计一下"
  • "帮我优化一下"
  • "帮我看看这个方案"

此时,我们根据上下文判断最可能的流程,如:

  • 若包含"方案"、"设计"等关键词 → 优先匹配 b-design-diverge
  • 若包含"评审"、"打分"、"评估"等关键词 → 优先匹配 interaction-design-eval
  • 若包含"交互"、"说明"、"组件"等关键词 → 优先匹配 interaction-spec

DesignOS 设计流程总结

最后封装成 MCP 的价值也在于,在绝大多数真实使用场景中 更省 token

对比维度MCP 方案(按需加载)单 skill 塞进 System Prompt
初始加载0 token(不加载不需要的)1,500-3,000 token(固定加载)
list_skills 调用200 token(模糊意图时需要)不需要
get_skill 调用1,500-3,000 token(按需加载)0(已预加载)
get_reference 调用200-1,500 token(按需加载)0(已预加载)
重复调用同一 skill0 token(AI 记住已加载)1,500-3,000 token(每次对话都重复)
使用 2 个不同 skill3,000-6,000 token(分别加载)3,000-6,000 token(固定预加载)
使用 3 个不同 skill4,500-9,000 token(分别加载)4,500-9,000 token(固定预加载)
网络延迟有(每次工具调用往返)无(本地已加载)
上下文膨胀低(只加载当前需要的)高(全部塞进 system prompt,挤占用户可用空间)

我在这个过程中从工作流的不同阶段对内容进行组合,利用模型的分析和整理能力完成了一次设计工作方式升级。

  • 文档输出:需求分析 → PRD 生成
  • 快速验证:需求分析 → 设计发散
  • 完整方案:需求分析 → 设计发散 → 交互评审 → 交互说明
设计经验 Skill 沉淀 MCP 服务化 Agent 智能调用 IDE 多端使用 持续更新迭代

从「使用 AI 工具」转变为:构建属于自己的 AI 产品设计工作流。让设计方法、经验和流程成为可复用、可组合、可持续进化的能力,最终实现:

  • 一套设计能力,多 IDE 使用
  • Skill 自动更新复用
  • 设计知识资产化
  • AI Agent 辅助完整设计流程

DesignOS 并不是一个 MCP,也不是一个 Agent

而是围绕产品设计构建的能力操作系统

Skill 是知识载体,MCP 是分发机制,Agent 是执行引擎,

三者共同构成可沉淀、可组合、可持续演进的设计能力体系。

向下滚动