@bgicli/bgicli 2.4.3 → 2.4.4
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 +54 -41
- package/dist/bgi.js +68 -66
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
**BGI CLI** 是面向中国生物学研究者的 AI 终端工具,开箱即用,无需额外配置。
|
|
4
4
|
|
|
5
|
-
- ✅ **开箱即用** —
|
|
6
|
-
- ✅ **内置
|
|
5
|
+
- ✅ **开箱即用** — clone 仓库后一键安装即可
|
|
6
|
+
- ✅ **内置 1001 个技能** — 涵盖生信分析、结构生物学、药物发现、临床等全领域,自动安装
|
|
7
7
|
- ✅ **智能技能路由** — 描述任务自动激活对应技能,无需手动搜索
|
|
8
8
|
- ✅ **中国 AI 服务商** — 百炼(DashScope)聚合:Qwen、DeepSeek、Kimi、MiniMax 等 20+ 模型
|
|
9
9
|
- ✅ **真实工具调用** — 执行 bash、读写文件、运行 R/Python 脚本
|
|
@@ -13,26 +13,43 @@
|
|
|
13
13
|
|
|
14
14
|
## 安装
|
|
15
15
|
|
|
16
|
+
**环境要求:** Node.js 18+
|
|
17
|
+
|
|
16
18
|
```bash
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
git clone https://gitlab.genomics.cn/ai/bgi-cli.git
|
|
20
|
+
cd bgi-cli
|
|
21
|
+
npm install
|
|
22
|
+
npm run build
|
|
23
|
+
sudo npm link
|
|
19
24
|
```
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
> **macOS / Linux 无 root 权限时**,`npm link` 可能报 EACCES 权限错误,需先配置 npm 用户目录:
|
|
27
|
+
> ```bash
|
|
28
|
+
> mkdir -p ~/.npm-global
|
|
29
|
+
> npm config set prefix '~/.npm-global'
|
|
30
|
+
> echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc # zsh 用户改为 ~/.zshrc
|
|
31
|
+
> source ~/.bashrc
|
|
32
|
+
> npm link # 再次执行
|
|
33
|
+
> ```
|
|
34
|
+
|
|
35
|
+
安装完成后直接运行:
|
|
22
36
|
|
|
23
37
|
```bash
|
|
24
38
|
bgi
|
|
25
39
|
```
|
|
26
40
|
|
|
41
|
+
首次运行自动初始化技能库(约 16MB),无需额外操作。
|
|
42
|
+
|
|
27
43
|
---
|
|
28
44
|
|
|
29
45
|
## 卸载
|
|
30
46
|
|
|
31
47
|
```bash
|
|
32
|
-
#
|
|
33
|
-
|
|
48
|
+
# 卸载命令行工具
|
|
49
|
+
cd bgi-cli
|
|
50
|
+
npm unlink
|
|
34
51
|
|
|
35
|
-
#
|
|
52
|
+
# 删除本地数据(配置、技能库)
|
|
36
53
|
# Linux / macOS
|
|
37
54
|
rm -rf ~/.bgicli
|
|
38
55
|
|
|
@@ -48,7 +65,7 @@ Remove-Item -Recurse -Force "$env:USERPROFILE\.bgicli"
|
|
|
48
65
|
bgi # 启动
|
|
49
66
|
/connect # 首次配置 API Key
|
|
50
67
|
/cat # 浏览技能分类目录
|
|
51
|
-
/sk deseq2 # 搜索并激活 DESeq2
|
|
68
|
+
/sk deseq2 # 搜索并激活 DESeq2 技能
|
|
52
69
|
/help # 查看全部命令
|
|
53
70
|
```
|
|
54
71
|
|
|
@@ -65,11 +82,16 @@ bgi # 启动
|
|
|
65
82
|
| 模型 | 命令 |
|
|
66
83
|
|------|------|
|
|
67
84
|
| Qwen3.5-plus(默认) | `/model qwen3.5-plus` |
|
|
85
|
+
| Qwen3.5-397B(旗舰) | `/model qwen3.5-397b-a17b` |
|
|
68
86
|
| Qwen3-235B | `/model qwen3-235b-a22b` |
|
|
69
|
-
|
|
|
87
|
+
| Qwen3-Coder-Plus | `/model qwen3-coder-plus` |
|
|
88
|
+
| DeepSeek-R1(推理) | `/model deepseek-r1` |
|
|
70
89
|
| DeepSeek-V3 | `/model deepseek-v3` |
|
|
90
|
+
| DeepSeek-V3.2 | `/model deepseek-v3.2` |
|
|
71
91
|
| Kimi-K2.5 | `/model kimi-k2.5` |
|
|
92
|
+
| Kimi-K2-Thinking(推理) | `/model kimi-k2-thinking` |
|
|
72
93
|
| MiniMax-M2.5 | `/model MiniMax-M2.5` |
|
|
94
|
+
| GLM-5 | `/model glm-5` |
|
|
73
95
|
| QwQ-Plus(推理) | `/model qwq-plus` |
|
|
74
96
|
|
|
75
97
|
获取 API Key:[bailian.console.aliyun.com](https://bailian.console.aliyun.com/)
|
|
@@ -98,13 +120,15 @@ bgi # 启动
|
|
|
98
120
|
| `/connect [provider]` | 配置 API Key |
|
|
99
121
|
| `/status` | 显示当前配置 |
|
|
100
122
|
|
|
101
|
-
###
|
|
123
|
+
### 技能
|
|
102
124
|
| 命令 | 说明 |
|
|
103
125
|
|------|------|
|
|
104
126
|
| `/cat` | 按领域浏览技能分类目录(11个领域) |
|
|
105
|
-
| `/sk` |
|
|
127
|
+
| `/sk` | 列出全部技能 |
|
|
106
128
|
| `/sk <关键词>` | 搜索并激活技能(如 `/sk deseq2`、`/sk alphafold`) |
|
|
107
129
|
| `/wf` | 同 `/sk`,别名 |
|
|
130
|
+
| `/install <url\|slug>` | 从 GitHub 或 SkillHub 安装新技能 |
|
|
131
|
+
| `/uninstall <id>` | 卸载已安装的技能 |
|
|
108
132
|
|
|
109
133
|
> **智能路由**:直接描述任务,BGI CLI 自动识别并激活对应技能。
|
|
110
134
|
|
|
@@ -176,13 +200,13 @@ bgi # 启动
|
|
|
176
200
|
|
|
177
201
|
---
|
|
178
202
|
|
|
179
|
-
##
|
|
203
|
+
## 内置技能库(1001个)
|
|
180
204
|
|
|
181
|
-
|
|
205
|
+
使用 `/cat` 浏览分类目录,`/sk <关键词>` 搜索,`/install` 安装更多技能。
|
|
182
206
|
|
|
183
|
-
|
|
184
|
-
| ID | 说明 |
|
|
185
|
-
|
|
207
|
+
### 🧬 转录组学
|
|
208
|
+
| 技能 ID | 说明 |
|
|
209
|
+
|---------|------|
|
|
186
210
|
| `bulk-rnaseq-counts-to-de-deseq2` | DESeq2 差异表达分析 |
|
|
187
211
|
| `bulk-omics-clustering` | 样本/特征聚类(K-Means / HDBSCAN) |
|
|
188
212
|
| `scrnaseq-scanpy-core-analysis` | 单细胞 RNA-seq(Scanpy/Python) |
|
|
@@ -192,46 +216,35 @@ bgi # 启动
|
|
|
192
216
|
| `functional-enrichment-from-degs` | 功能富集(GO / KEGG / GSEA) |
|
|
193
217
|
| `grn-pyscenic` | 基因调控网络(pySCENIC) |
|
|
194
218
|
|
|
195
|
-
|
|
196
|
-
| ID | 说明 |
|
|
197
|
-
|
|
219
|
+
### 🧪 基因组学
|
|
220
|
+
| 技能 ID | 说明 |
|
|
221
|
+
|---------|------|
|
|
198
222
|
| `genetic-variant-annotation` | VCF 变异注释(VEP / ANNOVAR) |
|
|
199
223
|
| `gwas-to-function-twas` | GWAS → TWAS 因果基因 |
|
|
200
224
|
| `mendelian-randomization-twosamplemr` | 孟德尔随机化 |
|
|
201
225
|
| `polygenic-risk-score-prs-catalog` | 多基因风险评分(PRS) |
|
|
202
226
|
| `pooled-crispr-screens` | CRISPR 文库筛选(MAGeCK / BAGEL2) |
|
|
203
227
|
|
|
204
|
-
|
|
205
|
-
| ID | 说明 |
|
|
206
|
-
|
|
228
|
+
### 🔗 表观基因组
|
|
229
|
+
| 技能 ID | 说明 |
|
|
230
|
+
|---------|------|
|
|
207
231
|
| `chip-atlas-peak-enrichment` | ChIP-seq 峰值富集 |
|
|
208
232
|
| `chip-atlas-diff-analysis` | 差异结合分析 |
|
|
209
233
|
| `chip-atlas-target-genes` | 转录因子靶基因鉴定 |
|
|
210
234
|
|
|
211
|
-
|
|
212
|
-
| ID | 说明 |
|
|
213
|
-
|
|
235
|
+
### 🏥 临床与流行病学
|
|
236
|
+
| 技能 ID | 说明 |
|
|
237
|
+
|---------|------|
|
|
238
|
+
| `survival-analysis-clinical` | 临床生存分析(KM 曲线 / Cox 回归 / 竞争风险) |
|
|
214
239
|
| `clinicaltrials-landscape` | 临床试验格局分析 |
|
|
215
240
|
| `literature-preclinical` | 临床前文献系统提取 |
|
|
216
241
|
| `experimental-design-statistics` | 实验设计与统计检验 |
|
|
217
242
|
| `lasso-biomarker-panel` | LASSO 生物标志物筛选 |
|
|
218
243
|
| `pcr-primer-design` | PCR/qPCR 引物设计 |
|
|
219
244
|
|
|
220
|
-
###
|
|
221
|
-
|
|
222
|
-
覆盖结构生物学、单细胞、药物发现、抗体设计、文献检索等领域,使用 `/cat` 浏览分类目录。
|
|
245
|
+
### 📦 更多技能(979个)
|
|
223
246
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
## 从源码安装
|
|
227
|
-
|
|
228
|
-
```bash
|
|
229
|
-
git clone https://github.com/zja2004/BGI-CLI.git
|
|
230
|
-
cd BGI-CLI
|
|
231
|
-
npm install
|
|
232
|
-
npm run build
|
|
233
|
-
npm link
|
|
234
|
-
```
|
|
247
|
+
结构生物学、单细胞、药物发现、抗体设计、文献检索、临床 AI 等,使用 `/cat` 或 `/sk <关键词>` 查找。
|
|
235
248
|
|
|
236
249
|
---
|
|
237
250
|
|
|
@@ -248,7 +261,7 @@ bgi
|
|
|
248
261
|
├── src/prompt.ts — 生物信息学系统提示
|
|
249
262
|
├── src/providers.ts — 中国 AI 服务商配置
|
|
250
263
|
├── src/config.ts — 配置管理(~/.bgicli/config.json)
|
|
251
|
-
└── data/ —
|
|
264
|
+
└── data/ — 内置数据(Skills + Python 工具)
|
|
252
265
|
```
|
|
253
266
|
|
|
254
267
|
---
|
package/dist/bgi.js
CHANGED
|
@@ -13868,7 +13868,7 @@ var TOOL_DEFINITIONS = [
|
|
|
13868
13868
|
type: "function",
|
|
13869
13869
|
function: {
|
|
13870
13870
|
name: "read_file",
|
|
13871
|
-
description: "Read the contents of a file. Use to inspect data files, SKILL.md
|
|
13871
|
+
description: "Read the contents of a file. Use to inspect data files, SKILL.md guides, R/Python scripts, results files, etc.",
|
|
13872
13872
|
parameters: {
|
|
13873
13873
|
type: "object",
|
|
13874
13874
|
properties: {
|
|
@@ -13919,7 +13919,7 @@ var TOOL_DEFINITIONS = [
|
|
|
13919
13919
|
type: "function",
|
|
13920
13920
|
function: {
|
|
13921
13921
|
name: "search_files",
|
|
13922
|
-
description: "Search for files matching a pattern using glob syntax. Use to find scripts, data files, or
|
|
13922
|
+
description: "Search for files matching a pattern using glob syntax. Use to find scripts, data files, or skill references.",
|
|
13923
13923
|
parameters: {
|
|
13924
13924
|
type: "object",
|
|
13925
13925
|
properties: {
|
|
@@ -14561,7 +14561,7 @@ async function compactMessages(messages, config) {
|
|
|
14561
14561
|
messages: [
|
|
14562
14562
|
{
|
|
14563
14563
|
role: "system",
|
|
14564
|
-
content: "\u4F60\u662F\u4E00\u4E2A\u5BF9\u8BDD\u6458\u8981\u52A9\u624B\u3002\u8BF7\u5C06\u4EE5\u4E0B\u5BF9\u8BDD\u5386\u53F2\u538B\u7F29\u4E3A\u7B80\u6D01\u7684\u4E2D\u6587\u6458\u8981\uFF0C\u4FDD\u7559\u6240\u6709\u5173\u952E\u6280\u672F\u4FE1\u606F\uFF1A\u6587\u4EF6\u8DEF\u5F84\u3001\u547D\u4EE4\u3001\u5206\u6790\u7ED3\u679C\u3001\u7528\u6237\u51B3\u7B56\u3001\u5DF2\u6FC0\u6D3B\u7684\
|
|
14564
|
+
content: "\u4F60\u662F\u4E00\u4E2A\u5BF9\u8BDD\u6458\u8981\u52A9\u624B\u3002\u8BF7\u5C06\u4EE5\u4E0B\u5BF9\u8BDD\u5386\u53F2\u538B\u7F29\u4E3A\u7B80\u6D01\u7684\u4E2D\u6587\u6458\u8981\uFF0C\u4FDD\u7559\u6240\u6709\u5173\u952E\u6280\u672F\u4FE1\u606F\uFF1A\u6587\u4EF6\u8DEF\u5F84\u3001\u547D\u4EE4\u3001\u5206\u6790\u7ED3\u679C\u3001\u7528\u6237\u51B3\u7B56\u3001\u5DF2\u6FC0\u6D3B\u7684\u6280\u80FD\u3002\u6458\u8981\u5E94\u8BA9\u5BF9\u8BDD\u80FD\u591F\u65E0\u7F1D\u7EE7\u7EED\u3002"
|
|
14565
14565
|
},
|
|
14566
14566
|
{
|
|
14567
14567
|
role: "user",
|
|
@@ -14603,7 +14603,7 @@ function buildSystemPrompt(dbSection) {
|
|
|
14603
14603
|
## Core Identity
|
|
14604
14604
|
- You are purpose-built for bioinformatics, NOT a general coding assistant
|
|
14605
14605
|
- You default to speaking Chinese unless the user writes in English
|
|
14606
|
-
- You always prefer using existing, validated
|
|
14606
|
+
- You always prefer using existing, validated skill scripts over writing new code from scratch
|
|
14607
14607
|
- You are pragmatic: suggest concrete commands, not theory
|
|
14608
14608
|
|
|
14609
14609
|
---
|
|
@@ -14611,26 +14611,26 @@ function buildSystemPrompt(dbSection) {
|
|
|
14611
14611
|
## Tool Use Policy
|
|
14612
14612
|
You have access to these tools:
|
|
14613
14613
|
- **bash**: Execute shell commands (R, Python, bash scripts, bioinformatics tools)
|
|
14614
|
-
- **read_file**: Read any file (scripts, data files, SKILL.md
|
|
14614
|
+
- **read_file**: Read any file (scripts, data files, SKILL.md guides)
|
|
14615
14615
|
- **write_file**: Create or update files
|
|
14616
14616
|
- **list_dir**: List directory contents
|
|
14617
14617
|
- **search_files**: Find files by pattern (glob)
|
|
14618
14618
|
- **fetch_geo**: Query NCBI GEO database by accession (GSE/GDS/GPL/GSM). Returns metadata, sample info, organism, platform, and ready-to-use R/Python download code. **Always call this first when the user mentions a GEO accession number \u2014 never ask them to download manually.**
|
|
14619
14619
|
|
|
14620
|
-
**MANDATORY
|
|
14621
|
-
1. Check if a matching pre-built
|
|
14622
|
-
2. If yes: read the
|
|
14620
|
+
**MANDATORY**: When the user gives you a bioinformatics task:
|
|
14621
|
+
1. Check if a matching pre-built skill exists (see Skill Library below)
|
|
14622
|
+
2. If yes: read the skill's SKILL.md first, then follow it strictly
|
|
14623
14623
|
3. If no: plan a principled approach and explain your reasoning
|
|
14624
14624
|
|
|
14625
14625
|
---
|
|
14626
14626
|
|
|
14627
|
-
##
|
|
14627
|
+
## Skill Library (22 Bioinformatics Skills)
|
|
14628
14628
|
|
|
14629
|
-
All
|
|
14629
|
+
All skills are at: **${WORKFLOWS_DIR}**
|
|
14630
14630
|
|
|
14631
|
-
For any
|
|
14631
|
+
For any skill, read its guide first:
|
|
14632
14632
|
\`\`\`bash
|
|
14633
|
-
cat ${WORKFLOWS_DIR}/<
|
|
14633
|
+
cat ${WORKFLOWS_DIR}/<skill-id>/SKILL.md
|
|
14634
14634
|
\`\`\`
|
|
14635
14635
|
|
|
14636
14636
|
### \u{1F9EC} Transcriptomics
|
|
@@ -14677,7 +14677,7 @@ cat ${WORKFLOWS_DIR}/<workflow-id>/SKILL.md
|
|
|
14677
14677
|
|
|
14678
14678
|
---
|
|
14679
14679
|
|
|
14680
|
-
## Molecular Biology
|
|
14680
|
+
## Molecular Biology Skills
|
|
14681
14681
|
|
|
14682
14682
|
Python tools are at: **${TOOLS_DIR}**
|
|
14683
14683
|
|
|
@@ -14710,16 +14710,16 @@ ${dbSection ?? "\uFF08\u6682\u672A\u6CE8\u518C\u4EFB\u4F55\u6570\u636E\u5E93\u30
|
|
|
14710
14710
|
|
|
14711
14711
|
---
|
|
14712
14712
|
|
|
14713
|
-
##
|
|
14713
|
+
## Extended Skills (979\u4E2A)
|
|
14714
14714
|
|
|
14715
|
-
\u6280\u80FD\
|
|
14715
|
+
\u66F4\u591A\u5185\u7F6E\u6280\u80FD\u4F4D\u4E8E: **${SKILLS_DIR}**
|
|
14716
14716
|
|
|
14717
14717
|
\u6BCF\u4E2A\u6280\u80FD\u76EE\u5F55\u5305\u542B\u4E00\u4E2A \`SKILL.md\` \u6587\u4EF6\uFF0C\u8BFB\u53D6\u65B9\u5F0F:
|
|
14718
14718
|
\`\`\`bash
|
|
14719
14719
|
cat ${SKILLS_DIR}/<skill-id>/SKILL.md
|
|
14720
14720
|
\`\`\`
|
|
14721
14721
|
|
|
14722
|
-
**\
|
|
14722
|
+
**\u6DB5\u76D6\u9886\u57DF**\uFF08\u7528\u6237\u901A\u8FC7 /sk \u547D\u4EE4\u52A0\u8F7D\u540E\u81EA\u52A8\u6CE8\u5165\u4E0A\u4E0B\u6587\uFF09:
|
|
14723
14723
|
- \u6587\u732E\u68C0\u7D22: pubmed-search, arxiv-search, bgpt-paper-search
|
|
14724
14724
|
- \u7ED3\u6784\u751F\u7269\u5B66: alphafold, alphafold-database, bindcraft, binder-design
|
|
14725
14725
|
- \u5355\u7EC6\u80DE: anndata, cellagent-annotation, scvi-tools
|
|
@@ -14728,7 +14728,9 @@ cat ${SKILLS_DIR}/<skill-id>/SKILL.md
|
|
|
14728
14728
|
- \u6297\u4F53\u8BBE\u8BA1: antibody-design-agent, armored-cart-design-agent
|
|
14729
14729
|
- \u4E34\u5E8A: clinical-*, ehr-fhir-integration, autonomous-oncology-agent
|
|
14730
14730
|
|
|
14731
|
-
\
|
|
14731
|
+
\u7528\u6237\u4E5F\u53EF\u4EE5\u901A\u8FC7 **/install** \u5B89\u88C5\u81EA\u5B9A\u4E49\u6280\u80FD\uFF0C\u5B89\u88C5\u540E\u4E0E\u5185\u7F6E\u6280\u80FD\u5B8C\u5168\u7B49\u4EF7\u3002
|
|
14732
|
+
|
|
14733
|
+
\u5F53\u7528\u6237\u63D0\u5230\u67D0\u4E2A\u4EFB\u52A1\u65F6\uFF0C\u5EFA\u8BAE\u4F7F\u7528 **/sk <\u5173\u952E\u8BCD>** \u641C\u7D22\u5E76\u52A0\u8F7D\u5BF9\u5E94\u6280\u80FD\u3002
|
|
14732
14734
|
|
|
14733
14735
|
---
|
|
14734
14736
|
|
|
@@ -14819,9 +14821,9 @@ message(sprintf("\u603B\u57FA\u56E0\u6570: %d | \u663E\u8457 DEG: %d (\u4E0A\u8C
|
|
|
14819
14821
|
## Script Execution Rules
|
|
14820
14822
|
|
|
14821
14823
|
\u{1F6A8} **\u5173\u952E\u89C4\u5219\uFF1A**
|
|
14822
|
-
1. **\u4F18\u5148\u4F7F\u7528\
|
|
14824
|
+
1. **\u4F18\u5148\u4F7F\u7528\u6280\u80FD\u5185\u7F6E\u811A\u672C**\uFF0C\u4E0D\u8981\u4ECE\u96F6\u5199\u4EE3\u7801
|
|
14823
14825
|
2. **\u811A\u672C\u5931\u8D25\u5904\u7406\u987A\u5E8F**: \u4FEE\u590D\u5E76\u91CD\u8BD5 \u2192 \u4FEE\u6539\u811A\u672C \u2192 \u9002\u914D\u65B9\u6848 \u2192 \u6700\u540E\u624D\u4ECE\u5934\u5199
|
|
14824
|
-
3. **\u4F7F\u7528\u76F8\u5BF9\u8DEF\u5F84**\uFF1A\u5728\
|
|
14826
|
+
3. **\u4F7F\u7528\u76F8\u5BF9\u8DEF\u5F84**\uFF1A\u5728\u6280\u80FD\u76EE\u5F55\u5185\u7528 \`source("scripts/xxx.R")\` \u800C\u975E\u7EDD\u5BF9\u8DEF\u5F84
|
|
14825
14827
|
4. **\u9A8C\u8BC1\u6D88\u606F**\uFF1A\u6BCF\u6B65\u5B8C\u6210\u5E94\u770B\u5230 "\u2713" \u786E\u8BA4\u6D88\u606F\uFF1B\u770B\u4E0D\u5230\u8BF4\u660E\u6CA1\u7528\u811A\u672C
|
|
14826
14828
|
|
|
14827
14829
|
---
|
|
@@ -14838,25 +14840,25 @@ message(sprintf("\u603B\u57FA\u56E0\u6570: %d | \u663E\u8457 DEG: %d (\u4E0A\u8C
|
|
|
14838
14840
|
\u4F7F\u7528 HPC \u5DE5\u5177\u63D0\u4EA4 AlphaFold \u4EFB\u52A1
|
|
14839
14841
|
|
|
14840
14842
|
**\u7528\u6237\u8BF4 "\u627E DEG \u7684\u901A\u8DEF" \u2192**
|
|
14841
|
-
\u4F7F\u7528 functional-enrichment-from-degs \
|
|
14843
|
+
\u4F7F\u7528 functional-enrichment-from-degs \u6280\u80FD
|
|
14842
14844
|
|
|
14843
14845
|
**\u7528\u6237\u8BF4 "\u8BBE\u8BA1 CRISPR guide RNA" \u2192**
|
|
14844
14846
|
\u4F7F\u7528 molecular_biology.py \u7684 design_crispr_knockout_guides()
|
|
14845
14847
|
|
|
14846
14848
|
**\u7528\u6237\u8BF4 "\u54EA\u4E9B\u57FA\u56E0\u5728\u80BF\u7624\u91CC\u8868\u8FBE\u91CF\u9AD8" / "\u627E\u4E0A\u8C03\u57FA\u56E0" \u2192**
|
|
14847
|
-
\u2192 \u5DEE\u5F02\u8868\u8FBE\u5206\u6790\uFF08DESeq2\uFF09\uFF0C\u4F7F\u7528 bulk-rnaseq-counts-to-de-deseq2 \
|
|
14849
|
+
\u2192 \u5DEE\u5F02\u8868\u8FBE\u5206\u6790\uFF08DESeq2\uFF09\uFF0C\u4F7F\u7528 bulk-rnaseq-counts-to-de-deseq2 \u6280\u80FD
|
|
14848
14850
|
|
|
14849
14851
|
**\u7528\u6237\u8BF4 "\u5148\u505A\u5DEE\u5F02\u8868\u8FBE\uFF0C\u518D\u505A\u5BCC\u96C6\u5206\u6790" \u2192**
|
|
14850
14852
|
\u2192 \u8BC6\u522B\u4E3A\u591A\u4EFB\u52A1\uFF1A\u4F9D\u6B21\u6267\u884C bulk-rnaseq-counts-to-de-deseq2 + functional-enrichment-from-degs
|
|
14851
14853
|
|
|
14852
14854
|
**\u7528\u6237\u8BF4 "\u8FD9\u4E9B\u57FA\u56E0\u53C2\u4E0E\u4EC0\u4E48\u901A\u8DEF" / "\u57FA\u56E0\u529F\u80FD\u662F\u4EC0\u4E48" \u2192**
|
|
14853
|
-
\u2192 \u529F\u80FD\u5BCC\u96C6\u5206\u6790\uFF0C\u4F7F\u7528 functional-enrichment-from-degs \
|
|
14855
|
+
\u2192 \u529F\u80FD\u5BCC\u96C6\u5206\u6790\uFF0C\u4F7F\u7528 functional-enrichment-from-degs \u6280\u80FD
|
|
14854
14856
|
|
|
14855
14857
|
**\u7528\u6237\u8BF4 "\u5206\u6790\u5355\u7EC6\u80DE\u6570\u636E" / "10X\u6570\u636E\u5206\u6790" \u2192**
|
|
14856
14858
|
\u5148\u95EE\uFF1APython \u8FD8\u662F R\uFF1F\u2192 Scanpy \u6216 Seurat
|
|
14857
14859
|
|
|
14858
14860
|
**\u7528\u6237\u8BF4 "\u753B\u751F\u5B58\u66F2\u7EBF" / "\u5206\u6790\u60A3\u8005\u9884\u540E" / "OS/PFS \u5206\u6790" \u2192**
|
|
14859
|
-
\u2192 \u751F\u5B58\u5206\u6790\uFF0C\u4F7F\u7528 survival-analysis-clinical \
|
|
14861
|
+
\u2192 \u751F\u5B58\u5206\u6790\uFF0C\u4F7F\u7528 survival-analysis-clinical \u6280\u80FD
|
|
14860
14862
|
|
|
14861
14863
|
**\u7528\u6237\u8BF4 "\u5E2E\u6211\u5206\u6790 GSE12345" / "\u4E0B\u8F7D GEO \u6570\u636E" \u2192**
|
|
14862
14864
|
\u2192 \u7ACB\u5373\u8C03\u7528 fetch_geo("GSE12345") \u83B7\u53D6\u5143\u6570\u636E\u548C\u4E0B\u8F7D\u4EE3\u7801\uFF0C\u65E0\u9700\u8BA9\u7528\u6237\u624B\u52A8\u4E0B\u8F7D`;
|
|
@@ -15149,7 +15151,7 @@ var SKILL_ROUTES = [
|
|
|
15149
15151
|
id: "bulk-rnaseq-counts-to-de-deseq2",
|
|
15150
15152
|
name: "DESeq2 \u5DEE\u5F02\u8868\u8FBE\u5206\u6790",
|
|
15151
15153
|
category: "\u8F6C\u5F55\u7EC4",
|
|
15152
|
-
tag: "
|
|
15154
|
+
tag: "builtin",
|
|
15153
15155
|
keywords: [
|
|
15154
15156
|
// exact tool names
|
|
15155
15157
|
"deseq2",
|
|
@@ -15184,7 +15186,7 @@ var SKILL_ROUTES = [
|
|
|
15184
15186
|
id: "bulk-omics-clustering",
|
|
15185
15187
|
name: "\u6837\u672C / \u7279\u5F81\u805A\u7C7B",
|
|
15186
15188
|
category: "\u8F6C\u5F55\u7EC4",
|
|
15187
|
-
tag: "
|
|
15189
|
+
tag: "builtin",
|
|
15188
15190
|
keywords: [
|
|
15189
15191
|
"wgcna\u805A\u7C7B",
|
|
15190
15192
|
"\u5C42\u6B21\u805A\u7C7B",
|
|
@@ -15209,7 +15211,7 @@ var SKILL_ROUTES = [
|
|
|
15209
15211
|
id: "scrnaseq-scanpy-core-analysis",
|
|
15210
15212
|
name: "scRNA-seq (Scanpy / Python)",
|
|
15211
15213
|
category: "\u5355\u7EC6\u80DE",
|
|
15212
|
-
tag: "
|
|
15214
|
+
tag: "builtin",
|
|
15213
15215
|
keywords: [
|
|
15214
15216
|
"scanpy",
|
|
15215
15217
|
"scrna-seq",
|
|
@@ -15234,7 +15236,7 @@ var SKILL_ROUTES = [
|
|
|
15234
15236
|
id: "scrnaseq-seurat-core-analysis",
|
|
15235
15237
|
name: "scRNA-seq (Seurat / R)",
|
|
15236
15238
|
category: "\u5355\u7EC6\u80DE",
|
|
15237
|
-
tag: "
|
|
15239
|
+
tag: "builtin",
|
|
15238
15240
|
keywords: [
|
|
15239
15241
|
"seurat",
|
|
15240
15242
|
"r\u8BED\u8A00\u5355\u7EC6\u80DE",
|
|
@@ -15252,7 +15254,7 @@ var SKILL_ROUTES = [
|
|
|
15252
15254
|
id: "spatial-transcriptomics",
|
|
15253
15255
|
name: "\u7A7A\u95F4\u8F6C\u5F55\u7EC4",
|
|
15254
15256
|
category: "\u5355\u7EC6\u80DE",
|
|
15255
|
-
tag: "
|
|
15257
|
+
tag: "builtin",
|
|
15256
15258
|
keywords: [
|
|
15257
15259
|
"\u7A7A\u95F4\u8F6C\u5F55\u7EC4",
|
|
15258
15260
|
"spatial transcriptomics",
|
|
@@ -15274,7 +15276,7 @@ var SKILL_ROUTES = [
|
|
|
15274
15276
|
id: "coexpression-network",
|
|
15275
15277
|
name: "WGCNA \u5171\u8868\u8FBE\u7F51\u7EDC",
|
|
15276
15278
|
category: "\u8F6C\u5F55\u7EC4",
|
|
15277
|
-
tag: "
|
|
15279
|
+
tag: "builtin",
|
|
15278
15280
|
keywords: [
|
|
15279
15281
|
"wgcna",
|
|
15280
15282
|
"\u5171\u8868\u8FBE\u7F51\u7EDC",
|
|
@@ -15293,7 +15295,7 @@ var SKILL_ROUTES = [
|
|
|
15293
15295
|
id: "functional-enrichment-from-degs",
|
|
15294
15296
|
name: "GO / KEGG / GSEA \u5BCC\u96C6\u5206\u6790",
|
|
15295
15297
|
category: "\u8F6C\u5F55\u7EC4",
|
|
15296
|
-
tag: "
|
|
15298
|
+
tag: "builtin",
|
|
15297
15299
|
keywords: [
|
|
15298
15300
|
"\u5BCC\u96C6\u5206\u6790",
|
|
15299
15301
|
"go\u5206\u6790",
|
|
@@ -15325,7 +15327,7 @@ var SKILL_ROUTES = [
|
|
|
15325
15327
|
id: "grn-pyscenic",
|
|
15326
15328
|
name: "pySCENIC \u57FA\u56E0\u8C03\u63A7\u7F51\u7EDC",
|
|
15327
15329
|
category: "\u5355\u7EC6\u80DE",
|
|
15328
|
-
tag: "
|
|
15330
|
+
tag: "builtin",
|
|
15329
15331
|
keywords: [
|
|
15330
15332
|
"pyscenic",
|
|
15331
15333
|
"scenic",
|
|
@@ -15346,7 +15348,7 @@ var SKILL_ROUTES = [
|
|
|
15346
15348
|
id: "genetic-variant-annotation",
|
|
15347
15349
|
name: "\u9057\u4F20\u53D8\u5F02\u6CE8\u91CA",
|
|
15348
15350
|
category: "\u57FA\u56E0\u7EC4",
|
|
15349
|
-
tag: "
|
|
15351
|
+
tag: "builtin",
|
|
15350
15352
|
keywords: [
|
|
15351
15353
|
"\u53D8\u5F02\u6CE8\u91CA",
|
|
15352
15354
|
"variant annotation",
|
|
@@ -15371,7 +15373,7 @@ var SKILL_ROUTES = [
|
|
|
15371
15373
|
id: "gwas-to-function-twas",
|
|
15372
15374
|
name: "GWAS \u2192 TWAS \u529F\u80FD\u89E3\u6790",
|
|
15373
15375
|
category: "\u57FA\u56E0\u7EC4",
|
|
15374
|
-
tag: "
|
|
15376
|
+
tag: "builtin",
|
|
15375
15377
|
keywords: [
|
|
15376
15378
|
"gwas\u5206\u6790",
|
|
15377
15379
|
"twas",
|
|
@@ -15394,7 +15396,7 @@ var SKILL_ROUTES = [
|
|
|
15394
15396
|
id: "mendelian-randomization-twosamplemr",
|
|
15395
15397
|
name: "\u5B5F\u5FB7\u5C14\u968F\u673A\u5316 (MR)",
|
|
15396
15398
|
category: "\u7EDF\u8BA1",
|
|
15397
|
-
tag: "
|
|
15399
|
+
tag: "builtin",
|
|
15398
15400
|
keywords: [
|
|
15399
15401
|
"\u5B5F\u5FB7\u5C14\u968F\u673A\u5316",
|
|
15400
15402
|
"mendelian randomization",
|
|
@@ -15415,7 +15417,7 @@ var SKILL_ROUTES = [
|
|
|
15415
15417
|
id: "polygenic-risk-score-prs-catalog",
|
|
15416
15418
|
name: "PRS \u591A\u57FA\u56E0\u98CE\u9669\u8BC4\u5206",
|
|
15417
15419
|
category: "\u57FA\u56E0\u7EC4",
|
|
15418
|
-
tag: "
|
|
15420
|
+
tag: "builtin",
|
|
15419
15421
|
keywords: [
|
|
15420
15422
|
"prs\u8BC4\u5206",
|
|
15421
15423
|
"polygenic risk score",
|
|
@@ -15433,7 +15435,7 @@ var SKILL_ROUTES = [
|
|
|
15433
15435
|
id: "pooled-crispr-screens",
|
|
15434
15436
|
name: "CRISPR \u6587\u5E93\u7B5B\u9009 (MAGeCK/BAGEL2)",
|
|
15435
15437
|
category: "\u57FA\u56E0\u7EC4",
|
|
15436
|
-
tag: "
|
|
15438
|
+
tag: "builtin",
|
|
15437
15439
|
keywords: [
|
|
15438
15440
|
"crispr\u6587\u5E93\u7B5B\u9009",
|
|
15439
15441
|
"crispr screen",
|
|
@@ -15455,7 +15457,7 @@ var SKILL_ROUTES = [
|
|
|
15455
15457
|
id: "chip-atlas-peak-enrichment",
|
|
15456
15458
|
name: "ChIP-seq \u5CF0\u503C\u5BCC\u96C6 (ChIP-Atlas)",
|
|
15457
15459
|
category: "\u8868\u89C2\u57FA\u56E0\u7EC4",
|
|
15458
|
-
tag: "
|
|
15460
|
+
tag: "builtin",
|
|
15459
15461
|
keywords: [
|
|
15460
15462
|
"chip-atlas",
|
|
15461
15463
|
"chip-seq\u5CF0\u503C\u5BCC\u96C6",
|
|
@@ -15474,7 +15476,7 @@ var SKILL_ROUTES = [
|
|
|
15474
15476
|
id: "chip-atlas-diff-analysis",
|
|
15475
15477
|
name: "ChIP-seq \u5DEE\u5F02\u7ED3\u5408\u5206\u6790",
|
|
15476
15478
|
category: "\u8868\u89C2\u57FA\u56E0\u7EC4",
|
|
15477
|
-
tag: "
|
|
15479
|
+
tag: "builtin",
|
|
15478
15480
|
keywords: [
|
|
15479
15481
|
"chip\u5DEE\u5F02\u5206\u6790",
|
|
15480
15482
|
"differential binding",
|
|
@@ -15491,7 +15493,7 @@ var SKILL_ROUTES = [
|
|
|
15491
15493
|
id: "chip-atlas-target-genes",
|
|
15492
15494
|
name: "ChIP-seq \u9776\u57FA\u56E0\u9274\u5B9A",
|
|
15493
15495
|
category: "\u8868\u89C2\u57FA\u56E0\u7EC4",
|
|
15494
|
-
tag: "
|
|
15496
|
+
tag: "builtin",
|
|
15495
15497
|
keywords: [
|
|
15496
15498
|
"chip\u9776\u57FA\u56E0",
|
|
15497
15499
|
"chip target gene",
|
|
@@ -15511,7 +15513,7 @@ var SKILL_ROUTES = [
|
|
|
15511
15513
|
id: "clinicaltrials-landscape",
|
|
15512
15514
|
name: "\u4E34\u5E8A\u8BD5\u9A8C\u683C\u5C40\u5206\u6790",
|
|
15513
15515
|
category: "\u4E34\u5E8A",
|
|
15514
|
-
tag: "
|
|
15516
|
+
tag: "builtin",
|
|
15515
15517
|
keywords: [
|
|
15516
15518
|
"clinicaltrials\u5206\u6790",
|
|
15517
15519
|
"clinical trial landscape",
|
|
@@ -15529,7 +15531,7 @@ var SKILL_ROUTES = [
|
|
|
15529
15531
|
id: "literature-preclinical",
|
|
15530
15532
|
name: "\u4E34\u5E8A\u524D\u6587\u732E\u7CFB\u7EDF\u63D0\u53D6",
|
|
15531
15533
|
category: "\u6587\u732E",
|
|
15532
|
-
tag: "
|
|
15534
|
+
tag: "builtin",
|
|
15533
15535
|
keywords: [
|
|
15534
15536
|
"\u4E34\u5E8A\u524D\u6587\u732E",
|
|
15535
15537
|
"preclinical literature",
|
|
@@ -15547,7 +15549,7 @@ var SKILL_ROUTES = [
|
|
|
15547
15549
|
id: "experimental-design-statistics",
|
|
15548
15550
|
name: "\u5B9E\u9A8C\u8BBE\u8BA1\u4E0E\u7EDF\u8BA1\u68C0\u9A8C",
|
|
15549
15551
|
category: "\u7EDF\u8BA1",
|
|
15550
|
-
tag: "
|
|
15552
|
+
tag: "builtin",
|
|
15551
15553
|
keywords: [
|
|
15552
15554
|
"\u6837\u672C\u91CF\u8BA1\u7B97",
|
|
15553
15555
|
"\u7EDF\u8BA1\u68C0\u9A8C\u9009\u62E9",
|
|
@@ -15573,7 +15575,7 @@ var SKILL_ROUTES = [
|
|
|
15573
15575
|
id: "lasso-biomarker-panel",
|
|
15574
15576
|
name: "LASSO \u751F\u7269\u6807\u5FD7\u7269\u9762\u677F\u7B5B\u9009",
|
|
15575
15577
|
category: "\u7EDF\u8BA1",
|
|
15576
|
-
tag: "
|
|
15578
|
+
tag: "builtin",
|
|
15577
15579
|
keywords: [
|
|
15578
15580
|
"lasso\u56DE\u5F52\u7B5B\u9009",
|
|
15579
15581
|
"lasso\u751F\u7269\u6807\u5FD7\u7269",
|
|
@@ -15594,7 +15596,7 @@ var SKILL_ROUTES = [
|
|
|
15594
15596
|
id: "pcr-primer-design",
|
|
15595
15597
|
name: "PCR / qPCR \u5F15\u7269\u8BBE\u8BA1",
|
|
15596
15598
|
category: "\u5206\u5B50\u751F\u7269\u5B66",
|
|
15597
|
-
tag: "
|
|
15599
|
+
tag: "builtin",
|
|
15598
15600
|
keywords: [
|
|
15599
15601
|
"\u5F15\u7269\u8BBE\u8BA1",
|
|
15600
15602
|
"primer design",
|
|
@@ -15616,7 +15618,7 @@ var SKILL_ROUTES = [
|
|
|
15616
15618
|
id: "survival-analysis-clinical",
|
|
15617
15619
|
name: "\u4E34\u5E8A\u751F\u5B58\u5206\u6790 (KM + Cox)",
|
|
15618
15620
|
category: "\u4E34\u5E8A",
|
|
15619
|
-
tag: "
|
|
15621
|
+
tag: "builtin",
|
|
15620
15622
|
keywords: [
|
|
15621
15623
|
// exact method names
|
|
15622
15624
|
"kaplan-meier",
|
|
@@ -15663,12 +15665,12 @@ var SKILL_ROUTES = [
|
|
|
15663
15665
|
"\u7A81\u53D8\u4E0E\u9884\u540E"
|
|
15664
15666
|
]
|
|
15665
15667
|
},
|
|
15666
|
-
// ──
|
|
15668
|
+
// ── Extended Skills (key routable entries) ───────────────────────────────────
|
|
15667
15669
|
{
|
|
15668
15670
|
id: "pubmed-search",
|
|
15669
15671
|
name: "PubMed \u6587\u732E\u68C0\u7D22",
|
|
15670
15672
|
category: "\u6587\u732E",
|
|
15671
|
-
tag: "
|
|
15673
|
+
tag: "builtin",
|
|
15672
15674
|
keywords: [
|
|
15673
15675
|
"pubmed\u68C0\u7D22",
|
|
15674
15676
|
"pubmed\u641C\u7D22",
|
|
@@ -15683,14 +15685,14 @@ var SKILL_ROUTES = [
|
|
|
15683
15685
|
id: "arxiv-search",
|
|
15684
15686
|
name: "arXiv \u9884\u5370\u672C\u68C0\u7D22",
|
|
15685
15687
|
category: "\u6587\u732E",
|
|
15686
|
-
tag: "
|
|
15688
|
+
tag: "builtin",
|
|
15687
15689
|
keywords: ["arxiv\u68C0\u7D22", "arxiv\u641C\u7D22", "\u9884\u5370\u672C\u68C0\u7D22", "\u9884\u5370\u672C\u8BBA\u6587", "arxiv\u6587\u732E"]
|
|
15688
15690
|
},
|
|
15689
15691
|
{
|
|
15690
15692
|
id: "alphafold",
|
|
15691
15693
|
name: "AlphaFold \u86CB\u767D\u8D28\u7ED3\u6784\u9884\u6D4B",
|
|
15692
15694
|
category: "\u7ED3\u6784\u751F\u7269\u5B66",
|
|
15693
|
-
tag: "
|
|
15695
|
+
tag: "builtin",
|
|
15694
15696
|
keywords: [
|
|
15695
15697
|
"alphafold\u7ED3\u6784\u9884\u6D4B",
|
|
15696
15698
|
"alphafold\u8FD0\u884C",
|
|
@@ -15704,7 +15706,7 @@ var SKILL_ROUTES = [
|
|
|
15704
15706
|
id: "alphafold-database",
|
|
15705
15707
|
name: "AlphaFold \u6570\u636E\u5E93\u67E5\u8BE2",
|
|
15706
15708
|
category: "\u7ED3\u6784\u751F\u7269\u5B66",
|
|
15707
|
-
tag: "
|
|
15709
|
+
tag: "builtin",
|
|
15708
15710
|
keywords: [
|
|
15709
15711
|
"alphafold\u6570\u636E\u5E93",
|
|
15710
15712
|
"alphafold db",
|
|
@@ -15717,7 +15719,7 @@ var SKILL_ROUTES = [
|
|
|
15717
15719
|
id: "bindcraft",
|
|
15718
15720
|
name: "BindCraft \u86CB\u767D\u8D28\u7ED3\u5408\u4F53\u8BBE\u8BA1",
|
|
15719
15721
|
category: "\u7ED3\u6784\u751F\u7269\u5B66",
|
|
15720
|
-
tag: "
|
|
15722
|
+
tag: "builtin",
|
|
15721
15723
|
keywords: [
|
|
15722
15724
|
"bindcraft",
|
|
15723
15725
|
"\u7ED3\u5408\u4F53\u8BBE\u8BA1",
|
|
@@ -15731,7 +15733,7 @@ var SKILL_ROUTES = [
|
|
|
15731
15733
|
id: "anndata",
|
|
15732
15734
|
name: "AnnData \u5355\u7EC6\u80DE\u6570\u636E\u64CD\u4F5C",
|
|
15733
15735
|
category: "\u5355\u7EC6\u80DE",
|
|
15734
|
-
tag: "
|
|
15736
|
+
tag: "builtin",
|
|
15735
15737
|
keywords: [
|
|
15736
15738
|
"anndata\u64CD\u4F5C",
|
|
15737
15739
|
"h5ad\u6587\u4EF6\u5904\u7406",
|
|
@@ -15745,7 +15747,7 @@ var SKILL_ROUTES = [
|
|
|
15745
15747
|
id: "cellagent-annotation",
|
|
15746
15748
|
name: "CellAgent \u7EC6\u80DE\u7C7B\u578B\u81EA\u52A8\u6CE8\u91CA",
|
|
15747
15749
|
category: "\u5355\u7EC6\u80DE",
|
|
15748
|
-
tag: "
|
|
15750
|
+
tag: "builtin",
|
|
15749
15751
|
keywords: [
|
|
15750
15752
|
"\u7EC6\u80DE\u7C7B\u578B\u6CE8\u91CA",
|
|
15751
15753
|
"cell type annotation",
|
|
@@ -15759,7 +15761,7 @@ var SKILL_ROUTES = [
|
|
|
15759
15761
|
id: "scvi-tools",
|
|
15760
15762
|
name: "scVI \u5355\u7EC6\u80DE\u6DF1\u5EA6\u5B66\u4E60",
|
|
15761
15763
|
category: "\u5355\u7EC6\u80DE",
|
|
15762
|
-
tag: "
|
|
15764
|
+
tag: "builtin",
|
|
15763
15765
|
keywords: [
|
|
15764
15766
|
"scvi-tools",
|
|
15765
15767
|
"scvi\u6A21\u578B",
|
|
@@ -15773,7 +15775,7 @@ var SKILL_ROUTES = [
|
|
|
15773
15775
|
id: "agentd-drug-discovery",
|
|
15774
15776
|
name: "\u836F\u7269\u53D1\u73B0 Agent",
|
|
15775
15777
|
category: "\u836F\u7269",
|
|
15776
|
-
tag: "
|
|
15778
|
+
tag: "builtin",
|
|
15777
15779
|
keywords: [
|
|
15778
15780
|
"\u836F\u7269\u53D1\u73B0\u6D41\u7A0B",
|
|
15779
15781
|
"drug discovery",
|
|
@@ -15787,7 +15789,7 @@ var SKILL_ROUTES = [
|
|
|
15787
15789
|
id: "chembl-database",
|
|
15788
15790
|
name: "ChEMBL \u5316\u5408\u7269\u6D3B\u6027\u6570\u636E\u5E93",
|
|
15789
15791
|
category: "\u836F\u7269",
|
|
15790
|
-
tag: "
|
|
15792
|
+
tag: "builtin",
|
|
15791
15793
|
keywords: [
|
|
15792
15794
|
"chembl\u67E5\u8BE2",
|
|
15793
15795
|
"chembl\u6570\u636E\u5E93",
|
|
@@ -15801,7 +15803,7 @@ var SKILL_ROUTES = [
|
|
|
15801
15803
|
id: "rdkit",
|
|
15802
15804
|
name: "RDKit \u5316\u5B66\u4FE1\u606F\u5B66",
|
|
15803
15805
|
category: "\u836F\u7269",
|
|
15804
|
-
tag: "
|
|
15806
|
+
tag: "builtin",
|
|
15805
15807
|
keywords: [
|
|
15806
15808
|
"rdkit",
|
|
15807
15809
|
"\u5316\u5B66\u4FE1\u606F\u5B66",
|
|
@@ -15816,7 +15818,7 @@ var SKILL_ROUTES = [
|
|
|
15816
15818
|
id: "bio-variant-calling",
|
|
15817
15819
|
name: "\u53D8\u5F02\u68C0\u6D4B\u6D41\u7A0B (GATK/Mutect2)",
|
|
15818
15820
|
category: "\u57FA\u56E0\u7EC4",
|
|
15819
|
-
tag: "
|
|
15821
|
+
tag: "builtin",
|
|
15820
15822
|
keywords: [
|
|
15821
15823
|
"\u53D8\u5F02\u68C0\u6D4B\u6D41\u7A0B",
|
|
15822
15824
|
"variant calling\u6D41\u7A0B",
|
|
@@ -15831,7 +15833,7 @@ var SKILL_ROUTES = [
|
|
|
15831
15833
|
id: "antibody-design-agent",
|
|
15832
15834
|
name: "\u6297\u4F53\u8BBE\u8BA1 Agent",
|
|
15833
15835
|
category: "\u6297\u4F53",
|
|
15834
|
-
tag: "
|
|
15836
|
+
tag: "builtin",
|
|
15835
15837
|
keywords: [
|
|
15836
15838
|
"\u6297\u4F53\u8BBE\u8BA1",
|
|
15837
15839
|
"antibody design",
|
|
@@ -15845,7 +15847,7 @@ var SKILL_ROUTES = [
|
|
|
15845
15847
|
id: "armored-cart-design-agent",
|
|
15846
15848
|
name: "Armored CAR-T \u8BBE\u8BA1",
|
|
15847
15849
|
category: "\u6297\u4F53",
|
|
15848
|
-
tag: "
|
|
15850
|
+
tag: "builtin",
|
|
15849
15851
|
keywords: [
|
|
15850
15852
|
"car-t\u8BBE\u8BA1",
|
|
15851
15853
|
"cart\u7EC6\u80DE\u8BBE\u8BA1",
|
|
@@ -16001,7 +16003,7 @@ function clearCheckpoints(sessionId) {
|
|
|
16001
16003
|
|
|
16002
16004
|
// src/index.ts
|
|
16003
16005
|
var import_fs7 = require("fs");
|
|
16004
|
-
var VERSION2 = "2.4.
|
|
16006
|
+
var VERSION2 = "2.4.4";
|
|
16005
16007
|
var SKILLHUB_HUBS = {
|
|
16006
16008
|
bgi: { label: "BGI\u5185\u7F51", apiBase: "https://clawhub.ai", backend: "clawhub" },
|
|
16007
16009
|
clawhub: { label: "clawhub.ai", apiBase: "https://clawhub.ai", backend: "clawhub" },
|
|
@@ -16151,8 +16153,8 @@ function installBundledData() {
|
|
|
16151
16153
|
const installedDataVersion = (0, import_fs6.existsSync)(DATA_VERSION_FILE) ? (0, import_fs6.readFileSync)(DATA_VERSION_FILE, "utf8").trim() : "";
|
|
16152
16154
|
const needsUpdate = installedDataVersion !== VERSION2;
|
|
16153
16155
|
const targets = [
|
|
16154
|
-
{ src: (0, import_path6.join)(bundledData, "workflows"), dest: WORKFLOWS_DIR, name: "Skills (\
|
|
16155
|
-
{ src: (0, import_path6.join)(bundledData, "skills"), dest: SKILLS_DIR, name: "Skills (\
|
|
16156
|
+
{ src: (0, import_path6.join)(bundledData, "workflows"), dest: WORKFLOWS_DIR, name: "Skills (\u5206\u6790\u7C7B)" },
|
|
16157
|
+
{ src: (0, import_path6.join)(bundledData, "skills"), dest: SKILLS_DIR, name: "Skills (\u6269\u5C55\u7C7B)" },
|
|
16156
16158
|
{ src: (0, import_path6.join)(bundledData, "tools"), dest: TOOLS_DIR, name: "\u5DE5\u5177" }
|
|
16157
16159
|
];
|
|
16158
16160
|
let installed = false;
|
|
@@ -16231,7 +16233,7 @@ function printHelp() {
|
|
|
16231
16233
|
console.log(` ${source_default.cyan("!<\u547D\u4EE4>")} \u7ED5\u8FC7 AI \u76F4\u63A5\u6267\u884C Shell \u547D\u4EE4\uFF08\u5B9E\u65F6\u8F93\u51FA\uFF09`);
|
|
16232
16234
|
console.log(source_default.dim(" \u793A\u4F8B: !ls -la !Rscript analysis.R !python script.py !samtools view -h a.bam"));
|
|
16233
16235
|
console.log();
|
|
16234
|
-
console.log(source_default.bold.cyan("\u2500\u2500\u2500 \
|
|
16236
|
+
console.log(source_default.bold.cyan("\u2500\u2500\u2500 Skill \u5411\u5BFC \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
|
|
16235
16237
|
console.log(` ${source_default.cyan("/run")} <skill-id> \u4EA4\u4E92\u5F0F\u53C2\u6570\u5411\u5BFC\uFF0C\u81EA\u52A8\u751F\u6210\u5E76\u6267\u884C\u5206\u6790\u811A\u672C`);
|
|
16236
16238
|
console.log(` ${source_default.cyan("/check-env")} [id] \u68C0\u6D4B Skill \u6240\u9700 R/Python \u5305\u662F\u5426\u5DF2\u5B89\u88C5`);
|
|
16237
16239
|
console.log(` ${source_default.cyan("/search")} <\u5173\u952E\u8BCD> \u5728 SkillHub \u641C\u7D22\u5E76\u4E0B\u8F7D\u6280\u80FD ${source_default.dim("[--hub=bgi|clawhub|tencent]")}`);
|
|
@@ -16976,7 +16978,7 @@ async function handleCommand(input, rl, history, thinkMode, injectedSkills) {
|
|
|
16976
16978
|
}
|
|
16977
16979
|
break;
|
|
16978
16980
|
}
|
|
16979
|
-
// ── /run
|
|
16981
|
+
// ── /run skill wizard ────────────────────────────────────────────────────
|
|
16980
16982
|
case "run": {
|
|
16981
16983
|
const targetId = arg;
|
|
16982
16984
|
if (!targetId) {
|
|
@@ -17017,7 +17019,7 @@ async function handleCommand(input, rl, history, thinkMode, injectedSkills) {
|
|
|
17017
17019
|
if (ans.trim()) answers[q2] = ans.trim();
|
|
17018
17020
|
}
|
|
17019
17021
|
const paramSummary = Object.entries(answers).map(([k2, v2]) => `- ${k2}: ${v2}`).join("\n");
|
|
17020
|
-
const runPrompt = `\u8BF7\u6839\u636E\u4EE5\u4E0B\u53C2\u6570\uFF0C\u4F7F\u7528 ${skillName || runMatch.id} \
|
|
17022
|
+
const runPrompt = `\u8BF7\u6839\u636E\u4EE5\u4E0B\u53C2\u6570\uFF0C\u4F7F\u7528 ${skillName || runMatch.id} \u6280\u80FD\u751F\u6210\u5B8C\u6574\u7684\u5206\u6790\u811A\u672C\u5E76\u7ACB\u5373\u6267\u884C\uFF1A
|
|
17021
17023
|
|
|
17022
17024
|
\u7528\u6237\u63D0\u4F9B\u7684\u53C2\u6570\uFF1A
|
|
17023
17025
|
${paramSummary}
|