@optima-chat/optima-agent 0.5.0 → 0.5.1

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.
Files changed (179) hide show
  1. package/.claude/settings.local.json +83 -0
  2. package/.claude/skills/ads/SKILL.md +0 -0
  3. package/.claude/skills/bi/SKILL.md +71 -42
  4. package/.claude/skills/collection/SKILL.md +88 -0
  5. package/.claude/skills/comfy/SKILL.md +138 -122
  6. package/.claude/skills/ffmpeg/SKILL.md +164 -0
  7. package/.claude/skills/homepage/SKILL.md +324 -0
  8. package/.claude/skills/i18n/SKILL.md +0 -0
  9. package/.claude/skills/inventory/SKILL.md +90 -79
  10. package/.claude/skills/markdown-pdf/SKILL.md +72 -0
  11. package/.claude/skills/merchant/SKILL.md +71 -68
  12. package/.claude/skills/order/SKILL.md +193 -21
  13. package/.claude/skills/product/SKILL.md +51 -6
  14. package/.claude/skills/product-page/SKILL.md +200 -0
  15. package/.claude/skills/review/SKILL.md +234 -0
  16. package/.claude/skills/scout/SKILL.md +116 -1
  17. package/.claude/skills/shipping/SKILL.md +193 -0
  18. package/README.md +5 -1
  19. package/dist/bin/bi-cli.d.ts +0 -0
  20. package/dist/bin/bi-cli.d.ts.map +0 -0
  21. package/dist/bin/bi-cli.js.map +0 -0
  22. package/dist/bin/comfy.d.ts +0 -0
  23. package/dist/bin/comfy.d.ts.map +0 -0
  24. package/dist/bin/comfy.js.map +0 -0
  25. package/dist/bin/commerce.d.ts +0 -0
  26. package/dist/bin/commerce.d.ts.map +0 -0
  27. package/dist/bin/commerce.js.map +0 -0
  28. package/dist/bin/google-ads.d.ts +0 -0
  29. package/dist/bin/google-ads.d.ts.map +0 -0
  30. package/dist/bin/google-ads.js.map +0 -0
  31. package/dist/bin/optima.d.ts +0 -0
  32. package/dist/bin/optima.d.ts.map +0 -0
  33. package/dist/bin/optima.js +3 -3
  34. package/dist/bin/optima.js.map +1 -1
  35. package/dist/bin/scout.d.ts +0 -0
  36. package/dist/bin/scout.d.ts.map +0 -0
  37. package/dist/bin/scout.js.map +0 -0
  38. package/dist/bin/serve.d.ts +0 -0
  39. package/dist/bin/serve.d.ts.map +0 -0
  40. package/dist/bin/serve.js +0 -0
  41. package/dist/bin/serve.js.map +0 -0
  42. package/dist/src/agent.d.ts +0 -48
  43. package/dist/src/agent.d.ts.map +1 -1
  44. package/dist/src/agent.js +3 -98
  45. package/dist/src/agent.js.map +1 -1
  46. package/dist/src/auth/device-flow.d.ts +0 -0
  47. package/dist/src/auth/device-flow.d.ts.map +0 -0
  48. package/dist/src/auth/device-flow.js +0 -0
  49. package/dist/src/auth/device-flow.js.map +0 -0
  50. package/dist/src/auth/index.d.ts +0 -0
  51. package/dist/src/auth/index.d.ts.map +0 -0
  52. package/dist/src/auth/index.js +0 -0
  53. package/dist/src/auth/index.js.map +0 -0
  54. package/dist/src/auth/token.d.ts +0 -0
  55. package/dist/src/auth/token.d.ts.map +0 -0
  56. package/dist/src/auth/token.js +0 -0
  57. package/dist/src/auth/token.js.map +0 -0
  58. package/dist/src/auth/types.d.ts +0 -0
  59. package/dist/src/auth/types.d.ts.map +0 -0
  60. package/dist/src/auth/types.js +0 -0
  61. package/dist/src/auth/types.js.map +0 -0
  62. package/dist/src/config.d.ts +0 -0
  63. package/dist/src/config.d.ts.map +0 -0
  64. package/dist/src/config.js +0 -0
  65. package/dist/src/config.js.map +0 -0
  66. package/dist/src/hooks-loader.d.ts +6 -0
  67. package/dist/src/hooks-loader.d.ts.map +1 -0
  68. package/dist/src/hooks-loader.js +215 -0
  69. package/dist/src/hooks-loader.js.map +1 -0
  70. package/dist/src/index.d.ts +3 -3
  71. package/dist/src/index.d.ts.map +1 -1
  72. package/dist/src/index.js +1 -1
  73. package/dist/src/index.js.map +1 -1
  74. package/dist/src/server/index.d.ts +0 -0
  75. package/dist/src/server/index.d.ts.map +0 -0
  76. package/dist/src/server/index.js +1 -1
  77. package/dist/src/server/index.js.map +1 -1
  78. package/dist/src/server/types.d.ts +0 -0
  79. package/dist/src/server/types.d.ts.map +0 -0
  80. package/dist/src/server/types.js +0 -0
  81. package/dist/src/server/types.js.map +0 -0
  82. package/dist/src/system-prompt.d.ts +0 -0
  83. package/dist/src/system-prompt.d.ts.map +1 -1
  84. package/dist/src/system-prompt.js +10 -3
  85. package/dist/src/system-prompt.js.map +1 -1
  86. package/dist/src/tools/memory.d.ts +0 -0
  87. package/dist/src/tools/memory.d.ts.map +0 -0
  88. package/dist/src/tools/memory.js +0 -0
  89. package/dist/src/tools/memory.js.map +0 -0
  90. package/dist/src/types.d.ts +1 -11
  91. package/dist/src/types.d.ts.map +1 -1
  92. package/dist/src/types.js +0 -0
  93. package/dist/src/types.js.map +0 -0
  94. package/dist/src/ui/App.d.ts +6 -0
  95. package/dist/src/ui/App.d.ts.map +1 -0
  96. package/dist/src/ui/App.js +164 -0
  97. package/dist/src/ui/App.js.map +1 -0
  98. package/dist/src/ui/components/Composer.d.ts +10 -0
  99. package/dist/src/ui/components/Composer.d.ts.map +1 -0
  100. package/dist/src/ui/components/Composer.js +13 -0
  101. package/dist/src/ui/components/Composer.js.map +1 -0
  102. package/dist/src/ui/components/Header.d.ts +7 -0
  103. package/dist/src/ui/components/Header.d.ts.map +1 -0
  104. package/dist/src/ui/components/Header.js +7 -0
  105. package/dist/src/ui/components/Header.js.map +1 -0
  106. package/dist/src/ui/components/Message.d.ts +12 -0
  107. package/dist/src/ui/components/Message.d.ts.map +1 -0
  108. package/dist/src/ui/components/Message.js +21 -0
  109. package/dist/src/ui/components/Message.js.map +1 -0
  110. package/dist/src/ui/components/MessageList.d.ts +9 -0
  111. package/dist/src/ui/components/MessageList.d.ts.map +1 -0
  112. package/dist/src/ui/components/MessageList.js +18 -0
  113. package/dist/src/ui/components/MessageList.js.map +1 -0
  114. package/dist/src/ui/components/Spinner.d.ts +6 -0
  115. package/dist/src/ui/components/Spinner.d.ts.map +1 -0
  116. package/dist/src/ui/components/Spinner.js +7 -0
  117. package/dist/src/ui/components/Spinner.js.map +1 -0
  118. package/dist/src/ui/components/StatusBar.d.ts +11 -0
  119. package/dist/src/ui/components/StatusBar.d.ts.map +1 -0
  120. package/dist/src/ui/components/StatusBar.js +7 -0
  121. package/dist/src/ui/components/StatusBar.js.map +1 -0
  122. package/dist/src/ui/components/index.d.ts +7 -0
  123. package/dist/src/ui/components/index.d.ts.map +1 -0
  124. package/dist/src/ui/components/index.js +7 -0
  125. package/dist/src/ui/components/index.js.map +1 -0
  126. package/dist/src/ui/conversation-manager.d.ts +10 -9
  127. package/dist/src/ui/conversation-manager.d.ts.map +1 -1
  128. package/dist/src/ui/conversation-manager.js +35 -2
  129. package/dist/src/ui/conversation-manager.js.map +1 -1
  130. package/dist/src/ui/headless-types.d.ts +85 -4
  131. package/dist/src/ui/headless-types.d.ts.map +1 -1
  132. package/dist/src/ui/headless-types.js +0 -0
  133. package/dist/src/ui/headless-types.js.map +0 -0
  134. package/dist/src/ui/headless.d.ts +14 -4
  135. package/dist/src/ui/headless.d.ts.map +1 -1
  136. package/dist/src/ui/headless.js +311 -139
  137. package/dist/src/ui/headless.js.map +1 -1
  138. package/dist/src/ui/index.d.ts +0 -0
  139. package/dist/src/ui/index.d.ts.map +0 -0
  140. package/dist/src/ui/index.js +0 -0
  141. package/dist/src/ui/index.js.map +0 -0
  142. package/dist/src/ui/stream.d.ts +0 -0
  143. package/dist/src/ui/stream.d.ts.map +1 -1
  144. package/dist/src/ui/stream.js +27 -5
  145. package/dist/src/ui/stream.js.map +1 -1
  146. package/dist/src/validation/error-formatter.d.ts +21 -0
  147. package/dist/src/validation/error-formatter.d.ts.map +1 -0
  148. package/dist/src/validation/error-formatter.js +98 -0
  149. package/dist/src/validation/error-formatter.js.map +1 -0
  150. package/dist/src/validation/index.d.ts +10 -0
  151. package/dist/src/validation/index.d.ts.map +1 -0
  152. package/dist/src/validation/index.js +10 -0
  153. package/dist/src/validation/index.js.map +1 -0
  154. package/dist/src/validation/json-validator.d.ts +25 -0
  155. package/dist/src/validation/json-validator.d.ts.map +1 -0
  156. package/dist/src/validation/json-validator.js +173 -0
  157. package/dist/src/validation/json-validator.js.map +1 -0
  158. package/dist/src/validation/schema.d.ts +353 -0
  159. package/dist/src/validation/schema.d.ts.map +1 -0
  160. package/dist/src/validation/schema.js +57 -0
  161. package/dist/src/validation/schema.js.map +1 -0
  162. package/dist/src/validation/suggestions.d.ts +25 -0
  163. package/dist/src/validation/suggestions.d.ts.map +1 -0
  164. package/dist/src/validation/suggestions.js +144 -0
  165. package/dist/src/validation/suggestions.js.map +1 -0
  166. package/dist/src/validation/types.d.ts +40 -0
  167. package/dist/src/validation/types.d.ts.map +1 -0
  168. package/dist/src/validation/types.js +5 -0
  169. package/dist/src/validation/types.js.map +1 -0
  170. package/dist/src/validation/yaml-validator.d.ts +25 -0
  171. package/dist/src/validation/yaml-validator.d.ts.map +1 -0
  172. package/dist/src/validation/yaml-validator.js +177 -0
  173. package/dist/src/validation/yaml-validator.js.map +1 -0
  174. package/dist/src/version.d.ts +0 -0
  175. package/dist/src/version.d.ts.map +0 -0
  176. package/dist/src/version.js +0 -0
  177. package/dist/src/version.js.map +0 -0
  178. package/package.json +1 -1
  179. package/.claude/skills/storefront/SKILL.md +0 -532
@@ -0,0 +1,234 @@
1
+ ---
2
+ name: review
3
+ description: Review management and moderation. View, approve, reject, and respond to customer reviews. Handle featured reviews, reports, and settings. Use when user needs to moderate reviews, respond to feedback, manage review reports, configure auto-approval, or view review statistics.
4
+ ---
5
+
6
+ # Commerce CLI - Review Management
7
+
8
+ 评价管理模块,用于审核、回复和管理顾客评价。
9
+
10
+ ## 典型场景
11
+
12
+ 当用户说:
13
+ - "查看待审核评价" → `commerce review list --status pending`
14
+ - "批准评价XX" → `commerce review approve --id XX`
15
+ - "回复评价XX" → `commerce review respond --id XX --content "感谢您的反馈!"`
16
+ - "查看评价统计" → `commerce review stats`
17
+ - "设为精选" → `commerce review feature --id XX --enable`
18
+ - "查看举报" → `commerce review reports --status pending`
19
+ - "查看评价设置" → `commerce review get-settings`
20
+ - "开启自动审核" → `commerce review update-settings --auto-approve`
21
+
22
+ ### 场景决策表
23
+
24
+ | 用户需求 | 推荐命令 | 关键注意点 |
25
+ |---------|---------|-----------|
26
+ | 查看待审核评价 | `review list --status pending` | 优先处理1-2星低分评价 |
27
+ | 批量审核 | `review batch --action approve` | 高分评价可批量批准 |
28
+ | 回复差评 | `review respond` | 先道歉再解决,避免激化 |
29
+ | 精选好评 | `review feature --enable` | 选择有图、详细的5星评价 |
30
+ | 处理举报 | `review handle-report` | 核实后决定删除或驳回 |
31
+ | 查看统计 | `review stats` | 监控平均分和评分分布趋势 |
32
+ | 查看设置 | `review get-settings` | 了解当前自动审核等配置 |
33
+ | 开启自动审核 | `review update-settings --auto-approve` | 所有评价自动通过 |
34
+
35
+ ### 标准评价管理流程
36
+ 1. **每日审核** - `commerce review list --status pending` 查看待审核
37
+ 2. **批准好评** - 4-5星评价快速批准 `commerce review approve --id XX`
38
+ 3. **处理差评** - 1-3星评价仔细查看,考虑是否回复
39
+ 4. **回复评价** - `commerce review respond` 对有建设性的差评友善回复
40
+ 5. **精选好评** - `commerce review feature --enable` 选择有代表性的好评
41
+ 6. **处理举报** - `commerce review reports` 查看并处理被举报的评价
42
+
43
+ ### 差评处理流程
44
+ 1. **查看详情** - `commerce review get --id XX` 了解评价内容
45
+ 2. **核实情况** - 查看订单记录,确认是否有服务问题
46
+ 3. **决定行动** - 合理差评→回复致歉;恶意差评→考虑拒绝或删除
47
+ 4. **回复评价** - `commerce review respond` 真诚道歉并提出解决方案
48
+ 5. **跟进改进** - 记录问题,优化产品或服务
49
+
50
+ ## 卓越标准
51
+
52
+ ### 评价管理质量指标
53
+ - **审核及时性**: 新评价24小时内审核完成
54
+ - **回复率**: 差评(1-3星)回复率 > 80%
55
+ - **平均评分**: 维持在 4.0 以上
56
+ - **精选覆盖**: 每个热门商品至少有1条精选评价
57
+
58
+ ### 评价管理原则
59
+ - **及时响应**: 待审核评价堆积不超过50条
60
+ - **真诚回复**: 差评回复要表达歉意和解决意愿
61
+ - **精选多样**: 精选不同评分、不同角度的好评
62
+ - **公正处理**: 只删除明显违规评价,不删真实差评
63
+ - **数据驱动**: 定期查看统计,发现产品问题
64
+
65
+ ## 常见问题
66
+
67
+ ### 差评回复错误
68
+
69
+ ❌ **错误做法 - 推卸责任**:
70
+ ```
71
+ "这不是我们的问题,可能是快递造成的损坏。"
72
+ ```
73
+
74
+ ✅ **正确做法 - 真诚道歉**:
75
+ ```bash
76
+ commerce review respond --id review_123 --content "非常抱歉给您带来了不好的体验。我们已经联系您协商补偿方案,感谢您的理解。如有任何问题,请随时联系我们的客服。"
77
+ ```
78
+
79
+ ### 精选评价选择
80
+
81
+ ❌ **错误做法 - 只选5星简短评价**:
82
+ - "好" "不错" 这类评价没有参考价值
83
+
84
+ ✅ **正确做法 - 选择有价值的评价**:
85
+ - 有详细使用体验
86
+ - 有实拍图片
87
+ - 提到具体优点
88
+ - 对其他买家有参考价值
89
+
90
+ ### 举报处理
91
+
92
+ ❌ **错误做法 - 不核实就删除**:
93
+ - 收到举报就删除评价,可能删除真实差评
94
+
95
+ ✅ **正确处理**:
96
+ - **虚假评价** → 查看订单记录,确认未购买则删除
97
+ - **不当内容** → 包含脏话、广告则删除
98
+ - **恶意竞争** → 多个可疑评价来自同一IP则删除
99
+ - **真实差评** → 即使被举报也不应删除,驳回举报
100
+
101
+ ## 命令参考
102
+
103
+ ### 评价查看
104
+ - `commerce review list` - 查看评价列表
105
+ - `commerce review get` - 查看评价详情
106
+ - `commerce review stats` - 查看评价统计
107
+
108
+ ### 评价审核
109
+ - `commerce review approve` - 批准评价
110
+ - `commerce review reject` - 拒绝评价
111
+ - `commerce review batch` - 批量操作
112
+
113
+ ### 评价互动
114
+ - `commerce review respond` - 商家回复
115
+ - `commerce review delete-response` - 删除回复
116
+ - `commerce review feature` - 设置精选
117
+
118
+ ### 评价管理
119
+ - `commerce review delete` - 删除评价
120
+ - `commerce review reports` - 查看举报
121
+ - `commerce review handle-report` - 处理举报
122
+
123
+ ### 评价设置
124
+ - `commerce review get-settings` - 查看评价设置
125
+ - `commerce review update-settings` - 更新评价设置
126
+
127
+ ## 详细示例
128
+
129
+ ### 查看待审核评价
130
+ ```bash
131
+ # 用户说:"查看待审核的评价"
132
+ commerce review list --status pending
133
+ ```
134
+
135
+ ### 批准评价
136
+ ```bash
137
+ # 用户说:"批准评价review_123"
138
+ commerce review approve --id review_123
139
+ ```
140
+
141
+ ### 拒绝评价
142
+ ```bash
143
+ # 用户说:"拒绝评价review_456"
144
+ commerce review reject --id review_456
145
+ ```
146
+
147
+ ### 回复评价
148
+ ```bash
149
+ # 用户说:"回复评价review_123,内容是感谢您的支持"
150
+ commerce review respond \
151
+ --id review_123 \
152
+ --content "感谢您的支持和认可!我们会继续努力提供优质的产品和服务。"
153
+ ```
154
+
155
+ ### 设为精选
156
+ ```bash
157
+ # 用户说:"把评价review_123设为精选"
158
+ commerce review feature --id review_123 --enable
159
+
160
+ # 取消精选
161
+ commerce review feature --id review_123 --disable
162
+ ```
163
+
164
+ ### 批量审核
165
+ ```bash
166
+ # 用户说:"批量批准这几条评价"
167
+ commerce review batch --ids review_1,review_2,review_3 --action approve
168
+
169
+ # 批量拒绝
170
+ commerce review batch --ids review_4,review_5 --action reject
171
+ ```
172
+
173
+ ### 查看统计
174
+ ```bash
175
+ # 用户说:"查看店铺评价统计"
176
+ commerce review stats
177
+ ```
178
+
179
+ ### 处理举报
180
+ ```bash
181
+ # 查看待处理举报
182
+ commerce review reports --status pending
183
+
184
+ # 标记已处理
185
+ commerce review handle-report --id report_123 --action reviewed
186
+
187
+ # 驳回举报
188
+ commerce review handle-report --id report_456 --action dismissed
189
+ ```
190
+
191
+ ### 删除评价
192
+ ```bash
193
+ # 用户说:"删除评价review_789"
194
+ commerce review delete --id review_789 --yes
195
+ ```
196
+
197
+ ### 查看评价设置
198
+ ```bash
199
+ # 用户说:"查看评价设置"
200
+ commerce review get-settings
201
+ ```
202
+
203
+ ### 更新评价设置
204
+ ```bash
205
+ # 用户说:"开启自动审核"
206
+ commerce review update-settings --auto-approve
207
+
208
+ # 设置评价时间窗口(订单后30天内可评价)
209
+ commerce review update-settings --review-window-days 30
210
+
211
+ # 允许用户上传图片,设置最大5张
212
+ commerce review update-settings --allow-images --max-images 5
213
+ ```
214
+
215
+ ## 评价设置配置项
216
+
217
+ | 配置 | 说明 |
218
+ |------|------|
219
+ | `--auto-approve` | 新评价自动通过 |
220
+ | `--require-purchase` | 需要验证购买才能评价 |
221
+ | `--allow-anonymous` | 允许匿名评价 |
222
+ | `--review-window-days` | 评价时间窗口(1-365天)|
223
+ | `--allow-images` | 允许上传图片 |
224
+ | `--max-images` | 最大图片数(0-10)|
225
+ | `--allow-edit` | 允许编辑评价 |
226
+
227
+ ## 重要提示
228
+
229
+ - 评价状态:pending(待审核) → approved(已批准) / rejected(已拒绝)
230
+ - 批准后的评价会在店铺公开显示
231
+ - 删除操作不可撤销,谨慎使用
232
+ - 商家每条评价只能有一条回复
233
+ - 精选评价会在商品页面突出显示
234
+ - 使用 `--help` 查看命令详细参数
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: scout
3
- description: "Interactive Amazon product research consultant. Search products, analyze markets, and generate professional reports. ALWAYS use when user asks about: selling products (卖/开店), product ideas (产品/商品), market research (市场/竞品), evaluating business opportunities (生意/创业). Start with conversational exploration, then suggest comprehensive report generation. Uses 'scout search' and 'scout product' commands."
3
+ description: "Interactive Amazon product research consultant with 1688 supplier sourcing. Search products, analyze markets, find suppliers, and generate professional reports. ALWAYS use when user asks about: selling products (卖/开店), product ideas (产品/商品), market research (市场/竞品), suppliers (供应商/厂家), sourcing (采购/进货/货源), evaluating business opportunities (生意/创业). Start with conversational exploration, then suggest comprehensive report generation. Uses 'scout search', 'scout product', and 'scout supplier-search' commands."
4
4
  ---
5
5
 
6
6
  # Optima Scout - AI Product Research
@@ -13,6 +13,9 @@ Use this skill when:
13
13
  - User asks about product pricing, ratings, sales data, or market trends
14
14
  - User wants to evaluate business opportunities or find products to sell
15
15
  - User needs detailed competitor analysis or listing quality assessment
16
+ - User needs to find suppliers or manufacturers (e.g., "帮我找咖啡机供应商", "哪里进货")
17
+ - User wants to source products from 1688/Alibaba China
18
+ - User asks about wholesale prices, bulk purchasing costs, or profit margins (e.g., "成本多少", "批发价", "利润空间")
16
19
 
17
20
  ## Interaction Style: Conversational → Report
18
21
 
@@ -115,6 +118,38 @@ scout product ASIN
115
118
  - Images count - Assess listing quality (7 images is standard)
116
119
  - Specifications - May include BSR in multiple categories
117
120
 
121
+ ### 3. Search 1688 Suppliers: `scout supplier-search`
122
+
123
+ Search for suppliers on 1688.com to find wholesale sources and manufacturing partners.
124
+
125
+ **Syntax:**
126
+ ```bash
127
+ scout supplier-search "KEYWORD" --limit NUMBER --format FORMAT
128
+ ```
129
+
130
+ **Parameters:**
131
+ - `KEYWORD`: Product keywords in Chinese (e.g., "咖啡机", "蓝牙耳机", "钛合金杯子")
132
+ - `--limit`: Number of results (1-100, default: 20)
133
+ - `--format`: Output format - `text` (human-readable) or `json` (for data processing)
134
+
135
+ **Returns:**
136
+ - Supplier list with product info, pricing, MOQ (minimum order quantity), supplier ratings
137
+ - Price tiers for bulk ordering (e.g., "2~49台: ¥599", "≥100台: ¥429")
138
+ - Supplier details: name, location, years in business, seller type (manufacturer vs. trader)
139
+ - Tags: shipping policies (退货包运费), payment terms (先采后付), certifications (实力商家)
140
+
141
+ **When to use:**
142
+ - After Amazon market research - find potential suppliers for cost analysis
143
+ - User asks about costs, margins, or sourcing
144
+ - Calculating profit margins (Amazon price - 1688 wholesale cost)
145
+ - Identifying manufacturing vs. trading suppliers
146
+ - Before generating final report - include supplier data for complete analysis
147
+
148
+ **Example:**
149
+ ```bash
150
+ scout supplier-search "咖啡机" --limit 10
151
+ ```
152
+
118
153
  ## Research Workflow
119
154
 
120
155
  ### Interactive Research Flow (Recommended):
@@ -135,6 +170,22 @@ scout product ASIN
135
170
  - Specific competitor analysis
136
171
  - Alternative product categories
137
172
 
173
+ **Phase 2.5: Supplier Sourcing (Optional but Recommended)**
174
+ 7. **Trigger**: User shows interest in profit margins, costs, or sourcing:
175
+ - "成本大概多少?" "批发价怎么样?" "利润空间大吗?"
176
+ - "哪里进货?" "供应商怎么找?"
177
+ - Or proactively suggest after market analysis: "要不要我帮你查一下供应商成本?"
178
+ 8. **Search 1688 Suppliers**:
179
+ ```bash
180
+ scout supplier-search "咖啡机" --limit 10
181
+ ```
182
+ 9. **Share Findings**:
183
+ - Wholesale price range (e.g., ¥429-599)
184
+ - MOQ (minimum order quantity)
185
+ - Profit margin calculation: Amazon price ($60-80) - 1688 cost (¥429 ≈ $60) - shipping ($10-15)
186
+ - Supplier quality indicators (years in business, certifications)
187
+ 10. **Ask**: "要不要我详细分析几个供应商?" or proceed to report
188
+
138
189
  **Phase 3: Report Generation (Proactive Suggestion)**
139
190
  7. **Gauge Completion** → After sufficient data gathering, **proactively suggest**:
140
191
  - "我已经收集了足够的数据,要不要我整理成一份完整的市场分析报告?"
@@ -347,6 +398,45 @@ scout product B0788F3R8X
347
398
  - Price positioning
348
399
  - Brand strength
349
400
 
401
+ ### Example 5: Complete Market Research + Supplier Sourcing
402
+ **User**: "我想卖咖啡机,帮我做市场调研"
403
+
404
+ **Phase 1 - Amazon Market Research:**
405
+ ```bash
406
+ scout search "coffee maker" --limit 15
407
+ scout product B08BHXG144 # Top seller analysis
408
+ ```
409
+
410
+ **Assistant**: "咖啡机市场很活跃:
411
+ - 价格区间:$30-150,主流在 $60-80
412
+ - 头部产品月销 1000+ 件,需求强劲
413
+ - 竞争激烈但市场容量大
414
+
415
+ **现在帮你查一下 1688 供应商成本,看看利润空间**"
416
+
417
+ **Phase 2 - Supplier Sourcing:**
418
+ ```bash
419
+ scout supplier-search "咖啡机" --limit 10
420
+ ```
421
+
422
+ **Assistant**: "找到供应商数据:
423
+ - 批发价区间:¥120-580(约 $17-80)
424
+ - 起订量:多数 2-10 台
425
+ - 头部供应商:容凯严选工厂,¥429-599,起订 2 台
426
+
427
+ **利润空间分析:**
428
+ - Amazon 售价:$60-80
429
+ - 1688 批发价:¥429(约 $60)
430
+ - 运费+关税:约 $10-15
431
+ - 毛利率:约 15-25%(扣除平台费用后)
432
+
433
+ 市场有需求,成本可控,利润空间合理。要详细分析吗?"
434
+
435
+ **User**: "好的,生成报告吧"
436
+
437
+ **Phase 3 - Generate Report with Supplier Data:**
438
+ [Creates comprehensive report including both Amazon market analysis AND 1688 supplier costs]
439
+
350
440
  ## Output Format
351
441
 
352
442
  Commands return structured JSON with product data and metadata. Key fields:
@@ -446,6 +536,31 @@ Commands return structured JSON with product data and metadata. Key fields:
446
536
  - Offer follow-up analysis: "要不要看看相关品类?"
447
537
  - Point out data limitations honestly
448
538
 
539
+ ### 8. Amazon + 1688 Integrated Analysis
540
+ **Principle:** Complete market research includes both demand analysis (Amazon) and supply chain research (1688).
541
+
542
+ **When to search 1688:**
543
+ - ✅ After identifying promising products on Amazon
544
+ - ✅ User asks about costs, margins, or sourcing
545
+ - ✅ Before generating final report (include supplier data for complete picture)
546
+ - ✅ User explicitly asks about suppliers or wholesale prices
547
+
548
+ **How to present:**
549
+ - Compare Amazon prices vs. 1688 wholesale costs
550
+ - Calculate rough profit margins (consider shipping, tariffs, platform fees)
551
+ - Highlight MOQ constraints (minimum order quantity)
552
+ - Identify manufacturing vs. trading suppliers (生产加工 vs. 贸易商)
553
+
554
+ **Example flow:**
555
+ 1. Search Amazon → Identify $60-80 price point for coffee makers
556
+ 2. Search 1688 → Find ¥429 ($60) wholesale price, MOQ 2 units
557
+ 3. Calculate margin → ~20% after fees and shipping
558
+ 4. Recommendation → Feasible opportunity with reasonable margins
559
+
560
+ **Proactive suggestion:**
561
+ After sufficient Amazon research, proactively offer:
562
+ "我已经分析了 Amazon 市场,要不要我帮你查一下 1688 供应商成本,看看利润空间?"
563
+
449
564
  ## Tips
450
565
 
451
566
  **Sales & Demand:**
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: shipping
3
+ description: "运费配置和物流管理。使用场景:查看/设置运费模式、固定运费区域、计算运费、Easyship集成。当用户问运费设置、运费模式、运费区域、Easyship相关问题时使用。"
4
+ ---
5
+
6
+ # 运费管理
7
+
8
+ ## 典型场景
9
+
10
+ | 用户说 | 命令 |
11
+ |--------|------|
12
+ | "查看运费设置" / "运费模式" | `commerce shipping get-mode` |
13
+ | "修改运费模式" | `commerce shipping update-mode` |
14
+ | "计算运费" / "寄到XX多少钱" | `commerce shipping calculate` |
15
+ | "查看运费区域" / "固定运费" | `commerce shipping-zone list` |
16
+ | "添加运费区域" | `commerce shipping-zone create` |
17
+ | "设置默认运费" / "兜底运费" / "其他地区运费" | `commerce shipping-zone create --is-default` |
18
+ | "Easyship快递" / "可用快递" | `commerce easyship couriers` |
19
+ | "查看发货地址" | `commerce easyship get-origin` |
20
+ | "更新发货地址" | `commerce merchant update --origin-*`(见 merchant skill) |
21
+
22
+ ## 不在此模块
23
+
24
+ | 用户说 | 正确命令 |
25
+ |--------|----------|
26
+ | "订单发货" | `commerce order ship`(见 order skill) |
27
+ | "查询订单物流" | `commerce order tracking`(见 order skill) |
28
+
29
+ ---
30
+
31
+ ## 运费模式
32
+
33
+ 店铺的运费计算方式,影响买家结账时看到的运费选项。
34
+
35
+ ### 查看当前模式
36
+ ```bash
37
+ commerce shipping get-mode
38
+ ```
39
+
40
+ ### 修改模式
41
+ ```bash
42
+ commerce shipping update-mode --mode <模式>
43
+ ```
44
+
45
+ | 模式 | 说明 |
46
+ |------|------|
47
+ | `auto` | 自动选择(Easyship 实时报价 + 固定运费,取较优) |
48
+ | `fixed_only` | 仅使用固定运费区域 |
49
+ | `easyship_only` | 仅使用 Easyship 实时报价 |
50
+
51
+ ---
52
+
53
+ ## 运费计算
54
+
55
+ 根据目的地和重量计算运费(发货前使用)。
56
+
57
+ ```bash
58
+ commerce shipping calculate \
59
+ --country <国家代码> \
60
+ --postal-code <邮编> \
61
+ --weight <重量kg>
62
+ ```
63
+
64
+ 示例:
65
+ ```bash
66
+ # 计算寄到美国的运费
67
+ commerce shipping calculate --country US --postal-code 10001 --weight 0.5
68
+
69
+ # 计算寄到日本的运费
70
+ commerce shipping calculate --country JP --postal-code 100-0001 --weight 1.2
71
+ ```
72
+
73
+ ### 查看支持的国家
74
+ ```bash
75
+ commerce shipping countries
76
+ ```
77
+
78
+ ---
79
+
80
+ ## 固定运费区域
81
+
82
+ 为不同地区设置固定运费,适合不使用 Easyship 的场景。
83
+
84
+ ### 查看所有区域
85
+ ```bash
86
+ commerce shipping-zone list
87
+ ```
88
+
89
+ ### 创建区域
90
+ ```bash
91
+ commerce shipping-zone create \
92
+ --name "北美" \
93
+ --countries "US,CA" \
94
+ --price 15.00
95
+
96
+ # 创建默认区域(兜底,当客户地址不匹配其他区域时使用)
97
+ commerce shipping-zone create \
98
+ --name "其他地区" \
99
+ --price 25.00 \
100
+ --is-default
101
+ ```
102
+
103
+ **`--is-default` 使用时机**:用户提到"默认运费"、"兜底运费"、"其他地区"、"全球运费"时使用。
104
+
105
+ ### 添加费率
106
+ ```bash
107
+ commerce shipping-zone add-rate \
108
+ --zone-id <区域ID> \
109
+ --min-weight 0 \
110
+ --max-weight 1 \
111
+ --rate 10.00
112
+ ```
113
+
114
+ ### 更新/删除
115
+ ```bash
116
+ commerce shipping-zone update --id <区域ID> --name "新名称"
117
+ commerce shipping-zone delete --id <区域ID> --yes
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Easyship 集成
123
+
124
+ Easyship 提供实时国际运费报价和物流追踪。
125
+
126
+ ### 查看可用快递
127
+ ```bash
128
+ commerce easyship couriers
129
+ ```
130
+
131
+ ### 发货地址
132
+
133
+ ```bash
134
+ # 查看发货地址
135
+ commerce easyship get-origin
136
+
137
+ # 更新发货地址 → 使用 merchant 命令
138
+ commerce merchant update --origin-country-alpha2 CN --origin-city 深圳 ...
139
+
140
+ # 验证发货地址
141
+ commerce easyship validate-origin
142
+ ```
143
+
144
+ **注意**:更新发货地址用 `commerce merchant update --origin-*`,详见 merchant skill。
145
+
146
+ ### 地址验证
147
+ ```bash
148
+ # 验证买家地址
149
+ commerce easyship validate-address \
150
+ --country-alpha2 US \
151
+ --city "New York" \
152
+ --postal-code 10001 \
153
+ --line-1 "123 Main St"
154
+ ```
155
+
156
+ ### 物流追踪
157
+ ```bash
158
+ # 查询 Easyship 运单详细轨迹
159
+ commerce easyship track --order-id <订单ID>
160
+ ```
161
+
162
+ ---
163
+
164
+ ## 命令参考
165
+
166
+ ### 运费配置
167
+ - `commerce shipping get-mode` - 查看运费模式
168
+ - `commerce shipping update-mode` - 修改运费模式
169
+ - `commerce shipping calculate` - 计算运费
170
+ - `commerce shipping countries` - 支持的国家列表
171
+
172
+ ### 固定运费区域
173
+ - `commerce shipping-zone list` - 查看所有区域
174
+ - `commerce shipping-zone get` - 查看区域详情
175
+ - `commerce shipping-zone create` - 创建区域
176
+ - `commerce shipping-zone update` - 更新区域
177
+ - `commerce shipping-zone delete` - 删除区域
178
+ - `commerce shipping-zone add-rate` - 添加费率
179
+ - `commerce shipping-zone update-rate` - 更新费率
180
+ - `commerce shipping-zone delete-rate` - 删除费率
181
+
182
+ ### Easyship
183
+ - `commerce easyship couriers` - 可用快递公司
184
+ - `commerce easyship get-origin` - 查看发货地址
185
+ - `commerce easyship validate-origin` - 验证发货地址
186
+ - `commerce easyship validate-address` - 验证买家地址
187
+ - `commerce easyship track` - 物流追踪
188
+
189
+ **更新发货地址**用 `commerce merchant update --origin-*`(见 merchant skill)
190
+
191
+ ## 不确定用什么命令?
192
+
193
+ 运行 `commerce shipping --help` 或 `commerce easyship --help` 查看所有子命令。
package/README.md CHANGED
@@ -51,6 +51,7 @@ optima -p "查看商品列表"
51
51
  - **广告投放** - Google Ads 管理
52
52
  - **选品调研** - Amazon 产品分析
53
53
  - **数据分析** - 销售数据和趋势
54
+ - **评价管理** - 审核、回复、精选评价
54
55
  - **交互式问答** - 执行任务时向用户提问(架构选择、方案确认等)
55
56
 
56
57
  ### 执行模式
@@ -71,11 +72,14 @@ optima -p "查看商品列表"
71
72
  | order | 订单处理 |
72
73
  | inventory | 库存管理 |
73
74
  | i18n | 国际化翻译 |
74
- | storefront | 店铺前台配置 |
75
+ | collection | 商品集合管理 |
76
+ | homepage | 店铺首页配置 |
77
+ | product-page | 商品详情页配置 |
75
78
  | comfy | 图像/视频生成 |
76
79
  | ads | Google Ads 广告 |
77
80
  | scout | Amazon 选品调研 |
78
81
  | bi | 数据分析 |
82
+ | review | 评价管理 |
79
83
 
80
84
  ## 交互式问答 (AskUserQuestion)
81
85
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -3,7 +3,7 @@ import { parseArgs } from "node:util";
3
3
  import { OptimaAgent } from "../src/index.js";
4
4
  import { startInteractiveMode } from "../src/ui/index.js";
5
5
  import { startServer } from "../src/server/index.js";
6
- import { startHeadlessMode } from "../src/ui/headless.js";
6
+ import { startDockerHeadlessMode } from "../src/ui/headless.js";
7
7
  import { VERSION } from "../src/version.js";
8
8
  function printHelp() {
9
9
  console.log(`
@@ -108,9 +108,9 @@ async function main() {
108
108
  printVersion();
109
109
  process.exit(0);
110
110
  }
111
- // Headless 模式
111
+ // Headless 模式(Docker 模式:stdin/stdout 通信)
112
112
  if (command === "headless") {
113
- await startHeadlessMode({ cwd: args.cwd });
113
+ await startDockerHeadlessMode({ cwd: args.cwd });
114
114
  return;
115
115
  }
116
116
  // 服务器模式
@@ -1 +1 @@
1
- {"version":3,"file":"optima.js","sourceRoot":"","sources":["../../bin/optima.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optima.js","sourceRoot":"","sources":["../../bin/optima.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes