@optima-chat/dev-skills 0.7.6 → 0.7.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.
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
执行 SQL 查询,支持 CI/Stage/Prod 三个环境。
|
|
4
4
|
|
|
5
|
-
**版本**: v0.
|
|
5
|
+
**版本**: v0.6.0
|
|
6
6
|
|
|
7
7
|
## 使用场景
|
|
8
8
|
|
|
@@ -44,8 +44,9 @@ optima-query-db commerce-backend "SELECT * FROM products LIMIT 5" prod
|
|
|
44
44
|
- `service` (必需): 服务名称
|
|
45
45
|
- `commerce-backend` - 电商后端数据库
|
|
46
46
|
- `user-auth` - 用户认证数据库
|
|
47
|
-
- `mcp-host` - MCP 协调器数据库
|
|
48
47
|
- `agentic-chat` - AI 聊天服务数据库
|
|
48
|
+
- `bi-backend` - BI 后端数据库
|
|
49
|
+
- `session-gateway` - AI Shell 网关数据库
|
|
49
50
|
- `sql` (必需): SQL 查询语句(用引号包裹)
|
|
50
51
|
- `environment` (可选): 环境,默认 ci
|
|
51
52
|
- `ci` - CI 持续集成环境(开发环境,默认)
|
|
@@ -133,12 +134,6 @@ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST}
|
|
|
133
134
|
- 密码: `password123`
|
|
134
135
|
- 数据库: `userauth`
|
|
135
136
|
|
|
136
|
-
- `mcp-host`:
|
|
137
|
-
- 容器: `mcp-host-db-1`
|
|
138
|
-
- 用户: `mcp_user`
|
|
139
|
-
- 密码: `mcp_password`
|
|
140
|
-
- 数据库: `mcp_host`
|
|
141
|
-
|
|
142
137
|
- `agentic-chat`:
|
|
143
138
|
- 容器: `optima-postgres`
|
|
144
139
|
- 用户: `postgres`
|
|
@@ -158,9 +153,6 @@ sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST}
|
|
|
158
153
|
# user-auth
|
|
159
154
|
sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "docker exec user-auth-postgres-1 psql -U userauth -d userauth -c \"SELECT COUNT(*) FROM users\""
|
|
160
155
|
|
|
161
|
-
# mcp-host
|
|
162
|
-
sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "docker exec mcp-host-db-1 psql -U mcp_user -d mcp_host -c \"SELECT COUNT(*) FROM sessions\""
|
|
163
|
-
|
|
164
156
|
# agentic-chat
|
|
165
157
|
sshpass -p "$CI_PASSWORD" ssh -o StrictHostKeyChecking=no ${CI_USER}@${CI_HOST} "docker exec optima-postgres psql -U postgres -d optima_chat -c \"SELECT COUNT(*) FROM conversations\""
|
|
166
158
|
```
|
|
@@ -199,59 +191,68 @@ print(f\"COMMERCE_DB_USER={secrets['COMMERCE_DB_USER']}\")
|
|
|
199
191
|
print(f\"COMMERCE_DB_PASSWORD={secrets['COMMERCE_DB_PASSWORD']}\")
|
|
200
192
|
" > /tmp/stage_db_config.sh && source /tmp/stage_db_config.sh
|
|
201
193
|
|
|
202
|
-
# 4. 建立 SSH 隧道到
|
|
203
|
-
ssh -i ~/.ssh/optima-ec2-key -f -N -L 15432
|
|
194
|
+
# 4. 建立 SSH 隧道到 Shared EC2,通过隧道访问 Stage RDS
|
|
195
|
+
ssh -i ~/.ssh/optima-ec2-key -f -N -L 15432:optima-stage-postgres.ctg866o0ehac.ap-southeast-1.rds.amazonaws.com:5432 ec2-user@13.251.46.219
|
|
204
196
|
|
|
205
197
|
# 5. 通过本地端口 15432 连接到 RDS
|
|
206
|
-
PGPASSWORD="${COMMERCE_DB_PASSWORD}" psql -h localhost -p 15432 -U "${COMMERCE_DB_USER}" -d
|
|
198
|
+
PGPASSWORD="${COMMERCE_DB_PASSWORD}" psql -h localhost -p 15432 -U "${COMMERCE_DB_USER}" -d optima_commerce -c "SELECT COUNT(*) FROM products"
|
|
207
199
|
|
|
208
200
|
# 6. 关闭 SSH 隧道(可选)
|
|
209
201
|
pkill -f "ssh.*15432:${DATABASE_HOST}:5432"
|
|
210
202
|
```
|
|
211
203
|
|
|
212
|
-
|
|
204
|
+
**完整示例(五个服务)**:
|
|
213
205
|
```bash
|
|
214
206
|
# commerce-backend
|
|
215
|
-
# 使用 COMMERCE_DB_USER, COMMERCE_DB_PASSWORD, 数据库:
|
|
207
|
+
# 使用 COMMERCE_DB_USER, COMMERCE_DB_PASSWORD, 数据库: optima_commerce
|
|
216
208
|
|
|
217
209
|
# user-auth
|
|
218
|
-
# 使用 AUTH_DB_USER, AUTH_DB_PASSWORD, 数据库:
|
|
219
|
-
|
|
220
|
-
# mcp-host
|
|
221
|
-
# 使用 MCP_DB_USER, MCP_DB_PASSWORD, 数据库: optima_stage_mcp
|
|
210
|
+
# 使用 AUTH_DB_USER, AUTH_DB_PASSWORD, 数据库: optima_auth
|
|
222
211
|
|
|
223
212
|
# agentic-chat
|
|
224
|
-
# 使用 CHAT_DB_USER, CHAT_DB_PASSWORD, 数据库:
|
|
213
|
+
# 使用 CHAT_DB_USER, CHAT_DB_PASSWORD, 数据库: optima_chat
|
|
214
|
+
|
|
215
|
+
# bi-backend
|
|
216
|
+
# 使用 BI_DB_USER, BI_DB_PASSWORD, 数据库: optima_bi
|
|
217
|
+
|
|
218
|
+
# session-gateway (注意: Stage 数据库名是 optima_shell)
|
|
219
|
+
# 使用 SHELL_DB_USER, SHELL_DB_PASSWORD, 数据库: optima_shell
|
|
225
220
|
```
|
|
226
221
|
|
|
227
222
|
**数据库配置映射**:
|
|
228
223
|
- `commerce-backend`:
|
|
229
|
-
- 数据库: `
|
|
224
|
+
- 数据库: `optima_commerce`
|
|
230
225
|
- 用户: Infisical `COMMERCE_DB_USER`
|
|
231
226
|
- 密码: Infisical `COMMERCE_DB_PASSWORD`
|
|
232
227
|
|
|
233
228
|
- `user-auth`:
|
|
234
|
-
- 数据库: `
|
|
229
|
+
- 数据库: `optima_auth`
|
|
235
230
|
- 用户: Infisical `AUTH_DB_USER`
|
|
236
231
|
- 密码: Infisical `AUTH_DB_PASSWORD`
|
|
237
232
|
|
|
238
|
-
- `mcp-host`:
|
|
239
|
-
- 数据库: `optima_stage_mcp`
|
|
240
|
-
- 用户: Infisical `MCP_DB_USER`
|
|
241
|
-
- 密码: Infisical `MCP_DB_PASSWORD`
|
|
242
|
-
|
|
243
233
|
- `agentic-chat`:
|
|
244
|
-
- 数据库: `
|
|
234
|
+
- 数据库: `optima_chat`
|
|
245
235
|
- 用户: Infisical `CHAT_DB_USER`
|
|
246
236
|
- 密码: Infisical `CHAT_DB_PASSWORD`
|
|
247
237
|
|
|
238
|
+
- `bi-backend`:
|
|
239
|
+
- 数据库: `optima_bi`
|
|
240
|
+
- 用户: Infisical `BI_DB_USER`
|
|
241
|
+
- 密码: Infisical `BI_DB_PASSWORD`
|
|
242
|
+
|
|
243
|
+
- `session-gateway`:
|
|
244
|
+
- 数据库: `optima_shell` ⚠️ (Stage 与 Prod 不同)
|
|
245
|
+
- 用户: Infisical `SHELL_DB_USER`
|
|
246
|
+
- 密码: Infisical `SHELL_DB_PASSWORD`
|
|
247
|
+
|
|
248
248
|
**说明**:
|
|
249
249
|
- Infisical 配置从 GitHub Variables 获取
|
|
250
250
|
- 数据库密钥从 Infisical 动态获取(项目: optima-secrets, 环境: staging, 路径: /infrastructure)
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
- SSH 隧道: 本地端口 `15432` → EC2 → RDS `5432`
|
|
254
|
-
- Stage 和 Prod
|
|
251
|
+
- Stage RDS: `optima-stage-postgres.ctg866o0ehac.ap-southeast-1.rds.amazonaws.com`
|
|
252
|
+
- Shared EC2 IP: `13.251.46.219`
|
|
253
|
+
- SSH 隧道: 本地端口 `15432` → Shared EC2 → Stage RDS `5432`
|
|
254
|
+
- Stage 和 Prod 有独立的 RDS 实例
|
|
255
|
+
- ⚠️ session-gateway 数据库名: Stage 用 `optima_shell`, Prod 用 `optima_ai_shell`
|
|
255
256
|
|
|
256
257
|
### 2. Prod 环境(environment = "prod")
|
|
257
258
|
|
|
@@ -288,8 +289,8 @@ print(f\"COMMERCE_DB_USER={secrets['COMMERCE_DB_USER']}\")
|
|
|
288
289
|
print(f\"COMMERCE_DB_PASSWORD={secrets['COMMERCE_DB_PASSWORD']}\")
|
|
289
290
|
" > /tmp/prod_db_config.sh && source /tmp/prod_db_config.sh
|
|
290
291
|
|
|
291
|
-
# 4. 建立 SSH 隧道到
|
|
292
|
-
ssh -i ~/.ssh/optima-ec2-key -f -N -L 15433
|
|
292
|
+
# 4. 建立 SSH 隧道到 Shared EC2,通过隧道访问 Prod RDS
|
|
293
|
+
ssh -i ~/.ssh/optima-ec2-key -f -N -L 15433:optima-prod-postgres.ctg866o0ehac.ap-southeast-1.rds.amazonaws.com:5432 ec2-user@13.251.46.219
|
|
293
294
|
|
|
294
295
|
# 5. 通过本地端口 15433 连接到 RDS
|
|
295
296
|
PGPASSWORD="${COMMERCE_DB_PASSWORD}" psql -h localhost -p 15433 -U "${COMMERCE_DB_USER}" -d optima_commerce -c "SELECT COUNT(*) FROM products"
|
|
@@ -298,7 +299,7 @@ PGPASSWORD="${COMMERCE_DB_PASSWORD}" psql -h localhost -p 15433 -U "${COMMERCE_D
|
|
|
298
299
|
pkill -f "ssh.*15433:${DATABASE_HOST}:5432"
|
|
299
300
|
```
|
|
300
301
|
|
|
301
|
-
|
|
302
|
+
**完整示例(五个服务)**:
|
|
302
303
|
```bash
|
|
303
304
|
# commerce-backend
|
|
304
305
|
# 使用 COMMERCE_DB_USER, COMMERCE_DB_PASSWORD, 数据库: optima_commerce
|
|
@@ -306,11 +307,14 @@ pkill -f "ssh.*15433:${DATABASE_HOST}:5432"
|
|
|
306
307
|
# user-auth
|
|
307
308
|
# 使用 AUTH_DB_USER, AUTH_DB_PASSWORD, 数据库: optima_auth
|
|
308
309
|
|
|
309
|
-
# mcp-host
|
|
310
|
-
# 使用 MCP_DB_USER, MCP_DB_PASSWORD, 数据库: optima_mcp
|
|
311
|
-
|
|
312
310
|
# agentic-chat
|
|
313
311
|
# 使用 CHAT_DB_USER, CHAT_DB_PASSWORD, 数据库: optima_chat
|
|
312
|
+
|
|
313
|
+
# bi-backend
|
|
314
|
+
# 使用 BI_DB_USER, BI_DB_PASSWORD, 数据库: optima_bi
|
|
315
|
+
|
|
316
|
+
# session-gateway (注意: Prod 数据库名是 optima_ai_shell)
|
|
317
|
+
# 使用 AI_SHELL_DB_USER, AI_SHELL_DB_PASSWORD, 数据库: optima_ai_shell
|
|
314
318
|
```
|
|
315
319
|
|
|
316
320
|
**数据库配置映射**:
|
|
@@ -324,23 +328,30 @@ pkill -f "ssh.*15433:${DATABASE_HOST}:5432"
|
|
|
324
328
|
- 用户: Infisical `AUTH_DB_USER`
|
|
325
329
|
- 密码: Infisical `AUTH_DB_PASSWORD`
|
|
326
330
|
|
|
327
|
-
- `mcp-host`:
|
|
328
|
-
- 数据库: `optima_mcp`
|
|
329
|
-
- 用户: Infisical `MCP_DB_USER`
|
|
330
|
-
- 密码: Infisical `MCP_DB_PASSWORD`
|
|
331
|
-
|
|
332
331
|
- `agentic-chat`:
|
|
333
332
|
- 数据库: `optima_chat`
|
|
334
333
|
- 用户: Infisical `CHAT_DB_USER`
|
|
335
334
|
- 密码: Infisical `CHAT_DB_PASSWORD`
|
|
336
335
|
|
|
336
|
+
- `bi-backend`:
|
|
337
|
+
- 数据库: `optima_bi`
|
|
338
|
+
- 用户: Infisical `BI_DB_USER`
|
|
339
|
+
- 密码: Infisical `BI_DB_PASSWORD`
|
|
340
|
+
|
|
341
|
+
- `session-gateway`:
|
|
342
|
+
- 数据库: `optima_ai_shell` ⚠️ (Prod 与 Stage 不同)
|
|
343
|
+
- 用户: Infisical `AI_SHELL_DB_USER`
|
|
344
|
+
- 密码: Infisical `AI_SHELL_DB_PASSWORD`
|
|
345
|
+
|
|
337
346
|
**说明**:
|
|
338
347
|
- Infisical 配置从 GitHub Variables 获取
|
|
339
348
|
- 数据库密钥从 Infisical 动态获取(项目: optima-secrets, 环境: prod, 路径: /infrastructure)
|
|
340
|
-
-
|
|
341
|
-
-
|
|
342
|
-
- SSH 隧道: 本地端口 `15433` → EC2 → RDS `5432`
|
|
343
|
-
- Stage
|
|
349
|
+
- Prod RDS: `optima-prod-postgres.ctg866o0ehac.ap-southeast-1.rds.amazonaws.com`
|
|
350
|
+
- Shared EC2 IP: `13.251.46.219`
|
|
351
|
+
- SSH 隧道: 本地端口 `15433` → Shared EC2 → Prod RDS `5432`
|
|
352
|
+
- Stage 用端口 `15432`,Prod 用端口 `15433`
|
|
353
|
+
- Stage 和 Prod 有独立的 RDS 实例
|
|
354
|
+
- ⚠️ session-gateway 数据库名: Stage 用 `optima_shell`, Prod 用 `optima_ai_shell`
|
|
344
355
|
|
|
345
356
|
**⚠️ 生产环境安全规则**:
|
|
346
357
|
1. **谨慎操作** - 生产数据库,避免误操作
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "query-db"
|
|
3
|
-
description: "当用户请求查询数据库、执行SQL、查看数据、统计数据、检查数据库、查询表、数据库查询时,使用此技能。支持 CI、Stage、Prod 三个环境的 commerce-backend、user-auth、
|
|
3
|
+
description: "当用户请求查询数据库、执行SQL、查看数据、统计数据、检查数据库、查询表、数据库查询时,使用此技能。支持 CI、Stage、Prod 三个环境的 commerce-backend、user-auth、agentic-chat、bi-backend、session-gateway 服务的数据库查询。优先使用 optima-query-db CLI 工具。"
|
|
4
4
|
allowed-tools: ["Bash", "SlashCommand"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -73,8 +73,9 @@ optima-query-db commerce-backend "SELECT status, COUNT(*) FROM orders GROUP BY s
|
|
|
73
73
|
**常用服务**:
|
|
74
74
|
- `commerce-backend` - 电商数据库
|
|
75
75
|
- `user-auth` - 用户认证数据库
|
|
76
|
-
- `mcp-host` - MCP 协调器数据库
|
|
77
76
|
- `agentic-chat` - AI 聊天数据库
|
|
77
|
+
- `bi-backend` - BI 后端数据库
|
|
78
|
+
- `session-gateway` - AI Shell 网关数据库
|
|
78
79
|
|
|
79
80
|
### 常用查询示例
|
|
80
81
|
|