@delta-infra/cli 1.0.7 → 1.0.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/README.md +5 -9
- package/package.json +1 -1
- package/skills/delta-shared/SKILL.md +42 -107
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ go install github.com/delta-infra/delta-infra-cli/cmd/delta-cli@latest
|
|
|
88
88
|
delta-cli config init
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
执行时会交互式提示输入服务端地址(默认:`http://172.17.152.6:8000/api/v1`)以及
|
|
91
|
+
执行时会交互式提示输入服务端地址(默认:`http://172.17.152.6:8000/api/v1`)以及 Bearer Token(可选,也可后续用 `auth login` 配置)。
|
|
92
92
|
|
|
93
93
|
非交互式环境(如 CI)会直接使用默认值,也可以通过 flag 或环境变量一次性指定:
|
|
94
94
|
|
|
@@ -96,11 +96,10 @@ delta-cli config init
|
|
|
96
96
|
# 通过 flag
|
|
97
97
|
delta-cli config init \
|
|
98
98
|
--base-url http://your-server/api/v1 \
|
|
99
|
-
--
|
|
99
|
+
--token your-token
|
|
100
100
|
|
|
101
101
|
# 通过环境变量
|
|
102
102
|
export DELTA_INFRA_BASE_URL=http://your-server/api/v1
|
|
103
|
-
export DELTA_SANDBOX_API_KEY=your-api-key
|
|
104
103
|
export DELTA_SANDBOX_TOKEN=your-token
|
|
105
104
|
delta-cli config init
|
|
106
105
|
```
|
|
@@ -109,13 +108,10 @@ delta-cli config init
|
|
|
109
108
|
|
|
110
109
|
### 2. 认证
|
|
111
110
|
|
|
112
|
-
|
|
111
|
+
使用 Bearer Token:
|
|
113
112
|
|
|
114
113
|
```bash
|
|
115
|
-
#
|
|
116
|
-
delta-cli auth login --api-key <your-api-key>
|
|
117
|
-
|
|
118
|
-
# Bearer Token
|
|
114
|
+
# Token
|
|
119
115
|
delta-cli auth login --token <your-token>
|
|
120
116
|
|
|
121
117
|
# 查看认证状态
|
|
@@ -152,7 +148,6 @@ delta-cli sandbox kill <sandbox_id>
|
|
|
152
148
|
| `delta-cli config show` | 查看当前配置(敏感字段已脱敏) |
|
|
153
149
|
| `delta-cli config set <key> <value>` | 修改配置项 |
|
|
154
150
|
| `delta-cli auth login` | 交互式登录 |
|
|
155
|
-
| `delta-cli auth login --api-key <key>` | API Key 认证 |
|
|
156
151
|
| `delta-cli auth login --token <token>` | Token 认证 |
|
|
157
152
|
| `delta-cli auth status` | 查看认证状态 |
|
|
158
153
|
| `delta-cli update check` | 检查更新 |
|
|
@@ -163,6 +158,7 @@ delta-cli sandbox kill <sandbox_id>
|
|
|
163
158
|
|
|
164
159
|
| 命令 | 说明 |
|
|
165
160
|
|------|------|
|
|
161
|
+
| `delta-cli sandbox list` | 列出当前用户的 sandbox |
|
|
166
162
|
| `delta-cli sandbox create --image <img>` | 创建 sandbox 容器 |
|
|
167
163
|
| `delta-cli sandbox connect <id>` | 连接 sandbox |
|
|
168
164
|
| `delta-cli sandbox status <id>` | 查看 sandbox 状态 |
|
package/package.json
CHANGED
|
@@ -1,150 +1,84 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: delta-shared
|
|
3
|
-
version: 1.0.
|
|
4
|
-
description: "delta-cli
|
|
3
|
+
version: 1.0.8
|
|
4
|
+
description: "delta-cli 全局共享规则:配置/认证检查、安全红线、错误处理、sandbox 销毁。"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# delta-cli 共享规则
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
指导 AI 使用 `delta-cli` 的通用规则。核心原则:**只检查、不猜测、不泄露密钥**。
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 执行任何操作之前
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
1. 确认服务端地址:
|
|
14
|
+
```bash
|
|
15
|
+
delta-cli config show
|
|
16
|
+
```
|
|
17
|
+
2. 确认认证状态:
|
|
18
|
+
```bash
|
|
19
|
+
delta-cli auth status
|
|
20
|
+
```
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
3. 以上都为空时,**向用户询问真实地址**,再运行 `delta-cli config set base_url <url>` 保存
|
|
22
|
+
- 若 `auth status` 显示 `method: token`,**直接执行目标命令**,不要重复登录或初始化配置。
|
|
23
|
+
- 若显示 `method: none`,或操作返回 `error.type: auth` / `permission`,才进入下面的“补全配置”流程。
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
## 补全配置
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
如果 `~/.delta-infra/config.json` 已存在且包含有效的 `base_url` 与认证信息,则**无需执行** `config init`。
|
|
24
|
-
|
|
25
|
-
仅在以下情况才运行初始化:
|
|
26
|
-
|
|
27
|
-
- 配置文件不存在
|
|
28
|
-
- 配置文件为空或解析失败
|
|
29
|
-
- 用户明确要求重新初始化
|
|
30
|
-
|
|
31
|
-
首次使用或有上述情况时运行:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
delta-cli config init
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
在交互式终端上,它会提示输入服务端地址(直接回车使用默认值)以及可选的 API Key / Bearer Token;AI 工具或非交互场景应使用 flag/环境变量,避免在 stdin 不可用时卡住:
|
|
27
|
+
缺少服务端地址或凭证时,**向用户询问一次**,然后用 flag 初始化:
|
|
38
28
|
|
|
39
29
|
```bash
|
|
40
|
-
delta-cli config init --base-url <url> --
|
|
30
|
+
delta-cli config init --base-url <server-url> --token <token>
|
|
41
31
|
```
|
|
42
32
|
|
|
43
|
-
|
|
33
|
+
不要用交互式 `config init`(无 flag),避免在 stdin 不可用时卡住。
|
|
44
34
|
|
|
45
|
-
|
|
35
|
+
### 信息来源优先级
|
|
46
36
|
|
|
47
|
-
|
|
48
|
-
delta-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
delta-cli config set token <token>
|
|
52
|
-
delta-cli config remove api_key
|
|
53
|
-
delta-cli config remove token
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## 环境变量覆盖
|
|
57
|
-
|
|
58
|
-
以下环境变量优先级高于配置文件:
|
|
37
|
+
1. 环境变量:`DELTA_INFRA_BASE_URL`、`DELTA_SANDBOX_TOKEN`
|
|
38
|
+
2. `~/.delta-infra/config.json` 中的 `base_url` / `token`
|
|
39
|
+
3. 默认值:仅 `base_url` 有内部默认值
|
|
40
|
+
4. 以上都缺失时,**必须询问用户**,禁止虚构
|
|
59
41
|
|
|
60
|
-
|
|
61
|
-
|------|------|
|
|
62
|
-
| `DELTA_INFRA_BASE_URL` | 覆盖 base_url |
|
|
63
|
-
| `DELTA_SANDBOX_API_KEY` | 覆盖 api_key |
|
|
64
|
-
| `DELTA_SANDBOX_TOKEN` | 覆盖 token |
|
|
42
|
+
### 运行时凭证
|
|
65
43
|
|
|
66
|
-
|
|
44
|
+
CLI 使用 `token` 发送请求头 `Authorization: Bearer <token>`,并自动从 JWT 中提取 `uid` 作为 `X-User-Uid`。
|
|
67
45
|
|
|
68
|
-
|
|
46
|
+
## 安全红线
|
|
69
47
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
delta-cli config show
|
|
77
|
-
|
|
78
|
-
# 2. 确认认证是否已生效
|
|
79
|
-
delta-cli auth status
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
- 如果 `auth status` 显示 `method: token` 或 `method: api_key`,说明配置文件已存在有效凭证,**直接执行目标操作**,不要重复 `auth login`。
|
|
83
|
-
- 只有当 `auth status` 显示 `method: none`、token 已过期,或操作返回 `error.type: auth` / `permission` 时,才需要重新登录。
|
|
84
|
-
|
|
85
|
-
### 认证方式
|
|
86
|
-
|
|
87
|
-
支持两种认证方式,优先级从高到低:
|
|
88
|
-
|
|
89
|
-
| 方式 | 命令 / 来源 | 适用场景 |
|
|
90
|
-
|------|------------|----------|
|
|
91
|
-
| API Key | `delta-cli auth login --api-key <key>` 或环境变量 `DELTA_SANDBOX_API_KEY` | 推荐 |
|
|
92
|
-
| Bearer Token | `delta-cli auth login --token <token>` 或环境变量 `DELTA_SANDBOX_TOKEN` | 使用已有 token |
|
|
93
|
-
|
|
94
|
-
### 默认认证说明
|
|
95
|
-
|
|
96
|
-
- binary 中没有默认 token。
|
|
97
|
-
- 第一次使用或认证失效时,执行 `delta-cli auth login` 或设置对应环境变量。
|
|
98
|
-
- 如需更换账号,重新执行 `delta-cli auth login --token <token>` 或 `delta-cli auth login --api-key <key>`。
|
|
99
|
-
|
|
100
|
-
### 权限不足处理
|
|
101
|
-
|
|
102
|
-
遇到认证/权限错误时(`error.type: auth` 或 `permission`):
|
|
103
|
-
|
|
104
|
-
1. 执行 `delta-cli auth status` 确认当前认证状态
|
|
105
|
-
2. 如需更换认证,执行 `delta-cli auth login --token <token>` 或 `delta-cli auth login --api-key <key>`
|
|
106
|
-
3. 如已认证但仍报错,检查 base_url 是否正确
|
|
107
|
-
|
|
108
|
-
**禁止**:将 API Key 或 Token 输出到终端明文展示给用户。
|
|
109
|
-
|
|
110
|
-
## 安全规则
|
|
111
|
-
|
|
112
|
-
- **禁止输出密钥**:`api_key`、`token` 不得在日志、消息或终端中明文展示。
|
|
113
|
-
- **写入/删除操作前必须确认用户意图**:`sandbox kill`、`sandbox finish`、`sandbox write` 等操作前需明确告知用户影响。
|
|
114
|
-
- **配置文件权限**:`~/.delta-infra/config.json` 权限为 `0600`,严禁手动放宽。
|
|
115
|
-
- **sandbox 必须销毁**:调用 `sandbox create` 后,当前任务结束前必须调用 `sandbox kill`。server 端无自动清理,不销毁 = 永久占用 GPU。即使遇到错误也不得跳过销毁。
|
|
48
|
+
- **禁止输出密钥**:`token` 不得出现在日志、消息、终端。
|
|
49
|
+
- **禁止自己拼 URL / 构造 HTTP 请求**:所有请求都走 `delta-cli`。
|
|
50
|
+
- **不要主动安装 CLI**:如果用户说没装,建议他去 README 或 install.sh,不要自己选安装方式。
|
|
51
|
+
- **写入/删除操作前确认意图**:`sandbox kill`、`sandbox finish`、`sandbox write` 等必须告诉用户影响。
|
|
52
|
+
- `~/.delta-infra/config.json` 权限为 `0600`,不要手动放宽。
|
|
53
|
+
- **sandbox 必须销毁**:调用 `sandbox create` 后,当前任务结束前必须调用 `sandbox kill`。server 端无自动清理,不销毁 = 永久占用 GPU;即使出错也不得跳过。
|
|
116
54
|
|
|
117
55
|
## JSON 输出约定
|
|
118
56
|
|
|
119
|
-
所有命令输出遵循统一 JSON envelope:
|
|
120
|
-
|
|
121
57
|
```json
|
|
122
58
|
{"ok":true,"data":{...}}
|
|
123
59
|
{"ok":false,"error":{"type":"auth","message":"...","hint":"..."}}
|
|
124
60
|
```
|
|
125
61
|
|
|
126
62
|
AI Agent 解析规则:
|
|
127
|
-
- 始终检查 `ok
|
|
128
|
-
- `error.type` 是稳定分支字段:`auth`, `permission`, `not_found`, `validation`, `network`, `api`, `internal
|
|
129
|
-
- `error.hint`
|
|
63
|
+
- 始终检查 `ok`,不要只看 exit code。
|
|
64
|
+
- `error.type` 是稳定分支字段:`auth`, `permission`, `not_found`, `validation`, `network`, `api`, `internal`。
|
|
65
|
+
- `error.hint` 可展示给用户。
|
|
130
66
|
|
|
131
67
|
## 退出码约定
|
|
132
68
|
|
|
133
69
|
| Type | Exit Code | 场景 |
|
|
134
70
|
|------|-----------|------|
|
|
135
|
-
| validation | 2 | flag
|
|
71
|
+
| validation | 2 | flag / 参数错误 |
|
|
136
72
|
| auth | 3 | 未认证或认证失败 |
|
|
137
73
|
| permission | 4 | 权限不足 |
|
|
138
74
|
| not_found | 5 | sandbox/file 不存在 |
|
|
139
75
|
| network | 6 | DNS、超时、连接失败 |
|
|
140
|
-
| api | 7 | 服务端非 2xx
|
|
76
|
+
| api | 7 | 服务端非 2xx |
|
|
141
77
|
| internal | 10 | 客户端内部错误 |
|
|
142
78
|
|
|
143
79
|
## 更新检查
|
|
144
80
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
**当你在 JSON 中看到 `_notice.update` 时**,完成用户当前请求后,主动提议更新:
|
|
81
|
+
完成用户请求后,如果 JSON 中有 `_notice.update`,可建议:
|
|
148
82
|
|
|
149
83
|
```bash
|
|
150
84
|
delta-cli update
|
|
@@ -154,8 +88,9 @@ delta-cli update
|
|
|
154
88
|
|
|
155
89
|
| 错误 / 现象 | 恢复动作 |
|
|
156
90
|
|-------------|----------|
|
|
157
|
-
| `error.type: auth`
|
|
158
|
-
| `error.type:
|
|
159
|
-
| `error.type:
|
|
91
|
+
| `error.type: auth` / `method: none` | 询问用户后执行 `config init --base-url <url> --token <token>` |
|
|
92
|
+
| `error.type: permission` | 确认当前认证是否有权限;必要时换 token |
|
|
93
|
+
| `error.type: not_found` | 检查 `sandbox_id` / path |
|
|
94
|
+
| `error.type: network` | 检查 `base_url` 和网络连通性 |
|
|
160
95
|
| `error.type: validation` | 检查必填 flag 和参数格式 |
|
|
161
96
|
| 配置文件解析失败 | 检查 `~/.delta-infra/config.json` 是否为有效 JSON |
|