@delta-infra/cli 1.0.97 → 1.0.99
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 +473 -471
- package/checksums.txt +5 -5
- package/package.json +2 -2
- package/scripts/install-wizard.js +701 -701
- package/scripts/install.js +442 -442
- package/scripts/run.js +65 -65
- package/skills/delta-sandbox/SKILL.md +382 -356
- package/skills/delta-sandbox/agents/openai.yaml +4 -4
- package/skills/delta-sandbox/references/commands.md +58 -56
- package/skills/delta-sandbox/references/lifecycle.md +100 -92
- package/skills/delta-sandbox/references/recipes.md +138 -133
- package/skills/delta-science/AGENTS.md +46 -49
- package/skills/delta-science/SKILL.md +130 -131
- package/skills/delta-science/agents/openai.yaml +4 -4
- package/skills/delta-science/references/antbo.md +100 -100
- package/skills/delta-science/references/delta-bo.md +89 -89
- package/skills/delta-science/references/gsasii.md +116 -116
- package/skills/delta-science/references/lammps.md +66 -66
- package/skills/delta-science/references/ldm-bo.md +129 -129
- package/skills/delta-science/references/pubchem.md +126 -126
- package/skills/delta-science/references/pymatgen.md +68 -68
- package/skills/delta-science/references/{qe-dft.md → qe.md} +4 -4
- package/skills/delta-science/references/rdkit.md +138 -138
- package/skills/delta-science/references/strbo.md +87 -87
- package/skills/delta-science/references/synbo.md +198 -198
- package/skills/delta-science/scripts/catalog.py +92 -92
- package/skills/delta-science/scripts/generated_catalog.py +69 -69
- package/skills/delta-science/scripts/invoke.py +302 -302
- package/skills/delta-shared/SKILL.md +97 -95
- package/skills/delta-shared/agents/openai.yaml +4 -4
- package/skills/manifest.json +19 -19
- package/skills/delta-science/references/cli-contract.md +0 -53
- package/skills/delta-science/references/generated-catalog.md +0 -48
- package/skills/delta-science/references/ldm.md +0 -73
- package/skills/delta-science/references/molecule-enrich.md +0 -59
- package/skills/delta-science/references/operation-contracts.md +0 -137
- package/skills/delta-science/references/routing-index.md +0 -45
- package/skills/delta-science/references/services.md +0 -112
- package/skills/delta-science/references/workflows.md +0 -98
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Delta Science 路由索引
|
|
2
|
-
|
|
3
|
-
本文件只描述稳定的科研意图边界,不复制 Science Server 的工具和 endpoint 清单。
|
|
4
|
-
实际可用工具以 `delta-cli science list` 和 `delta-cli science endpoints list` 返回的
|
|
5
|
-
实时目录为准。
|
|
6
|
-
|
|
7
|
-
## 路由优先级
|
|
8
|
-
|
|
9
|
-
- 普通化合物名称、CID 和公共属性使用 PubChem;已有 SMILES/InChI 且需要结构计算时
|
|
10
|
-
使用 RDKit。
|
|
11
|
-
- 用户明确要求一次得到名称解析、PubChem 字段和 RDKit 描述符/指纹时,使用
|
|
12
|
-
`chemistry` 的 molecule-enrich workflow;不要为同一需求重复调用中间服务。
|
|
13
|
-
- 无机化学式、组成、CIF、POSCAR 和空间群使用 pymatgen;粉末衍射模拟或 Rietveld
|
|
14
|
-
精修使用 GSAS-II。
|
|
15
|
-
- 表格材料数据、可控变量/目标、候选空间、 surrogate 验证和候选排序使用
|
|
16
|
-
Materials Design;不要把候选预测说成实验结果。
|
|
17
|
-
- 需要 Quantum ESPRESSO 电子结构计算时使用 QE;先解析 workflow 与整组元素的 PP
|
|
18
|
-
policy/lock,再按异步 job 生命周期处理 execution、solver 和 scientific 状态。
|
|
19
|
-
- 明确的 LAMMPS input、data 和力场任务使用 LAMMPS;不得从化学式或 CIF 猜测势函数。
|
|
20
|
-
- 通用数值、整数或分类实验变量优化使用 Delta-BO。
|
|
21
|
-
- 固定 SMILES 候选池或 PDF2Dock 轨迹使用 LDM-BO;固定 KRAS G12D 生成式优化使用
|
|
22
|
-
STRBO;反应条件与真实历史得率使用 SynBO;抗体 CDRH3 使用 AntBO。
|
|
23
|
-
- “LDM/大发现模型”是跨上述三类能力的工作流意图,先读取 `ldm.md` 决定唯一后端,
|
|
24
|
-
不是服务端 tool,也不得路由到旧 `large-discovery-model` Skill。
|
|
25
|
-
|
|
26
|
-
## 已验证 reference
|
|
27
|
-
|
|
28
|
-
- [pubchem.md](pubchem.md)
|
|
29
|
-
- [rdkit.md](rdkit.md)
|
|
30
|
-
- [molecule-enrich.md](molecule-enrich.md)
|
|
31
|
-
- [pymatgen.md](pymatgen.md)
|
|
32
|
-
- [gsasii.md](gsasii.md)
|
|
33
|
-
- [lammps.md](lammps.md)
|
|
34
|
-
- [delta-bo.md](delta-bo.md)
|
|
35
|
-
- [materials-design.md](materials-design.md)
|
|
36
|
-
- [qe-dft.md](qe-dft.md)
|
|
37
|
-
- [ldm-bo.md](ldm-bo.md)
|
|
38
|
-
- [ldm.md](ldm.md)
|
|
39
|
-
- [strbo.md](strbo.md)
|
|
40
|
-
- [synbo.md](synbo.md)
|
|
41
|
-
- [antbo.md](antbo.md)
|
|
42
|
-
|
|
43
|
-
以上 reference 是已验证参数契约,不是服务端完整目录。用户明确点名新工具时,按
|
|
44
|
-
`SKILL.md` 的实时 catalog 流程发现工具和 endpoint;若目录未返回请求 schema,不猜测
|
|
45
|
-
请求体。
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# 服务与参数参考
|
|
2
|
-
|
|
3
|
-
只读取当前所选服务对应的部分。下文中的 endpoint 是 Delta CLI catalog 名称,不是 URL 路径。
|
|
4
|
-
|
|
5
|
-
## PubChem
|
|
6
|
-
|
|
7
|
-
Tool:`pubchem`。
|
|
8
|
-
|
|
9
|
-
- 普通名称查询:`compound-summary`,data 为 `{"identifier":"caffeine","namespace":"name"}`。
|
|
10
|
-
- 批量查询:`compound-batch-summary`。模糊的多分子比较必须严格使用 `{"identifiers":["aspirin","caffeine"],"namespace":"name"}`。
|
|
11
|
-
- 批量查询不要添加 `properties` 或 `synonym_limit`,尤其不能把 `CID` 放进 `properties`。
|
|
12
|
-
- 其他 operation:`compound-resolve-cids`、`compound-properties`、`compound-synonyms`。
|
|
13
|
-
|
|
14
|
-
单个 `compound-summary` 的业务字段直接位于 wrapper 的 `native` 顶层:读取
|
|
15
|
-
`native.valid`、`native.cid`、`native.properties` 和 `native.synonyms`;不存在
|
|
16
|
-
`native.data` 这一层。
|
|
17
|
-
|
|
18
|
-
模糊问题优先使用 summary。按 `CanonicalSMILES`、`ConnectivitySMILES`、`SMILES`、`IsomericSMILES` 的顺序提取 SMILES。PubChem 返回的 `MolecularWeight`、`XLogP` 和 `TPSA` 必须保留为 PubChem 数据。
|
|
19
|
-
|
|
20
|
-
批量 native 输出为 `{"results":[...]}`。每条记录用 `input` 保存原始标签,化合物字段位于嵌套的 `properties`;记录不是平铺结构,集合键也不是 `compounds`。
|
|
21
|
-
|
|
22
|
-
## RDKit
|
|
23
|
-
|
|
24
|
-
Tool:`rdkit`。
|
|
25
|
-
|
|
26
|
-
- `parse`:`{"input":"CCO","format":"smiles"}`
|
|
27
|
-
- `descriptors`:`{"smiles":"CCO","descriptor_set":"basic","sanitize":true}`
|
|
28
|
-
- `batch-parse-describe`:`{"molecules":[{"id":"ethanol","smiles":"CCO"}],"descriptor_set":"basic","sanitize":true}`
|
|
29
|
-
- `render`:`{"smiles":"CCO","image_format":"png","width":500,"height":400}`
|
|
30
|
-
- `similarity`:使用 `query_smiles` 和 `target_smiles`
|
|
31
|
-
- `similarity-matrix`:使用 `molecules:[{id,smiles}]`
|
|
32
|
-
- `substructure`:使用 `query_smarts` 和 `target_smiles`
|
|
33
|
-
|
|
34
|
-
`batch-parse-describe` 使用 `molecules`,不能用 `inputs`;分子字段使用 `smiles`,不能用 `input`。fingerprint 选项是对象,不是布尔值。PubChem `XLogP` 与 RDKit `MolLogP` 使用不同模型。
|
|
35
|
-
|
|
36
|
-
`similarity-matrix` 的 `ranked_pairs` 每项是
|
|
37
|
-
`{"a": <输入 id>, "b": <输入 id>, "similarity": <数值>}`。不要读取
|
|
38
|
-
`i`、`j` 或 `score`。
|
|
39
|
-
|
|
40
|
-
## pymatgen
|
|
41
|
-
|
|
42
|
-
Tool:`pymatgen`。
|
|
43
|
-
|
|
44
|
-
- 化学式:`composition-parse`,data 为 `{"formula":"LiFePO4","format":"formula"}`
|
|
45
|
-
- 结构 operation:`structure-parse`、`structure-summary`、`structure-convert`、`structure-symmetry`
|
|
46
|
-
|
|
47
|
-
结构调用必须发送完整结构文本,不能发送本地文件路径。支持 CIF、POSCAR、JSON、CSSR 和 XSF。不要把 LAMMPS data/dump 文件交给 pymatgen。
|
|
48
|
-
|
|
49
|
-
对无机化学式/式量,只报告当前 native 的 `formula`、`reduced_formula`、
|
|
50
|
-
`chemical_system`、`weight` 与元素组成。PubChem 未收录时保留 `not_found`,
|
|
51
|
-
不要编造 CID 或用本地计算补值。
|
|
52
|
-
|
|
53
|
-
## GSAS-II
|
|
54
|
-
|
|
55
|
-
Tool:`gsasii`;operation 为 `powder-simulate` 和 `powder-refine`。
|
|
56
|
-
|
|
57
|
-
模拟需要完整 `cif` 文本。字段必须使用 `phase_name`、`include_profile`、`include_reflections`、`t_min`、`t_max` 和 `t_step`。
|
|
58
|
-
|
|
59
|
-
精修需要真实的 `powder_data`、`instrument_parameters` 和 `phases:[{name,cif}]`。依赖模拟结果时,只能从成功调用的 native `profile[*].x` 和 `profile[*].y_calc` 构造粉末数据。
|
|
60
|
-
|
|
61
|
-
## LAMMPS
|
|
62
|
-
|
|
63
|
-
Tool:`lammps`。
|
|
64
|
-
|
|
65
|
-
- 只读有界示例:`lj-melt-example`,无参数
|
|
66
|
-
- 执行:`run`,参数必须是示例返回的精确 native `request`,或用户明确授权的 `input_script`/files
|
|
67
|
-
|
|
68
|
-
绝不能把 CLI 外层信封传给 `run`,只能传 `native["request"]`。LAMMPS 不会自动推断力场。交互式运行必须保持有界。
|
|
69
|
-
|
|
70
|
-
最小示例最终数值从当前 native `last_thermo` 读取;逐字保留 `Step`、`Temp`
|
|
71
|
-
和 `TotEng`,不要除以原子数、换算单位或推测收敛性。
|
|
72
|
-
|
|
73
|
-
## Delta-BO
|
|
74
|
-
|
|
75
|
-
Tool:`delta-bo`。
|
|
76
|
-
|
|
77
|
-
- 命令目录:`commands`,无参数
|
|
78
|
-
- 无状态建议:`generate`,例如 `{"params":[{"name":"x","type":"numeric","low":0,"high":1}],"num_suggestions":2,"algorithm":"random-search","seed":42}`
|
|
79
|
-
|
|
80
|
-
观测少于五条时,除非用户明确要求 BO,否则优先使用 `random-search`。有状态 native session 命令属于变更操作,不能盲目重试。
|
|
81
|
-
|
|
82
|
-
## LDM-BO
|
|
83
|
-
|
|
84
|
-
Tool:`ldm-bo`;operation 为 `recommend` 和 `trajectory`。
|
|
85
|
-
|
|
86
|
-
有界测试使用 `bo-tanimoto`。`recommend` 接受 `method`、`pool`、`history:[{smiles,scores}]` 和 `batch_size`。`trajectory` 必须保留 native 连字符字段:`seed-smiles`、`num-evaluations` 和 `batch-size`。
|
|
87
|
-
|
|
88
|
-
## SynBO
|
|
89
|
-
|
|
90
|
-
Tool:`synbo`;operation 为 `initialize` 和 `optimize`。
|
|
91
|
-
|
|
92
|
-
二者都使用 `condition_dict`、`opt_metrics` 和 `batch_size`。`optimize` 还要求数值型 `previous_results`,且每条记录必须包含全部条件和指标。有界 CPU 测试使用 `accuracy:"tiny"` 和 `device:"cpu"`,并串行执行。
|
|
93
|
-
|
|
94
|
-
有真实 `previous_results` 的优化请求使用一次 `optimize`;每行必须包含全部条件列和
|
|
95
|
-
数值指标。失败、超时或空 recommendations 时如实报告,禁止本地替代优化。
|
|
96
|
-
|
|
97
|
-
## AntBO
|
|
98
|
-
|
|
99
|
-
Tool:`antbo`。
|
|
100
|
-
|
|
101
|
-
当前 CLI catalog 暴露 `health`、`run-default-job`、`run`、`log`、`jobs` 和
|
|
102
|
-
`stop`;准确参数见 `operation-contracts.md`。没有 `ldm/suggest`、
|
|
103
|
-
`ldm/initialize`、`ldm/evaluate`。遇到 AntBO/CDRH3 的这些 LDM 请求时不要调用工具、
|
|
104
|
-
不要改用小分子 LDM-BO、不要探测目录或直连 HTTP;明确回复“当前 Delta CLI catalog
|
|
105
|
-
未暴露该 operation;未发送远端请求”。
|
|
106
|
-
|
|
107
|
-
启动作业只能根据同一次 native 的 `started`、`pid` 和 `log_name`/`log_path`
|
|
108
|
-
报告;任一字段缺失时标记为未验证,不要重复提交或编造作业信息。
|
|
109
|
-
|
|
110
|
-
`health`、`log`、`jobs` 是只读调用。`run-default-job`、`run`、`stop` 会改变远端状态;
|
|
111
|
-
`run-default-job` 的 `log_name`、`append`、`timeout_seconds` 使用 `--params-json`。
|
|
112
|
-
没有用户明确授权时不得启动或停止;未知结果不得重试。
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# 跨服务工作流
|
|
2
|
-
|
|
3
|
-
整个流程由单一 `delta-science` Skill 编排。线上调用最终执行
|
|
4
|
-
`delta-cli science invoke`,禁止直接 HTTP。可使用 subagent 协助整理输入、核对 reference
|
|
5
|
-
或展示结果,但主流程负责工具选择和所有线上调用。CLI 成功后每一步只消费对应 reference
|
|
6
|
-
定义的 `data` 响应字段。已知 reference 中没有目标 operation 时,不猜测相近 endpoint;reference
|
|
7
|
-
缺失、过期或与 CLI 返回不一致时,按 `SKILL.md` 的只读实时 catalog 流程确认。
|
|
8
|
-
|
|
9
|
-
## 单个已命名分子
|
|
10
|
-
|
|
11
|
-
1. 用 PubChem `compound-summary` 解析名称并取得身份字段。
|
|
12
|
-
2. 按文档规定的回退顺序提取 SMILES。
|
|
13
|
-
3. 只有用户要求 RDKit 描述符或明确的结构校验时,才调用 RDKit `batch-parse-describe`。
|
|
14
|
-
4. 只有用户明确要求图片时,才调用 RDKit `render`,并解码、验证图片字节。
|
|
15
|
-
5. 比较分子式、分子量、InChIKey 和供体/受体数量时,要明确区分 LogP、TPSA 等依赖模型的数值。
|
|
16
|
-
|
|
17
|
-
如果用户明确要求一次返回 PubChem 记录以及 RDKit 规范化/描述符/指纹,使用
|
|
18
|
-
`chemistry/molecule.enrich`;只要 PubChem 身份信息或只要 RDKit 计算时,仍使用对应的
|
|
19
|
-
单服务 operation。
|
|
20
|
-
|
|
21
|
-
## 多分子比较
|
|
22
|
-
|
|
23
|
-
1. 用 PubChem 批量解析全部名称,请求体只包含 `identifiers` 和 `namespace:"name"`。省略 `properties`。
|
|
24
|
-
2. 从业务响应的 `results[*]` 读取记录,并从每条记录的嵌套 `properties` 读取字段。
|
|
25
|
-
3. 未解析成功的记录要排除,并明确说明原因。
|
|
26
|
-
4. 使用 RDKit `similarity-matrix` 校验和排序两两相似度。它的 `sanitize` 已经校验输入,不要额外调用 parse。
|
|
27
|
-
5. 用 PubChem 记录的原始 `input` 作为 molecule id,并按文档顺序从嵌套属性中提取 SMILES。
|
|
28
|
-
6. 保持输入顺序,报告每个分数时明确对应的分子对。
|
|
29
|
-
7. 除非用户明确要求,不要渲染、保存用户文件、检查健康状态或探测额外描述符。
|
|
30
|
-
8. `ranked_pairs` 使用命名字段 `a`、`b`、`similarity`。找指定目标的最近邻时,
|
|
31
|
-
在包含该目标的记录中取最大 `similarity`,另一侧字段就是最近邻;不要使用
|
|
32
|
-
`i`、`j`、`score` 或猜测矩阵下标。
|
|
33
|
-
|
|
34
|
-
## 材料工作流
|
|
35
|
-
|
|
36
|
-
1. 使用 pymatgen 校验化学式/结构并转换 CIF;无机式量只能取当前业务响应 `weight`。
|
|
37
|
-
2. GSAS-II 只能接收真实 CIF 文本后再做衍射计算。
|
|
38
|
-
3. LAMMPS 只能在已有明确的力场、data 和脚本设置后运行;部署检查可以使用内置有界示例。
|
|
39
|
-
4. 从 LAMMPS 返回 pymatgen 或 GSAS-II 前,需要从弛豫结果重新构造 CIF/POSCAR。不要直接传递 LAMMPS data/dump 文件。
|
|
40
|
-
|
|
41
|
-
## Materials Design 工作流
|
|
42
|
-
|
|
43
|
-
1. 先明确 identifier、可控设计变量、目标列及方向、泄漏/元数据列、分组或时间切分和
|
|
44
|
-
可行候选空间;不能优化 identifier、测量后变量或泄漏字段。
|
|
45
|
-
2. 优先使用用户提供的候选表;只有服务契约允许且假设已标明时,才从可控变量的观测域
|
|
46
|
-
生成离散候选。组成闭合、硬约束、步长和是否允许外推必须显式记录。
|
|
47
|
-
3. 读取作业的 `status` 后再读取 `result_status`;`completed` 不等于推荐可靠。
|
|
48
|
-
`complete`、`exploratory`、`readiness_only` 和 `failed` 必须分别报告,并保留 warnings。
|
|
49
|
-
4. 只有用户要求或工作流需要时才下载 report/CSV/JSON artifact;依据服务返回的 size 和
|
|
50
|
-
SHA-256 校验,不能声称结果已经写入本地项目目录。
|
|
51
|
-
|
|
52
|
-
Materials Design 的 `jobs` 上传是 multipart。当前 `delta-cli science invoke` 只能传 JSON
|
|
53
|
-
body/query;除非实时目录提供明确的文件上传 adapter,否则不猜测 endpoint、不要把文件
|
|
54
|
-
路径或 base64 塞进 `--data`,也不要改走直连 Gateway。
|
|
55
|
-
|
|
56
|
-
## QE DFT 工作流
|
|
57
|
-
|
|
58
|
-
1. 读取 health 和实时 workflow catalog,选择当前为 `supported` 的 workflow;收集完整
|
|
59
|
-
campaign element union,并按服务返回值解析/锁定 PP。
|
|
60
|
-
2. 结构必须先成为服务返回的 checksum-addressed artifact;job 只引用 artifact ID、已批准
|
|
61
|
-
parameter set、PP lock、k-points、workflow_inputs 和资源请求。
|
|
62
|
-
3. 提交必须使用稳定幂等语义;HTTP 202/accepted 只表示接收,不表示 QE 已收敛。轮询时
|
|
63
|
-
独立读取 `execution`、`solver`、`scientific` 三个状态,并按原始 stable error code 分类。
|
|
64
|
-
4. CPU 是默认资源策略。只有用户明确要求或项目已有 GPU 授权且 live catalog 标记为
|
|
65
|
-
`gpu_support_status: verified` 时才请求 GPU;`gpu` 不得静默回退到 CPU,`auto` 也不等于
|
|
66
|
-
已实际使用 GPU。
|
|
67
|
-
5. 日志和结果 artifact 下载后按服务返回的 SHA-256 校验;不要把 scheduler 完成、solver
|
|
68
|
-
收敛或可解析输出直接写成 scientific acceptance。
|
|
69
|
-
|
|
70
|
-
QE 原始 artifact 上传需要二进制 body,job 提交还需要自定义 `Idempotency-Key`。当前 CLI
|
|
71
|
-
没有这两类参数;只能调用 Science Server 已明确暴露的等价 adapter,否则报告“当前 CLI
|
|
72
|
-
未暴露该 operation;未发送远端请求”。
|
|
73
|
-
|
|
74
|
-
## 优化工作流
|
|
75
|
-
|
|
76
|
-
- 通用数值或分类实验变量:Delta-BO
|
|
77
|
-
- 固定 SMILES 候选池或 PDF2Dock/Vina+NN 轨迹:LDM-BO
|
|
78
|
-
- 固定 KRAS G12D 的生成式小分子闭环:STRBO
|
|
79
|
-
- 指定抗原的 11-aa CDRH3 闭环:AntBO
|
|
80
|
-
- 偶联反应、反应条件和带真实历史得率的下一批实验推荐:SynBO
|
|
81
|
-
|
|
82
|
-
用户以 “LDM/大发现模型” 描述任务时,必须先按 `SKILL.md` 读取 `ldm.md`,再读取唯一
|
|
83
|
-
选定后端的 reference。LDM 是工作流意图,不是 tool;禁止旧
|
|
84
|
-
`large-discovery-model`、`run_ldm_loop.py`、gateway backend 和直接 HTTP。
|
|
85
|
-
|
|
86
|
-
禁止为了让优化器运行而编造观测数据。用户没有提供测量结果时,只能使用初始化或随机建议模式,并明确说明它是待实验验证的建议,不是已经验证的最优条件。
|
|
87
|
-
SynBO/Delta-BO 没有返回 recommendations 时,不得用本地回归、GP、UCB 或人工排序替代。
|
|
88
|
-
|
|
89
|
-
SynBO 只接受离散条件列表。用户给连续范围时,在一次调用前完成以下处理:
|
|
90
|
-
|
|
91
|
-
1. 条件网格包含用户上下界、全部历史观测值和少量合理中间点。
|
|
92
|
-
2. 同一条件列在 `condition_dict` 与 `previous_results` 中统一为字符串。
|
|
93
|
-
3. 得率等 objective metric 保持数值。
|
|
94
|
-
4. 小数据 CPU 默认 `tiny + RF + UCB`,并在最终答案中报告实际离散网格。
|
|
95
|
-
5. CLI 返回失败或业务响应为空 recommendations 时结束;不得连续尝试多种 payload 或模型。
|
|
96
|
-
|
|
97
|
-
用户未要求文件时只返回 recommendations 文本,不创建输入 CSV。必须交接时,仅把本次
|
|
98
|
-
成功业务响应写入当前 `WORKSPACE_ROOT/synbo_result.json`。
|