@optima-chat/dev-skills 0.1.6 → 0.1.8
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/commands/logs.md +59 -37
- package/.claude/settings.local.json +2 -1
- package/.claude/skills/logs/SKILL.md +7 -16
- package/README.md +3 -1
- package/package.json +1 -1
package/.claude/commands/logs.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# /logs - 查看服务日志
|
|
2
2
|
|
|
3
|
-
快速查看服务日志,支持 Stage/Prod
|
|
3
|
+
快速查看服务日志,支持 CI/Stage/Prod 三个环境。
|
|
4
4
|
|
|
5
|
-
**版本**: v0.1.
|
|
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,26 +44,62 @@
|
|
|
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`
|
|
48
93
|
|
|
49
94
|
**步骤**:
|
|
50
95
|
```bash
|
|
96
|
+
# IMPORTANT: 必须使用单行命令,不要使用反斜杠换行
|
|
97
|
+
|
|
51
98
|
# 1. 获取最新的 log stream
|
|
52
|
-
STREAM=$(aws logs describe-log-streams
|
|
53
|
-
--log-group-name /ecs/commerce-backend-stage \
|
|
54
|
-
--order-by LastEventTime \
|
|
55
|
-
--descending \
|
|
56
|
-
--max-items 1 \
|
|
57
|
-
| jq -r '.logStreams[0].logStreamName')
|
|
99
|
+
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')
|
|
58
100
|
|
|
59
101
|
# 2. 获取日志内容(纯文本)
|
|
60
|
-
aws logs get-log-events
|
|
61
|
-
--log-group-name /ecs/commerce-backend-stage \
|
|
62
|
-
--log-stream-name "$STREAM" \
|
|
63
|
-
--limit 50 \
|
|
64
|
-
| jq -r '.events[] | .message'
|
|
102
|
+
aws logs get-log-events --log-group-name /ecs/commerce-backend-stage --log-stream-name "$STREAM" --limit 50 | jq -r '.events[] | .message'
|
|
65
103
|
```
|
|
66
104
|
|
|
67
105
|
**服务映射**:
|
|
@@ -79,12 +117,8 @@ aws logs get-log-events \
|
|
|
79
117
|
# 获取日志内容(纯文本)
|
|
80
118
|
# 注意:Prod 环境的 log stream 通常是固定的 "backend"
|
|
81
119
|
# 使用 --no-start-from-head 从最新日志开始读取
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
--log-stream-name backend \
|
|
85
|
-
--limit 50 \
|
|
86
|
-
--no-start-from-head \
|
|
87
|
-
| jq -r '.events[] | .message'
|
|
120
|
+
# IMPORTANT: 必须使用单行命令,不要使用反斜杠换行
|
|
121
|
+
aws logs get-log-events --log-group-name /optima/prod/commerce-backend --log-stream-name backend --limit 50 --no-start-from-head | jq -r '.events[] | .message'
|
|
88
122
|
```
|
|
89
123
|
|
|
90
124
|
**服务映射**:
|
|
@@ -102,35 +136,23 @@ aws logs get-log-events \
|
|
|
102
136
|
|
|
103
137
|
### Stage 环境
|
|
104
138
|
```bash
|
|
139
|
+
# IMPORTANT: 使用单行命令
|
|
105
140
|
SERVICE="commerce-backend"
|
|
106
141
|
LINES=50
|
|
107
142
|
|
|
108
|
-
# 获取最新 stream
|
|
109
|
-
STREAM=$(aws logs describe-log-streams
|
|
110
|
-
|
|
111
|
-
--order-by LastEventTime --descending --max-items 1 \
|
|
112
|
-
| jq -r '.logStreams[0].logStreamName')
|
|
113
|
-
|
|
114
|
-
# 显示日志
|
|
115
|
-
aws logs get-log-events \
|
|
116
|
-
--log-group-name /ecs/${SERVICE}-stage \
|
|
117
|
-
--log-stream-name "$STREAM" \
|
|
118
|
-
--limit $LINES \
|
|
119
|
-
| jq -r '.events[] | .message'
|
|
143
|
+
# 获取最新 stream 并显示日志
|
|
144
|
+
STREAM=$(aws logs describe-log-streams --log-group-name /ecs/${SERVICE}-stage --order-by LastEventTime --descending --max-items 1 | jq -r '.logStreams[0].logStreamName')
|
|
145
|
+
aws logs get-log-events --log-group-name /ecs/${SERVICE}-stage --log-stream-name "$STREAM" --limit $LINES | jq -r '.events[] | .message'
|
|
120
146
|
```
|
|
121
147
|
|
|
122
148
|
### Prod 环境
|
|
123
149
|
```bash
|
|
150
|
+
# IMPORTANT: 使用单行命令
|
|
124
151
|
SERVICE="commerce-backend"
|
|
125
152
|
LINES=50
|
|
126
153
|
|
|
127
154
|
# 显示主服务日志(从最新开始)
|
|
128
|
-
aws logs get-log-events
|
|
129
|
-
--log-group-name /optima/prod/${SERVICE} \
|
|
130
|
-
--log-stream-name backend \
|
|
131
|
-
--limit $LINES \
|
|
132
|
-
--no-start-from-head \
|
|
133
|
-
| jq -r '.events[] | .message'
|
|
155
|
+
aws logs get-log-events --log-group-name /optima/prod/${SERVICE} --log-stream-name backend --limit $LINES --no-start-from-head | jq -r '.events[] | .message'
|
|
134
156
|
```
|
|
135
157
|
|
|
136
158
|
## 常见错误处理
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "logs"
|
|
3
|
-
description: "当用户请求查看日志、查看服务日志、排查问题、看看日志、检查日志、商品服务日志、后端日志、API
|
|
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
|
|
|
@@ -142,18 +142,13 @@ INFO - Database query took 3200ms: SELECT * FROM products WHERE...
|
|
|
142
142
|
|
|
143
143
|
**实现方式**:
|
|
144
144
|
```bash
|
|
145
|
+
# IMPORTANT: 使用单行命令,避免反斜杠换行导致的参数解析错误
|
|
146
|
+
|
|
145
147
|
# 1. 获取最新 log stream
|
|
146
|
-
STREAM=$(aws logs describe-log-streams
|
|
147
|
-
--log-group-name /ecs/commerce-backend-stage \
|
|
148
|
-
--order-by LastEventTime --descending --max-items 1 \
|
|
149
|
-
| jq -r '.logStreams[0].logStreamName')
|
|
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')
|
|
150
149
|
|
|
151
150
|
# 2. 获取日志
|
|
152
|
-
aws logs get-log-events
|
|
153
|
-
--log-group-name /ecs/commerce-backend-stage \
|
|
154
|
-
--log-stream-name "$STREAM" \
|
|
155
|
-
--limit 100 \
|
|
156
|
-
| jq -r '.events[] | .message'
|
|
151
|
+
aws logs get-log-events --log-group-name /ecs/commerce-backend-stage --log-stream-name "$STREAM" --limit 100 | jq -r '.events[] | .message'
|
|
157
152
|
```
|
|
158
153
|
|
|
159
154
|
### Prod 环境
|
|
@@ -170,13 +165,9 @@ aws logs get-log-events \
|
|
|
170
165
|
|
|
171
166
|
**实现方式**:
|
|
172
167
|
```bash
|
|
168
|
+
# IMPORTANT: 使用单行命令,使用 --no-start-from-head 而不是 --start-from-head false
|
|
173
169
|
# 获取主服务日志
|
|
174
|
-
aws logs get-log-events
|
|
175
|
-
--log-group-name /optima/prod/commerce-backend \
|
|
176
|
-
--log-stream-name backend \
|
|
177
|
-
--limit 100 \
|
|
178
|
-
--start-from-head false \
|
|
179
|
-
| jq -r '.events[] | .message'
|
|
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'
|
|
180
171
|
```
|
|
181
172
|
|
|
182
173
|
**可用的 log streams**:
|
package/README.md
CHANGED
|
@@ -180,12 +180,14 @@ Claude:
|
|
|
180
180
|
|
|
181
181
|
## 🛠️ 开发状态
|
|
182
182
|
|
|
183
|
-
**当前版本**: 0.1.
|
|
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、路径、凭证位置),不实现复杂逻辑
|