@delta-infra/cli 1.0.73 → 1.0.75

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.
Files changed (52) hide show
  1. package/README.md +422 -413
  2. package/checksums.txt +5 -5
  3. package/package.json +14 -5
  4. package/scripts/install-wizard.js +598 -602
  5. package/scripts/install.js +404 -404
  6. package/scripts/run.js +65 -65
  7. package/skills/antbo-ldm-guard/SKILL.md +54 -0
  8. package/skills/antbo-ldm-guard/agents/openai.yaml +4 -0
  9. package/skills/antbo-service/SKILL.md +74 -0
  10. package/skills/antbo-service/agents/openai.yaml +4 -0
  11. package/skills/antbo-service/references/operations.md +45 -0
  12. package/skills/delta-bo/SKILL.md +31 -0
  13. package/skills/delta-bo/agents/openai.yaml +4 -0
  14. package/skills/delta-bo/references/endpoints.md +263 -0
  15. package/skills/delta-sandbox/SKILL.md +356 -357
  16. package/skills/delta-sandbox/agents/openai.yaml +4 -0
  17. package/skills/delta-sandbox/references/commands.md +56 -56
  18. package/skills/delta-sandbox/references/lifecycle.md +92 -92
  19. package/skills/delta-sandbox/references/recipes.md +133 -133
  20. package/skills/delta-science/SKILL.md +166 -115
  21. package/skills/delta-science/agents/openai.yaml +4 -4
  22. package/skills/delta-science/references/cli-contract.md +84 -65
  23. package/skills/delta-science/references/operation-contracts.md +137 -0
  24. package/skills/delta-science/references/services.md +112 -85
  25. package/skills/delta-science/references/workflows.md +44 -34
  26. package/skills/delta-science/scripts/invoke.py +329 -189
  27. package/skills/delta-shared/SKILL.md +95 -96
  28. package/skills/delta-shared/agents/openai.yaml +4 -0
  29. package/skills/gsasii/SKILL.md +37 -0
  30. package/skills/gsasii/agents/openai.yaml +4 -0
  31. package/skills/gsasii/references/endpoints.md +130 -0
  32. package/skills/lammps/SKILL.md +34 -0
  33. package/skills/lammps/agents/openai.yaml +4 -0
  34. package/skills/lammps/references/endpoints.md +61 -0
  35. package/skills/ldm-bo/SKILL.md +30 -0
  36. package/skills/ldm-bo/agents/openai.yaml +4 -0
  37. package/skills/ldm-bo/references/endpoints.md +127 -0
  38. package/skills/manifest.json +17 -0
  39. package/skills/pubchem/SKILL.md +88 -0
  40. package/skills/pubchem/agents/openai.yaml +4 -0
  41. package/skills/pubchem/references/endpoints.md +122 -0
  42. package/skills/pubchem/references/operations.md +41 -0
  43. package/skills/pymatgen/SKILL.md +49 -0
  44. package/skills/pymatgen/agents/openai.yaml +4 -0
  45. package/skills/pymatgen/references/endpoints.md +68 -0
  46. package/skills/rdkit/SKILL.md +107 -0
  47. package/skills/rdkit/agents/openai.yaml +4 -0
  48. package/skills/rdkit/references/endpoints.md +133 -0
  49. package/skills/rdkit/references/operations.md +64 -0
  50. package/skills/synbo-service/SKILL.md +31 -0
  51. package/skills/synbo-service/agents/openai.yaml +4 -0
  52. package/skills/synbo-service/references/endpoints.md +157 -0
package/README.md CHANGED
@@ -1,414 +1,423 @@
1
- # delta-cli
2
-
3
- Delta Infra 的命令行工具,用于管理 Delta Sandbox GPU/CPU 计算任务和调用 Science 工具。
4
-
5
- ## 安装
6
-
7
- ### 方式一:npx 一键安装(推荐)
8
-
9
- ```bash
10
- npx @delta-infra/cli@latest install
11
- ```
12
-
13
- 该命令会依次完成:
14
- 1. **全局安装** `@delta-infra/cli`(含 Go 二进制)
15
- 2. **选择 AI 工具平台**(可多选):通用 Agent 目录 `~/.agents/skills/`(Codex/Cursor/OpenCode)、Claude Code `~/.claude/skills/`、OpenCode 原生 `~/.config/opencode/skills/`、Cursor `~/.cursor/skills/`、Memento-S 开发模式 `~/memento_s/skills/`
16
- 3. **安装 AI Skills** 到所选平台的 skills 目录
17
- 4. **初始化配置** `delta-cli config init`(交互式,非 TTY 跳过)
18
- 5. **身份认证** `delta-cli auth login`(交互式,非 TTY 跳过)
19
-
20
- AI Agent 也可以直接使用以下指令完成安装:
21
-
22
- > 帮我安装 delta-cli:https://github.com/yzailab/delta-infra-cli
23
-
24
- ### 卸载
25
-
26
- ```bash
27
- npx @delta-infra/cli@latest uninstall
28
- ```
29
-
30
- 清理全局包、所有已知平台的 AI Skills 和配置文件。
31
-
32
- ### 升级
33
-
34
- ```bash
35
- # 升级 CLI + AI Skills
36
- delta-cli upgrade
37
-
38
- # 只检查是否有更新(不执行升级)
39
- delta-cli upgrade --check
40
-
41
- # 只升级 CLI 二进制
42
- delta-cli upgrade --cli-only
43
-
44
- # 只升级 AI Skills
45
- delta-cli upgrade --skills-only
46
- ```
47
-
48
- 升级 CLI 时会通过 `npm install -g @delta-infra/cli@latest` 拉取最新版本;升级 Skills 时会通过 `npx skills add` 重新安装 AI Skills。
49
-
50
- ### 方式二:直接下载 Binary
51
-
52
- 从 [GitHub Releases](https://github.com/yzailab/delta-infra-cli/releases) 下载对应平台的压缩包(以下使用 `latest` 指向最新版):
53
-
54
- ```bash
55
- # macOS (Apple Silicon)
56
- curl -L -o delta-cli.tar.gz https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-darwin-arm64.tar.gz
57
- tar -xzf delta-cli.tar.gz
58
- sudo mv delta-cli-darwin-arm64 /usr/local/bin/delta-cli
59
- rm delta-cli.tar.gz
60
-
61
- # Linux (AMD64)
62
- curl -L -o delta-cli.tar.gz https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-linux-amd64.tar.gz
63
- tar -xzf delta-cli.tar.gz
64
- chmod +x delta-cli-linux-amd64
65
- sudo mv delta-cli-linux-amd64 /usr/local/bin/delta-cli
66
- rm delta-cli.tar.gz
67
-
68
- # Windows (AMD64,PowerShell)
69
- Invoke-WebRequest -Uri https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-windows-amd64.zip -OutFile delta-cli.zip
70
- Expand-Archive -Path delta-cli.zip -DestinationPath . -Force
71
- Move-Item -Path delta-cli-windows-amd64.exe -Destination delta-cli.exe
72
- Remove-Item -Path delta-cli.zip
73
- # 将 delta-cli.exe 放到 PATH 中的目录
74
- ```
75
-
76
- ### 方式三:一键安装脚本(国内用户推荐)
77
-
78
- 安装脚本会自动尝试国内 npm 镜像(npmmirror),失败后再回退到 npm 官方源:
79
-
80
- ```bash
81
- # Linux / macOS
82
- curl -L https://raw.githubusercontent.com/yzailab/delta-infra-cli/main/install.sh | bash
83
-
84
- # Windows (PowerShell)
85
- Invoke-RestMethod -Uri https://raw.githubusercontent.com/yzailab/delta-infra-cli/main/install.ps1 | Invoke-Expression
86
- ```
87
-
88
- ### 方式四:npm
89
-
90
- ```bash
91
- npm install -g @delta-infra/cli
92
- ```
93
-
94
- `postinstall` 会按以下顺序尝试下载当前平台的二进制:
95
-
96
- 1. `DELTA_CLI_MIRROR` 环境变量(如果设置)
97
- 2. 国内加速镜像 `https://gh-proxy.com/https://github.com/...`
98
- 3. GitHub 源站 `https://github.com/yzailab/delta-infra-cli/releases/download/...`
99
-
100
- 如果安装时下载失败,可以:
101
-
102
- - 直接运行一次 `delta-cli`,它会自动重新尝试下载。
103
- - 或者在安装前设置本地压缩包路径:
104
-
105
- ```bash
106
- DELTA_CLI_ARCHIVE=/path/to/delta-cli-linux-amd64.tar.gz npm install -g @delta-infra/cli
107
- ```
108
-
109
- 常用环境变量:
110
-
111
- | 变量 | 说明 |
112
- |------|------|
113
- | `DELTA_CLI_MIRROR` | 下载镜像,例如 `https://gh-proxy.com/https://github.com`。只接受 HTTPS 且需在白名单内。 |
114
- | `DELTA_CLI_MIRROR_ALLOWLIST` | 额外允许的主机列表,逗号分隔。 |
115
- | `DELTA_CLI_ARCHIVE` | 指向预先下载好的 `.tar.gz` / `.zip` 本地路径,跳过网络下载。 |
116
- | `DELTA_CLI_SKIP_POSTINSTALL` | 设置为 `1` 跳过安装时的二进制下载,之后由 `delta-cli` 运行时兜底。 |
117
- | `DELTA_CLI_FATAL_ON_ERROR` | 安装失败时退出码非 0(默认警告,用于调试)。 |
118
- | `DELTA_CLI_DOWNLOAD_TIMEOUT` | 单个下载源最大等待时间(毫秒,默认 120000)。 |
119
-
120
- ### 方式五:Go Install
121
-
122
- ```bash
123
- go install github.com/delta-infra/delta-infra-cli/cmd/delta-cli@latest
124
- ```
125
-
126
- ## 快速开始
127
-
128
- ### 1. 初始化配置
129
-
130
- ```bash
131
- delta-cli config init
132
- ```
133
-
134
- 执行时会交互式提示输入服务端地址(默认:`https://delta-infra-nacos-test.yangtzeailab.com/sandbox/api/v1`)以及 Bearer Token(可选,也可后续用 `auth login` 配置)。
135
-
136
- 非交互式环境(如 CI)会直接使用默认值,也可以通过 flag 或环境变量一次性指定:
137
-
138
- ```bash
139
- # 通过 flag
140
- delta-cli config init \
141
- --base-url http://your-server/api/v1 \
142
- --token your-token
143
-
144
- # 通过环境变量
145
- export DELTA_INFRA_BASE_URL=http://your-server/api/v1
146
- export DELTA_INFRA_TOKEN=your-token
147
- delta-cli config init
148
- ```
149
-
150
- 配置文件保存在 `~/.delta-infra/config.json`(权限 0600)。
151
-
152
- ### 2. 认证
153
-
154
- 使用 Bearer Token:
155
-
156
- ```bash
157
- # Token
158
- delta-cli auth login --token <your-token>
159
-
160
- # 查看认证状态
161
- delta-cli auth status
162
- ```
163
-
164
- ### 3. Sandbox 生命周期
165
-
166
- ```bash
167
- # 创建带 GPU 的 sandbox(--max-life 默认 30 分钟,长任务请调高)
168
- delta-cli sandbox create \
169
- --image image.yangtzeailab.com/opensandbox/pytorch-cuda13:latest \
170
- --cpu 4 --memory 16Gi --gpu 1 \
171
- --max-life 120
172
-
173
- # 运行命令(短任务同步执行,长任务用 run-bg 替代 run)
174
- delta-cli sandbox run <sandbox_id> \
175
- --command "<命令>" \
176
- --timeout 3600
177
-
178
- # v1.0.55+ 默认带 --summary,返回 JSON 中 data.result_summary 字段已含 stdout 末尾 JSON 提取结果
179
- # 无需再手动读取 log_file 做二次解析(除非使用了 --no-summary)
180
- delta-cli sandbox run <sandbox_id> --command "echo '{\"status\":\"ok\",\"result\":\"done\"}'" --timeout 60
181
-
182
- # 读取结果文件
183
- delta-cli sandbox read <sandbox_id> --path /workspace/result.json
184
-
185
- # 销毁 sandbox
186
- delta-cli sandbox kill <sandbox_id>
187
- ```
188
-
189
- ## 命令列表
190
-
191
- ### 全局命令
192
-
193
- | 命令 | 说明 |
194
- |------|------|
195
- | `delta-cli config init` | 初始化配置文件 |
196
- | `delta-cli config show` | 查看当前配置(敏感字段已脱敏) |
197
- | `delta-cli config set <key> <value>` | 修改配置项 |
198
- | `delta-cli auth login` | 交互式登录 |
199
- | `delta-cli auth login --token <token>` | Token 认证 |
200
- | `delta-cli auth status` | 查看认证状态 |
201
- | `delta-cli upgrade` | 升级 CLI 和 AI Skills 到最新版本 |
202
- | `delta-cli upgrade --check` | 检查是否有可用更新 |
203
- | `delta-cli upgrade --cli-only` | 只升级 CLI 二进制 |
204
- | `delta-cli upgrade --skills-only` | 只升级 AI Skills |
205
- | `delta-cli --version` | 显示版本 |
206
-
207
- ### Sandbox 命令
208
-
209
- > **提示**:`sandbox list`(列沙箱实例)与 `sandbox ls <id>`(列目录)不同,注意区分。
210
-
211
- | 命令 | 说明 |
212
- |------|------|
213
- | `delta-cli sandbox list` | 列出当前用户的 sandbox 实例 |
214
- | `delta-cli sandbox providers` | 查看可用计算后端 |
215
- | `delta-cli sandbox images` | 查看可用镜像列表 |
216
- | `delta-cli sandbox recommend --cpu N --memory XGi` | 获取资源配置推荐 |
217
- | `delta-cli sandbox create --image <img>` | 创建 sandbox 容器 |
218
- | `delta-cli sandbox connect <id>` | 连接 sandbox |
219
- | `delta-cli sandbox status <id>` | 查看 sandbox 状态 |
220
- | `delta-cli sandbox finish <id>` | 保存结果并销毁 |
221
- | `delta-cli sandbox kill <id>` | 销毁 sandbox |
222
- | `delta-cli sandbox run <id> --command "..." [--timeout <秒>] [--summary/--no-summary] [--artifacts]` | 同步运行命令;默认带 `--summary`,返回 JSON 中 `summary` 字段已含 stdout 末尾 JSON 提取结果;`--artifacts` 附带 workspace 产物清单 |
223
- | `delta-cli sandbox run-bg <id> --command "..." [--timeout <秒>] [--wait] [--summary/--no-summary] [--artifacts]` | 后台运行命令;不加 `--wait` 立即返回 `{execution_id, sandbox_id}`;加 `--wait` 等待完成返回含 `summary` 的完整结果 |
224
- | `delta-cli sandbox logs <id> --execution-id <eid> [--tail N --grep <pattern> --context N --max-bytes N]` | 查看后台日志;默认返回 `stderr_size + stderr_tail`(避免上下文爆炸);可用 `--tail/--grep` 过滤 |
225
- | `delta-cli sandbox cancel <id> --execution-id <eid>` | 中断后台命令 |
226
- | `delta-cli sandbox read <id> --path <path> [--output <本地路径>] [--tail N] [--grep <pattern>] [--offset N] [--limit N] [--context N] [--max-bytes N] [--parse-json]` | 读取容器内文件;`--output <path>` 保存到本地;`--tail/--grep` 过滤;非 UTF-8 文件 CLI 自动走 base64 fallback |
227
- | `delta-cli sandbox pull <id> --source <沙箱路径> --target <本地路径> [--recursive] [--pattern <glob>]` | 从沙箱拉取文件/目录到本地(mirror of `upload`,flag 方向相反:source=远程,target=本地);单文件或递归目录;CLI 端 + 服务端双向 sha1 完整性校验 |
228
- | `delta-cli sandbox write <id> --path <path> --source <本地路径>` | 写入文件 |
229
- | `delta-cli sandbox write-multiple <id> --entry <远程路径>=<本地路径>` | 批量写入 |
230
- | `delta-cli sandbox ls <id> --path <path>` | 列出目录 |
231
- | `delta-cli sandbox stat <id> --path <path>` | 文件元数据 |
232
- | `delta-cli sandbox mv <id> --entry <src=dest>` | 移动/重命名 |
233
- | `delta-cli sandbox replace <id> --path <path> --old <文本> --new <文本>` | 替换内容 |
234
- | `delta-cli sandbox chmod <id> --path <path> --mode <八进制>` | 修改权限 |
235
- | `delta-cli sandbox rm <id> --path <path>` | 删除文件 |
236
- | `delta-cli sandbox rmdir <id> --path <路径>` | 递归删除目录 |
237
- | `delta-cli sandbox mkdir <id> --path <路径>` | 创建目录 |
238
- | `delta-cli sandbox search <id> --path <根目录> --pattern <glob>` | 搜索文件 |
239
- | `delta-cli sandbox upload <id> --source <本地目录> --target <沙箱路径>` | 上传目录(tar.gz + 自动解压) |
240
-
241
- ### Science 工具
242
-
243
- > 需要先在配置中设置 `science_base_url`(`delta-cli config set science_base_url <url>` 或环境变量 `DELTA_INFRA_SCIENCE_BASE_URL`)。
244
-
245
- | 命令 | 说明 |
246
- |------|------|
247
- | `delta-cli science list` | 列出所有已启用的 science 工具 |
248
- | `delta-cli science get <tool_name>` | 查看指定工具的详情 |
249
- | `delta-cli science invoke --tool <tool_name> --endpoint <endpoint_name> [--data '{"key":"value"}'] [--params '{"key":"value"}']` | 调用工具端点 |
250
- | `delta-cli science endpoints list <tool_name>` | 列出指定工具的所有端点 |
251
-
252
- ## 输出格式
253
-
254
- 所有命令返回统一的 JSON envelope:
255
-
256
- ```json
257
- // 成功
258
- {"ok":true,"data":{"id":"sb-xxx","status":"running"}}
259
-
260
- // 错误
261
- {"ok":false,"error":{"type":"auth","message":"not authenticated","hint":"run 'delta-cli auth login'"}}
262
- ```
263
-
264
- 错误类型及退出码:
265
-
266
- | Type | Exit Code | 场景 |
267
- |------|-----------|------|
268
- | validation | 2 | 参数错误 |
269
- | auth | 3 | 未认证 |
270
- | permission | 4 | 权限不足 |
271
- | not_found | 5 | 资源不存在 |
272
- | network | 6 | 网络错误 |
273
- | api | 7 | 服务端错误 |
274
- | internal | 10 | 客户端内部错误 |
275
-
276
- ## AI Agent Skills
277
-
278
- delta-cli 内置 AI Agent 操作手册(Skills),帮助 Claude Code 等 AI 助手正确使用 CLI:
279
-
280
- ```bash
281
- # 安装共享技能(认证、配置、通用规则)
282
- npx skills add delta-infra/delta-infra-cli -s delta-shared
283
-
284
- # 安装 sandbox 操作技能
285
- npx skills add delta-infra/delta-infra-cli -s delta-sandbox
286
-
287
- # 安装 science 工具操作技能
1
+ # delta-cli
2
+
3
+ Delta Infra 的命令行工具,用于管理 Delta Sandbox GPU/CPU 计算任务和调用 Science 工具。
4
+
5
+ ## 安装
6
+
7
+ ### 方式一:npx 一键安装(推荐)
8
+
9
+ ```bash
10
+ npx @delta-infra/cli@latest install
11
+ ```
12
+
13
+ 该命令会依次完成:
14
+ 1. **全局安装** `@delta-infra/cli`(含 Go 二进制)
15
+ 2. **选择 AI 工具平台**(可多选):通用 Agent 目录 `~/.agents/skills/`(Codex/Cursor/OpenCode)、Claude Code `~/.claude/skills/`、OpenCode 原生 `~/.config/opencode/skills/`、Cursor `~/.cursor/skills/`、Memento-S 开发模式 `~/memento_s/skills/`
16
+ 3. **安装 AI Skills** 到所选平台的 skills 目录
17
+ 4. **初始化配置** `delta-cli config init`(交互式,非 TTY 跳过)
18
+ 5. **身份认证** `delta-cli auth login`(交互式,非 TTY 跳过)
19
+
20
+ AI Agent 也可以直接使用以下指令完成安装:
21
+
22
+ > 帮我安装 delta-cli:https://github.com/yzailab/delta-infra-cli
23
+
24
+ ### 卸载
25
+
26
+ ```bash
27
+ npx @delta-infra/cli@latest uninstall
28
+ ```
29
+
30
+ 清理全局包、所有已知平台的 AI Skills 和配置文件。
31
+
32
+ ### 升级
33
+
34
+ ```bash
35
+ # 升级 CLI + AI Skills
36
+ delta-cli upgrade
37
+
38
+ # 只检查是否有更新(不执行升级)
39
+ delta-cli upgrade --check
40
+
41
+ # 只升级 CLI 二进制
42
+ delta-cli upgrade --cli-only
43
+
44
+ # 只升级 AI Skills
45
+ delta-cli upgrade --skills-only
46
+ ```
47
+
48
+ 升级 CLI 时会通过 `npm install -g @delta-infra/cli@latest` 拉取最新版本;升级 Skills 时会通过 `npx skills add` 重新安装 AI Skills。
49
+
50
+ ### 方式二:直接下载 Binary
51
+
52
+ 从 [GitHub Releases](https://github.com/yzailab/delta-infra-cli/releases) 下载对应平台的压缩包(以下使用 `latest` 指向最新版):
53
+
54
+ ```bash
55
+ # macOS (Apple Silicon)
56
+ curl -L -o delta-cli.tar.gz https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-darwin-arm64.tar.gz
57
+ tar -xzf delta-cli.tar.gz
58
+ sudo mv delta-cli-darwin-arm64 /usr/local/bin/delta-cli
59
+ rm delta-cli.tar.gz
60
+
61
+ # Linux (AMD64)
62
+ curl -L -o delta-cli.tar.gz https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-linux-amd64.tar.gz
63
+ tar -xzf delta-cli.tar.gz
64
+ chmod +x delta-cli-linux-amd64
65
+ sudo mv delta-cli-linux-amd64 /usr/local/bin/delta-cli
66
+ rm delta-cli.tar.gz
67
+
68
+ # Windows (AMD64,PowerShell)
69
+ Invoke-WebRequest -Uri https://github.com/yzailab/delta-infra-cli/releases/latest/download/delta-cli-windows-amd64.zip -OutFile delta-cli.zip
70
+ Expand-Archive -Path delta-cli.zip -DestinationPath . -Force
71
+ Move-Item -Path delta-cli-windows-amd64.exe -Destination delta-cli.exe
72
+ Remove-Item -Path delta-cli.zip
73
+ # 将 delta-cli.exe 放到 PATH 中的目录
74
+ ```
75
+
76
+ ### 方式三:一键安装脚本(国内用户推荐)
77
+
78
+ 安装脚本会自动尝试国内 npm 镜像(npmmirror),失败后再回退到 npm 官方源:
79
+
80
+ ```bash
81
+ # Linux / macOS
82
+ curl -L https://raw.githubusercontent.com/yzailab/delta-infra-cli/main/install.sh | bash
83
+
84
+ # Windows (PowerShell)
85
+ Invoke-RestMethod -Uri https://raw.githubusercontent.com/yzailab/delta-infra-cli/main/install.ps1 | Invoke-Expression
86
+ ```
87
+
88
+ ### 方式四:npm
89
+
90
+ ```bash
91
+ npm install -g @delta-infra/cli
92
+ ```
93
+
94
+ `postinstall` 会按以下顺序尝试下载当前平台的二进制:
95
+
96
+ 1. `DELTA_CLI_MIRROR` 环境变量(如果设置)
97
+ 2. 国内加速镜像 `https://gh-proxy.com/https://github.com/...`
98
+ 3. GitHub 源站 `https://github.com/yzailab/delta-infra-cli/releases/download/...`
99
+
100
+ 如果安装时下载失败,可以:
101
+
102
+ - 直接运行一次 `delta-cli`,它会自动重新尝试下载。
103
+ - 或者在安装前设置本地压缩包路径:
104
+
105
+ ```bash
106
+ DELTA_CLI_ARCHIVE=/path/to/delta-cli-linux-amd64.tar.gz npm install -g @delta-infra/cli
107
+ ```
108
+
109
+ 常用环境变量:
110
+
111
+ | 变量 | 说明 |
112
+ |------|------|
113
+ | `DELTA_CLI_MIRROR` | 下载镜像,例如 `https://gh-proxy.com/https://github.com`。只接受 HTTPS 且需在白名单内。 |
114
+ | `DELTA_CLI_MIRROR_ALLOWLIST` | 额外允许的主机列表,逗号分隔。 |
115
+ | `DELTA_CLI_ARCHIVE` | 指向预先下载好的 `.tar.gz` / `.zip` 本地路径,跳过网络下载。 |
116
+ | `DELTA_CLI_SKIP_POSTINSTALL` | 设置为 `1` 跳过安装时的二进制下载,之后由 `delta-cli` 运行时兜底。 |
117
+ | `DELTA_CLI_FATAL_ON_ERROR` | 安装失败时退出码非 0(默认警告,用于调试)。 |
118
+ | `DELTA_CLI_DOWNLOAD_TIMEOUT` | 单个下载源最大等待时间(毫秒,默认 120000)。 |
119
+
120
+ ### 方式五:Go Install
121
+
122
+ ```bash
123
+ go install github.com/delta-infra/delta-infra-cli/cmd/delta-cli@latest
124
+ ```
125
+
126
+ ## 快速开始
127
+
128
+ ### 1. 初始化配置
129
+
130
+ ```bash
131
+ delta-cli config init
132
+ ```
133
+
134
+ 执行时会交互式提示输入服务端地址(默认:`https://delta-infra-nacos-test.yangtzeailab.com/sandbox/api/v1`)以及 Bearer Token(可选,也可后续用 `auth login` 配置)。
135
+
136
+ 非交互式环境(如 CI)会直接使用默认值,也可以通过 flag 或环境变量一次性指定:
137
+
138
+ ```bash
139
+ # 通过 flag
140
+ delta-cli config init \
141
+ --base-url http://your-server/api/v1 \
142
+ --token your-token
143
+
144
+ # 通过环境变量
145
+ export DELTA_INFRA_BASE_URL=http://your-server/api/v1
146
+ export DELTA_INFRA_TOKEN=your-token
147
+ delta-cli config init
148
+ ```
149
+
150
+ 配置文件保存在 `~/.delta-infra/config.json`(权限 0600)。
151
+
152
+ ### 2. 认证
153
+
154
+ 使用 Bearer Token:
155
+
156
+ ```bash
157
+ # Token
158
+ delta-cli auth login --token <your-token>
159
+
160
+ # 查看认证状态
161
+ delta-cli auth status
162
+ ```
163
+
164
+ ### 3. Sandbox 生命周期
165
+
166
+ ```bash
167
+ # 创建带 GPU 的 sandbox(--max-life 默认 30 分钟,长任务请调高)
168
+ delta-cli sandbox create \
169
+ --image image.yangtzeailab.com/opensandbox/pytorch-cuda13:latest \
170
+ --cpu 4 --memory 16Gi --gpu 1 \
171
+ --max-life 120
172
+
173
+ # 运行命令(短任务同步执行,长任务用 run-bg 替代 run)
174
+ delta-cli sandbox run <sandbox_id> \
175
+ --command "<命令>" \
176
+ --timeout 3600
177
+
178
+ # v1.0.55+ 默认带 --summary,返回 JSON 中 data.result_summary 字段已含 stdout 末尾 JSON 提取结果
179
+ # 无需再手动读取 log_file 做二次解析(除非使用了 --no-summary)
180
+ delta-cli sandbox run <sandbox_id> --command "echo '{\"status\":\"ok\",\"result\":\"done\"}'" --timeout 60
181
+
182
+ # 读取结果文件
183
+ delta-cli sandbox read <sandbox_id> --path /workspace/result.json
184
+
185
+ # 销毁 sandbox
186
+ delta-cli sandbox kill <sandbox_id>
187
+ ```
188
+
189
+ ## 命令列表
190
+
191
+ ### 全局命令
192
+
193
+ | 命令 | 说明 |
194
+ |------|------|
195
+ | `delta-cli config init` | 初始化配置文件 |
196
+ | `delta-cli config show` | 查看当前配置(敏感字段已脱敏) |
197
+ | `delta-cli config set <key> <value>` | 修改配置项 |
198
+ | `delta-cli auth login` | 交互式登录 |
199
+ | `delta-cli auth login --token <token>` | Token 认证 |
200
+ | `delta-cli auth status` | 查看认证状态 |
201
+ | `delta-cli upgrade` | 升级 CLI 和 AI Skills 到最新版本 |
202
+ | `delta-cli upgrade --check` | 检查是否有可用更新 |
203
+ | `delta-cli upgrade --cli-only` | 只升级 CLI 二进制 |
204
+ | `delta-cli upgrade --skills-only` | 只升级 AI Skills |
205
+ | `delta-cli --version` | 显示版本 |
206
+
207
+ ### Sandbox 命令
208
+
209
+ > **提示**:`sandbox list`(列沙箱实例)与 `sandbox ls <id>`(列目录)不同,注意区分。
210
+
211
+ | 命令 | 说明 |
212
+ |------|------|
213
+ | `delta-cli sandbox list` | 列出当前用户的 sandbox 实例 |
214
+ | `delta-cli sandbox providers` | 查看可用计算后端 |
215
+ | `delta-cli sandbox images` | 查看可用镜像列表 |
216
+ | `delta-cli sandbox recommend --cpu N --memory XGi` | 获取资源配置推荐 |
217
+ | `delta-cli sandbox create --image <img>` | 创建 sandbox 容器 |
218
+ | `delta-cli sandbox connect <id>` | 连接 sandbox |
219
+ | `delta-cli sandbox status <id>` | 查看 sandbox 状态 |
220
+ | `delta-cli sandbox finish <id>` | 保存结果并销毁 |
221
+ | `delta-cli sandbox kill <id>` | 销毁 sandbox |
222
+ | `delta-cli sandbox run <id> --command "..." [--timeout <秒>] [--summary/--no-summary] [--artifacts]` | 同步运行命令;默认带 `--summary`,返回 JSON 中 `summary` 字段已含 stdout 末尾 JSON 提取结果;`--artifacts` 附带 workspace 产物清单 |
223
+ | `delta-cli sandbox run-bg <id> --command "..." [--timeout <秒>] [--wait] [--summary/--no-summary] [--artifacts]` | 后台运行命令;不加 `--wait` 立即返回 `{execution_id, sandbox_id}`;加 `--wait` 等待完成返回含 `summary` 的完整结果 |
224
+ | `delta-cli sandbox logs <id> --execution-id <eid> [--tail N --grep <pattern> --context N --max-bytes N]` | 查看后台日志;默认返回 `stderr_size + stderr_tail`(避免上下文爆炸);可用 `--tail/--grep` 过滤 |
225
+ | `delta-cli sandbox cancel <id> --execution-id <eid>` | 中断后台命令 |
226
+ | `delta-cli sandbox read <id> --path <path> [--output <本地路径>] [--tail N] [--grep <pattern>] [--offset N] [--limit N] [--context N] [--max-bytes N] [--parse-json]` | 读取容器内文件;`--output <path>` 保存到本地;`--tail/--grep` 过滤;非 UTF-8 文件 CLI 自动走 base64 fallback |
227
+ | `delta-cli sandbox pull <id> --source <沙箱路径> --target <本地路径> [--recursive] [--pattern <glob>]` | 从沙箱拉取文件/目录到本地(mirror of `upload`,flag 方向相反:source=远程,target=本地);单文件或递归目录;CLI 端 + 服务端双向 sha1 完整性校验 |
228
+ | `delta-cli sandbox write <id> --path <path> --source <本地路径>` | 写入文件 |
229
+ | `delta-cli sandbox write-multiple <id> --entry <远程路径>=<本地路径>` | 批量写入 |
230
+ | `delta-cli sandbox ls <id> --path <path>` | 列出目录 |
231
+ | `delta-cli sandbox stat <id> --path <path>` | 文件元数据 |
232
+ | `delta-cli sandbox mv <id> --entry <src=dest>` | 移动/重命名 |
233
+ | `delta-cli sandbox replace <id> --path <path> --old <文本> --new <文本>` | 替换内容 |
234
+ | `delta-cli sandbox chmod <id> --path <path> --mode <八进制>` | 修改权限 |
235
+ | `delta-cli sandbox rm <id> --path <path>` | 删除文件 |
236
+ | `delta-cli sandbox rmdir <id> --path <路径>` | 递归删除目录 |
237
+ | `delta-cli sandbox mkdir <id> --path <路径>` | 创建目录 |
238
+ | `delta-cli sandbox search <id> --path <根目录> --pattern <glob>` | 搜索文件 |
239
+ | `delta-cli sandbox upload <id> --source <本地目录> --target <沙箱路径>` | 上传目录(tar.gz + 自动解压) |
240
+
241
+ ### Science 工具
242
+
243
+ > 默认 Science Server 为 `http://8.141.101.94:8080/science_tool`。可通过
244
+ > `delta-cli config set science_base_url <url>` 或环境变量
245
+ > `DELTA_INFRA_SCIENCE_BASE_URL` 覆盖。
246
+
247
+ | 命令 | 说明 |
248
+ |------|------|
249
+ | `delta-cli science list` | 列出所有已启用的 science 工具 |
250
+ | `delta-cli science get <tool_name>` | 查看指定工具的详情 |
251
+ | `delta-cli science invoke --tool <tool_name> --endpoint <endpoint_name> [--data '{"key":"value"}'] [--params '{"key":"value"}']` | 调用工具端点 |
252
+ | `delta-cli science endpoints list <tool_name>` | 列出指定工具的所有端点 |
253
+
254
+ CLI 和内置 Science Skills 统一使用简洁 operation,例如 `health`、`composition-parse`、
255
+ `similarity-matrix` 和 `optimize`。连接默认 `/science_tool` 旧服务时,CLI 会自动映射成
256
+ `chem_pymatgen_health` 等旧 catalog 名称;连接新版 Science Server 时则自动适配其规范
257
+ operation。`science endpoints list` 优先展示简洁名称,并在 `catalog_name` 中保留服务端原名。
258
+
259
+ ## 输出格式
260
+
261
+ 所有命令返回统一的 JSON envelope:
262
+
263
+ ```json
264
+ // 成功
265
+ {"ok":true,"data":{"id":"sb-xxx","status":"running"}}
266
+
267
+ // 错误
268
+ {"ok":false,"error":{"type":"auth","message":"not authenticated","hint":"run 'delta-cli auth login'"}}
269
+ ```
270
+
271
+ 错误类型及退出码:
272
+
273
+ | Type | Exit Code | 场景 |
274
+ |------|-----------|------|
275
+ | validation | 2 | 参数错误 |
276
+ | auth | 3 | 未认证 |
277
+ | permission | 4 | 权限不足 |
278
+ | not_found | 5 | 资源不存在 |
279
+ | network | 6 | 网络错误 |
280
+ | api | 7 | 服务端错误 |
281
+ | internal | 10 | 客户端内部错误 |
282
+
283
+ ## AI Agent Skills
284
+
285
+ delta-cli 内置 AI Agent 操作手册(Skills),帮助 Claude Code 等 AI 助手正确使用 CLI:
286
+
287
+ ```bash
288
+ # 安装仓库中的全部 Skills
289
+ npx skills add delta-infra/delta-infra-cli -y -g
290
+
291
+ # 也可以只安装某个 Skill,例如 Science 总控
288
292
  npx skills add delta-infra/delta-infra-cli -s delta-science
289
- ```
290
-
291
- Skill 文件位于 `skills/` 目录:
292
- - `delta-shared/` — 全局通用规则(认证、配置、错误处理)
293
- - `delta-sandbox/` — Sandbox 操作指南(生命周期、命令路由)
294
- - `delta-science/` — Science 工具调用指南(secondary API、invoke、endpoints)
295
-
296
- ## 开发
297
-
298
- ```bash
299
- # 本地构建
300
- make build
301
-
302
- # 运行测试
303
- make test
304
-
305
- # 代码检查
306
- make lint
307
-
308
- # 跨平台编译(生成各平台二进制文件到 bin/)
309
- make release
310
-
311
- # 源码安装到系统 PATH(默认 /usr/local/bin;macOS / Linux)
312
- make install
313
-
314
- # 自定义安装前缀
315
- make PREFIX=$HOME/.local install
316
-
317
- # Windows 源码安装(二选一)
318
- # 方式 A:直接用 go install 安装到 GOPATH/bin
319
- go install github.com/delta-infra/delta-infra-cli/cmd/delta-cli@latest
320
-
321
- # 方式 B:在仓库根目录运行 PowerShell 脚本,构建并添加到用户 PATH
322
- # .\install-from-source.ps1
323
- # .\install-from-source.ps1 -InstallDir "$env:USERPROFILE\bin"
324
- ```
325
-
326
- ### 日常开发流程
327
-
328
- 修改 `skills/` 或编译 `delta-cli` 后,需要同步到 Memento-S 项目才能生效:
329
-
330
- ```bash
331
- # 1. 复制 skill 文档到 Memento-S(让 LLM 读到最新的约束规则)
332
- cp skills/delta-sandbox/SKILL.md skills/delta-sandbox/references/*.md \
333
- <memento-s>/builtin/skills/delta-sandbox/
334
- cp skills/delta-shared/SKILL.md \
335
- <memento-s>/builtin/skills/delta-shared/
336
-
337
- # 2. 用 Docker 编译 Windows 版本(本地无 Go toolchain 时)
338
- docker run --rm -v "$(pwd):/src" -w /src \
339
- -e GOPROXY=https://goproxy.cn,direct \
340
- golang:1.23 \
341
- sh -c 'go build -buildvcs=false \
342
- -ldflags "-X github.com/delta-infra/delta-infra-cli/internal/build.Version=$(git describe --tags --always --dirty 2>/dev/null || echo dev)" \
343
- -o bin/delta-cli-windows-amd64.exe ./cmd/delta-cli'
344
-
345
- # 3. 将 delta-cli 放到 Memento-S 的 node_modules/.bin(替换旧版本)
346
- cp bin/delta-cli-windows-amd64.exe \
347
- <memento-s>/electron_rebuild/node_modules/.bin/delta-cli
348
-
349
- # 4. 重启 Memento-S sidecar 使新 binary 生效
350
- # 在 Electron 界面中重新加载,或手动重启 sidecar 进程
351
- ```
352
-
353
- > **注意**:`delta-cli` 替换后,如果 `~/.delta-infra/config.json` 中已配置 token,则 `delta-sandbox` 技能可直接使用;否则需要先用 `auth login` 配置。
354
-
355
- ## 构建与发布
356
-
357
- ### 本地构建
358
-
359
- ```bash
360
- # 本地构建
361
- make build
362
-
363
- # 运行测试
364
- make test
365
-
366
- # 代码检查
367
- make lint
368
-
369
- # 跨平台编译(生成各平台二进制文件到 bin/)
370
- make release
371
- ```
372
-
373
- > `make release` 仅生成各平台二进制文件(如 `bin/delta-cli-linux-amd64`),不会自动打包。打包与发布请使用下文的 `release.sh`。
374
-
375
- ### 一键发布(维护者)
376
-
377
- 项目根目录下的 `release.sh` 脚本负责完整发布流程:
378
-
379
- ```bash
380
- export GH_TOKEN=<your-github-pat>
381
- export NPM_TOKEN=<your-npm-token>
382
- ./release.sh v1.0.73
383
- ```
384
-
385
- 脚本执行步骤:
386
- 1. 更新 `package.json` 版本号。
387
- 2. 使用 Docker + `make release` 交叉编译 5 个平台二进制文件。
388
- 3. 在 `bin/` 目录生成 `.tar.gz` / `.zip` 归档。
389
- 4. 通过 `.ci/publish-github-release.js` 创建 GitHub Release 并上传资产。
390
- 5. 同步 `package.json` 与 `scripts/install.js` 到公开仓库 `yzailab/delta-infra-cli`。
391
- 6. 执行 `npm publish --access public` 发布 `@delta-infra/cli`。
392
-
393
- 需要提前安装 `gh` CLI、Node.js/npm,并配置 `GH_TOKEN` 与 `NPM_TOKEN`。CI 流程可参考 `.gitlab-ci.yml`。
394
-
395
- ### npm 镜像
396
-
397
- 如果 GitHub 下载较慢,安装 npm 包时可设置镜像:
398
-
399
- ```bash
400
- DELTA_CLI_MIRROR="https://gh-proxy.com/https://github.com" npm install -g @delta-infra/cli
401
- ```
402
-
403
- ## 技术栈
404
-
405
- - **语言**: Go 1.23+
406
- - **CLI 框架**: [Cobra](https://github.com/spf13/cobra)
407
- - **配置**: JSON 文件(`~/.delta-infra/config.json`,权限 0600)
408
- - **输出**: JSON envelope(AI-agent 友好,可脚本化)
409
- - **发布**: GitHub Release(tar.gz/zip) + npm wrapper
410
- - **架构**: 扁平静态命令树,Factory 依赖注入,惰性初始化
411
-
412
- ## License
413
-
414
- MIT
293
+ ```
294
+
295
+ Skill 文件位于 `skills/` 目录:
296
+ - `delta-shared/` — 全局通用规则(认证、配置、错误处理)
297
+ - `delta-sandbox/` — Sandbox 操作指南(生命周期、命令路由)
298
+ - `delta-science/` — Science 总控、跨服务编排、统一 Delta CLI wrapper
299
+ - `pubchem/`、`rdkit/`、`pymatgen/` — 化合物与材料基础计算
300
+ - `gsasii/`、`lammps/` — 衍射和分子动力学
301
+ - `delta-bo/`、`ldm-bo/`、`synbo-service/` — 科学优化流程
302
+ - `antbo-service/`、`antbo-ldm-guard/` — AntBO 作业与未暴露 LDM 请求保护
303
+
304
+ 一键安装、升级和卸载会同步上述完整集合;具名服务 Skill 负责参数契约,
305
+ `delta-science` 负责从简短的人类科研请求中选择服务并组织数据交接。
306
+
307
+ ## 开发
308
+
309
+ ```bash
310
+ # 本地构建
311
+ make build
312
+
313
+ # 运行测试
314
+ make test
315
+
316
+ # 代码检查
317
+ make lint
318
+
319
+ # 跨平台编译(生成各平台二进制文件到 bin/)
320
+ make release
321
+
322
+ # 源码安装到系统 PATH(默认 /usr/local/bin;macOS / Linux)
323
+ make install
324
+
325
+ # 自定义安装前缀
326
+ make PREFIX=$HOME/.local install
327
+
328
+ # Windows 源码安装(二选一)
329
+ # 方式 A:直接用 go install 安装到 GOPATH/bin
330
+ go install github.com/delta-infra/delta-infra-cli/cmd/delta-cli@latest
331
+
332
+ # 方式 B:在仓库根目录运行 PowerShell 脚本,构建并添加到用户 PATH
333
+ # .\install-from-source.ps1
334
+ # .\install-from-source.ps1 -InstallDir "$env:USERPROFILE\bin"
335
+ ```
336
+
337
+ ### 日常开发流程
338
+
339
+ 修改 `skills/` 或编译 `delta-cli` 后,需要同步到 Memento-S 项目才能生效:
340
+
341
+ ```bash
342
+ # 1. 通过安装向导同步完整 Skill 集合
343
+ node scripts/install-wizard.js
344
+
345
+ # 2. 用 Docker 编译 Windows 版本(本地无 Go toolchain 时)
346
+ docker run --rm -v "$(pwd):/src" -w /src \
347
+ -e GOPROXY=https://goproxy.cn,direct \
348
+ golang:1.23 \
349
+ sh -c 'go build -buildvcs=false \
350
+ -ldflags "-X github.com/delta-infra/delta-infra-cli/internal/build.Version=$(git describe --tags --always --dirty 2>/dev/null || echo dev)" \
351
+ -o bin/delta-cli-windows-amd64.exe ./cmd/delta-cli'
352
+
353
+ # 3. 将 delta-cli 放到 Memento-S 的 node_modules/.bin(替换旧版本)
354
+ cp bin/delta-cli-windows-amd64.exe \
355
+ <memento-s>/electron_rebuild/node_modules/.bin/delta-cli
356
+
357
+ # 4. 重启 Memento-S sidecar 使新 binary 生效
358
+ # 在 Electron 界面中重新加载,或手动重启 sidecar 进程
359
+ ```
360
+
361
+ > **注意**:`delta-cli` 替换后,如果 `~/.delta-infra/config.json` 中已配置 token,则
362
+ > Sandbox 和 Science Skills 可直接使用;否则需要先用 `auth login` 配置。
363
+
364
+ ## 构建与发布
365
+
366
+ ### 本地构建
367
+
368
+ ```bash
369
+ # 本地构建
370
+ make build
371
+
372
+ # 运行测试
373
+ make test
374
+
375
+ # 代码检查
376
+ make lint
377
+
378
+ # 跨平台编译(生成各平台二进制文件到 bin/)
379
+ make release
380
+ ```
381
+
382
+ > `make release` 仅生成各平台二进制文件(如 `bin/delta-cli-linux-amd64`),不会自动打包。打包与发布请使用下文的 `release.sh`。
383
+
384
+ ### 一键发布(维护者)
385
+
386
+ 项目根目录下的 `release.sh` 脚本负责完整发布流程:
387
+
388
+ ```bash
389
+ export GH_TOKEN=<your-github-pat>
390
+ export NPM_TOKEN=<your-npm-token>
391
+ ./release.sh v1.0.75
392
+ ```
393
+
394
+ 脚本执行步骤:
395
+ 1. 更新 `package.json` 版本号。
396
+ 2. 使用 Docker + `make release` 交叉编译 5 个平台二进制文件。
397
+ 3. 在 `bin/` 目录生成 `.tar.gz` / `.zip` 归档。
398
+ 4. 通过 `.ci/publish-github-release.js` 创建 GitHub Release 并上传资产。
399
+ 5. 同步 `package.json` 与 `scripts/install.js` 到公开仓库 `yzailab/delta-infra-cli`。
400
+ 6. 执行 `npm publish --access public` 发布 `@delta-infra/cli`。
401
+
402
+ 需要提前安装 `gh` CLI、Node.js/npm,并配置 `GH_TOKEN` 与 `NPM_TOKEN`。CI 流程可参考 `.gitlab-ci.yml`。
403
+
404
+ ### npm 镜像
405
+
406
+ 如果 GitHub 下载较慢,安装 npm 包时可设置镜像:
407
+
408
+ ```bash
409
+ DELTA_CLI_MIRROR="https://gh-proxy.com/https://github.com" npm install -g @delta-infra/cli
410
+ ```
411
+
412
+ ## 技术栈
413
+
414
+ - **语言**: Go 1.23+
415
+ - **CLI 框架**: [Cobra](https://github.com/spf13/cobra)
416
+ - **配置**: JSON 文件(`~/.delta-infra/config.json`,权限 0600)
417
+ - **输出**: JSON envelope(AI-agent 友好,可脚本化)
418
+ - **发布**: GitHub Release(tar.gz/zip) + npm wrapper
419
+ - **架构**: 扁平静态命令树,Factory 依赖注入,惰性初始化
420
+
421
+ ## License
422
+
423
+ MIT