@optima-chat/dev-skills 0.1.7 → 0.1.9

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.
@@ -1,8 +1,8 @@
1
1
  # /logs - 查看服务日志
2
2
 
3
- 快速查看服务日志,支持 Stage/Prod 两个环境。
3
+ 快速查看服务日志,支持 CI/Stage/Prod 三个环境。
4
4
 
5
- **版本**: v0.1.7
5
+ **版本**: v0.1.8
6
6
 
7
7
  ## 使用场景
8
8
 
@@ -25,6 +25,7 @@
25
25
  - `agentic-chat` - AI 聊天服务
26
26
  - `lines` (可选): 显示行数,默认 50
27
27
  - `environment` (可选): 环境,默认 stage
28
+ - `ci` - CI 持续集成环境
28
29
  - `stage` - Stage 预发布环境
29
30
  - `prod` - 生产环境
30
31
 
@@ -34,6 +35,7 @@
34
35
  /logs commerce-backend # 查看 Stage 环境最近 50 行
35
36
  /logs user-auth 100 # 查看 Stage 环境最近 100 行
36
37
  /logs mcp-host 200 prod # 查看 Prod 环境最近 200 行
38
+ /logs commerce-backend 100 ci # 查看 CI 环境最近 100 行
37
39
  ```
38
40
 
39
41
  ## 特殊参数处理
@@ -42,6 +44,49 @@
42
44
 
43
45
  ## Claude Code 执行步骤
44
46
 
47
+ ### 0. CI 环境
48
+
49
+ **访问方式**: SSH + Docker Compose
50
+
51
+ **步骤**:
52
+ ```bash
53
+ # IMPORTANT: 使用单行命令,使用 sshpass 进行密码认证
54
+
55
+ # 获取 CI 服务器配置(从 GitHub Variables)
56
+ CI_USER=$(gh variable get CI_SSH_USER -R Optima-Chat/optima-dev-skills)
57
+ CI_HOST=$(gh variable get CI_SSH_HOST -R Optima-Chat/optima-dev-skills)
58
+ CI_PASSWORD=$(gh variable get CI_SSH_PASSWORD -R Optima-Chat/optima-dev-skills)
59
+
60
+ # 查看日志(根据服务选择不同的 docker-compose.yml 路径)
61
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/commerce-backend && docker compose logs --tail 50 commerce-backend"
62
+ ```
63
+
64
+ **服务映射**(路径 + 服务名):
65
+ - `commerce-backend` → `/data/xuhao/commerce-backend` → `commerce-backend`
66
+ - `user-auth` → `/data/xuhao/user-auth` → `user-auth`
67
+ - `mcp-host` → `/data/xuhao/mcp-host` → `app`
68
+ - `agentic-chat` → `/data/xuhao/agentic-chat` → `optima-ai-chat`
69
+
70
+ **完整命令示例**(先获取配置):
71
+ ```bash
72
+ # 获取配置
73
+ CI_USER=$(gh variable get CI_SSH_USER -R Optima-Chat/optima-dev-skills)
74
+ CI_HOST=$(gh variable get CI_SSH_HOST -R Optima-Chat/optima-dev-skills)
75
+ CI_PASSWORD=$(gh variable get CI_SSH_PASSWORD -R Optima-Chat/optima-dev-skills)
76
+
77
+ # commerce-backend
78
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/commerce-backend && docker compose logs --tail 50 commerce-backend"
79
+
80
+ # user-auth
81
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/user-auth && docker compose logs --tail 50 user-auth"
82
+
83
+ # mcp-host
84
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/mcp-host && docker compose logs --tail 50 app"
85
+
86
+ # agentic-chat
87
+ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "cd /data/xuhao/agentic-chat && docker compose logs --tail 50 optima-ai-chat"
88
+ ```
89
+
45
90
  ### 1. Stage 环境
46
91
 
47
92
  **日志路径格式**: `/ecs/{service}-stage`
@@ -21,7 +21,8 @@
21
21
  "Bash(git commit:*)",
22
22
  "Bash(aws logs get-log-events:*)",
23
23
  "Bash(npm install:*)",
24
- "Bash(optima-dev-skills:*)"
24
+ "Bash(optima-dev-skills:*)",
25
+ "Bash(gh variable set:*)"
25
26
  ],
26
27
  "deny": [],
27
28
  "ask": []
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "logs"
3
- description: "当用户请求查看日志、查看服务日志、排查问题、看看日志、检查日志、商品服务日志、后端日志、API日志、正式环境日志、生产环境日志时,使用此技能。支持 Stage、Prod 环境的 commerce-backend、user-auth、mcp-host、agentic-chat 服务。"
3
+ description: "当用户请求查看日志、查看服务日志、排查问题、看看日志、检查日志、商品服务日志、后端日志、API日志、正式环境日志、生产环境日志、CI环境日志、开发环境日志时,使用此技能。支持 CI、Stage、Prod 三个环境的 commerce-backend、user-auth、mcp-host、agentic-chat 服务。"
4
4
  allowed-tools: ["Bash", "SlashCommand"]
5
5
  ---
6
6
 
@@ -17,7 +17,19 @@ allowed-tools: ["Bash", "SlashCommand"]
17
17
 
18
18
  ## 🚀 快速操作
19
19
 
20
- ### 1. 查看 Stage 环境日志(默认)
20
+ ### 1. 查看 CI 环境日志
21
+
22
+ ```
23
+ /logs commerce-backend 50 ci
24
+ /logs user-auth 100 ci
25
+ ```
26
+
27
+ **说明**:
28
+ - 查看 CI 开发环境(dev.optima.chat)
29
+ - 通过 SSH + Docker Compose 访问
30
+ - 从 GitHub Variables 获取认证信息
31
+
32
+ ### 2. 查看 Stage 环境日志(默认)
21
33
 
22
34
  ```
23
35
  /logs commerce-backend
@@ -34,7 +46,7 @@ allowed-tools: ["Bash", "SlashCommand"]
34
46
  - `mcp-host` - MCP 协调器
35
47
  - `agentic-chat` - AI 聊天服务
36
48
 
37
- ### 2. 查看更多日志行数
49
+ ### 3. 查看更多日志行数
38
50
 
39
51
  ```
40
52
  /logs commerce-backend 200
@@ -42,7 +54,7 @@ allowed-tools: ["Bash", "SlashCommand"]
42
54
 
43
55
  查看最近 200 行日志,用于排查历史问题。
44
56
 
45
- ### 3. 查看 Prod 环境日志
57
+ ### 4. 查看 Prod 环境日志
46
58
 
47
59
  ```
48
60
  /logs commerce-backend 100 prod
@@ -128,28 +140,27 @@ INFO - Database query took 3200ms: SELECT * FROM products WHERE...
128
140
 
129
141
  ## 🌐 环境对比
130
142
 
131
- ### Stage-ECS 环境
143
+ ### CI 环境
132
144
 
133
145
  ```
134
- /logs commerce-backend 100 stage
146
+ /logs user-auth 100 ci
135
147
  ```
136
148
 
137
149
  **特点**:
138
- - ECS 容器运行
139
- - CloudWatch Logs 自动收集
140
- - log stream 名称动态变化(ECS Task ID)
141
- - 日志路径:`/ecs/{service}-stage`
142
-
143
- **实现方式**:
144
- ```bash
145
- # IMPORTANT: 使用单行命令,避免反斜杠换行导致的参数解析错误
150
+ - CI 开发环境,适合开发调试
151
+ - 实时性最好
152
+ - 查看 Docker Compose 日志
146
153
 
147
- # 1. 获取最新 log stream
148
- STREAM=$(aws logs describe-log-streams --log-group-name /ecs/commerce-backend-stage --order-by LastEventTime --descending --max-items 1 | jq -r '.logStreams[0].logStreamName')
154
+ ### Stage 环境
149
155
 
150
- # 2. 获取日志
151
- aws logs get-log-events --log-group-name /ecs/commerce-backend-stage --log-stream-name "$STREAM" --limit 100 | jq -r '.events[] | .message'
152
156
  ```
157
+ /logs commerce-backend 100 stage
158
+ ```
159
+
160
+ **特点**:
161
+ - 预发布环境
162
+ - AWS ECS 运行
163
+ - 通过 CloudWatch Logs 查看
153
164
 
154
165
  ### Prod 环境
155
166
 
@@ -158,22 +169,9 @@ aws logs get-log-events --log-group-name /ecs/commerce-backend-stage --log-strea
158
169
  ```
159
170
 
160
171
  **特点**:
161
- - Docker Compose 运行在 EC2
162
- - CloudWatch Logs Agent 收集
163
- - log stream 固定名称(backend, rq-worker, rq-scheduler)
164
- - 日志路径:`/optima/prod/{service}`
165
-
166
- **实现方式**:
167
- ```bash
168
- # IMPORTANT: 使用单行命令,使用 --no-start-from-head 而不是 --start-from-head false
169
- # 获取主服务日志
170
- aws logs get-log-events --log-group-name /optima/prod/commerce-backend --log-stream-name backend --limit 100 --no-start-from-head | jq -r '.events[] | .message'
171
- ```
172
-
173
- **可用的 log streams**:
174
- - `backend` - 主服务日志(推荐)
175
- - `rq-worker` - 后台任务日志
176
- - `rq-scheduler` - 调度器日志
172
+ - 生产环境
173
+ - EC2 + Docker Compose
174
+ - 通过 CloudWatch Logs 查看
177
175
 
178
176
  ## 💡 最佳实践
179
177
 
@@ -185,79 +183,4 @@ aws logs get-log-events --log-group-name /optima/prod/commerce-backend --log-str
185
183
 
186
184
  ## 🔗 相关命令
187
185
 
188
- - `/logs` - 查看服务日志
189
-
190
- ## 📚 技术细节
191
-
192
- ### CloudWatch Logs 结构
193
-
194
- **Stage-ECS**:
195
- ```
196
- Log Group: /ecs/commerce-backend-stage
197
- └── Log Stream: ecs/commerce-backend/d8e079f0b4fb47e398c61ee5d610ed9c (动态)
198
- └── Events: 日志条目
199
- ```
200
-
201
- **Prod**:
202
- ```
203
- Log Group: /optima/prod/commerce-backend
204
- ├── Log Stream: backend (固定)
205
- ├── Log Stream: rq-worker (固定)
206
- └── Log Stream: rq-scheduler (固定)
207
- └── Events: 日志条目
208
- ```
209
-
210
- ### 日志格式
211
-
212
- 所有日志通过 CloudWatch Logs 返回 JSON 格式:
213
-
214
- ```json
215
- {
216
- "events": [
217
- {
218
- "timestamp": 1763904521976,
219
- "message": "INFO: 10.0.2.199:64952 - \"GET /health HTTP/1.1\" 200 OK",
220
- "ingestionTime": 1763904526810
221
- }
222
- ]
223
- }
224
- ```
225
-
226
- 使用 `jq -r '.events[] | .message'` 提取纯文本:
227
-
228
- ```
229
- INFO: 10.0.2.199:64952 - "GET /health HTTP/1.1" 200 OK
230
- ```
231
-
232
- ## ⚠️ 注意事项
233
-
234
- ### 权限要求
235
-
236
- 需要 AWS CLI 配置了以下权限:
237
- - `logs:DescribeLogStreams`
238
- - `logs:GetLogEvents`
239
-
240
- ### 日志延迟
241
-
242
- CloudWatch Logs 可能有 1-2 秒延迟,实时调试时需注意。
243
-
244
- ### 日志保留
245
-
246
- - **Stage**: 7 天
247
- - **Prod**: 30 天(建议配置)
248
-
249
- ### 常见错误
250
-
251
- **ResourceNotFoundException**:
252
- ```
253
- An error occurred (ResourceNotFoundException) when calling the GetLogEvents operation
254
- ```
255
-
256
- **解决**:检查服务名称和环境是否正确:
257
- ```bash
258
- # 列出所有 Stage 日志组
259
- aws logs describe-log-groups --log-group-name-prefix /ecs
260
-
261
- # 列出所有 Prod 日志组
262
- aws logs describe-log-groups --log-group-name-prefix /optima/prod
263
- ```
186
+ - `/logs` - 查看服务日志(详细使用方法和技术细节请查看 `/logs --help`)
package/README.md CHANGED
@@ -180,12 +180,14 @@ Claude:
180
180
 
181
181
  ## 🛠️ 开发状态
182
182
 
183
- **当前版本**: 0.1.0 (MVP)
183
+ **当前版本**: 0.1.8
184
184
 
185
185
  **已完成**:
186
186
  - ✅ 1 个跨环境命令:`/logs`
187
187
  - ✅ 1 个任务场景:`logs` skill
188
188
  - ✅ 支持 CI、Stage、Prod 三个环境
189
+ - ✅ CI 环境通过 SSH + Docker Compose 访问
190
+ - ✅ Stage/Prod 通过 AWS CloudWatch Logs 访问
189
191
 
190
192
  **设计原则**:
191
193
  - 命令提供信息(URL、路径、凭证位置),不实现复杂逻辑
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/dev-skills",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Claude Code Skills for Optima development team - cross-environment collaboration tools",
5
5
  "main": "index.js",
6
6
  "bin": {