Bioconda Tool Crawler (Tiered)
该目录提供一个分层抓取脚本:bioconda_crawler.py,用于从 Bioconda 抓取工具元数据并按 T0 / T1 / T2 输出。
输出字段
每条记录至少包含:
software_namepackage_namelatest_versiondependenciesmaintainersdescriptionsummarylicensehome_urldoc_urldev_url
分层策略
T0(核心层):按下载量自动选取- 各领域(单细胞/空间转录组/蛋白组/代谢组)按下载量取 Top-K
- 全部包再按下载量取整体 Top-K
- 合并去重后作为 T0 结果,不再硬编码固定名单
T1(扩展层):按关键词覆盖单细胞、空间转录组、蛋白组、代谢组工具T2(长尾层):按需输入工具名动态抓取
快速开始
在项目根目录运行:
python agent_system/toolbase/bioconda_crawler.py \
--tiers ALL T0 T1 T2 \
--subdirs linux-64 noarch \
--downloads-source channel_api \
--t0-k-per-domain 5 \
--t0-k-overall 20 \
--t1-max-per-domain 200 \
--t1-target-total 600 \
--t2-tools cellranger scanpy \
--output-dir agent_system/toolbase/output
说明:
ALL:导出全量包索引(依赖来自 repodata,维护者默认空)T0:按累计下载量自动排序和筛选(结果包含downloads字段)T0/T1/T2:会进一步访问 Anaconda 包 API 补充维护者和描述等字段--t1-max-per-domain:控制 T1 每个领域抓取上限(默认 200)--t1-target-total:控制 T1 总目标数量(默认 600,不足会从全局高下载包回填)--downloads-source:channel_api:优先使用频道级包列表接口抓下载量(默认)package_api:逐包查询下载量(可配合--package-api-max限制数量)
结果文件
bioconda_all_packages_index.jsonbioconda_t0_core_tools.jsonbioconda_t1_domain_tools.jsonbioconda_t2_on_demand_tools.json
转换为 Converter 输入
使用 prepare_converter_inputs.py 将 T0/T1/T2 三份 JSON 转成 tool2mcp.py 可直接处理的格式,并可选生成每个工具的 help 文档:
python agent_system/toolbase/prepare_converter_inputs.py \
--input-dir agent_system/toolbase/output \
--output-dir agent_system/toolbase/output \
--conda-env bioinfomcp-env
常用输出:
converter_input_t0.json/converter_input_t1.json/converter_input_t2.jsonconverter_input_all.json(可用于tool2mcp.py --tools_json)converter_jobs.json(每个工具含manual和run_help_command,可用于tool2mcp.py --jobs_json)help_index.json与help_docs/*.help.txthelp_docs/*.manual_bundle.txt(多源文档聚合:CLI help + URL 文档 + conda search --info)
如果只做格式转换,不执行安装:
python agent_system/toolbase/prepare_converter_inputs.py --skip-install
多元回退策略(自动):
<tool> --helppython -m <module> --help- 抓取
doc_url/home_url/dev_url网页文本 conda search --info元信息