Coding

uupt-delivery

Try it

UU跑腿同城配送服务。支持跑腿配送和帮帮服务两种订单类型,包括订单询价、发单下单、查询订单、取消订单、跑男实时追踪。当用户表达任何与"送"、"取"、"寄"、"跑腿"、"发单"、"配送"、"帮送"、"帮取"、"帮买"、"代购"、"同城急送"、"帮帮"、"帮我"、"代办"、"代取号"、"代排队"、"陪诊"、"搬东西"、"装卸"、"小时工"、"打扫卫生"、"布置场地"、"取寄快递"、"琐事代办"等配送或帮帮需求时使用此skill。

What it does

UU跑腿同城配送服务。支持跑腿配送和帮帮服务两种订单类型,包括订单询价、发单下单、查询订单、取消订单、跑男实时追踪。当用户表达任何与"送"、"取"、"寄"、"跑腿"、"发单"、"配送"、"帮送"、"帮取"、"帮买"、"代购"、"同城急送"、"帮帮"、"帮我"、"代办"、"代取号"、"代排队"、"陪诊"、"搬东西"、"装卸"、"小时工"、"打扫卫生"、"布置场地"、"取寄快递"、"琐事代办"等配送或帮帮需求时使用此skill。

The skill document

UU跑腿同城配送服务 Skill

UU跑腿同城配送服务为用户提供便捷的同城即时配送能力和现场帮帮服务,包括订单询价、发单、订单管理和跑男实时追踪等功能。

功能特性

  • 📱 手机号一键注册(首次使用自动引导)
  • 💰 订单询价(计算配送/帮帮服务费用)
  • 📦 创建跑腿配送订单(帮送 / 帮取 / 帮买,从A地到B地)
  • 🤝 创建帮帮服务订单(陪诊、代办、搬抬装卸、小时工、琐事代办等现场协助)
  • 💳 在线支付(余额不足时提供支付链接,支持微信/支付宝)
  • 📋 查询订单详情
  • ❌ 取消订单
  • 🏃 跑男实时位置追踪

运行环境

本 skill 同时提供 Node.jsPython 两种版本,Agent 自动检测可用环境。

环境依赖安装脚本入口
Node.jsnpm installscripts/*.jsindex.js
Pythonpip install -r requirements.txtuupt_delivery.py

命令格式约定:下文命令示例默认使用 Node.js 版本,Python 版本只需将脚本路径换为 python uupt_delivery.py ,参数名中的 --camelCase 换为 --kebab-case(如 --fromAddress--from-address),参数含义完全相同,不再重复列出。

触发条件与场景判断

收到用户请求后,先判断场景。Agent 需智能识别跑腿配送(SEND) vs 帮帮服务(HELP)

用户表达识别为判断依据
"从A送到B"、"把X寄到Y"、"帮我送一下"、"配送"跑腿配送(SEND)两个不同地点之间的物品传递(帮送)
"帮我去A取XX送到B"、"取快递送到家里"跑腿配送(SEND)取件后再送到另一地点(帮取)
"帮我买个X送到Y"、"代购/帮买"跑腿配送(SEND)购买地到收货地,本质仍是 A→B
"送文件/合同/证件"、"送鲜花/蛋糕"、"送餐"跑腿配送(SEND)同城急送常见品类
"帮我在X地点..."、"帮我搬/扔/装/打扫..."帮帮服务(HELP)只有一个地点,跑男在现场提供协助
"陪诊"、"陪护"、"代去医院"帮帮服务(HELP)现场陪同协助,不涉及物品配送
"异地代办"、"政务大厅取资料/盖章"、"琐事代办"帮帮服务(HELP)到指定地点代办事务
"代去现场"、"代排队"、"代取号"帮帮服务(HELP)到场排队/到场办事
"布置场地"、"小时工"、"临时工"、"打扫卫生"帮帮服务(HELP)按需到场提供劳务
"家具/电器搬抬"、"货物装卸"帮帮服务(HELP)现场搬抬装卸劳务
"帮我去快递站取/寄件"(用户不要求再送到别处)帮帮服务(HELP)业务代办类现场事务
"帮我取快递送到家里"跑腿配送(SEND)取件后还需送到另一地点

判断原则:核心是从A到B传递物品(含代买后送达) → 跑腿配送;核心是在某地点提供现场协助/代办/劳务 → 帮帮。

跑腿配送场景分类

对照 UU 跑腿「帮送 / 帮取 / 帮买」能力,配送订单统一走 orderType=send(默认),需确认起始地址 + 目的地址 + 收件人电话。物品说明可写入可选 --note,帮买场景建议必写购买要求。

分类子场景典型用户表达地址怎么填note 示例(可选,帮买建议填写)
帮送文件证件"合同忘公司了,帮我从金水路这边送到二七广场那家公司"from=寄件地,to=收件地牛皮纸袋装合同 1 份,请当面交给前台
帮送餐饮餐食"我点的火锅外卖到了店里,帮我取了送到绿地中心 18 楼"from=商家/取餐点,to=收餐地址火锅外卖 1 份,保温袋别洒,送到前台喊一下
帮送鲜花礼品"花店那束玫瑰,帮我送到万达广场 B 座,别说是谁送的"from=花店,to=收花地址玫瑰花束 1 束,轻拿轻放,保密配送
帮送蛋糕烘焙"好利来那个 8 寸蛋糕,帮我送到希尔顿酒店 1208 房间"from=蛋糕店,to=收货地址生日蛋糕 1 个,防震直立拿,送到房间门口
帮送数码设备"手机坏了,帮我从家里送到苹果授权店维修"from=寄件地,to=售后点手机 1 部(已装箱),到店交给店员签收
帮送样品物料"仓库那箱样品,帮我送到客户写字楼前台"from=仓库/门店,to=客户地址样品纸箱 1 个(约 5 公斤),放前台即可
帮取文件资料"去文印店把我打印好的标书取回来送到家"from=打印店,to=用户地址取已打印标书 1 份(已付款),袋装别折
帮取快递代取送"菜鸟驿站有个快递,取件码 8821,帮我取了送到家门口"from=驿站,to=家取件码 8821,取回后放门口就行
帮取门店取货"药店药已经配好了,帮我取了送到公司前台"from=药店,to=公司报手机号取药,药盒别压碎,放到前台
帮买代购美食"帮我去旁边瑞幸买杯生椰拿铁,送到正弘城写字楼"from=门店,to=收货地生椰拿铁热杯 1 杯,少糖;送到 B 座前台
帮买代购生鲜百货"去盒马买两盒草莓和一提抽纸,送到家里冰箱旁"from=超市,to=家草莓 2 盒(挑熟一点的)+ 抽纸 1 提
帮买代购药品"我在酒店发烧了,帮我去最近药店买盒感冒药送过来"from=药店,to=酒店成人感冒颗粒 1 盒;如缺货先电话问我
帮买代购急需"宿舍没吃的了,便利店买桶泡面和火腿肠马上送来"from=便利店,to=宿舍泡面 1 桶 + 火腿肠 2 根,越快越好

未说清起止地址时先追问;帮买未指定购买地点时,可按用户所在城市就近门店确认后再询价。物品易碎/保温/保密等要求写入 note

帮帮服务场景分类

对照「UU万能帮手」能力,帮帮订单覆盖以下常见场景。下单时统一走 orderType=help,并把具体事项写入 --note

分类子场景典型用户表达note 示例
热门服务陪诊陪护"妈明天去人民医院看病,我去不了,能不能找个人陪着挂号取药"郑州人民医院东院区陪诊,协助挂号、缴费、取药;预计上午
热门服务异地代办"我人不在郑州,帮我去工商局交一下营业执照材料"代去市场监管局提交营业执照材料,材料已放前台
热门服务代去现场"售楼部要排队领资料,帮我去排一下,领到就行"代去某售楼部排队领楼书/资料,领到后电话联系
热门服务布置场地"今晚停车楼求婚,帮我按图片把车尾花和气球布置好"地下停车场车尾鲜花+气球布置,按微信图片效果摆放
搬抬装卸家具搬抬"买了个沙发,三楼没电梯,帮我抬上楼"小区 3 楼无电梯,沙发从一楼抬至三楼,需 2 人
搬抬装卸货物装卸"货车到仓库门口了,帮我把货卸下来码整齐"仓库门口卸货约 20 箱,码放到指定货架旁
搬抬装卸电器搬抬"新冰箱到了,帮我从一楼搬到五楼厨房位置"冰箱搬至 5 楼厨房(有电梯),轻拿轻放防磕碰
小时工临时工"店里人手不够,找个人来干两个小时杂活"临时工 2 小时,到店听从店长安排打杂
小时工布置场地"会议室明天开会,帮我把桌椅和背景板摆好"会议室摆 10 套桌椅 + 背景板,按现场指示摆放
小时工打扫卫生"出租屋退租前,帮我把两室一厅简单打扫一遍"两室一厅日常保洁:扫地拖地、清理厨房卫生间
业务代办琐事代办"政务大厅有份材料要盖章,我抽不开身,帮我跑一趟"市民之家 3 楼窗口取资料并盖章,需带身份证复印件
业务代办取寄快递"帮我去楼下菜鸟驿站把快递取了,放我家门口就行"代取快递(取件码/手机号后四位),放门口即可
其他协助自定义帮帮"也没啥固定服务,就是想找个人帮我干件小事…"按用户原话写清:在哪、干什么、大概多久、有无特殊要求

未命中上表时,仍按帮帮处理:确认服务地点 + 电话 + 具体内容后发单;note 尽量写清地点、事项、时长/人数、特殊要求。

六大场景

场景触发条件所需信息
场景零:首次注册执行脚本输出 [REGISTRATION_REQUIRED]手机号 / 开发者凭证
场景一:订单询价用户想知道费用地址信息(配送需起止地址,帮帮只需地点)
场景二:创建订单用户确认发单priceToken、收件人电话;(帮帮必填 note,帮买建议 note)
场景三:查询订单用户想看订单状态订单编号
场景四:取消订单用户要取消订单订单编号
场景五:跑男追踪用户想看跑男位置订单编号

场景零:首次注册

当执行任何脚本输出 [REGISTRATION_REQUIRED] 时自动触发。

Step 1: 询问凭证

首次使用需要配置认证信息,请问您是否已有 UU跑腿开放平台的凭证(appId、appSecret、openId)?
- A: 已有凭证,直接配置
- B: 没有凭证,通过手机号注册

Step 1A: 开发者模式(A)

请用户提供 appIdappSecretopenId,写入 ~/.uupt-delivery/config.json

{ "appId": "...", "appSecret": "...", "openId": "..." }

保存后告知「配置完成!」,立即继续执行用户最初要求的功能

Step 2: 手机号注册(B)

询问手机号,发送短信验证码:

node scripts/register.js --mobile="用户手机号"

处理结果:

  • [SMS_SENT] → 验证码已发送,进入 Step 3
  • [IMAGE_CAPTCHA_REQUIRED] → 输出包含 IMAGE_DATA=data:image/png;base64,...,将 base64 图片展示给用户识别数字后重试:
    node scripts/register.js --mobile="手机号" --imageCode="用户输入的数字"
    

Step 3: 输入验证码完成授权

node scripts/register.js --mobile="手机号" --smsCode="用户输入的验证码"

处理结果:

  • [REGISTRATION_SUCCESS] → 注册成功,openId 已保存,立即继续执行用户最初的功能
  • [REGISTRATION_FAILED] → 从 Step 2 重试(无需重新输入手机号),最多 3 次
  • [CONFIG_SAVE_FAILED] → 授权已成功但脚本写配置文件失败。输出中包含 OPEN_ID=CONFIG_FILE= 两个字段,Agent 应直接用文件写入工具将 {"openId": ""} 写入 CONFIG_FILE 路径(目录不存在则先创建),然后继续执行用户最初的功能;仅当 Agent 也无法写入时,才提示用户设置环境变量 UUPT_OPEN_ID

场景一:订单询价

计算配送/帮帮服务费用,用户可只询价不发单。

执行步骤

  1. 判断订单类型(配送 vs 帮帮)
  2. 获取地址:配送需起止地址,帮帮只需地点
  3. 执行询价脚本,如输出 [REGISTRATION_REQUIRED] 则进入场景零后重试

命令

跑腿配送:

node scripts/order-price.js --fromAddress="起始地址" --toAddress="目的地址" --cityName="郑州市"

帮帮服务:

node scripts/order-price.js --fromAddress="帮帮地点" --toAddress="帮帮地点" --orderType="help"
参数说明必填
--fromAddress起始地址(帮帮时为帮帮地点)
--toAddress目的地址(帮帮时为帮帮地点)
--cityName城市名称(需带"市"字,默认"郑州市")
--orderTypesend=配送(默认),help=帮帮

回复模板

💰 {跑腿配送/帮帮服务}费用查询结果:

{起点/服务地点}:{fromAddress}
{终点(仅配送):{toAddress}}
预估费用:{price/100} 元

📝 如需下单,请提供收件人电话{帮帮订单加:和具体帮帮内容}。

返回包含 priceToken 和价格信息(单位:分,展示时除以 100 转元)。


场景二:创建订单(发单)

用户明确要发单时,询价后直接创建订单,无需二次确认

订单类型对比

维度跑腿配送(SEND)帮帮服务(HELP)
核心行为物品从A送到B(含帮送/帮取/帮买)跑男在现场提供协助/代办/劳务
地址起始 ≠ 目的起始 = 目的(同一地点)
必填参数fromAddress, toAddress, receiverPhonefromAddress, receiverPhone, note
常见场景文件证件、餐饮、鲜花、蛋糕、数码、快递代取送、代购美食/百货/药品等陪诊陪护、异地代办、代去现场、布置场地、家具/电器搬抬、货物装卸、临时工、打扫卫生、琐事代办、取寄快递、其他自定义协助
note可选(帮买/易碎品建议填写)必填

执行步骤

  1. 获取必要信息(配送:起止地址 + 电话;帮帮:地点 + 电话 + 内容)
  2. 调用询价接口获取 priceToken(参照场景一命令)
  3. 立即创建订单,不询问确认
  4. 处理返回结果

创建订单命令

# 跑腿配送
node scripts/create-order.js --priceToken="xxx" --receiverPhone="13800138000"

# 跑腿配送(可选 note:物品说明 / 帮买要求)
node scripts/create-order.js --priceToken="xxx" --receiverPhone="13800138000" --note="瑞幸生椰拿铁热一杯"

# 帮帮服务(必须带 --note)
node scripts/create-order.js --priceToken="xxx" --receiverPhone="13800138000" --note="帮帮内容描述"

# 微信渠道:追加 --channel="wechat" 生成二维码
参数说明必填
--priceToken询价返回的 token
--receiverPhone收件人手机号
--channel渠道(wechat/feishu/dingtalk 等)
--note物品说明或帮帮内容;帮帮必填,帮买/易碎品建议填写帮帮必填

返回结果处理

情况一:余额充足(订单创建成功)

订单创建成功!

订单编号:{order_code}
{帮帮订单:帮帮内容:{note} | 服务地点:{fromAddress}}
配送费用:{price/100} 元

跑男正在接单中,请保持电话畅通。

情况二:余额不足([PAYMENT_REQUIRED]

关键输出:ORDER_CODEPAYMENT_URLQRCODE_FILE(仅 --channel="wechat" 时)。

微信渠道(链接无法直接打开,必须发二维码图片):

message(action=send, channel="wechat", path="{QRCODE_FILE}", message="请扫码支付 {price/100} 元")

其他渠道:直接发送支付链接 {PAYMENT_URL}(支持微信/支付宝)。

用户返回后询问支付状态,确认后查询订单详情:

node scripts/order-detail.js --orderCode="{order_code}"

完整流程示例

# —— 跑腿配送 ——
用户:帮我从金水区送到二七区德化街,电话 13800138000
Agent:识别帮送 → 询价 → 创建订单 → 余额充足则返回成功,不足则引导支付

用户:把花园路花店的一束玫瑰送到正弘城,电话 13900001111
Agent:识别帮送(鲜花) → 确认起止地址 → 询价 → 可选 note="玫瑰一束,轻拿轻放" → 发单

用户:去郑州大学北门菜鸟驿站取个快递送到宿舍楼下,取件码 8876
Agent:识别帮取(快递) → from=驿站 to=宿舍 → note 写取件码 → 询价发单

用户:帮我买杯瑞幸送到绿地中心A座前台
Agent:识别帮买 → 确认门店与收货地址、饮品要求写入 note → 询价发单

用户:帮我去药店买盒感冒药送到如家酒店前台
Agent:识别帮买(药品) → 确认药店与酒店地址 → note 写清品名与缺货联系方式 → 询价发单

# —— 帮帮服务 ——
用户:帮我在郑州人民医院挂个号
Agent:识别帮帮服务 → 询价 → 获取电话与 note → 创建订单(带 --note)

用户:帮我去医院陪诊
Agent:识别帮帮(陪诊陪护) → 确认医院地点 → 询价 → 电话 + note="陪诊陪护…" → 发单

用户:帮我把冰箱搬上楼
Agent:识别帮帮(电器搬抬) → 确认地址与楼层/电梯情况写入 note → 询价发单

用户:帮我去政务大厅取资料盖章
Agent:识别帮帮(琐事代办) → 确认具体大厅地点 → note 写清取件/盖章要求 → 询价发单

用户:帮我去驿站取个快递放到门口就行
Agent:识别帮帮(取寄快递) → 同一地点代办;若还要求送到另一地址则改判为配送

场景三:查询订单详情

node scripts/order-detail.js --orderCode="UU123456789"
参数说明必填
--orderCode订单编号

回复模板:

📋 订单详情:
订单编号:{order_code} | 状态:{status}
起点:{from_address} | 终点:{to_address}
配送费:{price/100} 元
跑男:{driver_name} {driver_phone}

场景四:取消订单

node scripts/cancel-order.js --orderCode="UU123456789" --reason="取消原因(可选)"
参数说明必填
--orderCode订单编号
--reason取消原因

场景五:跑男实时追踪

node scripts/driver-track.js --orderCode="UU123456789"
参数说明必填
--orderCode订单编号

回复模板:

跑男实时位置:
跑男:{driver_name} | 电话:{driver_phone}
当前位置:{current_location} | 预计送达:{estimated_time}

版本更新(静默)

skill 在业务功能执行完成后会静默检测并自动升级到最新版本(每 24 小时最多一次,后台执行,无输出、不询问用户、绝不影响主功能)。

Agent 无需处理更新流程,不要向用户提及更新、不要询问是否更新、不要手动执行更新命令。

更新不影响用户配置(~/.uupt-delivery/),无需重新注册;旧版本自动备份到 ~/.uupt-delivery/backup/

用户主动询问"skill 有没有新版本"时,可执行(仅检查不更新):

node scripts/self-update.js --check

(Python:python uupt_delivery.py self-update --check


配置管理

配置分为两层,优先级:环境变量 > config.json > defaults.json

文件内容说明
defaults.json(skill 目录)appId、appSecret、apiUrl内置凭证,请勿修改
~/.uupt-delivery/config.jsonopenId(或完整凭证)注册后自动生成或手动创建,保存在用户主目录,不受 skill 更新影响

环境变量

变量说明
UUPT_APP_ID应用 ID
UUPT_APP_SECRET应用密钥
UUPT_OPEN_ID用户唯一标识
UUPT_API_URLAPI 地址(可选,默认生产环境)
UUPT_SKIP_UPDATE_CHECK设为 1 时禁用自动更新检测(可选)

API 环境

环境URL
生产环境https://api-open.uupt.com/openapi/v3/

在代码中使用

Node.js

const { orderPrice, createOrder, orderDetail, cancelOrder, driverTrack } = require('./index');

// 配送询价
const price = await orderPrice({ fromAddress: '...', toAddress: '...', cityName: '郑州市' });
// 帮帮询价
const helpPrice = await orderPrice({ fromAddress: '...', orderType: 'help' });
// 创建订单
const order = await createOrder({ priceToken: price.body.priceToken, receiverPhone: '13800138000' });
// 帮帮订单(带 note)
const helpOrder = await createOrder({ priceToken: helpPrice.body.priceToken, receiverPhone: '13800138000', note: '帮帮内容' });
// 余额不足检测
if (order.body.orderUrl) console.log('支付链接:', order.body.orderUrl);
// 查询订单
const detail = await orderDetail({ orderCode: order.body.orderCode });

Python

from uupt_delivery import order_price, create_order, order_detail, cancel_order, driver_track

# 配送询价
price = order_price(from_address='...', to_address='...', city_name='郑州市')
# 帮帮询价
help_price = order_price(from_address='...', order_type='help')
# 创建订单
order = create_order(price_token=price['body']['priceToken'], receiver_phone='13800138000')
# 帮帮订单(带 note)
help_order = create_order(price_token=help_price['body']['priceToken'], receiver_phone='13800138000', note='帮帮内容')
# 余额不足检测
if order['body'].get('orderUrl'): print('支付链接:', order['body']['orderUrl'])
# 查询订单
detail = order_detail(order_code=order['body']['orderCode'])

注意事项

  • 首次使用:需通过手机号验证获取授权,之后无需重复。注册失败自动重试,最多 3 次(无需重新输入手机号)
  • 图片验证码:短信发送时若返回 [IMAGE_CAPTCHA_REQUIRED],展示 base64 图片给用户识别后重试
  • 询价有效期:priceToken 有时效性,建议获取后尽快创建订单
  • 价格单位:API 返回的价格单位是分,展示时除以 100 转换为元
  • 地址完整性:地址越完整配送越准确。未指定城市默认"郑州市"
  • 余额不足[PAYMENT_REQUIRED] 时,微信渠道用 message 发送二维码图片附件,其他渠道发送支付链接
  • 帮帮订单:必须传 --note 参数,fromAddress = toAddress;务必先确认服务地点与帮帮内容再下单。note 建议包含:事项类型(如陪诊/搬抬/保洁)、具体动作、时长或人数、特殊要求
  • 跑腿配送:必须有不同的起止地址;帮买场景建议用 --note 写清商品与规格;鲜花/蛋糕等易碎品可在 note 注明轻拿轻放、保温防震等要求
  • 配置文件defaults.json 为内置凭证,请勿修改或删除
  • 版本更新:业务完成后后台静默自动升级,无需询问用户,也不要在回复中提及更新

相关链接

Related skills

快递100用户版智能寄件助手:寄件下单全流程(寄快递需登录)、物流查询、订单管理。寄快递时必须先 SSO 登录并使用服务端地址簿,禁止使用本地缓存;未登录仅可使用地址解析、重量查询、快递比价等辅助功能。Use when: 用户要寄快递、查物流、管理快递订单、比价选快递、查运费,或提到快递100/寄件/查单/运费/...

22 installs

Use SF Express (顺丰速运) for shipment tracking, delivery anomaly triage, e-commerce seller/customer handoffs, shipping guidance, service-type comparison, outlet...

26 installs

使用 UAPI 的“Adcode 国内外行政区域查询”单接口 skill,处理 Adcode 国内外行政区域查询、行政区查询 等请求。 Use when the user wants get misc district, misc district, district, district lookup, or w...

22 installs

Detects the presence of delivery packages within the target surveillance area; suitable for inventory checks and unattended alerts at community stations, residential entrances, and office building lobbies. | 包裹检测技能,检测目标监控区域内是否出现快递包裹,适用于社区驿站、小区门口、写字楼前台快递盘点和无人值守提醒

22 installs4 stars

Waimai takeout decision assistant. Input cuisine, budget, location constraints, merchant candidates, or a takeout link; compare delivery fee, minimum order,...

29 installs

Hire humans for physical-world tasks via RentAHuman.ai. Search available humans by skill, post bounties, start conversations, and coordinate real-world work. Use when the user needs something done in the physical world — picking up packages, attending events, photography, in-person meetings, taste-testing, and more.

47 installs2 stars