@luffysolution/omnischolar-pi 0.1.1 → 0.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.
@@ -1,130 +1,130 @@
1
- # 配置
2
-
3
- [English](CONFIGURATION.en.md)
4
-
5
- OmniScholar 使用 `schemaVersion: 1` 的 JSON 配置。可直接复制根目录的 [`omnischolar.config.example.json`](../omnischolar.config.example.json),再删除不需要的服务。
6
-
7
- ## 配置文件位置
8
-
9
- 程序使用找到的第一个配置文件,不合并多份配置:
10
-
11
- 1. `--config PATH` 指定的文件
12
- 2. `OMNISCHOLAR_CONFIG` 指向的文件
13
- 3. 当前项目的 `omnischolar.config.json`
14
- 4. 用户配置目录中的 `omnischolar/omnischolar.config.json`
15
- 5. 内置默认值
16
-
17
- 相对路径以配置文件所在目录为基准。拼错字段名或填写不合法的值时,程序会直接报错。
18
-
19
- ## 最小配置
20
-
21
- ```json
22
- {
23
- "schemaVersion": 1,
24
- "runtime": {
25
- "workspaceRoots": ["./research-inputs"],
26
- "requestTimeoutSeconds": 30
27
- },
28
- "zotero": {
29
- "enabled": true,
30
- "baseUrl": "http://127.0.0.1:23119/api"
31
- },
32
- "output": {
33
- "rootDirectory": "./research-output"
34
- }
35
- }
36
- ```
37
-
38
- `workspaceRoots` 限定可读取的本地文件,`output.rootDirectory` 限定写入位置。若要直接写入 Obsidian,可把输出目录设为 Vault 中的一个文件夹。
39
-
40
- ## API key
41
-
42
- 建议把 key 存入环境变量,配置中只写变量名:
43
-
44
- ```json
45
- {
46
- "schemaVersion": 1,
47
- "ai4scholar": {
48
- "enabled": true,
49
- "apiKeyEnv": "OMNISCHOLAR_AI4SCHOLAR_API_KEY",
50
- "allowPaid": false
51
- },
52
- "data": {
53
- "materialsProject": {
54
- "enabled": true,
55
- "apiKeyEnv": "OMNISCHOLAR_MATERIALS_PROJECT_API_KEY"
56
- }
57
- }
58
- }
59
- ```
60
-
61
- 读取顺序为 `apiKey`、`apiKeyEnv` 指向的环境变量、该服务的默认环境变量。不要把明文 key 写入 Agent 的 MCP 配置、Skills、命令行或版本库。
62
-
63
- | 服务 | 是否需要 key 或其他信息 |
64
- |---|---|
65
- | OpenAlex、PubMed、arXiv、Crossref | 基本检索无需 key;PubMed key 可提高 NCBI 请求额度 |
66
- | Semantic Scholar | key 可选;匿名共享流量更容易遇到 429 |
67
- | Unpaywall | 需要联系邮箱 |
68
- | easyScholar | 需要 API key |
69
- | Zotero | 不需要 key;需开启本地 API |
70
- | MinerU | 需要 API key,并确认 PDF 上传 |
71
- | Ai4Scholar | 需要 API key,部分调用消耗额度 |
72
- | Materials Project | 需要 API key |
73
- | 图片服务 | 按服务商要求配置 key、模型和服务地址 |
74
- | CAS Common Chemistry | 当前还需要服务商提供的正式接口说明文件 |
75
-
76
- ## 付费与上传
77
-
78
- 保存 key 不会自动允许付费或上传。
79
-
80
- - Ai4Scholar 和图片生成需在配置中启用 `allowPaid`,调用时还要再次确认 `allowPaid`。
81
- - MinerU 与参考图上传需在配置中启用 `allowExternalUpload`,调用时还要再次确认同名参数。
82
- - 同步恢复只处理本地文件,不会沿用以前的上传许可。
83
- - 付费请求超时后,如果服务端结果不明确,程序不会自动重试。
84
-
85
- ## 文献检索
86
-
87
- ```json
88
- {
89
- "schemaVersion": 1,
90
- "research": {
91
- "fallback": true,
92
- "maxPages": 5,
93
- "providers": {
94
- "openalex": { "enabled": true, "email": "researcher@example.org" },
95
- "pubmed": { "enabled": true, "email": "researcher@example.org" },
96
- "arxiv": { "enabled": true },
97
- "crossref": { "enabled": true, "email": "researcher@example.org" },
98
- "unpaywall": { "enabled": true, "email": "researcher@example.org" }
99
- }
100
- }
101
- }
102
- ```
103
-
104
- `fallback` 只会改用支持同一项查询的服务。HTTP 429 会作为限流结果返回,不会触发连续重试。
105
-
106
- ## MinerU
107
-
108
- ```json
109
- {
110
- "schemaVersion": 1,
111
- "mineru": {
112
- "enabled": true,
113
- "apiKeyEnv": "OMNISCHOLAR_MINERU_API_KEY",
114
- "model": "pipeline",
115
- "allowExternalUpload": false
116
- }
117
- }
118
- ```
119
-
120
- 默认不启用 MinerU v1 备用接口。当前文档对页数限制的描述不一致,因此程序不会自行切换接口。
121
-
122
- ## 检查配置
123
-
124
- ```sh
125
- omnischolar config path
126
- omnischolar config schema
127
- omnischolar status
128
- omnischolar doctor --json
129
- ```
130
-
1
+ # 配置
2
+
3
+ [English](CONFIGURATION.en.md)
4
+
5
+ OmniScholar 使用 `schemaVersion: 1` 的 JSON 配置。可直接复制根目录的 [`omnischolar.config.example.json`](../omnischolar.config.example.json),再删除不需要的服务。
6
+
7
+ ## 配置文件位置
8
+
9
+ 程序使用找到的第一个配置文件,不合并多份配置:
10
+
11
+ 1. `--config PATH` 指定的文件
12
+ 2. `OMNISCHOLAR_CONFIG` 指向的文件
13
+ 3. 当前项目的 `omnischolar.config.json`
14
+ 4. 用户配置目录中的 `omnischolar/omnischolar.config.json`
15
+ 5. 内置默认值
16
+
17
+ 相对路径以配置文件所在目录为基准。拼错字段名或填写不合法的值时,程序会直接报错。
18
+
19
+ ## 最小配置
20
+
21
+ ```json
22
+ {
23
+ "schemaVersion": 1,
24
+ "runtime": {
25
+ "workspaceRoots": ["./research-inputs"],
26
+ "requestTimeoutSeconds": 30
27
+ },
28
+ "zotero": {
29
+ "enabled": true,
30
+ "baseUrl": "http://127.0.0.1:23119/api"
31
+ },
32
+ "output": {
33
+ "rootDirectory": "./research-output"
34
+ }
35
+ }
36
+ ```
37
+
38
+ `workspaceRoots` 限定可读取的本地文件,`output.rootDirectory` 限定写入位置。若要直接写入 Obsidian,可把输出目录设为 Vault 中的一个文件夹。
39
+
40
+ ## API key
41
+
42
+ 建议把 key 存入环境变量,配置中只写变量名:
43
+
44
+ ```json
45
+ {
46
+ "schemaVersion": 1,
47
+ "ai4scholar": {
48
+ "enabled": true,
49
+ "apiKeyEnv": "OMNISCHOLAR_AI4SCHOLAR_API_KEY",
50
+ "allowPaid": false
51
+ },
52
+ "data": {
53
+ "materialsProject": {
54
+ "enabled": true,
55
+ "apiKeyEnv": "OMNISCHOLAR_MATERIALS_PROJECT_API_KEY"
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ 读取顺序为 `apiKey`、`apiKeyEnv` 指向的环境变量、该服务的默认环境变量。不要把明文 key 写入 Agent 的 MCP 配置、Skills、命令行或版本库。
62
+
63
+ | 服务 | 是否需要 key 或其他信息 |
64
+ |---|---|
65
+ | OpenAlex、PubMed、arXiv、Crossref | 基本检索无需 key;PubMed key 可提高 NCBI 请求额度 |
66
+ | Semantic Scholar | key 可选;匿名共享流量更容易遇到 429 |
67
+ | Unpaywall | 需要联系邮箱 |
68
+ | easyScholar | 需要 API key |
69
+ | Zotero | 不需要 key;需开启本地 API |
70
+ | MinerU | 需要 API key,并确认 PDF 上传 |
71
+ | Ai4Scholar | 需要 API key,部分调用消耗额度 |
72
+ | Materials Project | 需要 API key |
73
+ | 图片服务 | 按服务商要求配置 key、模型和服务地址 |
74
+ | CAS Common Chemistry | 当前还需要服务商提供的正式接口说明文件 |
75
+
76
+ ## 付费与上传
77
+
78
+ 保存 key 不会自动允许付费或上传。
79
+
80
+ - Ai4Scholar 和图片生成需在配置中启用 `allowPaid`,调用时还要再次确认 `allowPaid`。
81
+ - MinerU 与参考图上传需在配置中启用 `allowExternalUpload`,调用时还要再次确认同名参数。
82
+ - 同步恢复只处理本地文件,不会沿用以前的上传许可。
83
+ - 付费请求超时后,如果服务端结果不明确,程序不会自动重试。
84
+
85
+ ## 文献检索
86
+
87
+ ```json
88
+ {
89
+ "schemaVersion": 1,
90
+ "research": {
91
+ "fallback": true,
92
+ "maxPages": 5,
93
+ "providers": {
94
+ "openalex": { "enabled": true, "email": "researcher@example.org" },
95
+ "pubmed": { "enabled": true, "email": "researcher@example.org" },
96
+ "arxiv": { "enabled": true },
97
+ "crossref": { "enabled": true, "email": "researcher@example.org" },
98
+ "unpaywall": { "enabled": true, "email": "researcher@example.org" }
99
+ }
100
+ }
101
+ }
102
+ ```
103
+
104
+ `fallback` 只会改用支持同一项查询的服务。HTTP 429 会作为限流结果返回,不会触发连续重试。
105
+
106
+ ## MinerU
107
+
108
+ ```json
109
+ {
110
+ "schemaVersion": 1,
111
+ "mineru": {
112
+ "enabled": true,
113
+ "apiKeyEnv": "OMNISCHOLAR_MINERU_API_KEY",
114
+ "model": "pipeline",
115
+ "allowExternalUpload": false
116
+ }
117
+ }
118
+ ```
119
+
120
+ 默认不启用 MinerU v1 备用接口。当前文档对页数限制的描述不一致,因此程序不会自行切换接口。
121
+
122
+ ## 检查配置
123
+
124
+ ```sh
125
+ omnischolar config path
126
+ omnischolar config schema
127
+ omnischolar status
128
+ omnischolar doctor --json
129
+ ```
130
+
@@ -1,58 +1,76 @@
1
- # Scientific image services
2
-
3
- [简体中文](IMAGE_PROVIDERS.md)
4
-
5
- OmniScholar can connect to OpenAI, xAI, Gemini, Vertex AI, fal.ai, DashScope/Qwen, Atlas, and custom OpenAI-compatible services. Available models depend on the account, region, endpoint, and configuration.
6
-
7
- ## Tools
8
-
9
- | Tool | Use |
10
- |---|---|
11
- | `omnischolar_image_models` | Show configured models and their usable operations |
12
- | `omnischolar_image_generate` | Text-to-image, image-to-image, or multi-reference generation |
13
- | `omnischolar_image_edit` | Edit an existing image |
14
- | `omnischolar_image_service` | Run supported provider status, model, or task operations |
15
- | `ai4scholar_figure` | Generate, edit, or vectorize through Ai4Scholar |
16
-
17
- Each model must explicitly declare the operation it supports. A model name appearing in a provider catalog does not by itself prove that it can generate or edit images; the corresponding operation must show `usable: true` in `omnischolar_image_models`.
18
-
19
- ## Example config
20
-
21
- ```json
22
- {
23
- "schemaVersion": 1,
24
- "defaults": {
25
- "defaultImageProvider": "fal"
26
- },
27
- "media": {
28
- "allowPaid": false,
29
- "allowExternalUpload": false,
30
- "providers": {
31
- "fal": {
32
- "enabled": true,
33
- "apiKeyEnv": "OMNISCHOLAR_FAL_API_KEY",
34
- "baseUrl": "https://fal.run",
35
- "models": {},
36
- "options": {}
37
- }
38
- }
39
- }
40
- }
41
- ```
42
-
43
- A custom service needs an exact `baseUrl`, model ID, capability list, and generation or edit endpoint. Do not infer capabilities from the model name.
44
-
45
- ## Generate and edit
46
-
47
- Before submitting a task, define the scientific content, labels, units, aspect ratio, and file format. Generation requires `allowPaid` for that call. Uploading a reference image also requires `allowExternalUpload` for that call.
48
-
49
- Upload only images you may share with the selected service. After files are saved, signed URLs and base64 source data are removed from the returned payload. Downloads are checked for public HTTPS, file size, MIME type, and image signature. If one file in a multi-file result is missing, the incomplete set is not published.
50
-
51
- ## Current provider notes
52
-
53
- - fal has been tested for queue submission, polling, data-URI results, text-to-image, and two-reference editing. If the local machine cannot resolve the fal CDN, a data-URI result can still be saved.
54
- - DashScope/Qwen currently needs a workspace-scoped endpoint or an explicit `baseUrl` supplied by the provider. A retired generic endpoint returns `dashscope_workspace_required`.
55
- - Gemini's `apiKeyEnv` must name an environment variable that exists.
56
- - Atlas and custom services need a working endpoint and model description.
57
-
58
- Review text, structures, mechanisms, scale, and quantitative labels after generation. **AI images are illustrative drafts, not experimental data, real measurements, or scientific conclusions.**
1
+ # Scientific image services
2
+
3
+ [简体中文](IMAGE_PROVIDERS.md)
4
+
5
+ OmniScholar can connect to OpenAI, xAI, Gemini, Vertex AI, fal.ai, DashScope/Qwen, Atlas, and custom OpenAI-compatible services. Available models depend on the account, region, endpoint, and configuration.
6
+
7
+ ## Tools
8
+
9
+ | Tool | Use |
10
+ |---|---|
11
+ | `omnischolar_image_models` | Show configured models and their usable operations |
12
+ | `omnischolar_image_generate` | Text-to-image, image-to-image, or multi-reference generation |
13
+ | `omnischolar_image_edit` | Edit an existing image |
14
+ | `omnischolar_image_service` | Run supported provider status, model, or task operations |
15
+ | `ai4scholar_figure` | Generate, edit, or vectorize through Ai4Scholar |
16
+
17
+ Each model must explicitly declare the operation it supports. A model name appearing in a provider catalog does not by itself prove that it can generate or edit images; the corresponding operation must show `usable: true` in `omnischolar_image_models`.
18
+
19
+ ## Example config
20
+
21
+ ```json
22
+ {
23
+ "schemaVersion": 1,
24
+ "defaults": {
25
+ "defaultImageProvider": "fal"
26
+ },
27
+ "media": {
28
+ "allowPaid": false,
29
+ "allowExternalUpload": false,
30
+ "providers": {
31
+ "fal": {
32
+ "enabled": true,
33
+ "apiKeyEnv": "OMNISCHOLAR_FAL_API_KEY",
34
+ "baseUrl": "https://fal.run",
35
+ "models": {},
36
+ "options": {}
37
+ },
38
+ "dashscope": {
39
+ "enabled": false,
40
+ "apiKeyEnv": "OMNISCHOLAR_DASHSCOPE_API_KEY",
41
+ "baseUrl": "https://your-workspace.cn-beijing.maas.aliyuncs.com/api/v1",
42
+ "models": {},
43
+ "options": {
44
+ "workspace": "your-workspace"
45
+ }
46
+ },
47
+ "qwen-cloud": {
48
+ "enabled": false,
49
+ "apiKeyEnv": "OMNISCHOLAR_QWEN_API_KEY",
50
+ "baseUrl": "https://your-workspace.ap-southeast-1.maas.aliyuncs.com/api/v1",
51
+ "models": {},
52
+ "options": {
53
+ "workspace": "your-workspace"
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ A custom service needs an exact `baseUrl`, model ID, capability list, and generation or edit endpoint. Do not infer capabilities from the model name.
62
+
63
+ ## Generate and edit
64
+
65
+ Before submitting a task, define the scientific content, labels, units, aspect ratio, and file format. Generation requires `allowPaid` for that call. Uploading a reference image also requires `allowExternalUpload` for that call.
66
+
67
+ Upload only images you may share with the selected service. After files are saved, signed URLs and base64 source data are removed from the returned payload. Downloads are checked for public HTTPS, file size, MIME type, and image signature. If one file in a multi-file result is missing, the incomplete set is not published.
68
+
69
+ ## Current provider notes
70
+
71
+ - fal has been tested for queue submission, polling, data-URI results, text-to-image, and two-reference editing. If the local machine cannot resolve the fal CDN, a data-URI result can still be saved.
72
+ - DashScope/Qwen currently needs a workspace-scoped endpoint or an explicit `baseUrl` supplied by the provider. China workspaces use an address such as `https://<workspace>.cn-beijing.maas.aliyuncs.com/api/v1`; international workspaces use `https://<workspace>.ap-southeast-1.maas.aliyuncs.com/api/v1`. A retired generic endpoint returns `dashscope_workspace_required`.
73
+ - Gemini's `apiKeyEnv` must name an environment variable that exists.
74
+ - Atlas and custom services need a working endpoint and model description.
75
+
76
+ Review text, structures, mechanisms, scale, and quantitative labels after generation. **AI images are illustrative drafts, not experimental data, real measurements, or scientific conclusions.**
@@ -1,58 +1,76 @@
1
- # 科研绘图服务
2
-
3
- [English](IMAGE_PROVIDERS.en.md)
4
-
5
- OmniScholar 可连接 OpenAI、xAI、Gemini、Vertex AI、fal.ai、DashScope/Qwen、Atlas 和自定义 OpenAI 兼容服务。实际可用模型取决于账号、地区、服务地址和配置。
6
-
7
- ## 工具
8
-
9
- | 工具 | 用途 |
10
- |---|---|
11
- | `omnischolar_image_models` | 查看已配置模型及其可用功能 |
12
- | `omnischolar_image_generate` | 文生图、图生图或多参考图生成 |
13
- | `omnischolar_image_edit` | 编辑已有图片 |
14
- | `omnischolar_image_service` | 调用服务商已经支持的状态、模型或任务操作 |
15
- | `ai4scholar_figure` | 使用 Ai4Scholar 生成、编辑或矢量化图片 |
16
-
17
- 每个模型都必须明确声明支持的功能。模型名出现在服务商目录中,并不自动代表它可以生图或编辑;`omnischolar_image_models` 中对应功能需要显示 `usable: true`。
18
-
19
- ## 配置示例
20
-
21
- ```json
22
- {
23
- "schemaVersion": 1,
24
- "defaults": {
25
- "defaultImageProvider": "fal"
26
- },
27
- "media": {
28
- "allowPaid": false,
29
- "allowExternalUpload": false,
30
- "providers": {
31
- "fal": {
32
- "enabled": true,
33
- "apiKeyEnv": "OMNISCHOLAR_FAL_API_KEY",
34
- "baseUrl": "https://fal.run",
35
- "models": {},
36
- "options": {}
37
- }
38
- }
39
- }
40
- }
41
- ```
42
-
43
- 自定义服务需要填写准确的 `baseUrl`、模型 ID、功能列表,以及生成或编辑接口。不要只凭模型名填写功能。
44
-
45
- ## 生成与编辑
46
-
47
- 提交任务前应明确图片要表达的科学内容、标签、单位、比例和文件格式。生成需要本次 `allowPaid` 授权;上传参考图还需要本次 `allowExternalUpload` 授权。
48
-
49
- 只能上传有权交给第三方处理的图片。图片保存后,返回结果中的签名 URL 和 base64 原文会被移除。下载文件会检查 HTTPS 地址、文件大小、MIME 类型和图片文件头;多文件任务缺少任一文件时,不发布不完整结果。
50
-
51
- ## 当前服务说明
52
-
53
- - fal 已验证队列提交、轮询、data URI 结果、文生图和双参考图编辑。本机若无法解析 fal CDN,data URI 结果仍可保存。
54
- - DashScope/Qwen 当前需要绑定 workspace 的服务地址,或服务商明确提供的 `baseUrl`。旧通用地址会返回 `dashscope_workspace_required`。
55
- - Gemini 配置中的 `apiKeyEnv` 必须指向已存在的环境变量。
56
- - Atlas 和自定义服务必须给出可用的服务地址与模型说明。
57
-
58
- 生成后仍需人工检查文字、结构、机制、比例和定量描述。**AI 图片是示意草稿,不是实验数据、真实测量或科研结论。**
1
+ # 科研绘图服务
2
+
3
+ [English](IMAGE_PROVIDERS.en.md)
4
+
5
+ OmniScholar 可连接 OpenAI、xAI、Gemini、Vertex AI、fal.ai、DashScope/Qwen、Atlas 和自定义 OpenAI 兼容服务。实际可用模型取决于账号、地区、服务地址和配置。
6
+
7
+ ## 工具
8
+
9
+ | 工具 | 用途 |
10
+ |---|---|
11
+ | `omnischolar_image_models` | 查看已配置模型及其可用功能 |
12
+ | `omnischolar_image_generate` | 文生图、图生图或多参考图生成 |
13
+ | `omnischolar_image_edit` | 编辑已有图片 |
14
+ | `omnischolar_image_service` | 调用服务商已经支持的状态、模型或任务操作 |
15
+ | `ai4scholar_figure` | 使用 Ai4Scholar 生成、编辑或矢量化图片 |
16
+
17
+ 每个模型都必须明确声明支持的功能。模型名出现在服务商目录中,并不自动代表它可以生图或编辑;`omnischolar_image_models` 中对应功能需要显示 `usable: true`。
18
+
19
+ ## 配置示例
20
+
21
+ ```json
22
+ {
23
+ "schemaVersion": 1,
24
+ "defaults": {
25
+ "defaultImageProvider": "fal"
26
+ },
27
+ "media": {
28
+ "allowPaid": false,
29
+ "allowExternalUpload": false,
30
+ "providers": {
31
+ "fal": {
32
+ "enabled": true,
33
+ "apiKeyEnv": "OMNISCHOLAR_FAL_API_KEY",
34
+ "baseUrl": "https://fal.run",
35
+ "models": {},
36
+ "options": {}
37
+ },
38
+ "dashscope": {
39
+ "enabled": false,
40
+ "apiKeyEnv": "OMNISCHOLAR_DASHSCOPE_API_KEY",
41
+ "baseUrl": "https://your-workspace.cn-beijing.maas.aliyuncs.com/api/v1",
42
+ "models": {},
43
+ "options": {
44
+ "workspace": "your-workspace"
45
+ }
46
+ },
47
+ "qwen-cloud": {
48
+ "enabled": false,
49
+ "apiKeyEnv": "OMNISCHOLAR_QWEN_API_KEY",
50
+ "baseUrl": "https://your-workspace.ap-southeast-1.maas.aliyuncs.com/api/v1",
51
+ "models": {},
52
+ "options": {
53
+ "workspace": "your-workspace"
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ 自定义服务需要填写准确的 `baseUrl`、模型 ID、功能列表,以及生成或编辑接口。不要只凭模型名填写功能。
62
+
63
+ ## 生成与编辑
64
+
65
+ 提交任务前应明确图片要表达的科学内容、标签、单位、比例和文件格式。生成需要本次 `allowPaid` 授权;上传参考图还需要本次 `allowExternalUpload` 授权。
66
+
67
+ 只能上传有权交给第三方处理的图片。图片保存后,返回结果中的签名 URL 和 base64 原文会被移除。下载文件会检查 HTTPS 地址、文件大小、MIME 类型和图片文件头;多文件任务缺少任一文件时,不发布不完整结果。
68
+
69
+ ## 当前服务说明
70
+
71
+ - fal 已验证队列提交、轮询、data URI 结果、文生图和双参考图编辑。本机若无法解析 fal CDN,data URI 结果仍可保存。
72
+ - DashScope/Qwen 当前需要绑定 workspace 的服务地址,或服务商明确提供的 `baseUrl`。中国区地址形如 `https://<workspace>.cn-beijing.maas.aliyuncs.com/api/v1`,国际区地址形如 `https://<workspace>.ap-southeast-1.maas.aliyuncs.com/api/v1`。旧通用地址会返回 `dashscope_workspace_required`。
73
+ - Gemini 配置中的 `apiKeyEnv` 必须指向已存在的环境变量。
74
+ - Atlas 和自定义服务必须给出可用的服务地址与模型说明。
75
+
76
+ 生成后仍需人工检查文字、结构、机制、比例和定量描述。**AI 图片是示意草稿,不是实验数据、真实测量或科研结论。**