@delta-infra/cli 1.0.4 → 1.0.6

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 CHANGED
@@ -6,19 +6,21 @@ Delta Infra 的命令行工具。
6
6
 
7
7
  ### 方式一:直接下载 Binary(推荐)
8
8
 
9
- 从 [GitHub Releases](https://github.com/yzailab/delta-infra-cli/releases) 下载对应平台的压缩包:
9
+ 从 [GitHub Releases](https://github.com/yzailab/delta-infra-cli/releases) 下载对应平台的压缩包(以下使用 `latest` 指向最新版):
10
10
 
11
11
  ```bash
12
12
  # macOS (Apple Silicon)
13
- curl -L https://github.com/yzailab/delta-infra-cli/releases/download/v1.0.0/delta-cli-darwin-arm64.tar.gz | tar -xz
14
- sudo mv delta-cli-darwin-arm64/delta-cli /usr/local/bin/
13
+ curl -L https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-darwin-arm64.tar.gz | tar -xz
14
+ sudo mv delta-cli-darwin-arm64 /usr/local/bin/delta-cli
15
15
 
16
16
  # Linux (AMD64)
17
- curl -L https://github.com/yzailab/delta-infra-cli/releases/download/v1.0.0/delta-cli-linux-amd64.tar.gz | tar -xz
18
- sudo mv delta-cli-linux-amd64/delta-cli /usr/local/bin/
17
+ curl -L https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-linux-amd64.tar.gz | tar -xz
18
+ chmod +x delta-cli-linux-amd64
19
+ sudo mv delta-cli-linux-amd64 /usr/local/bin/delta-cli
19
20
 
20
21
  # Windows (AMD64)
21
- # 下载 delta-cli-windows-amd64.zip 并解压
22
+ # 下载 https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-windows-amd64.zip
23
+ # 解压后将 delta-cli-windows-amd64.exe 重命名为 delta-cli.exe,并放到 PATH 目录下
22
24
  ```
23
25
 
24
26
  ### 方式二:npm
@@ -168,10 +170,10 @@ make test
168
170
  # 代码检查
169
171
  make lint
170
172
 
171
- # 跨平台发布构建(生成压缩包)
173
+ # 跨平台编译(生成各平台二进制文件到 bin/)
172
174
  make release
173
175
 
174
- # 安装到 GOPATH/bin
176
+ # 安装到 GOPATH/bin(确保 GOPATH 已设置,或使用 GOPATH=$(go env GOPATH) make install)
175
177
  make install
176
178
  ```
177
179
 
@@ -189,9 +191,10 @@ cp skills/delta-shared/SKILL.md \
189
191
  # 2. 用 Docker 编译 Windows 版本(本地无 Go toolchain 时)
190
192
  docker run --rm -v "$(pwd):/src" -w /src \
191
193
  -e GOPROXY=https://goproxy.cn,direct \
192
- golang:1.23 go build -buildvcs=false \
193
- -ldflags "-X $(MODULE)/internal/build.Version=$(shell git describe --tags --always --dirty 2>/dev/null || echo dev)" \
194
- -o bin/delta-cli-windows-amd64.exe ./cmd/delta-cli
194
+ golang:1.23 \
195
+ sh -c 'go build -buildvcs=false \
196
+ -ldflags "-X github.com/delta-infra/delta-infra-cli/internal/build.Version=$(git describe --tags --always --dirty 2>/dev/null || echo dev)" \
197
+ -o bin/delta-cli-windows-amd64.exe ./cmd/delta-cli'
195
198
 
196
199
  # 3. 将 delta-cli 放到 Memento-S 的 node_modules/.bin(替换旧版本)
197
200
  cp bin/delta-cli-windows-amd64.exe \
@@ -201,7 +204,55 @@ cp bin/delta-cli-windows-amd64.exe \
201
204
  # 在 Electron 界面中重新加载,或手动重启 sidecar 进程
202
205
  ```
203
206
 
204
- > **注意**:`delta-cli` 替换后,Memento-S 的 `delta-sandbox` 技能默认使用内嵌 Bearer Token,无需再手动执行 `auth login`。
207
+ > **注意**:`delta-cli` 替换后,如果 `~/.delta-infra/config.json` 中已配置 token,则 `delta-sandbox` 技能可直接使用;否则需要先用 `auth login` 配置。
208
+
209
+ ## 构建与发布
210
+
211
+ ### 本地构建
212
+
213
+ ```bash
214
+ # 本地构建
215
+ make build
216
+
217
+ # 运行测试
218
+ make test
219
+
220
+ # 代码检查
221
+ make lint
222
+
223
+ # 跨平台编译(生成各平台二进制文件到 bin/)
224
+ make release
225
+ ```
226
+
227
+ > `make release` 仅生成各平台二进制文件(如 `bin/delta-cli-linux-amd64`),不会自动打包。打包与发布请使用下文的 `release.sh`。
228
+
229
+ ### 一键发布(维护者)
230
+
231
+ 项目根目录下的 `release.sh` 脚本负责完整发布流程:
232
+
233
+ ```bash
234
+ export GH_TOKEN=<your-github-pat>
235
+ export NPM_TOKEN=<your-npm-token>
236
+ ./release.sh v1.0.5
237
+ ```
238
+
239
+ 脚本执行步骤:
240
+ 1. 更新 `package.json` 版本号。
241
+ 2. 使用 Docker + `make release` 交叉编译 5 个平台二进制文件。
242
+ 3. 在 `bin/` 目录生成 `.tar.gz` / `.zip` 归档。
243
+ 4. 通过 `.ci/publish-github-release.js` 创建 GitHub Release 并上传资产。
244
+ 5. 同步 `package.json` 与 `scripts/install.js` 到公开仓库 `yzailab/delta-infra-cli`。
245
+ 6. 执行 `npm publish --access public` 发布 `@delta-infra/cli`。
246
+
247
+ 需要提前安装 `gh` CLI、Node.js/npm,并配置 `GH_TOKEN` 与 `NPM_TOKEN`。CI 流程可参考 `.gitlab-ci.yml`。
248
+
249
+ ### npm 镜像
250
+
251
+ 如果 GitHub 下载较慢,安装 npm 包时可设置镜像:
252
+
253
+ ```bash
254
+ DELTA_CLI_MIRROR="https://gh-proxy.com/https://github.com" npm install -g @delta-infra/cli
255
+ ```
205
256
 
206
257
  ## 技术栈
207
258
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delta-infra/cli",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Delta Sandbox CLI",
5
5
  "bin": {
6
6
  "delta-cli": "scripts/run.js"
@@ -31,13 +31,14 @@ metadata:
31
31
  3. **异常时也必须销毁**:即使 sandbox 内命令失败、超时或报错,仍然 **必须** 执行 `sandbox kill <id>`。异常不是跳过销毁的理由。
32
32
  4. **不得依赖外部清理**:server 端 **没有** sandbox 的自动过期或 TTL 机制。不 kill → sandbox 永久占用 GPU 资源。
33
33
  5. **一条命令内完成**:从 `create` 到 `kill` 的完整生命周期必须在同一次执行中完成。不允许跨任务保留 sandbox。
34
- 6. **禁止重复创建**:同一次任务中只允许存在一个活跃 sandbox。若命令失败需要重试,优先复用已创建的 `sandbox_id`;若确实需要重新创建,必须先 `sandbox kill <旧_sandbox_id>`,确认旧实例销毁后再执行新的 `sandbox create`。server 端没有 list 接口,AI agent 应通过任务上下文跟踪当前 `sandbox_id`,而不是反复 create。
34
+ 6. **禁止重复创建**:同一次任务中只允许存在一个活跃 sandbox。若命令失败需要重试,优先复用已创建的 `sandbox_id`;若确实需要重新创建,必须先 `sandbox kill <旧_sandbox_id>`,确认旧实例销毁后再执行新的 `sandbox create`。可用 `delta-cli sandbox list` 查询当前用户的活跃 sandbox,但 **禁止** 用 list 来绕过“同一次任务只保留一个 sandbox”的规则。
35
35
 
36
36
  ## 快速路由
37
37
 
38
38
  | 用户目标 | 命令 |
39
39
  |---------|------|
40
40
  | 查看可用镜像 | `sandbox images` |
41
+ | 列出当前用户的 sandbox | `sandbox list` |
41
42
  | 创建 sandbox | `sandbox create --image <image>` |
42
43
  | 连接 sandbox | `sandbox connect <id>` |
43
44
  | 查看状态 | `sandbox status <id>` |
@@ -52,7 +53,7 @@ metadata:
52
53
  ## 完整生命周期
53
54
 
54
55
  1. **查看可用镜像**:`delta-cli sandbox images` — 查询服务端支持的镜像列表(含标签、最低资源要求、支持 provider),根据用户需求匹配镜像
55
- 2. **创建**:`delta-cli sandbox create --image <img> --cpu 4 --memory 16Gi --gpu 1`(创建后 sandbox 立即可用,无需额外连接)。**同一次任务若已有 `sandbox_id`,禁止再次 create,必须优先复用。**
56
+ 2. **创建**:`delta-cli sandbox create --image <img> --cpu 4 --memory 16Gi --gpu 1 --gpu-mem 8000`(创建后 sandbox 立即可用,无需额外连接)。**同一次任务若已有 `sandbox_id`,禁止再次 create,必须优先复用。**
56
57
  3. **写入代码**:`delta-cli sandbox write <id> --path /workspace/train.py --data "..."`
57
58
  4. **运行**:`delta-cli sandbox run <id> --command "python /workspace/train.py" --timeout 3600`
58
59
  5. **读取结果**:`delta-cli sandbox read <id> --path /workspace/result.json`
@@ -5,6 +5,7 @@
5
5
  | 命令 | 说明 |
6
6
  |------|------|
7
7
  | `sandbox images` | 查看可用镜像列表 |
8
+ | `sandbox list` | 列出当前用户创建的活跃 sandbox |
8
9
  | `sandbox create` | 创建 sandbox |
9
10
  | `sandbox connect` | 连接 sandbox |
10
11
  | `sandbox kill` | 直接销毁 sandbox,不保存结果(有结果要保存时用 finish 替代) |
@@ -5,11 +5,12 @@
5
5
  ## 完整流程
6
6
 
7
7
  1. **查看可用镜像** `delta-cli sandbox images` — 查询服务端支持的镜像列表,根据用户的 GPU/CPU 需求和标签匹配镜像
8
- 2. **创建** `delta-cli sandbox create --image <image> ...`(创建后立即可用,无需连接)
9
- 3. **写入代码/数据** `delta-cli sandbox write <id> --path /workspace/train.py --data "..."`
10
- 4. **运行命令** `delta-cli sandbox run <id> --command "python /workspace/train.py"`
11
- 5. **读取结果** `delta-cli sandbox read <id> --path /workspace/result.json`
12
- 6. **销毁** `delta-cli sandbox kill <id>`(如需保存结果用 finish,finish 会自动销毁)
8
+ 2. **列出现有 sandbox(可选)** `delta-cli sandbox list` — 查看当前用户已创建的活跃 sandbox,避免重复创建
9
+ 3. **创建** `delta-cli sandbox create --image <image> --cpu 4 --memory 16Gi --gpu 1 --gpu-mem 8000`(创建后立即可用,无需连接)
10
+ 4. **写入代码/数据** `delta-cli sandbox write <id> --path /workspace/train.py --data "..."`
11
+ 5. **运行命令** `delta-cli sandbox run <id> --command "python /workspace/train.py"`
12
+ 6. **读取结果** `delta-cli sandbox read <id> --path /workspace/result.json`
13
+ 7. **销毁** `delta-cli sandbox kill <id>`(如需保存结果用 finish,finish 会自动销毁)
13
14
 
14
15
  ## 后台任务
15
16