@optima-chat/optima-agent 0.8.20 → 0.8.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/logistics/SKILL.md +156 -0
- package/.claude/skills/order/SKILL.md +5 -5
- package/.claude/skills/shipping/SKILL.md +2 -0
- package/.claude/skills/shopify/SKILL.md +282 -0
- package/dist/bin/bi-cli.js +0 -0
- package/dist/bin/comfy.js +0 -0
- package/dist/bin/commerce.js +0 -0
- package/dist/bin/google-ads.js +0 -0
- package/dist/bin/optima.js +0 -0
- package/dist/bin/scout.js +0 -0
- package/dist/bin/shopify.d.ts +3 -0
- package/dist/bin/shopify.d.ts.map +1 -0
- package/dist/bin/shopify.js +3 -0
- package/dist/bin/shopify.js.map +1 -0
- package/dist/src/system-prompt.d.ts.map +1 -1
- package/dist/src/system-prompt.js +4 -1
- package/dist/src/system-prompt.js.map +1 -1
- package/package.json +5 -2
- package/.claude/settings.local.json +0 -135
- package/dist/src/hooks-loader.d.ts +0 -6
- package/dist/src/hooks-loader.d.ts.map +0 -1
- package/dist/src/hooks-loader.js +0 -215
- package/dist/src/hooks-loader.js.map +0 -1
- package/dist/src/ui/App.d.ts +0 -6
- package/dist/src/ui/App.d.ts.map +0 -1
- package/dist/src/ui/App.js +0 -164
- package/dist/src/ui/App.js.map +0 -1
- package/dist/src/ui/components/Composer.d.ts +0 -10
- package/dist/src/ui/components/Composer.d.ts.map +0 -1
- package/dist/src/ui/components/Composer.js +0 -13
- package/dist/src/ui/components/Composer.js.map +0 -1
- package/dist/src/ui/components/Header.d.ts +0 -7
- package/dist/src/ui/components/Header.d.ts.map +0 -1
- package/dist/src/ui/components/Header.js +0 -7
- package/dist/src/ui/components/Header.js.map +0 -1
- package/dist/src/ui/components/Message.d.ts +0 -12
- package/dist/src/ui/components/Message.d.ts.map +0 -1
- package/dist/src/ui/components/Message.js +0 -21
- package/dist/src/ui/components/Message.js.map +0 -1
- package/dist/src/ui/components/MessageList.d.ts +0 -9
- package/dist/src/ui/components/MessageList.d.ts.map +0 -1
- package/dist/src/ui/components/MessageList.js +0 -18
- package/dist/src/ui/components/MessageList.js.map +0 -1
- package/dist/src/ui/components/Spinner.d.ts +0 -6
- package/dist/src/ui/components/Spinner.d.ts.map +0 -1
- package/dist/src/ui/components/Spinner.js +0 -7
- package/dist/src/ui/components/Spinner.js.map +0 -1
- package/dist/src/ui/components/StatusBar.d.ts +0 -11
- package/dist/src/ui/components/StatusBar.d.ts.map +0 -1
- package/dist/src/ui/components/StatusBar.js +0 -7
- package/dist/src/ui/components/StatusBar.js.map +0 -1
- package/dist/src/ui/components/index.d.ts +0 -7
- package/dist/src/ui/components/index.d.ts.map +0 -1
- package/dist/src/ui/components/index.js +0 -7
- package/dist/src/ui/components/index.js.map +0 -1
- package/dist/src/validation/error-formatter.d.ts +0 -21
- package/dist/src/validation/error-formatter.d.ts.map +0 -1
- package/dist/src/validation/error-formatter.js +0 -98
- package/dist/src/validation/error-formatter.js.map +0 -1
- package/dist/src/validation/index.d.ts +0 -10
- package/dist/src/validation/index.d.ts.map +0 -1
- package/dist/src/validation/index.js +0 -10
- package/dist/src/validation/index.js.map +0 -1
- package/dist/src/validation/json-validator.d.ts +0 -25
- package/dist/src/validation/json-validator.d.ts.map +0 -1
- package/dist/src/validation/json-validator.js +0 -173
- package/dist/src/validation/json-validator.js.map +0 -1
- package/dist/src/validation/schema.d.ts +0 -353
- package/dist/src/validation/schema.d.ts.map +0 -1
- package/dist/src/validation/schema.js +0 -57
- package/dist/src/validation/schema.js.map +0 -1
- package/dist/src/validation/suggestions.d.ts +0 -25
- package/dist/src/validation/suggestions.d.ts.map +0 -1
- package/dist/src/validation/suggestions.js +0 -144
- package/dist/src/validation/suggestions.js.map +0 -1
- package/dist/src/validation/types.d.ts +0 -40
- package/dist/src/validation/types.d.ts.map +0 -1
- package/dist/src/validation/types.js +0 -5
- package/dist/src/validation/types.js.map +0 -1
- package/dist/src/validation/yaml-validator.d.ts +0 -25
- package/dist/src/validation/yaml-validator.d.ts.map +0 -1
- package/dist/src/validation/yaml-validator.js +0 -177
- package/dist/src/validation/yaml-validator.js.map +0 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: logistics
|
|
3
|
+
description: "物流服务管理。使用场景:运单查询、运单取消、标签获取、物流追踪、运费报价、地址验证。当用户问物流服务、运单详情、追踪号查询、快递识别、运费查询时使用。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 物流服务 (Logistics)
|
|
7
|
+
|
|
8
|
+
> **注意**:此模块管理 optima-logistics 物流服务的底层能力。日常订单发货请使用 **order** skill(`commerce order ship`)。
|
|
9
|
+
|
|
10
|
+
## 典型场景
|
|
11
|
+
|
|
12
|
+
| 用户说 | 命令 |
|
|
13
|
+
|--------|------|
|
|
14
|
+
| "查运单详情" / "运单 lo_xxx 的状态" | `logistics shipment get <id>` |
|
|
15
|
+
| "取消运单" | `logistics shipment cancel <id>` |
|
|
16
|
+
| "打印面单" / "下载标签" | `logistics shipment label <id>` |
|
|
17
|
+
| "追踪物流" / "包裹到哪了"(用运单号) | `logistics tracking get <tracking-number>` |
|
|
18
|
+
| "注册追踪号" | `logistics tracking register <tracking-number>` |
|
|
19
|
+
| "识别快递公司" | `logistics tracking detect-courier <tracking-number>` |
|
|
20
|
+
| "查运费" / "报价" | `logistics rates query` |
|
|
21
|
+
| "验证地址" | `logistics address validate` |
|
|
22
|
+
|
|
23
|
+
## 不在此模块
|
|
24
|
+
|
|
25
|
+
| 用户说 | 正确模块 |
|
|
26
|
+
|--------|----------|
|
|
27
|
+
| "订单发货" | **order** skill → `commerce order ship` |
|
|
28
|
+
| "运费设置" / "运费模式" | **shipping** skill → `commerce shipping` |
|
|
29
|
+
| "固定运费区域" | **shipping** skill → `commerce shipping-zone` |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 运单管理
|
|
34
|
+
|
|
35
|
+
### 查看运单详情
|
|
36
|
+
```bash
|
|
37
|
+
logistics shipment get <logistics-order-id>
|
|
38
|
+
|
|
39
|
+
# 示例
|
|
40
|
+
logistics shipment get lo_abc123def456
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 取消运单
|
|
44
|
+
```bash
|
|
45
|
+
logistics shipment cancel <logistics-order-id>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 获取运单标签
|
|
49
|
+
```bash
|
|
50
|
+
logistics shipment label <logistics-order-id>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
返回标签下载链接(PDF),用于打印贴在包裹上。
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 物流追踪
|
|
58
|
+
|
|
59
|
+
### 查询追踪信息
|
|
60
|
+
```bash
|
|
61
|
+
logistics tracking get <tracking-number> [--courier <slug>]
|
|
62
|
+
|
|
63
|
+
# 示例
|
|
64
|
+
logistics tracking get SF1234567890
|
|
65
|
+
logistics tracking get 1Z999AA10123456784 --courier ups
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
返回:当前状态、轨迹列表(checkpoints)、预计送达时间。
|
|
69
|
+
|
|
70
|
+
### 注册追踪号(推送通知)
|
|
71
|
+
```bash
|
|
72
|
+
logistics tracking register <tracking-number> [--courier <slug>] [--logistics-order-id <id>]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
注册后可通过 webhook 接收物流状态更新推送。
|
|
76
|
+
|
|
77
|
+
### 识别快递公司
|
|
78
|
+
```bash
|
|
79
|
+
logistics tracking detect-courier <tracking-number>
|
|
80
|
+
|
|
81
|
+
# 示例
|
|
82
|
+
logistics tracking detect-courier SF1234567890
|
|
83
|
+
# → sf-express
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 运费报价
|
|
89
|
+
|
|
90
|
+
### 查询运费
|
|
91
|
+
```bash
|
|
92
|
+
logistics rates query \
|
|
93
|
+
--origin '<JSON Address>' \
|
|
94
|
+
--destination '<JSON Address>' \
|
|
95
|
+
--items '<JSON ParcelItem[]>' \
|
|
96
|
+
[--currency USD]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Address JSON 格式:
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"name": "John",
|
|
103
|
+
"street1": "123 Main St",
|
|
104
|
+
"city": "New York",
|
|
105
|
+
"state": "NY",
|
|
106
|
+
"postalCode": "10001",
|
|
107
|
+
"country": "US",
|
|
108
|
+
"phone": "+1234567890"
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
ParcelItem JSON 格式:
|
|
113
|
+
```json
|
|
114
|
+
[{
|
|
115
|
+
"title": "T-Shirt",
|
|
116
|
+
"quantity": 2,
|
|
117
|
+
"price": 29.99,
|
|
118
|
+
"currency": "USD",
|
|
119
|
+
"weight": 300,
|
|
120
|
+
"originCountry": "CN"
|
|
121
|
+
}]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 地址验证
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
logistics address validate --address '<JSON Address>'
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 命令参考
|
|
135
|
+
|
|
136
|
+
### 运单管理
|
|
137
|
+
- `logistics shipment get <id>` - 查看运单详情
|
|
138
|
+
- `logistics shipment cancel <id>` - 取消运单
|
|
139
|
+
- `logistics shipment label <id>` - 获取运单标签
|
|
140
|
+
|
|
141
|
+
### 物流追踪
|
|
142
|
+
- `logistics tracking get <number>` - 查询追踪信息
|
|
143
|
+
- `logistics tracking register <number>` - 注册追踪号
|
|
144
|
+
- `logistics tracking detect-courier <number>` - 识别快递公司
|
|
145
|
+
|
|
146
|
+
### 运费
|
|
147
|
+
- `logistics rates query` - 查询运费报价
|
|
148
|
+
|
|
149
|
+
### 地址
|
|
150
|
+
- `logistics address validate` - 验证地址
|
|
151
|
+
|
|
152
|
+
所有命令支持 `--pretty` 参数输出人类可读格式。
|
|
153
|
+
|
|
154
|
+
## 不确定用什么命令?
|
|
155
|
+
|
|
156
|
+
运行 `logistics --help` 查看所有子命令。
|
|
@@ -45,7 +45,7 @@ description: Order fulfillment and shipping management. Process orders, ship pac
|
|
|
45
45
|
|
|
46
46
|
| shipping_mode_used | 含义 | 发货方式 |
|
|
47
47
|
|--------------------|------|----------|
|
|
48
|
-
| `easyship` |
|
|
48
|
+
| `easyship` | 买家选择了动态运费快递 | 可选自动发货 或 手动发货 |
|
|
49
49
|
| `fixed` | 买家使用固定运费 | 只能手动发货 |
|
|
50
50
|
| `free` | 全球免运费 | 只能手动发货 |
|
|
51
51
|
| 空/null | 历史订单 | 只能手动发货 |
|
|
@@ -80,10 +80,10 @@ description: Order fulfillment and shipping management. Process orders, ship pac
|
|
|
80
80
|
**命令**:
|
|
81
81
|
```bash
|
|
82
82
|
# 使用买家选择的快递(推荐)
|
|
83
|
-
commerce order ship --id <order-id> --
|
|
83
|
+
commerce order ship --id <order-id> --auto
|
|
84
84
|
|
|
85
85
|
# 或指定其他 Easyship 支持的快递
|
|
86
|
-
commerce order ship --id <order-id> --
|
|
86
|
+
commerce order ship --id <order-id> --auto --courier-id <courier-id>
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
**返回结果包含**:
|
|
@@ -184,7 +184,7 @@ AskUserQuestion:
|
|
|
184
184
|
|
|
185
185
|
用户:[选择 Easyship 自动发货]
|
|
186
186
|
|
|
187
|
-
助手:[执行 Bash: commerce order ship --id order_abc --
|
|
187
|
+
助手:[执行 Bash: commerce order ship --id order_abc --auto]
|
|
188
188
|
[检查返回结果中的 label_state]
|
|
189
189
|
|
|
190
190
|
[情况A:label_state = "generated",有 label_url]
|
|
@@ -367,7 +367,7 @@ commerce order get --id order_123
|
|
|
367
367
|
|
|
368
368
|
# 步骤2a:如果 shipping_mode_used = "easyship",询问用户选择后
|
|
369
369
|
# 用户选择 Easyship 自动发货
|
|
370
|
-
commerce order ship --id order_123 --
|
|
370
|
+
commerce order ship --id order_123 --auto
|
|
371
371
|
|
|
372
372
|
# 步骤2b:如果用户选择手动发货,或 shipping_mode_used = "fixed"/"free"
|
|
373
373
|
# 只需提供运单号,carrier 可选
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shopify
|
|
3
|
+
description: Shopify store integration for Optima Commerce. Connect Shopify stores, sync products/orders/inventory/customers, manage collections, discounts, draft orders, refunds, webhooks, markets, and analytics. Use when user mentions Shopify, wants to connect a Shopify store, or manage Shopify-related operations.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Shopify CLI - Shopify 店铺集成管理
|
|
7
|
+
|
|
8
|
+
Shopify 集成模块,用于连接和管理用户的 Shopify 店铺。
|
|
9
|
+
|
|
10
|
+
**重要**:这里管理的是用户在 Shopify 平台上的店铺,不是 Optima 自有店铺。用户可以将 Shopify 店铺连接到 Optima,实现跨平台管理。
|
|
11
|
+
|
|
12
|
+
## 典型场景
|
|
13
|
+
|
|
14
|
+
当用户说:
|
|
15
|
+
- "连接我的 Shopify 店铺" → 使用下方「连接 Shopify 店铺流程(AI Shell)」
|
|
16
|
+
- "查看我连接了哪些 Shopify 店铺" → `shopify auth stores`
|
|
17
|
+
- "看看 Shopify 上有哪些商品" → `shopify product list --store <storeId>`
|
|
18
|
+
- "把 Shopify 商品同步过来" → `shopify product sync --store <storeId>`
|
|
19
|
+
- "查看 Shopify 订单" → `shopify order list --store <storeId>`
|
|
20
|
+
- "Shopify 订单发货" → `shopify order fulfill --store <storeId> --order <orderId> --tracking <号码>`
|
|
21
|
+
- "查看 Shopify 库存" → `shopify inventory list --store <storeId>`
|
|
22
|
+
- "同步 Shopify 库存" → `shopify inventory sync --store <storeId>`
|
|
23
|
+
- "创建 Shopify 折扣码" → `shopify discount create --store <storeId> --code SAVE10 --percentage 10`
|
|
24
|
+
- "查看 Shopify 销售数据" → `shopify analytics report --store <storeId>`
|
|
25
|
+
|
|
26
|
+
### 场景决策表
|
|
27
|
+
|
|
28
|
+
| 用户需求 | 推荐命令 | 关键注意点 |
|
|
29
|
+
|---------|---------|-----------|
|
|
30
|
+
| 连接 Shopify 店铺 | 见下方 AI Shell 连接流程 | 两步式:获取 URL → 轮询状态 |
|
|
31
|
+
| 查看已连接店铺 | `shopify auth stores` | 显示所有已连接店铺 |
|
|
32
|
+
| 断开 Shopify 店铺 | `shopify auth stores --disconnect <storeId>` | 不可逆操作,需确认 |
|
|
33
|
+
| 浏览 Shopify 商品 | `shopify product list --store <id>` | 可用 --status 过滤 |
|
|
34
|
+
| 同步商品到 Optima | `shopify product sync --store <id>` | 从 Shopify 同步到 Optima |
|
|
35
|
+
| 查看 Shopify 订单 | `shopify order list --store <id>` | 可用 --status 过滤 |
|
|
36
|
+
| Shopify 订单发货 | `shopify order fulfill --store <id> --order <oid>` | 需要 tracking 号 |
|
|
37
|
+
| 库存对比 | `shopify inventory compare --store <id>` | 对比 Shopify 和 Optima 库存差异 |
|
|
38
|
+
| 客户同步 | `shopify customer sync --store <id>` | 同步客户数据到 Optima |
|
|
39
|
+
| 创建折扣码 | `shopify discount create --store <id>` | 支持百分比和固定金额 |
|
|
40
|
+
| 销售报表 | `shopify analytics report --store <id>` | ShopifyQL 数据分析 |
|
|
41
|
+
|
|
42
|
+
## 使用前提
|
|
43
|
+
|
|
44
|
+
1. 用户必须先登录 Optima(`optima auth login`)
|
|
45
|
+
2. 然后连接 Shopify 店铺(`shopify auth login --shop <domain>`)
|
|
46
|
+
3. 连接后通过 `--store <storeId>` 指定操作哪个店铺
|
|
47
|
+
|
|
48
|
+
### 获取 storeId
|
|
49
|
+
|
|
50
|
+
所有操作都需要 `--store <storeId>` 参数,先用 `shopify auth stores` 获取:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
shopify auth stores
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
如果用户只连接了一个店铺,可以从输出中直接取 storeId。
|
|
57
|
+
|
|
58
|
+
## 连接 Shopify 店铺流程(AI Shell)
|
|
59
|
+
|
|
60
|
+
**重要**:在 AI Shell 环境中,**必须使用两步式流程**(`--url-only` + `auth check`),不要使用默认的 `auth login`(会阻塞等待浏览器授权)。
|
|
61
|
+
|
|
62
|
+
### 步骤 1:获取授权 URL
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
shopify auth login --shop mystore.myshopify.com --url-only
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
返回 JSON 包含 `installUrl` 和 `state`。
|
|
69
|
+
|
|
70
|
+
### 步骤 2:展示链接给用户
|
|
71
|
+
|
|
72
|
+
将 `installUrl` 作为**可点击的 Markdown 链接**展示给用户,例如:
|
|
73
|
+
|
|
74
|
+
> 请点击以下链接授权您的 Shopify 店铺:
|
|
75
|
+
> [授权 mystore.myshopify.com](https://mystore.myshopify.com/admin/oauth/authorize?...)
|
|
76
|
+
> 我会自动检测授权状态,请在浏览器中完成授权。
|
|
77
|
+
|
|
78
|
+
### 步骤 3:自动轮询授权状态
|
|
79
|
+
|
|
80
|
+
展示链接后,**立即开始轮询**,不需要等待用户回复:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# 等待 15 秒后检查
|
|
84
|
+
sleep 15 && shopify auth check --state <state值>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
根据返回结果:
|
|
88
|
+
- `completed: true` → 授权成功,展示店铺信息
|
|
89
|
+
- `completed: false, expired: false` → 尚未完成,继续等 15 秒再查
|
|
90
|
+
- `completed: false, expired: true` → 已过期,提示用户重新连接
|
|
91
|
+
|
|
92
|
+
**轮询规则**:
|
|
93
|
+
- 每次间隔 **15 秒**
|
|
94
|
+
- 最多轮询 **20 次**(5 分钟)
|
|
95
|
+
- 每 3-4 次轮询时告知用户:"⏳ 仍在等待授权..."
|
|
96
|
+
- 超时后告知用户:"授权超时,请重试"
|
|
97
|
+
|
|
98
|
+
### 完整示例对话
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
用户:连接我的 Shopify 店铺 cool-gadgets.myshopify.com
|
|
102
|
+
|
|
103
|
+
AI:[执行 Bash: shopify auth login --shop cool-gadgets.myshopify.com --url-only]
|
|
104
|
+
→ 获取到 installUrl 和 state
|
|
105
|
+
|
|
106
|
+
请点击以下链接授权您的 Shopify 店铺:
|
|
107
|
+
[授权 cool-gadgets.myshopify.com](https://cool-gadgets.myshopify.com/admin/oauth/authorize?...)
|
|
108
|
+
我会自动检测授权状态。
|
|
109
|
+
|
|
110
|
+
[执行 Bash: sleep 15 && shopify auth check --state abc123]
|
|
111
|
+
→ completed: false
|
|
112
|
+
|
|
113
|
+
[执行 Bash: sleep 15 && shopify auth check --state abc123]
|
|
114
|
+
→ completed: false
|
|
115
|
+
|
|
116
|
+
⏳ 仍在等待授权...
|
|
117
|
+
|
|
118
|
+
[执行 Bash: sleep 15 && shopify auth check --state abc123]
|
|
119
|
+
→ completed: true, store: { shopName: "Cool Gadgets", ... }
|
|
120
|
+
|
|
121
|
+
✅ 已成功连接 Shopify 店铺!
|
|
122
|
+
- 店铺:Cool Gadgets
|
|
123
|
+
- 域名:cool-gadgets.myshopify.com
|
|
124
|
+
- 邮箱:owner@example.com
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 命令参考
|
|
128
|
+
|
|
129
|
+
### 认证和店铺管理
|
|
130
|
+
- `shopify auth login --shop <domain>` - 连接 Shopify 店铺(有浏览器环境)
|
|
131
|
+
- `shopify auth login --shop <domain> --url-only` - 获取授权 URL(AI Shell/无头环境)
|
|
132
|
+
- `shopify auth check --state <state>` - 检查 OAuth 授权状态(单次检查)
|
|
133
|
+
- `shopify auth status` - 查看认证状态
|
|
134
|
+
- `shopify auth stores` - 列出已连接店铺
|
|
135
|
+
- `shopify auth stores --info <storeId>` - 查看店铺实时信息
|
|
136
|
+
- `shopify auth stores --disconnect <storeId>` - 断开店铺连接
|
|
137
|
+
|
|
138
|
+
### 商品管理
|
|
139
|
+
- `shopify product list --store <id>` - 商品列表
|
|
140
|
+
- `shopify product get --store <id> --product <pid>` - 商品详情
|
|
141
|
+
- `shopify product search --store <id> --query <关键词>` - 搜索商品
|
|
142
|
+
- `shopify product sync --store <id>` - 同步商品到 Optima
|
|
143
|
+
- `shopify product publish --store <id> --product <pid>` - 发布商品到销售渠道
|
|
144
|
+
- `shopify product mapping --store <id>` - 查看 Shopify↔Optima 商品映射
|
|
145
|
+
|
|
146
|
+
### 订单管理
|
|
147
|
+
- `shopify order list --store <id>` - 订单列表
|
|
148
|
+
- `shopify order get --store <id> --order <oid>` - 订单详情
|
|
149
|
+
- `shopify order fulfill --store <id> --order <oid> --tracking <号码>` - 订单发货
|
|
150
|
+
- `shopify order sync --store <id>` - 同步订单到 Optima
|
|
151
|
+
|
|
152
|
+
### 库存管理
|
|
153
|
+
- `shopify inventory list --store <id>` - 库存列表
|
|
154
|
+
- `shopify inventory get --store <id> --product <pid>` - 查看商品库存
|
|
155
|
+
- `shopify inventory adjust --store <id> --item <itemId> --delta <数量>` - 调整库存
|
|
156
|
+
- `shopify inventory sync --store <id>` - 同步库存
|
|
157
|
+
- `shopify inventory compare --store <id>` - 对比 Shopify/Optima 库存差异
|
|
158
|
+
- `shopify inventory locations --store <id>` - 查看库存位置
|
|
159
|
+
|
|
160
|
+
### 位置管理
|
|
161
|
+
- `shopify location list --store <id>` - 仓库/位置列表
|
|
162
|
+
- `shopify location get --store <id> --location <lid>` - 位置详情
|
|
163
|
+
|
|
164
|
+
### 集合管理
|
|
165
|
+
- `shopify collection list --store <id>` - 集合列表
|
|
166
|
+
- `shopify collection get --store <id> --collection <cid>` - 集合详情
|
|
167
|
+
- `shopify collection create --store <id> --title <名称>` - 创建集合
|
|
168
|
+
- `shopify collection add --store <id> --collection <cid> --products <pid1,pid2>` - 添加商品到集合
|
|
169
|
+
|
|
170
|
+
### 客户管理
|
|
171
|
+
- `shopify customer list --store <id>` - 客户列表
|
|
172
|
+
- `shopify customer get --store <id> --customer <cid>` - 客户详情
|
|
173
|
+
- `shopify customer sync --store <id>` - 同步客户到 Optima
|
|
174
|
+
|
|
175
|
+
### 折扣管理
|
|
176
|
+
- `shopify discount list --store <id>` - 折扣列表
|
|
177
|
+
- `shopify discount get --store <id> --discount <did>` - 折扣详情
|
|
178
|
+
- `shopify discount create --store <id>` - 创建折扣码
|
|
179
|
+
- `shopify discount delete --store <id> --discount <did>` - 删除折扣
|
|
180
|
+
|
|
181
|
+
### 草稿订单
|
|
182
|
+
- `shopify draft-order list --store <id>` - 草稿订单列表
|
|
183
|
+
- `shopify draft-order get --store <id> --draft-order <did>` - 草稿订单详情
|
|
184
|
+
- `shopify draft-order create --store <id>` - 创建草稿订单
|
|
185
|
+
- `shopify draft-order complete --store <id> --draft-order <did>` - 完成草稿订单
|
|
186
|
+
- `shopify draft-order delete --store <id> --draft-order <did>` - 删除草稿订单
|
|
187
|
+
|
|
188
|
+
### 退款管理
|
|
189
|
+
- `shopify refund list --store <id> --order <oid>` - 退款列表
|
|
190
|
+
- `shopify refund create --store <id> --order <oid>` - 创建退款
|
|
191
|
+
|
|
192
|
+
### 市场管理
|
|
193
|
+
- `shopify market list --store <id>` - 市场列表
|
|
194
|
+
- `shopify market get --store <id> --market <mid>` - 市场详情
|
|
195
|
+
|
|
196
|
+
### 数据分析
|
|
197
|
+
- `shopify analytics report --store <id>` - 销售报表
|
|
198
|
+
- `shopify analytics query --store <id> --query <ShopifyQL>` - 自定义 ShopifyQL 查询
|
|
199
|
+
|
|
200
|
+
### Webhook 管理
|
|
201
|
+
- `shopify webhook list --store <id>` - 已订阅的 webhook
|
|
202
|
+
- `shopify webhook subscribe --store <id> --topic <topic>` - 订阅 webhook
|
|
203
|
+
- `shopify webhook unsubscribe --store <id> --subscription <sid>` - 取消订阅
|
|
204
|
+
|
|
205
|
+
## 详细示例
|
|
206
|
+
|
|
207
|
+
### 连接店铺并查看商品
|
|
208
|
+
```bash
|
|
209
|
+
# 连接 Shopify 店铺
|
|
210
|
+
shopify auth login --shop my-cool-store.myshopify.com
|
|
211
|
+
|
|
212
|
+
# 查看已连接店铺,获取 storeId
|
|
213
|
+
shopify auth stores
|
|
214
|
+
|
|
215
|
+
# 查看商品列表
|
|
216
|
+
shopify product list --store abc123
|
|
217
|
+
|
|
218
|
+
# 搜索特定商品
|
|
219
|
+
shopify product search --store abc123 --query "T-shirt"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### 同步商品和库存
|
|
223
|
+
```bash
|
|
224
|
+
# 将 Shopify 商品同步到 Optima Commerce
|
|
225
|
+
shopify product sync --store abc123
|
|
226
|
+
|
|
227
|
+
# 查看商品映射关系
|
|
228
|
+
shopify product mapping --store abc123
|
|
229
|
+
|
|
230
|
+
# 对比两个平台的库存差异
|
|
231
|
+
shopify inventory compare --store abc123
|
|
232
|
+
|
|
233
|
+
# 同步库存
|
|
234
|
+
shopify inventory sync --store abc123
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### 订单发货
|
|
238
|
+
```bash
|
|
239
|
+
# 查看待发货订单
|
|
240
|
+
shopify order list --store abc123 --status unfulfilled
|
|
241
|
+
|
|
242
|
+
# 查看订单详情
|
|
243
|
+
shopify order get --store abc123 --order order_456
|
|
244
|
+
|
|
245
|
+
# 发货(提供 tracking 号码)
|
|
246
|
+
shopify order fulfill --store abc123 --order order_456 \
|
|
247
|
+
--tracking SF1234567890
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 创建折扣码
|
|
251
|
+
```bash
|
|
252
|
+
# 创建 10% 折扣码
|
|
253
|
+
shopify discount create --store abc123 \
|
|
254
|
+
--code SAVE10 \
|
|
255
|
+
--percentage 10 \
|
|
256
|
+
--title "新年促销 10% off"
|
|
257
|
+
|
|
258
|
+
# 创建固定金额折扣
|
|
259
|
+
shopify discount create --store abc123 \
|
|
260
|
+
--code FLAT20 \
|
|
261
|
+
--amount 20 \
|
|
262
|
+
--title "满减优惠 $20 off"
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 销售数据分析
|
|
266
|
+
```bash
|
|
267
|
+
# 生成销售报表
|
|
268
|
+
shopify analytics report --store abc123
|
|
269
|
+
|
|
270
|
+
# 自定义 ShopifyQL 查询
|
|
271
|
+
shopify analytics query --store abc123 \
|
|
272
|
+
--query "FROM orders SHOW sum(total_price) GROUP BY day SINCE -30d"
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## 重要提示
|
|
276
|
+
|
|
277
|
+
- 所有命令都需要 `--store <storeId>` 参数,先用 `shopify auth stores` 获取
|
|
278
|
+
- 商品/订单/库存同步是从 **Shopify → Optima** 方向
|
|
279
|
+
- 折扣码在 **Shopify 平台**上创建和管理
|
|
280
|
+
- 连接店铺需要浏览器交互(OAuth 授权),在 AI Shell 中使用 `--url-only` + `auth check` 两步式流程
|
|
281
|
+
- 断开店铺是软删除,不会影响 Shopify 上的数据
|
|
282
|
+
- 使用 `--help` 查看命令详细参数
|
package/dist/bin/bi-cli.js
CHANGED
|
File without changes
|
package/dist/bin/comfy.js
CHANGED
|
File without changes
|
package/dist/bin/commerce.js
CHANGED
|
File without changes
|
package/dist/bin/google-ads.js
CHANGED
|
File without changes
|
package/dist/bin/optima.js
CHANGED
|
File without changes
|
package/dist/bin/scout.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../../bin/shopify.ts"],"names":[],"mappings":";AACA,OAAO,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../bin/shopify.ts"],"names":[],"mappings":";AACA,OAAO,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,IAAI,MAAM,CA0IxC"}
|
|
@@ -15,7 +15,7 @@ export function getSystemPrompt() {
|
|
|
15
15
|
|
|
16
16
|
你是 Optima Agent,一个专业的电商运营 AI 助手。你的职责是帮助用户管理电商业务的各个方面。
|
|
17
17
|
|
|
18
|
-
**重要**:用户提到的"独立站"、"店铺"、"我的店"
|
|
18
|
+
**重要**:用户提到的"独立站"、"店铺"、"我的店"默认指 Optima AI 自有电商平台。如果用户明确提到 "Shopify" 或 "Shopify 店铺",则使用 shopify 技能。
|
|
19
19
|
|
|
20
20
|
## 当前环境
|
|
21
21
|
|
|
@@ -43,6 +43,8 @@ export function getSystemPrompt() {
|
|
|
43
43
|
- **bi** - 数据分析和报表
|
|
44
44
|
- **review** - 评价管理(审核、回复、精选)
|
|
45
45
|
- **sentinel** - 自动化监控规则管理(创建/暂停/查看规则、审批管理)
|
|
46
|
+
- **logistics** - 物流服务管理(运单查询/取消/标签、物流追踪、运费报价、地址验证)
|
|
47
|
+
- **shopify** - Shopify 店铺集成(连接店铺、商品/订单/库存/客户同步、折扣、数据分析)
|
|
46
48
|
|
|
47
49
|
**使用方式**:当用户提出具体需求时,使用 Skill 工具加载对应模块获取详细用法。
|
|
48
50
|
|
|
@@ -51,6 +53,7 @@ export function getSystemPrompt() {
|
|
|
51
53
|
- 用户:"帮我创建一个商品" - 使用 Skill 工具加载 "product"
|
|
52
54
|
- 用户:"生成一张产品图片" - 使用 Skill 工具加载 "comfy"
|
|
53
55
|
- 用户:"包裹到哪了" / "查物流" - 使用 Skill 工具加载 "order"
|
|
56
|
+
- 用户:"连接我的 Shopify 店铺" / "看看 Shopify 商品" - 使用 Skill 工具加载 "shopify"
|
|
54
57
|
|
|
55
58
|
## 工作原则
|
|
56
59
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,OAAO;;;;;;;;;aASI,OAAO,IAAI,OAAO
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,OAAO;;;;;;;;;aASI,OAAO,IAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH9B,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optima-chat/optima-agent",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.22",
|
|
4
4
|
"description": "基于 Claude Agent SDK 的电商运营 AI 助手",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"comfy": "./dist/bin/comfy.js",
|
|
13
13
|
"google-ads": "./dist/bin/google-ads.js",
|
|
14
14
|
"scout": "./dist/bin/scout.js",
|
|
15
|
-
"sentinel": "./dist/bin/sentinel.js"
|
|
15
|
+
"sentinel": "./dist/bin/sentinel.js",
|
|
16
|
+
"shopify": "./dist/bin/shopify.js"
|
|
16
17
|
},
|
|
17
18
|
"files": [
|
|
18
19
|
"dist",
|
|
@@ -49,6 +50,8 @@
|
|
|
49
50
|
"@optima-chat/commerce-cli": "latest",
|
|
50
51
|
"@optima-chat/scout-cli": "latest",
|
|
51
52
|
"@optima-chat/sentinel-cli": "latest",
|
|
53
|
+
"@optima-chat/shopify-cli": "latest",
|
|
54
|
+
"@optima-chat/logistics-cli": "latest",
|
|
52
55
|
"open": "^10.1.0",
|
|
53
56
|
"ws": "^8.18.3",
|
|
54
57
|
"zod": "^4.3.6"
|