@delta-infra/cli 1.1.1 → 1.1.2
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 +1 -1
- package/checksums.txt +5 -5
- package/package.json +1 -1
- 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 +383 -383
- package/skills/delta-sandbox/agents/openai.yaml +4 -4
- package/skills/delta-sandbox/references/commands.md +58 -58
- package/skills/delta-sandbox/references/lifecycle.md +100 -100
- package/skills/delta-sandbox/references/recipes.md +138 -138
- package/skills/delta-science/AGENTS.md +47 -47
- package/skills/delta-science/SKILL.md +174 -174
- 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/materials-design.md +118 -118
- package/skills/delta-science/references/pubchem.md +126 -126
- package/skills/delta-science/references/pymatgen.md +68 -68
- package/skills/delta-science/references/qe.md +125 -125
- 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 +346 -346
- package/skills/delta-shared/SKILL.md +97 -97
- package/skills/delta-shared/agents/openai.yaml +4 -4
- package/skills/manifest.json +19 -19
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
# PubChem 详细规则
|
|
2
|
-
|
|
3
|
-
只能通过 `delta-cli science invoke` 调用。本文件中的业务响应位于 CLI 顶层 `data`;
|
|
4
|
-
只按本文件说明读取字段,不得递归搜索。本文件中的 URL 只用于说明 endpoint schema,
|
|
5
|
-
不授权直接 HTTP。普通名称基础查询只调用一次 `compound-summary`;多个名称
|
|
6
|
-
只调用一次 `compound-batch-summary`,默认 body 仅包含 `identifiers` 和
|
|
7
|
-
`namespace:"name"`,不得先调用 health/schema。
|
|
8
|
-
|
|
9
|
-
结果直接从 `data` 投影。批量记录位于 `data.results[*]`,原始标签在 `input`,
|
|
10
|
-
属性在嵌套 `properties`。SMILES 回退顺序固定为
|
|
11
|
-
`CanonicalSMILES -> ConnectivitySMILES -> SMILES -> IsomericSMILES`。
|
|
12
|
-
PubChem `XLogP` 与 RDKit `MolLogP` 不得互换;not_found 不得用本地计算补值。
|
|
13
|
-
|
|
14
|
-
Namespaces: `cid`, `name`, `smiles`, `inchi`, `inchikey`, `formula`.
|
|
15
|
-
|
|
16
|
-
## Health
|
|
17
|
-
|
|
18
|
-
operation:`health`,无 body。
|
|
19
|
-
|
|
20
|
-
## Resolve CIDs
|
|
21
|
-
|
|
22
|
-
operation:`compound-resolve-cids`。
|
|
23
|
-
|
|
24
|
-
```json
|
|
25
|
-
{"identifier": "aspirin", "namespace": "name", "max_records": 20}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`max_records`: 1-100.
|
|
29
|
-
|
|
30
|
-
## Properties
|
|
31
|
-
|
|
32
|
-
operation:`compound-properties`。
|
|
33
|
-
|
|
34
|
-
```json
|
|
35
|
-
{
|
|
36
|
-
"identifier": "2244",
|
|
37
|
-
"namespace": "cid",
|
|
38
|
-
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"]
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Allowed properties include `MolecularFormula`, `MolecularWeight`,
|
|
43
|
-
`CanonicalSMILES`, `IsomericSMILES`, `SMILES`, `ConnectivitySMILES`,
|
|
44
|
-
`IUPACName`, `InChI`, `InChIKey`, `XLogP`, `TPSA`, `HBondDonorCount`,
|
|
45
|
-
`HBondAcceptorCount`, `RotatableBondCount`, `ExactMass`, `MonoisotopicMass`,
|
|
46
|
-
`Charge`, `HeavyAtomCount`, `Complexity`, `CovalentUnitCount`,
|
|
47
|
-
`DefinedAtomStereoCount`, `UndefinedAtomStereoCount`, `DefinedBondStereoCount`,
|
|
48
|
-
`UndefinedBondStereoCount`, and `IsotopeAtomCount`.
|
|
49
|
-
|
|
50
|
-
## Synonyms
|
|
51
|
-
|
|
52
|
-
operation:`compound-synonyms`。
|
|
53
|
-
|
|
54
|
-
```json
|
|
55
|
-
{"identifier": "2244", "namespace": "cid", "max_synonyms": 50}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
`max_synonyms`: 1-500.
|
|
59
|
-
|
|
60
|
-
## Summary
|
|
61
|
-
|
|
62
|
-
operation:`compound-summary`。
|
|
63
|
-
|
|
64
|
-
```json
|
|
65
|
-
{
|
|
66
|
-
"identifier": "aspirin",
|
|
67
|
-
"namespace": "name",
|
|
68
|
-
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"],
|
|
69
|
-
"synonym_limit": 20
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
`synonym_limit`: 0-100. Use this endpoint for general compound lookup because
|
|
74
|
-
it resolves CID, selected properties, and synonyms in one call.
|
|
75
|
-
|
|
76
|
-
Response fields include `valid`, `cid`, `properties`, `properties_raw`,
|
|
77
|
-
`aliases`, `synonyms`, and `metadata`. Numeric properties are coerced to JSON
|
|
78
|
-
numbers when possible. Requested SMILES aliases are filled when PubChem returns
|
|
79
|
-
an equivalent key such as `ConnectivitySMILES`.
|
|
80
|
-
|
|
81
|
-
## Batch Summary
|
|
82
|
-
|
|
83
|
-
operation:`compound-batch-summary`。
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"identifiers": ["aspirin", "ibuprofen", "caffeine"],
|
|
88
|
-
"namespace": "name",
|
|
89
|
-
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "XLogP", "TPSA"],
|
|
90
|
-
"synonym_limit": 5
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Limits: 1-100 identifiers. The response preserves input order and includes
|
|
95
|
-
per-item errors:
|
|
96
|
-
|
|
97
|
-
```json
|
|
98
|
-
{
|
|
99
|
-
"valid": false,
|
|
100
|
-
"namespace": "name",
|
|
101
|
-
"properties_requested": ["CanonicalSMILES"],
|
|
102
|
-
"results": [
|
|
103
|
-
{
|
|
104
|
-
"input": "aspirin",
|
|
105
|
-
"valid": true,
|
|
106
|
-
"cid": 2244,
|
|
107
|
-
"properties": {
|
|
108
|
-
"CanonicalSMILES": "CC(=O)Oc1ccccc1C(=O)O",
|
|
109
|
-
"ConnectivitySMILES": "CC(=O)Oc1ccccc1C(=O)O",
|
|
110
|
-
"_aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
|
|
111
|
-
"properties_raw": {}
|
|
112
|
-
},
|
|
113
|
-
"properties_raw": {},
|
|
114
|
-
"aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
|
|
115
|
-
"synonyms": []
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"input": "bad-name",
|
|
119
|
-
"valid": false,
|
|
120
|
-
"error": "not found"
|
|
121
|
-
}
|
|
122
|
-
],
|
|
123
|
-
"count": 2,
|
|
124
|
-
"failed_count": 1
|
|
125
|
-
}
|
|
126
|
-
```
|
|
1
|
+
# PubChem 详细规则
|
|
2
|
+
|
|
3
|
+
只能通过 `delta-cli science invoke` 调用。本文件中的业务响应位于 CLI 顶层 `data`;
|
|
4
|
+
只按本文件说明读取字段,不得递归搜索。本文件中的 URL 只用于说明 endpoint schema,
|
|
5
|
+
不授权直接 HTTP。普通名称基础查询只调用一次 `compound-summary`;多个名称
|
|
6
|
+
只调用一次 `compound-batch-summary`,默认 body 仅包含 `identifiers` 和
|
|
7
|
+
`namespace:"name"`,不得先调用 health/schema。
|
|
8
|
+
|
|
9
|
+
结果直接从 `data` 投影。批量记录位于 `data.results[*]`,原始标签在 `input`,
|
|
10
|
+
属性在嵌套 `properties`。SMILES 回退顺序固定为
|
|
11
|
+
`CanonicalSMILES -> ConnectivitySMILES -> SMILES -> IsomericSMILES`。
|
|
12
|
+
PubChem `XLogP` 与 RDKit `MolLogP` 不得互换;not_found 不得用本地计算补值。
|
|
13
|
+
|
|
14
|
+
Namespaces: `cid`, `name`, `smiles`, `inchi`, `inchikey`, `formula`.
|
|
15
|
+
|
|
16
|
+
## Health
|
|
17
|
+
|
|
18
|
+
operation:`health`,无 body。
|
|
19
|
+
|
|
20
|
+
## Resolve CIDs
|
|
21
|
+
|
|
22
|
+
operation:`compound-resolve-cids`。
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{"identifier": "aspirin", "namespace": "name", "max_records": 20}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`max_records`: 1-100.
|
|
29
|
+
|
|
30
|
+
## Properties
|
|
31
|
+
|
|
32
|
+
operation:`compound-properties`。
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"identifier": "2244",
|
|
37
|
+
"namespace": "cid",
|
|
38
|
+
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Allowed properties include `MolecularFormula`, `MolecularWeight`,
|
|
43
|
+
`CanonicalSMILES`, `IsomericSMILES`, `SMILES`, `ConnectivitySMILES`,
|
|
44
|
+
`IUPACName`, `InChI`, `InChIKey`, `XLogP`, `TPSA`, `HBondDonorCount`,
|
|
45
|
+
`HBondAcceptorCount`, `RotatableBondCount`, `ExactMass`, `MonoisotopicMass`,
|
|
46
|
+
`Charge`, `HeavyAtomCount`, `Complexity`, `CovalentUnitCount`,
|
|
47
|
+
`DefinedAtomStereoCount`, `UndefinedAtomStereoCount`, `DefinedBondStereoCount`,
|
|
48
|
+
`UndefinedBondStereoCount`, and `IsotopeAtomCount`.
|
|
49
|
+
|
|
50
|
+
## Synonyms
|
|
51
|
+
|
|
52
|
+
operation:`compound-synonyms`。
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{"identifier": "2244", "namespace": "cid", "max_synonyms": 50}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`max_synonyms`: 1-500.
|
|
59
|
+
|
|
60
|
+
## Summary
|
|
61
|
+
|
|
62
|
+
operation:`compound-summary`。
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"identifier": "aspirin",
|
|
67
|
+
"namespace": "name",
|
|
68
|
+
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"],
|
|
69
|
+
"synonym_limit": 20
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`synonym_limit`: 0-100. Use this endpoint for general compound lookup because
|
|
74
|
+
it resolves CID, selected properties, and synonyms in one call.
|
|
75
|
+
|
|
76
|
+
Response fields include `valid`, `cid`, `properties`, `properties_raw`,
|
|
77
|
+
`aliases`, `synonyms`, and `metadata`. Numeric properties are coerced to JSON
|
|
78
|
+
numbers when possible. Requested SMILES aliases are filled when PubChem returns
|
|
79
|
+
an equivalent key such as `ConnectivitySMILES`.
|
|
80
|
+
|
|
81
|
+
## Batch Summary
|
|
82
|
+
|
|
83
|
+
operation:`compound-batch-summary`。
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"identifiers": ["aspirin", "ibuprofen", "caffeine"],
|
|
88
|
+
"namespace": "name",
|
|
89
|
+
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "XLogP", "TPSA"],
|
|
90
|
+
"synonym_limit": 5
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Limits: 1-100 identifiers. The response preserves input order and includes
|
|
95
|
+
per-item errors:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"valid": false,
|
|
100
|
+
"namespace": "name",
|
|
101
|
+
"properties_requested": ["CanonicalSMILES"],
|
|
102
|
+
"results": [
|
|
103
|
+
{
|
|
104
|
+
"input": "aspirin",
|
|
105
|
+
"valid": true,
|
|
106
|
+
"cid": 2244,
|
|
107
|
+
"properties": {
|
|
108
|
+
"CanonicalSMILES": "CC(=O)Oc1ccccc1C(=O)O",
|
|
109
|
+
"ConnectivitySMILES": "CC(=O)Oc1ccccc1C(=O)O",
|
|
110
|
+
"_aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
|
|
111
|
+
"properties_raw": {}
|
|
112
|
+
},
|
|
113
|
+
"properties_raw": {},
|
|
114
|
+
"aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
|
|
115
|
+
"synonyms": []
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"input": "bad-name",
|
|
119
|
+
"valid": false,
|
|
120
|
+
"error": "not found"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"count": 2,
|
|
124
|
+
"failed_count": 1
|
|
125
|
+
}
|
|
126
|
+
```
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# pymatgen 详细规则
|
|
2
|
-
|
|
3
|
-
所有调用直接使用 `delta-cli science invoke`。无机化学式、组成和式量优先使用 pymatgen,不用 PubChem
|
|
4
|
-
或本地元素表替代。结构 operation 必须发送完整结构文本,不能发送本地文件路径;
|
|
5
|
-
支持 `cif`、`poscar`、`json`、`cssr`、`xsf`,不接收 LAMMPS data/dump。
|
|
6
|
-
|
|
7
|
-
## Health
|
|
8
|
-
|
|
9
|
-
operation:`health`,无 body。
|
|
10
|
-
|
|
11
|
-
## Composition Parse
|
|
12
|
-
|
|
13
|
-
operation:`composition-parse`。
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
{"formula": "LiFePO4", "format": "formula"}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Key response fields in `data`: `valid`, `formula`, `reduced_formula`,
|
|
20
|
-
`alphabetic_formula`, `anonymous_formula`, `chemical_system`,
|
|
21
|
-
`number_of_atoms`, `weight`, `element_amounts`, `atomic_fractions`,
|
|
22
|
-
`weight_fractions`, `error`.
|
|
23
|
-
|
|
24
|
-
## Structure Parse / Summary
|
|
25
|
-
|
|
26
|
-
operation:`structure-parse` 或 `structure-summary`。
|
|
27
|
-
|
|
28
|
-
```json
|
|
29
|
-
{"input": "<CIF text>", "format": "cif", "primitive": false}
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Input formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
|
|
33
|
-
|
|
34
|
-
Summary fields include `formula`, `reduced_formula`, `chemical_system`,
|
|
35
|
-
`nsites`, `nelements`, `density`, `volume`, `lattice`, `element_amounts`, and
|
|
36
|
-
`species`.
|
|
37
|
-
|
|
38
|
-
## Structure Convert
|
|
39
|
-
|
|
40
|
-
operation:`structure-convert`。
|
|
41
|
-
|
|
42
|
-
```json
|
|
43
|
-
{
|
|
44
|
-
"input": "<CIF text>",
|
|
45
|
-
"input_format": "cif",
|
|
46
|
-
"output_format": "poscar",
|
|
47
|
-
"primitive": false
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Output formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
|
|
52
|
-
|
|
53
|
-
## Symmetry
|
|
54
|
-
|
|
55
|
-
operation:`structure-symmetry`。
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{
|
|
59
|
-
"input": "<CIF text>",
|
|
60
|
-
"format": "cif",
|
|
61
|
-
"primitive": false,
|
|
62
|
-
"symprec": 0.01,
|
|
63
|
-
"angle_tolerance": 5.0
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Returns `space_group_symbol`, `space_group_number`, `crystal_system`,
|
|
68
|
-
`point_group_symbol`, `hall`, and `nsites`.
|
|
1
|
+
# pymatgen 详细规则
|
|
2
|
+
|
|
3
|
+
所有调用直接使用 `delta-cli science invoke`。无机化学式、组成和式量优先使用 pymatgen,不用 PubChem
|
|
4
|
+
或本地元素表替代。结构 operation 必须发送完整结构文本,不能发送本地文件路径;
|
|
5
|
+
支持 `cif`、`poscar`、`json`、`cssr`、`xsf`,不接收 LAMMPS data/dump。
|
|
6
|
+
|
|
7
|
+
## Health
|
|
8
|
+
|
|
9
|
+
operation:`health`,无 body。
|
|
10
|
+
|
|
11
|
+
## Composition Parse
|
|
12
|
+
|
|
13
|
+
operation:`composition-parse`。
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{"formula": "LiFePO4", "format": "formula"}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Key response fields in `data`: `valid`, `formula`, `reduced_formula`,
|
|
20
|
+
`alphabetic_formula`, `anonymous_formula`, `chemical_system`,
|
|
21
|
+
`number_of_atoms`, `weight`, `element_amounts`, `atomic_fractions`,
|
|
22
|
+
`weight_fractions`, `error`.
|
|
23
|
+
|
|
24
|
+
## Structure Parse / Summary
|
|
25
|
+
|
|
26
|
+
operation:`structure-parse` 或 `structure-summary`。
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{"input": "<CIF text>", "format": "cif", "primitive": false}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Input formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
|
|
33
|
+
|
|
34
|
+
Summary fields include `formula`, `reduced_formula`, `chemical_system`,
|
|
35
|
+
`nsites`, `nelements`, `density`, `volume`, `lattice`, `element_amounts`, and
|
|
36
|
+
`species`.
|
|
37
|
+
|
|
38
|
+
## Structure Convert
|
|
39
|
+
|
|
40
|
+
operation:`structure-convert`。
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"input": "<CIF text>",
|
|
45
|
+
"input_format": "cif",
|
|
46
|
+
"output_format": "poscar",
|
|
47
|
+
"primitive": false
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Output formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
|
|
52
|
+
|
|
53
|
+
## Symmetry
|
|
54
|
+
|
|
55
|
+
operation:`structure-symmetry`。
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"input": "<CIF text>",
|
|
60
|
+
"format": "cif",
|
|
61
|
+
"primitive": false,
|
|
62
|
+
"symprec": 0.01,
|
|
63
|
+
"angle_tolerance": 5.0
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Returns `space_group_symbol`, `space_group_number`, `crystal_system`,
|
|
68
|
+
`point_group_symbol`, `hall`, and `nsites`.
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
# Quantum ESPRESSO DFT 详细规则
|
|
2
|
-
|
|
3
|
-
QE 用于通过 Chemistry Gateway 执行可追踪的异步 Quantum ESPRESSO 工作流。agent 只接触
|
|
4
|
-
Gateway/Science Server contract,不运行本地 `pw.x`,不调用内部 QE 容器,也不提交 shell
|
|
5
|
-
命令、scheduler 脚本、`pseudo_dir`、`outdir` 或主机路径。
|
|
6
|
-
|
|
7
|
-
本 reference 对应 CLI 的真实工具为 `qe`。实际 `tools.name` 与 `tool_endpoints.name`
|
|
8
|
-
必须逐字取自当前 CLI catalog。下列路径是 QE 服务契约,不是可直接访问的 URL,也不是
|
|
9
|
-
可以自动改写的 endpoint 别名。
|
|
10
|
-
|
|
11
|
-
## 能力分组
|
|
12
|
-
|
|
13
|
-
| 服务路径 | 作用 | 类型 |
|
|
14
|
-
| --- | --- | --- |
|
|
15
|
-
| `/chem/qe/health`、`/healthz`、`/readyz` | 运行时、scheduler、存储和 PP 就绪 | 只读 |
|
|
16
|
-
| `/chem/qe/v1/qe/workflow-types` | workflow catalog 和支持状态 | 只读 |
|
|
17
|
-
| `/chem/qe/v1/pp-sets`、`/pp-locks/{digest}` | 已发布 PP profile/lock | 只读 |
|
|
18
|
-
| `/chem/qe/v1/pp-sets:resolve` | 按 campaign 元素全集解析 PP 候选 | 只读/校验 |
|
|
19
|
-
| `/chem/qe/v1/artifacts` | 上传、查询和下载结构/fixed-coordinate artifact | 文件/二进制 |
|
|
20
|
-
| `/chem/qe/v1/qe/jobs` | 提交异步计算并查询 job | 远端变更 |
|
|
21
|
-
| `/chem/qe/v1/qe/jobs/{job_id}/events`、`steps`、`logs`、`artifacts` | 读取作业过程和结果 | 只读 |
|
|
22
|
-
| `/chem/qe/v1/qe/jobs/{job_id}:cancel`、`:retry`、`:review` | 取消、重试和科学审核 | 远端变更 |
|
|
23
|
-
|
|
24
|
-
选择新 operation 时,先使用:
|
|
25
|
-
|
|
26
|
-
```text
|
|
27
|
-
delta-cli science list
|
|
28
|
-
delta-cli science endpoints list <exact tool name>
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
再用目录返回的精确名称调用;如果 catalog 没有 schema,不猜测 operation、路径参数、
|
|
32
|
-
请求头或 body。
|
|
33
|
-
|
|
34
|
-
## CLI 的文件和幂等边界
|
|
35
|
-
|
|
36
|
-
结构 artifact 上传需要 `application/octet-stream` 和 query metadata,QE job 提交要求
|
|
37
|
-
稳定的 `Idempotency-Key`。`science invoke` 仍只用于 JSON/query;文件通过
|
|
38
|
-
`science file`,持久化 job 通过 `science task`:
|
|
39
|
-
|
|
40
|
-
- `delta-cli science file invoke --tool qe --endpoint artifact-upload --file <path>` 上传
|
|
41
|
-
结构 artifact;`custom-pp-upload` 同理并在 `--data` 中提供 `custom_pp_id`;
|
|
42
|
-
- `delta-cli science task submit --tool qe --operation job-submit --input JSON
|
|
43
|
-
--idempotency-key KEY` 提交 durable QE job,worker 将幂等键传给 Gateway;
|
|
44
|
-
- `delta-cli science file download --tool qe --endpoint artifact-content --params JSON
|
|
45
|
-
--output <path>` 下载原始 artifact;
|
|
46
|
-
- 不要把结构文本、文件路径、base64、`Idempotency-Key` 或 QE service credential 当成
|
|
47
|
-
普通业务字段发送,也不要调用公开/私有 Gateway URL 或 `qe-cloud-compute:18020`。
|
|
48
|
-
|
|
49
|
-
## 新作业的正确顺序
|
|
50
|
-
|
|
51
|
-
1. 读取 health;需要部署诊断时再读取 readiness,并从 workflow catalog 选择当前
|
|
52
|
-
`supported` 的 task。
|
|
53
|
-
2. 计算完整 `campaign_elements` 集合,使用 `pp-sets:resolve` 得到 profile;生产作业
|
|
54
|
-
必须使用服务返回的 `pp_set_id` 与不可变 `lock_id`,不能只凭 profile 名称推断 lock。
|
|
55
|
-
3. 让服务校验结构 artifact,job 只引用返回的 `sha256:<digest>` artifact ID。
|
|
56
|
-
4. 用稳定幂等语义提交 `qe/jobs`;接收 `202` 只代表 accepted/queued,不代表 QE 已收敛。
|
|
57
|
-
5. 轮询 job、events、steps、logs 和 artifacts;独立读取 `execution`、`solver`、
|
|
58
|
-
`scientific` 三个状态。
|
|
59
|
-
6. 下载结果时校验每个 artifact 的 SHA-256,并分别报告 selected backend、资源 telemetry、
|
|
60
|
-
solver 状态、scientific review 状态和 warnings。
|
|
61
|
-
|
|
62
|
-
PP 解析的最小业务数据形状如下;其中值必须来自当前服务/目录,不能填入虚构的生产 lock:
|
|
63
|
-
|
|
64
|
-
```json
|
|
65
|
-
{
|
|
66
|
-
"campaign_id": "si-bulk-scf-v1",
|
|
67
|
-
"campaign_elements": ["Si", "O"],
|
|
68
|
-
"workflows": ["qe.pw.scf"],
|
|
69
|
-
"explicit_mode": null
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
作业的核心结构如下,`workflow_inputs` 必须遵循当前 task schema:
|
|
74
|
-
|
|
75
|
-
```json
|
|
76
|
-
{
|
|
77
|
-
"task": "qe.pw.scf",
|
|
78
|
-
"schema_version": "1.1",
|
|
79
|
-
"campaign_id": "si-bulk-scf-v1",
|
|
80
|
-
"campaign_elements": ["Si"],
|
|
81
|
-
"structure": {"format": "artifact", "artifact_id": "sha256:<64-hex>"},
|
|
82
|
-
"physics": {
|
|
83
|
-
"parameter_set": "<approved-parameter-set>",
|
|
84
|
-
"pp_policy": {
|
|
85
|
-
"mode": "sssp_single",
|
|
86
|
-
"pp_set_id": "<approved-pp-set>",
|
|
87
|
-
"lock_id": "sha256:<64-hex>"
|
|
88
|
-
},
|
|
89
|
-
"kpoints": [4, 4, 4]
|
|
90
|
-
},
|
|
91
|
-
"resources": {
|
|
92
|
-
"profile": "standard",
|
|
93
|
-
"nodes": 1,
|
|
94
|
-
"mpi_ranks_per_node": 1,
|
|
95
|
-
"omp_threads_per_rank": 1,
|
|
96
|
-
"walltime_seconds": 3600,
|
|
97
|
-
"gpu_policy": "cpu"
|
|
98
|
-
},
|
|
99
|
-
"client_request_id": "si-scf-v1",
|
|
100
|
-
"workflow_inputs": {}
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## CPU/GPU 与状态解释
|
|
105
|
-
|
|
106
|
-
CPU 是默认策略,尤其适用于小/中型交互任务、PP/结构/审计/归档任务和成本敏感场景。
|
|
107
|
-
只有用户明确要求或项目已有 GPU 预算,并且 live catalog 返回
|
|
108
|
-
`gpu_support_status: "verified"` 时,才使用 `gpu`;强制 GPU 不得静默回退 CPU。只有
|
|
109
|
-
结果明确返回 `selected_backend: "gpu"` 才能声称实际使用 GPU;`auto` 不是 GPU 使用证明。
|
|
110
|
-
|
|
111
|
-
三个状态通道不可合并:
|
|
112
|
-
|
|
113
|
-
- `execution`:prepared/submitted/queued/running/scheduler completion/cancelled/failed;
|
|
114
|
-
- `solver`:not started/running/converged/not converged/failed/unknown;
|
|
115
|
-
- `scientific`:unreviewed、scientifically accepted、accepted with limitations、needs
|
|
116
|
-
recalculation、not assessable、failed 或 archived。
|
|
117
|
-
|
|
118
|
-
scheduler 完成不等于 solver 收敛,solver 收敛也不等于 scientific acceptance。按稳定
|
|
119
|
-
错误码而不是 message 分支,重点包括 `PP_SET_INCOMPLETE`、`PP_POLICY_INCOMPATIBLE`、
|
|
120
|
-
`PP_CAPABILITY_UNKNOWN`、`ARTIFACT_MISSING`、`SOLVER_NOT_CONVERGED`、
|
|
121
|
-
`SCIENTIFIC_GATE_FAILED`、`RESTART_INCOMPATIBLE`、`IDEMPOTENCY_CONFLICT`、
|
|
122
|
-
`EXECUTION_BACKEND_NOT_READY`、`GPU_UNSUPPORTED` 和 `GPU_UNAVAILABLE`。
|
|
123
|
-
|
|
124
|
-
提交、取消、重试或审核属于远端变更,必须有用户明确授权;结果未知时禁止重试。不要把
|
|
125
|
-
GPU smoke test、scheduler 日志或可解析的 QE 输出描述成科学结论或客户级性能保证。
|
|
1
|
+
# Quantum ESPRESSO DFT 详细规则
|
|
2
|
+
|
|
3
|
+
QE 用于通过 Chemistry Gateway 执行可追踪的异步 Quantum ESPRESSO 工作流。agent 只接触
|
|
4
|
+
Gateway/Science Server contract,不运行本地 `pw.x`,不调用内部 QE 容器,也不提交 shell
|
|
5
|
+
命令、scheduler 脚本、`pseudo_dir`、`outdir` 或主机路径。
|
|
6
|
+
|
|
7
|
+
本 reference 对应 CLI 的真实工具为 `qe`。实际 `tools.name` 与 `tool_endpoints.name`
|
|
8
|
+
必须逐字取自当前 CLI catalog。下列路径是 QE 服务契约,不是可直接访问的 URL,也不是
|
|
9
|
+
可以自动改写的 endpoint 别名。
|
|
10
|
+
|
|
11
|
+
## 能力分组
|
|
12
|
+
|
|
13
|
+
| 服务路径 | 作用 | 类型 |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| `/chem/qe/health`、`/healthz`、`/readyz` | 运行时、scheduler、存储和 PP 就绪 | 只读 |
|
|
16
|
+
| `/chem/qe/v1/qe/workflow-types` | workflow catalog 和支持状态 | 只读 |
|
|
17
|
+
| `/chem/qe/v1/pp-sets`、`/pp-locks/{digest}` | 已发布 PP profile/lock | 只读 |
|
|
18
|
+
| `/chem/qe/v1/pp-sets:resolve` | 按 campaign 元素全集解析 PP 候选 | 只读/校验 |
|
|
19
|
+
| `/chem/qe/v1/artifacts` | 上传、查询和下载结构/fixed-coordinate artifact | 文件/二进制 |
|
|
20
|
+
| `/chem/qe/v1/qe/jobs` | 提交异步计算并查询 job | 远端变更 |
|
|
21
|
+
| `/chem/qe/v1/qe/jobs/{job_id}/events`、`steps`、`logs`、`artifacts` | 读取作业过程和结果 | 只读 |
|
|
22
|
+
| `/chem/qe/v1/qe/jobs/{job_id}:cancel`、`:retry`、`:review` | 取消、重试和科学审核 | 远端变更 |
|
|
23
|
+
|
|
24
|
+
选择新 operation 时,先使用:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
delta-cli science list
|
|
28
|
+
delta-cli science endpoints list <exact tool name>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
再用目录返回的精确名称调用;如果 catalog 没有 schema,不猜测 operation、路径参数、
|
|
32
|
+
请求头或 body。
|
|
33
|
+
|
|
34
|
+
## CLI 的文件和幂等边界
|
|
35
|
+
|
|
36
|
+
结构 artifact 上传需要 `application/octet-stream` 和 query metadata,QE job 提交要求
|
|
37
|
+
稳定的 `Idempotency-Key`。`science invoke` 仍只用于 JSON/query;文件通过
|
|
38
|
+
`science file`,持久化 job 通过 `science task`:
|
|
39
|
+
|
|
40
|
+
- `delta-cli science file invoke --tool qe --endpoint artifact-upload --file <path>` 上传
|
|
41
|
+
结构 artifact;`custom-pp-upload` 同理并在 `--data` 中提供 `custom_pp_id`;
|
|
42
|
+
- `delta-cli science task submit --tool qe --operation job-submit --input JSON
|
|
43
|
+
--idempotency-key KEY` 提交 durable QE job,worker 将幂等键传给 Gateway;
|
|
44
|
+
- `delta-cli science file download --tool qe --endpoint artifact-content --params JSON
|
|
45
|
+
--output <path>` 下载原始 artifact;
|
|
46
|
+
- 不要把结构文本、文件路径、base64、`Idempotency-Key` 或 QE service credential 当成
|
|
47
|
+
普通业务字段发送,也不要调用公开/私有 Gateway URL 或 `qe-cloud-compute:18020`。
|
|
48
|
+
|
|
49
|
+
## 新作业的正确顺序
|
|
50
|
+
|
|
51
|
+
1. 读取 health;需要部署诊断时再读取 readiness,并从 workflow catalog 选择当前
|
|
52
|
+
`supported` 的 task。
|
|
53
|
+
2. 计算完整 `campaign_elements` 集合,使用 `pp-sets:resolve` 得到 profile;生产作业
|
|
54
|
+
必须使用服务返回的 `pp_set_id` 与不可变 `lock_id`,不能只凭 profile 名称推断 lock。
|
|
55
|
+
3. 让服务校验结构 artifact,job 只引用返回的 `sha256:<digest>` artifact ID。
|
|
56
|
+
4. 用稳定幂等语义提交 `qe/jobs`;接收 `202` 只代表 accepted/queued,不代表 QE 已收敛。
|
|
57
|
+
5. 轮询 job、events、steps、logs 和 artifacts;独立读取 `execution`、`solver`、
|
|
58
|
+
`scientific` 三个状态。
|
|
59
|
+
6. 下载结果时校验每个 artifact 的 SHA-256,并分别报告 selected backend、资源 telemetry、
|
|
60
|
+
solver 状态、scientific review 状态和 warnings。
|
|
61
|
+
|
|
62
|
+
PP 解析的最小业务数据形状如下;其中值必须来自当前服务/目录,不能填入虚构的生产 lock:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"campaign_id": "si-bulk-scf-v1",
|
|
67
|
+
"campaign_elements": ["Si", "O"],
|
|
68
|
+
"workflows": ["qe.pw.scf"],
|
|
69
|
+
"explicit_mode": null
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
作业的核心结构如下,`workflow_inputs` 必须遵循当前 task schema:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"task": "qe.pw.scf",
|
|
78
|
+
"schema_version": "1.1",
|
|
79
|
+
"campaign_id": "si-bulk-scf-v1",
|
|
80
|
+
"campaign_elements": ["Si"],
|
|
81
|
+
"structure": {"format": "artifact", "artifact_id": "sha256:<64-hex>"},
|
|
82
|
+
"physics": {
|
|
83
|
+
"parameter_set": "<approved-parameter-set>",
|
|
84
|
+
"pp_policy": {
|
|
85
|
+
"mode": "sssp_single",
|
|
86
|
+
"pp_set_id": "<approved-pp-set>",
|
|
87
|
+
"lock_id": "sha256:<64-hex>"
|
|
88
|
+
},
|
|
89
|
+
"kpoints": [4, 4, 4]
|
|
90
|
+
},
|
|
91
|
+
"resources": {
|
|
92
|
+
"profile": "standard",
|
|
93
|
+
"nodes": 1,
|
|
94
|
+
"mpi_ranks_per_node": 1,
|
|
95
|
+
"omp_threads_per_rank": 1,
|
|
96
|
+
"walltime_seconds": 3600,
|
|
97
|
+
"gpu_policy": "cpu"
|
|
98
|
+
},
|
|
99
|
+
"client_request_id": "si-scf-v1",
|
|
100
|
+
"workflow_inputs": {}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## CPU/GPU 与状态解释
|
|
105
|
+
|
|
106
|
+
CPU 是默认策略,尤其适用于小/中型交互任务、PP/结构/审计/归档任务和成本敏感场景。
|
|
107
|
+
只有用户明确要求或项目已有 GPU 预算,并且 live catalog 返回
|
|
108
|
+
`gpu_support_status: "verified"` 时,才使用 `gpu`;强制 GPU 不得静默回退 CPU。只有
|
|
109
|
+
结果明确返回 `selected_backend: "gpu"` 才能声称实际使用 GPU;`auto` 不是 GPU 使用证明。
|
|
110
|
+
|
|
111
|
+
三个状态通道不可合并:
|
|
112
|
+
|
|
113
|
+
- `execution`:prepared/submitted/queued/running/scheduler completion/cancelled/failed;
|
|
114
|
+
- `solver`:not started/running/converged/not converged/failed/unknown;
|
|
115
|
+
- `scientific`:unreviewed、scientifically accepted、accepted with limitations、needs
|
|
116
|
+
recalculation、not assessable、failed 或 archived。
|
|
117
|
+
|
|
118
|
+
scheduler 完成不等于 solver 收敛,solver 收敛也不等于 scientific acceptance。按稳定
|
|
119
|
+
错误码而不是 message 分支,重点包括 `PP_SET_INCOMPLETE`、`PP_POLICY_INCOMPATIBLE`、
|
|
120
|
+
`PP_CAPABILITY_UNKNOWN`、`ARTIFACT_MISSING`、`SOLVER_NOT_CONVERGED`、
|
|
121
|
+
`SCIENTIFIC_GATE_FAILED`、`RESTART_INCOMPATIBLE`、`IDEMPOTENCY_CONFLICT`、
|
|
122
|
+
`EXECUTION_BACKEND_NOT_READY`、`GPU_UNSUPPORTED` 和 `GPU_UNAVAILABLE`。
|
|
123
|
+
|
|
124
|
+
提交、取消、重试或审核属于远端变更,必须有用户明确授权;结果未知时禁止重试。不要把
|
|
125
|
+
GPU smoke test、scheduler 日志或可解析的 QE 输出描述成科学结论或客户级性能保证。
|