@round2ai/r2-cli 1.0.12-beta.2 → 1.0.13-beta.0
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/README.md +3 -3
- package/dist/README.md +3 -3
- package/dist/r2-cli.js +8 -5
- package/package.json +1 -1
- package/scripts/install-skills.js +1 -1
- package/skills/r2-auth/SKILL.md +2 -0
- package/skills/r2-goods/SKILL.md +1 -1
- package/skills/r2-goods/references/r2-goods-hangup.md +10 -2
- package/skills/r2-goods/references/r2-goods-listing.md +25 -2
- package/skills/r2-goods/references/r2-goods-query.md +5 -3
- package/skills/r2-shared/SKILL.md +2 -1
package/README.md
CHANGED
|
@@ -146,8 +146,8 @@ Token 存储在 `~/.r2-cli/config.json`(原子写入防丢失),过期后
|
|
|
146
146
|
|------|------|
|
|
147
147
|
| `r2-cli goods shops [--json]` | 查看所有已授权店铺(跨平台) |
|
|
148
148
|
| `r2-cli goods stocks [--json]` | 查看所有仓库 |
|
|
149
|
-
| `r2-cli goods list [--stock-id <id>] [--stock-goods-id <id>] [--json]` | 查看选品商品(可按仓库或商品 ID 过滤,支持 `--page` 和 `--size
|
|
150
|
-
| `r2-cli goods listing [--json]` | 查询上架列表(支持 `--id` / `--shop-id` / `--stock-goods-id` / `--stock-id` / `--status
|
|
149
|
+
| `r2-cli goods list [--stock-id <id>] [--stock-goods-id <id>] [--json]` | 查看选品商品(可按仓库或商品 ID 过滤,支持 `--page` 和 `--size`,最大 50) |
|
|
150
|
+
| `r2-cli goods listing [--json]` | 查询上架列表(支持 `--id` / `--shop-id` / `--stock-goods-id` / `--stock-id` / `--status <init|up|down|fail|sold>` / `--platform` 过滤,支持 `--page` / `--size` 分页) |
|
|
151
151
|
|
|
152
152
|
### 商品上架/下架/改价
|
|
153
153
|
|
|
@@ -204,7 +204,7 @@ Token 存储在 `~/.r2-cli/config.json`(原子写入防丢失),过期后
|
|
|
204
204
|
|
|
205
205
|
建议:
|
|
206
206
|
- Agent 收到"上架"指令时,若用户未明确指定方式(选品上架/挂售上架),**必须询问用户**选择哪种上架方式
|
|
207
|
-
- Agent
|
|
207
|
+
- Agent 自动识别图片并填充商品信息,售价必问用户;商家编码优先让用户自定义,不填则自动生成推荐
|
|
208
208
|
- Token 存储在本地 `~/.r2-cli/config.json`(原子写入,防止中断导致配置丢失),注意保护
|
|
209
209
|
|
|
210
210
|
---
|
package/dist/README.md
CHANGED
|
@@ -146,8 +146,8 @@ Token 存储在 `~/.r2-cli/config.json`(原子写入防丢失),过期后
|
|
|
146
146
|
|------|------|
|
|
147
147
|
| `r2-cli goods shops [--json]` | 查看所有已授权店铺(跨平台) |
|
|
148
148
|
| `r2-cli goods stocks [--json]` | 查看所有仓库 |
|
|
149
|
-
| `r2-cli goods list [--stock-id <id>] [--stock-goods-id <id>] [--json]` | 查看选品商品(可按仓库或商品 ID 过滤,支持 `--page` 和 `--size
|
|
150
|
-
| `r2-cli goods listing [--json]` | 查询上架列表(支持 `--id` / `--shop-id` / `--stock-goods-id` / `--stock-id` / `--status
|
|
149
|
+
| `r2-cli goods list [--stock-id <id>] [--stock-goods-id <id>] [--json]` | 查看选品商品(可按仓库或商品 ID 过滤,支持 `--page` 和 `--size`,最大 50) |
|
|
150
|
+
| `r2-cli goods listing [--json]` | 查询上架列表(支持 `--id` / `--shop-id` / `--stock-goods-id` / `--stock-id` / `--status <init|up|down|fail|sold>` / `--platform` 过滤,支持 `--page` / `--size` 分页) |
|
|
151
151
|
|
|
152
152
|
### 商品上架/下架/改价
|
|
153
153
|
|
|
@@ -204,7 +204,7 @@ Token 存储在 `~/.r2-cli/config.json`(原子写入防丢失),过期后
|
|
|
204
204
|
|
|
205
205
|
建议:
|
|
206
206
|
- Agent 收到"上架"指令时,若用户未明确指定方式(选品上架/挂售上架),**必须询问用户**选择哪种上架方式
|
|
207
|
-
- Agent
|
|
207
|
+
- Agent 自动识别图片并填充商品信息,售价必问用户;商家编码优先让用户自定义,不填则自动生成推荐
|
|
208
208
|
- Token 存储在本地 `~/.r2-cli/config.json`(原子写入,防止中断导致配置丢失),注意保护
|
|
209
209
|
|
|
210
210
|
---
|
package/dist/r2-cli.js
CHANGED
|
@@ -1482,14 +1482,14 @@ import chalk8 from "chalk";
|
|
|
1482
1482
|
function createListCommand() {
|
|
1483
1483
|
const command = new Command8("list");
|
|
1484
1484
|
command.description("\u67E5\u770B\u4ED3\u5E93\u4E2D\u7684\u9009\u54C1\u5546\u54C1");
|
|
1485
|
-
command.option("--stock-id <id>", "\u4ED3\u5E93 ID\uFF08\u4ECE goods stocks \u83B7\u53D6\uFF09").option("--stock-goods-id <id>", "\u5E93\u5B58\u5546\u54C1 ID").option("--page <n>", "\u9875\u7801", "1").option("--size <n>", "\u6BCF\u9875\u6570\u91CF", "20").option("--json", "\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");
|
|
1485
|
+
command.option("--stock-id <id>", "\u4ED3\u5E93 ID\uFF08\u4ECE goods stocks \u83B7\u53D6\uFF09").option("--stock-goods-id <id>", "\u5E93\u5B58\u5546\u54C1 ID").option("--page <n>", "\u9875\u7801", "1").option("--size <n>", "\u6BCF\u9875\u6570\u91CF\uFF08\u6700\u5927 50\uFF09", "20").option("--json", "\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");
|
|
1486
1486
|
command.action(
|
|
1487
1487
|
jsonAction(async (options) => {
|
|
1488
1488
|
const result = await getSelectGoodsList({
|
|
1489
1489
|
stockId: options.stockId || void 0,
|
|
1490
1490
|
stockGoodsId: options.stockGoodsId || void 0,
|
|
1491
1491
|
page: Number(options.page) || 1,
|
|
1492
|
-
size: Number(options.size) || 20
|
|
1492
|
+
size: Math.min(Number(options.size) || 20, 50)
|
|
1493
1493
|
});
|
|
1494
1494
|
const data = result ?? { items: [], total: 0 };
|
|
1495
1495
|
if (options.json) {
|
|
@@ -1534,7 +1534,8 @@ var STATUS_MAP = {
|
|
|
1534
1534
|
init: { label: "\u5F85\u4E0A\u67B6", color: "yellow" },
|
|
1535
1535
|
up: { label: "\u5DF2\u4E0A\u67B6", color: "green" },
|
|
1536
1536
|
down: { label: "\u5DF2\u4E0B\u67B6", color: "gray" },
|
|
1537
|
-
fail: { label: "\u5931\u8D25", color: "red" }
|
|
1537
|
+
fail: { label: "\u5931\u8D25", color: "red" },
|
|
1538
|
+
sold: { label: "\u5DF2\u552E\u51FA", color: "blue" }
|
|
1538
1539
|
};
|
|
1539
1540
|
var COL_ID3 = 4;
|
|
1540
1541
|
var COL_STATUS2 = 8;
|
|
@@ -1610,7 +1611,7 @@ function ListingTable({ items, total }) {
|
|
|
1610
1611
|
function createListingCommand() {
|
|
1611
1612
|
const command = new Command9("listing");
|
|
1612
1613
|
command.description("\u67E5\u8BE2\u4E0A\u67B6\u5546\u54C1\u5217\u8868");
|
|
1613
|
-
command.option("--id <id>", "\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>", "\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>", "\u5E97\u94FA ID").option("--stock-id <id>", "\u4ED3\u5E93 ID").option("-s, --status <status>", "\u72B6\u6001\u8FC7\u6EE4\uFF08init/up/down/fail\uFF09").option("-p, --platform <platform>", "\u5E73\u53F0", "xianyu").option("--json", "\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");
|
|
1614
|
+
command.option("--id <id>", "\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>", "\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>", "\u5E97\u94FA ID").option("--stock-id <id>", "\u4ED3\u5E93 ID").option("-s, --status <status>", "\u72B6\u6001\u8FC7\u6EE4\uFF08init/up/down/fail/sold\uFF09").option("-p, --platform <platform>", "\u5E73\u53F0", "xianyu").option("--page <n>", "\u9875\u7801", "1").option("--size <n>", "\u6BCF\u9875\u6570\u91CF\uFF08\u6700\u5927 50\uFF09", "20").option("--json", "\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");
|
|
1614
1615
|
command.action(
|
|
1615
1616
|
jsonAction(async (options) => {
|
|
1616
1617
|
const result = await getListingList({
|
|
@@ -1619,7 +1620,9 @@ function createListingCommand() {
|
|
|
1619
1620
|
shopId: options.shopId,
|
|
1620
1621
|
stockId: options.stockId,
|
|
1621
1622
|
status: options.status,
|
|
1622
|
-
platform: options.platform
|
|
1623
|
+
platform: options.platform,
|
|
1624
|
+
page: Number(options.page) || 1,
|
|
1625
|
+
size: Math.min(Number(options.size) || 20, 50)
|
|
1623
1626
|
});
|
|
1624
1627
|
const data = result ?? { items: [], total: 0 };
|
|
1625
1628
|
if (options.json) {
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
11
11
|
const skillsDir = path.join(__dirname, "..", "skills");
|
|
12
12
|
|
|
13
13
|
try {
|
|
14
|
-
execSync(`npx skills add "${skillsDir}" --all`, {
|
|
14
|
+
execSync(`npx skills add "${skillsDir}" --all -g`, {
|
|
15
15
|
stdio: "inherit",
|
|
16
16
|
timeout: 60_000,
|
|
17
17
|
});
|
package/skills/r2-auth/SKILL.md
CHANGED
|
@@ -60,6 +60,8 @@ r2-cli auth login --json
|
|
|
60
60
|
|
|
61
61
|
### Agent 操作步骤
|
|
62
62
|
|
|
63
|
+
> **注意**:不要在命令末尾加 `&`。`run_in_background: true` 已处理后台运行,加 `&` 会导致 shell 立即返回,无法捕获后续输出。
|
|
64
|
+
|
|
63
65
|
1. 用 Bash 工具 `run_in_background: true` 启动命令
|
|
64
66
|
2. 用 `TaskOutput(block=true, timeout=5000)` 获取第 1 段 JSON
|
|
65
67
|
3. **必须先**将 `qrUrl` 以醒目格式单独一行展示给用户:
|
package/skills/r2-goods/SKILL.md
CHANGED
|
@@ -46,7 +46,7 @@ metadata:
|
|
|
46
46
|
| `r2-cli goods shops [--json]` | 查看已授权店铺 | [r2-goods-query](references/r2-goods-query.md) |
|
|
47
47
|
| `r2-cli goods stocks [--json]` | 查看仓库 | [r2-goods-query](references/r2-goods-query.md) |
|
|
48
48
|
| `r2-cli goods list [--stock-id <id>] [--json]` | 查看选品商品 | [r2-goods-query](references/r2-goods-query.md) |
|
|
49
|
-
| `r2-cli goods listing [--json]` | 查询上架列表 | [r2-goods-query](references/r2-goods-query.md) |
|
|
49
|
+
| `r2-cli goods listing [--status <up/down/sold>] [--json]` | 查询上架列表 | [r2-goods-query](references/r2-goods-query.md) |
|
|
50
50
|
|
|
51
51
|
### 上架/下架/改价/修改
|
|
52
52
|
|
|
@@ -156,7 +156,7 @@ Agent 将所有自动填充和识别结果汇总展示给用户,**一次确认
|
|
|
156
156
|
✅ 鞋码:42(图片识别)
|
|
157
157
|
❓ 季节:?(无法识别,请选择:春季/夏季/秋季/冬季/四季)
|
|
158
158
|
💰 价格:?(必填)
|
|
159
|
-
📋
|
|
159
|
+
📋 商家编码:?(优先自定义,不填自动生成)
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
**处理顺序**:
|
|
@@ -164,7 +164,7 @@ Agent 将所有自动填充和识别结果汇总展示给用户,**一次确认
|
|
|
164
164
|
2. 让用户补充缺失字段(价格、商家编码、无法识别的属性)
|
|
165
165
|
3. 用户确认后直接提交
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
**所有参数就绪后提交**:
|
|
168
168
|
|
|
169
169
|
```bash
|
|
170
170
|
r2-cli goods hang-up submit \
|
|
@@ -215,6 +215,14 @@ r2-cli goods hang-up submit \
|
|
|
215
215
|
| `--title`(标题) | 图片识别无法生成时 | "商品标题用什么?" |
|
|
216
216
|
| `--desc`(描述) | 图片识别无法生成时 | "商品描述?" |
|
|
217
217
|
|
|
218
|
+
## Agent 常见错误预防
|
|
219
|
+
|
|
220
|
+
- **不要在命令末尾加 `&`**:如果用 `run_in_background: true` 启动命令,不要额外加 `&`,否则 shell 立即返回,无法捕获后续输出
|
|
221
|
+
- **`--image-ids` 保持字符串**:图片 ID 是 19 位数字(如 `"1086608743767730915"`),JavaScript `Number()` 会精度丢失。拼接时用字符串拼接,不要 `parseInt`/`Number`
|
|
222
|
+
- **`--stuff-status` 准新是数字 `-1`**:不是字符串 `"-1"`,直接传 `--stuff-status -1`
|
|
223
|
+
- **`--item-attrs` 传 JSON 字符串**:值必须是 `JSON.stringify()` 后的字符串,不能直接传对象。命令行示例:`--item-attrs '[{"propId":"x","valueId":"y"}]'`
|
|
224
|
+
- **`--files` 和 `--image-ids` 都是逗号分隔**:不要多次传 `--files`,用逗号拼成单个值:`--files a.jpg,b.jpg`
|
|
225
|
+
|
|
218
226
|
## 必填参数
|
|
219
227
|
|
|
220
228
|
| 参数 | 说明 |
|
|
@@ -23,7 +23,24 @@
|
|
|
23
23
|
}
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
状态值:`init`(处理中)、`up`(已上架)、`down`(已下架)、`fail`(失败,查看 `errorMsg
|
|
26
|
+
状态值:`init`(处理中)、`up`(已上架)、`down`(已下架)、`fail`(失败,查看 `errorMsg`)、`sold`(已售出)
|
|
27
|
+
|
|
28
|
+
## 上架列表返回字段
|
|
29
|
+
|
|
30
|
+
| 字段 | 说明 |
|
|
31
|
+
|------|------|
|
|
32
|
+
| `id` | 上架记录 ID(edit/down/price 的 `--id` 取这个值) |
|
|
33
|
+
| `stockGoodsId` | 库存商品 ID(挂售商品可能为 0) |
|
|
34
|
+
| `shopId` | 店铺 ID |
|
|
35
|
+
| `goodsName` | 商品名称 |
|
|
36
|
+
| `brandName` | 品牌 |
|
|
37
|
+
| `price` | 上架价格 |
|
|
38
|
+
| `status` | 状态:`init`/`up`/`down`/`fail`/`sold` |
|
|
39
|
+
| `thirdItemNo` | 平台商品 ID |
|
|
40
|
+
| `outItemNo` | 商家编码 |
|
|
41
|
+
| `spec` | 规格(尺码) |
|
|
42
|
+
| `platform` | 平台(xianyu) |
|
|
43
|
+
| `gmtCreate` / `gmtModified` | 创建/修改时间戳 |
|
|
27
44
|
|
|
28
45
|
## 上架参数
|
|
29
46
|
|
|
@@ -71,6 +88,12 @@ r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --js
|
|
|
71
88
|
| 上架记录 ID | `--id <goodsListingId>` | 推荐,从 listing 的 id 字段取 |
|
|
72
89
|
| 库存商品 + 店铺 | `--stock-goods-id <id> --account <shopId>` | 备选,挂售商品 stockGoodsId 可能为 0 |
|
|
73
90
|
|
|
91
|
+
### Agent 注意事项
|
|
92
|
+
|
|
93
|
+
- **`--image-ids` 保持字符串**:图片 ID 是 19 位数字,`Number()` 会精度丢失
|
|
94
|
+
- **`--item-attrs` 传 JSON 字符串**:必须是 `JSON.stringify()` 后的结果,不能直接传对象
|
|
95
|
+
- **即使不改类目也要传 `--category-id` 和 `--channel-cat-id`**:后端必填,缺少会报 `getCategoryId() is null`
|
|
96
|
+
|
|
74
97
|
### 必填参数
|
|
75
98
|
|
|
76
99
|
| 参数 | 说明 |
|
|
@@ -126,7 +149,7 @@ r2-cli goods edit \
|
|
|
126
149
|
|
|
127
150
|
```bash
|
|
128
151
|
# 改标题
|
|
129
|
-
r2-cli goods
|
|
152
|
+
r2-cli goods edit --id 5 \
|
|
130
153
|
--category-id 50106003 --channel-cat-id "f4718bbb04d7ed1facde29f76907b07f" \
|
|
131
154
|
--title "新标题" --json
|
|
132
155
|
|
|
@@ -36,7 +36,7 @@ r2-cli goods list --stock-id <stockId> --json
|
|
|
36
36
|
r2-cli goods list --stock-goods-id <id> --json
|
|
37
37
|
|
|
38
38
|
# 翻页
|
|
39
|
-
r2-cli goods list --stock-id <stockId> --page 2 --size
|
|
39
|
+
r2-cli goods list --stock-id <stockId> --page 2 --size 50 --json
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
返回字段:
|
|
@@ -54,10 +54,12 @@ r2-cli goods list --stock-id <stockId> --page 2 --size 20 --json
|
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
r2-cli goods listing --json
|
|
57
|
-
r2-cli goods listing --status up --json
|
|
57
|
+
r2-cli goods listing --status up --json # 只看已上架
|
|
58
|
+
r2-cli goods listing --status sold --json # 只看已售出
|
|
58
59
|
r2-cli goods listing --shop-id <id> --json # 按店铺过滤
|
|
59
60
|
r2-cli goods listing --stock-goods-id <id> --json # 按商品过滤
|
|
60
61
|
r2-cli goods listing --id <id> --json # 精确查询
|
|
62
|
+
r2-cli goods listing --page 2 --size 50 --json # 翻页
|
|
61
63
|
```
|
|
62
64
|
|
|
63
|
-
过滤参数:`--id`、`--stock-goods-id`、`--shop-id`、`--stock-id`、`--status`(init/up/down/fail)、`--platform
|
|
65
|
+
过滤参数:`--id`、`--stock-goods-id`、`--shop-id`、`--stock-id`、`--status`(init/up/down/fail/sold)、`--platform`、`--page`(默认 1)、`--size`(默认 20,最大 50)
|
|
@@ -28,6 +28,7 @@ metadata:
|
|
|
28
28
|
- 所有命令**必须**通过已安装的 `r2-cli` 二进制执行(`r2-cli goods ...`、`r2-cli auth ...`)
|
|
29
29
|
- **禁止**读取项目源码或用 `tsx`/`node` 直接运行源文件
|
|
30
30
|
- 如果 `r2-cli` 命令不可用,提示用户先安装:`npm install -g @round2ai/r2-cli@latest`
|
|
31
|
+
- **不要在命令末尾加 `&`**:如果用 Bash 工具的 `run_in_background: true`,不要额外加 `&`,否则 shell 立即返回导致输出丢失
|
|
31
32
|
|
|
32
33
|
**版本检查**:
|
|
33
34
|
- 首次使用时,Agent 应运行 `r2-cli --version` 检查当前版本
|
|
@@ -66,7 +67,7 @@ npm install -g @round2ai/r2-cli@latest
|
|
|
66
67
|
| 查询 | `r2-cli goods shops [--json]` | 查看已授权店铺 |
|
|
67
68
|
| | `r2-cli goods stocks [--json]` | 查看仓库 |
|
|
68
69
|
| | `r2-cli goods list [--stock-id <id>] [--json]` | 查看选品商品 |
|
|
69
|
-
| | `r2-cli goods listing [--json]` | 查询上架列表 |
|
|
70
|
+
| | `r2-cli goods listing [--status <up/down/sold>] [--json]` | 查询上架列表 |
|
|
70
71
|
| 上架 | `r2-cli goods up --stock-goods-id <> --shop-id <> --price <> --json` | 普通上架(选品商品) |
|
|
71
72
|
| | `r2-cli goods down --id <id> [--json]` | 下架商品 |
|
|
72
73
|
| | `r2-cli goods price --id <id> --price <amount> [--json]` | 修改价格 |
|