Install
openclaw skills install @atomicservice/hi-shoppingopenclaw skills install @atomicservice/hi-shopping这是一个用于处理购物需求的 skill,支持用户在场购买和不在场预约购买两种场景。
当用户对话中包含"买"字时,自动触发此 skill。
配置文件位于 seap.config.json,包含以下配置项:
{
"authCode": "your_auth_code_here",
"addresses": [
{
"name": "收货人姓名",
"phone": "135xxxxxxxx",
"country": "CN",
"province": "广东省",
"city": "深圳市",
"district": "龙岗区",
"detail": "详细地址"
}
],
"autoPush": {
"enabled": true,
"channel": "webchat"
}
}
依赖 scripts/seap-cli.js 执行相关命令。技能可在普通环境中运行,无需acpx运行时。
search - 搜索商品aipay - 执行购买(基于确认信息)执行命令进入skill目录
cd ~/.openclaw/workspace/skills/seap-shopping
node scripts/seap-cli search --sessionId=${openclaw当前sessionId} --intent=${queryGoodsIntention} --format md
${openclaw当前sessionId}.json 文件对应序号的商品,获取商品 "skuId",从mercInfo的id字段中获取"mercInfoId"seap.config.json 读取当前收货地址数据结构seap.config.json 文件${sessionId}_confirmed.json,包含商品和确认后的地址信息node scripts/seap-cli aipay --sessionId=${openclaw当前sessionId} --skuId=${skuId} --quantity=${quantity} --mercInfoId=${mercInfoId}
${sessionId}_confirmed.json 确认文件${sessionId}.json 作为最终购买结果用户发起预约购买:"三十分钟后帮我买一瓶红酒" 或 "1分钟后帮我买一瓶红酒" 提取用户意图关键词原文为"queryGoodsIntention",当前商品数量为"quantity"
搜索商品: 执行命令
node scripts/seap-cli search --sessionId=${sessionId} --intent=${queryGoodsIntention} --format md
⚠️ 重要用户选择商品:将查询后的 markdown 通过对话信息返回所有商品数据并按顺序标号,供用户进行选择
用户回复序号(如"1")选择商品,系统读取 ${sessionId}.json 文件获取对应商品信息,获取商品 "skuId",从mercInfo的id字段中获取"mercInfoId"
地址确认对话:
seap.config.json 读取当前收货地址数据结构seap.config.json 文件购买确认:
${sessionId}_confirmed.json,包含商品和确认后的地址信息🔧 购买时间确认
系统解析用户原始时间表达式(如"1分钟后") 计算确切的执行时间戳
"⏰ 购买时间确认
您选择的商品:[商品名称] 预计购买时间:[时间表达式] (约[具体时间])
请确认是否继续预约购买:
用户回复确认、修改时间或取消
🔧 创建定时购买任务 系统解析用户原始时间表达式(如"1分钟后")计算确切的执行时间戳,自动创建 OpenClaw cron 任务 任务配置: { "name": "预约购买 - [商品名称]", "schedule": { "kind": "at", "at": "[ISO格式的执行时间]" }, "payload": { "kind": "agentTurn", "message": "你正在执行一个定时购买任务。
任务信息:
请按以下步骤完成购买并推送结果:
执行购买命令: node scripts/seap-cli aipay --sessionId=${原sessionKey} --skuId=${skuId} --quantity=${quantity} --mercInfoId=${mercInfoId}
读取购买结果: 从 ${原sessionKey}.json 文件读取购买结果
推送结果到原会话: 使用 sessions_send 将购买结果发送到原始会话
清理临时文件(如果有)", "timeoutSeconds": 120 }, "sessionTarget": "current", "deleteAfterRun": true, "delivery": { "mode": "announce" } }
9.提示用户任务已创建 "✅ 预约购买任务已创建!
📦 商品信息
📍 收货地址 [收货地址]
⏰ 执行时间 [时间表达式] (约[具体时间])
系统将在指定时间自动执行购买,并将结果通知您。"
10. **定时任务自动执行**
- 到达指定时间后,OpenClaw自动在当前会话中执行任务
- Agent在当前会话中执行购买命令(使用 aipay)
- Agent读取购买结果(从 ${sessionKey}.json)
11. **🔧 购买结果自动推送(Agent在当前会话中执行)**
由于使用 sessionTarget="current",购买结果会自动显示在当前会话
无需手动使用 sessions_send 推送结果
Agent只需执行购买命令,结果会自动呈现给用户
# 步骤1:定时任务触发购买
系统自动执行执行命令
```bash
node scripts/seap-cli aipay --sessionId=${原sessionKey} --skuId=${skuId} --quantity=${quantity} --mercInfoId=${mercInfoId}
{ "sessionId": "${sessionId}", "skuId": "[商品SKU]", "productName": "[商品名称]", "productPrice": [价格], "orderId": "[生成的订单号]", "success": [布尔值], "address": "[收货地址]", "executedAt": "[执行时间]", "executionType": "scheduled" }
更新 ${sessionId}.json 文件,包含完整的购买信息
生成用户友好的通知消息: "✅ 预约购买任务已完成!
📦 商品信息
📋 订单信息
📍 收货地址 [收货地址]
⏰ 完成时间 [完成时间]
💡 这是您的预约购买结果。"
使用 sessions_send 将结果发送到用户的原始会话 确保用户能够立即收到购买完成通知
购买完成后清理临时文件: