见山之后 Beyond the Mountain
AI Agent /

什么?DeepSeek 可以点瑞幸了?

昨晚刷到瑞幸开放了 AI 平台,MCP、CLI、Skill 一整套都放出来了。

先说清楚:本文确实有点标题党。DeepSeek 这个模型本身点不了任何东西,也连不上瑞幸的服务器。真正干活的是三个东西拼在一起:

  • 瑞幸 Skill:说明书,也是一只手。SKILL.md 里写着”在瑞幸怎么点单”,真正去调瑞幸服务的脚本也在里面。查门店、搜商品、下单,靠的都是它。
  • OpenCode:执行器。它负责读这份说明书,把你的话拆成一串动作,然后按顺序把脚本跑起来。
  • DeepSeek:脑子。它负责听懂”帮我点杯生椰拿铁”,判断要不要调用这个 Skill,先走哪一步,参数该怎么填。

所以更准确的说法是:DeepSeek 当大脑,OpenCode 做调度,瑞幸 Skill 提供能力包。这一套拼起来,确实把咖啡点出来了。

瑞幸到底开放了什么

我去翻了官方文档(open.lkcoffee.com/docs)。瑞幸这次不是只做了个 CLI 页面,而是 MCP Server、CLI、Skill 三条线一起给。

这三条线用的是同一套能力,只是入口不一样:

  • MCP 把点单拆成一组标准工具,让 agent 直接 function call;
  • CLI 是现成的命令行客户端,瑞幸已经帮你封装好;
  • Skill 是一份可以塞进你自己 agent 的”点单说明书”。

我这次走的是 Skill。无论从哪条线进,底层大概都绕不开这几个动作:

能力干什么
queryShopList查门店列表
searchProductForMcp按你的描述匹配商品
queryProductDetailInfo查商品详情、规格
previewOrder预览订单
createOrder创建订单
queryOrderDetailInfo查订单详情
cancelOrder取消订单

连起来看,就是你在 App 里点单的那条路:选店 → 选品 → 选规格 → 确认订单 → 下单。瑞幸只是把这条路从 App 里抽了出来,变成任何 agent 都能接的能力。

还有一个很重要的东西:token。登录之后拿到,MCP、CLI、Skill 共用,和你的瑞幸账号会话绑定。官方也写得很直接:严禁泄露或分享。

这不是一个可以贴在群里的 demo key。它背后是你真实的账号权限,可以查门店,也可以下单、花钱。后面配置的时候它会落到本地,所以别把它提交进任何公开仓库。

第一步:让 OpenCode 用上 DeepSeek

OpenCode 是一个跑在终端里的开源 agent。它支持自定义模型,也支持加载 Skill。

也可以不用 OpenCode。只要 agent 支持 Skill,Qoder、Claude Code、Codex 这些客户端也能走类似思路。

先配置 DeepSeek。存 key 这一步用 auth login,这样密钥不会写进配置文件:

opencode auth login
# 选 Other
# Provider ID 填:deepseek
# 粘贴你的 DeepSeek API key

然后在全局配置 ~/.config/opencode/opencode.json 里加一段 provider,告诉 OpenCode:这个 deepseek 是一个 OpenAI 兼容接口。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "deepseek": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "DeepSeek",
      "options": {
        "baseURL": "https://api.deepseek.com",
      },
      "models": {
        "deepseek-chat": { "name": "DeepSeek Chat" },
      },
    },
  },
}

点杯咖啡是个很轻的 tool calling 任务,deepseek-chat 足够,也便宜。要是你更看重工具调用的稳定性,换成手上更强的模型名就行。

不想折腾终端,也可以在 OpenCode 的 GUI 里配,思路一样。

第二步:把瑞幸的 Skill 装进 OpenCode

现在装 Skill 已经很省事了。最简单的方式,是直接在 agent 对话框里让它下载:

请下载安装 My Coffee Skill:
https://unpkg.luckincoffeecdn.com/@luckin/my-coffee-skill@latest/dist/my-coffee-skill.zip

跑起来

启动 OpenCode,先让它查一下附近门店。

看起来没问题。再让它往前走一步:

帮我在最近的门店点一杯冰美式

DeepSeek 读懂瑞幸这份 Skill 后,替我做了一串决定。OpenCode 按 Skill 里写好的步骤,把上面那张表里的能力跑了一遍:

  1. 先找最近的门店;
  2. 搜”冰美式”,匹配到商品;
  3. 确认规格,把”少冰”填进去;
  4. 生成订单预览,把价格、门店、规格摆到我面前;
  5. 停在这里,等我确认;
  6. 我点头,订单创建。

整个过程里,我没打开 App,没选门店,也没拖那个甜度滑块。我说了一句话,剩下的它自己走完,只在该花钱的那一步把我叫回来。

有意思的不是这杯咖啡

我自己打开 App 点一杯生椰拿铁,也就几十秒。论效率,绕这一圈完全不划算。

但这件事好玩的地方,本来就不在咖啡。

它提醒我一件事:很多原来只能在 App 里完成的动作,正在被拆成 Skill、MCP 这样的标准件,放出来让别的 agent 接。

过去我们说手机是入口,因为服务都锁在各自的 App 里。打车在 App 里,点咖啡在 App 里,订酒店、买票、查订单,也都在 App 里。App 是墙,也是门。

Agent 出来之后,这堵墙开始松动。

人不一定非要进 App。你说一句话,agent 去调能力,能力再去碰服务。最后只在关键节点,比如支付、取消、改地址,把你叫回来确认一下。手机还在,但它从”入口”退成了”遥控器”:确认、支付、收通知。

这里还有一层差别。

用瑞幸官方 CLI,是瑞幸给你配好了一整套东西:它的客户端,它定的流程,你照着用。

用 OpenCode + DeepSeek 接瑞幸 Skill,则是你自己的 agent、你选的模型,长出了一只会点咖啡的手。

瑞幸只负责把能力暴露成标准协议。你用哪个模型、哪个 agent runtime,它不关心,也不需要关心。这也是 Skill / MCP 这类开放协议真正解耦的地方:它不只把”能力”和”入口”分开了,也把”能力”和”模型”分开了。

所以严格说,不是”DeepSeek 会点瑞幸了”。

是瑞幸把点单这件事做成了一个谁都能接的标准件。今天接它的是 DeepSeek,明天可以是任何一个模型、任何一个 agent。

咖啡只是个开始。接下来还有多少服务会从 App 里被这样拆出来,这件事更值得盯着。