新闻详情

新闻详情

首页 / 资讯中心 / 详情

MMagic 开发脚本工具链详解:从 UT 检查、全模型训练基准到文档链接校验的完整实践指南

发布时间:2026/9/28 3:18:13来源:尧图网络
MMagic 开发脚本工具链详解:从 UT 检查、全模型训练基准到文档链接校验的完整实践指南
媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载导读本文以 .dev_scripts/README.md 为骨架系统讲解 OpenMMLab MMagic 仓库中面向开发者的一整套自动化脚本工具包括单元测试覆盖检查、全模型 checkpoint 下载与基准测试、基于 Slurm 集群的 Debug/FP32/FP16 三种训练流程、训练任务监控、选择性重跑/跳过任务、确定性训练、文档链接校验、FLOPs 计算与 model-index 自动更新。读者学完后可以独立使用这套工具链完成 MMagic 全仓库模型的回归验证、大规模集群训练调度与文档质量保障。文中所有命令与参数均以当前仓库 .dev_scripts 目录下的真实脚本实现为准并给出对应源码位置供深入研读。一、工具链总览MMagic 的.dev_scripts目录维护了一套面向仓库维护者而非终端用户的开发辅助脚本。下表汇总了各脚本与本文各章节的对应关系脚本功能对应章节update_ut.py扫描源码并定位缺失/空白/冗余的单元测试第 1 节download_models.py依据model-index.yml批量下载预训练权重第 2 节test_benchmark.py提交全模型基准测试任务并汇总结果第 2 节create_ceph_configs.py生成适配 Ceph 分布式存储的批量训练配置第 3 节train_benchmark.py提交全模型训练任务支持重跑/跳过/确定性训练第 3、5、6、7、8 节job_watcher.py监控已提交的 Slurm 任务状态第 4 节doc_link_checker.py校验文档中的相对链接与下载链接有效性第 9 节update_model_index.py依据各configs/**/README.md自动重生成metafile.yml与model-index.yml第 11 节utils/上述脚本共享的任务解析、指标映射、YAML 对比等工具函数贯穿全文其中train_benchmark.py、test_benchmark.py均以仓库根目录的 model-index.yml 为输入数据源通过modelindex库加载因此本文介绍的所有全模型操作都以该索引文件中的Models条目为基准。二、检查单元测试覆盖率update_ut.py2.1 基本用法文档给出的命令为cd mmagic/ python .dev_scripts/update_ut.py注意原文档此处写作.dev_script/update_ut.py实际仓库目录名为.dev_scripts执行时请使用python .dev_scripts/update_ut.py。运行后脚本会输出三类问题清单Additional UTtests/下存在、但mmagic/中找不到对应源码文件的测试冗余测试Missing UTmmagic/下有源码、但tests/下缺少对应测试文件缺失测试——脚本会自动创建一个空白的占位测试文件Blank UT对应测试文件已存在但内容行数不超过 3 行空白测试需要开发者根据源码实现补充。2.2 源码实现原理从 update_ut.py 源码第 31–79 行可以看到其映射逻辑递归扫描mmagic/**/*.py全部源码文件第 37 行通过--exclude参数跳过无需测试的文件默认排除项包括__init__.py、registry.py、version.py、__pycache__、stylegan3_ops/*、conv2d_gradfix.py、grid_sample_gradfix.py、misc.py、upfirdn2d.py、all_gather_layer.py、typing.py等第 13–20 行按规则把源码路径映射为测试路径mmagic→tests并在目录名前加test_前缀、文件名前加test_前缀第 45–55 行例如mmagic/models/editors/sagan/sagan.py对应tests/test_models/test_editors/test_sagan/test_sagan.py最后对比tests/test_*/**/*.py中已有的测试文件得出三类清单第 65–79 行。该脚本可通过--src、--dst、--exclude自定义扫描范围与排除规则例如只检查mmagic/apis目录python .dev_scripts/update_ut.py --src mmagic/apis --dst tests/test_apis。实际测试布局可对照 tests/test_models/test_editors 与 tests/test_apis 验证。三、测试全部模型download_models.py test_benchmark.py文档给出的两步流程为python .dev_scripts/download_models.py python .dev_scripts/test_benchmark.py结合源码实际调用比文档更细下面分别展开。3.1 批量下载预训练权重download_models.py 从 model-index.yml 解析每个模型的weights字段剔除https://download.openmmlab.com/mmediting/前缀后按TASK/METHOD/MODEL.pth的目录结构保存到work_dirs/download下默认DOWNLOAD_DIR第 16–17 行。常用参数对应源码第 51–68 行的parse_args参数作用--checkpoint-root 路径指定权重保存根目录默认work_dirs/download--models 正则...只下载名字匹配的模型支持多个正则如--models sagan stylegan2--model-list py文件从指定 Python 文件内含model_list变量加载待下载模型清单--force已存在时强制重新下载--dry-run只打印将要执行的wget命令而不真正下载源码中值得注意的两点第 21–48、128–153 行除模型权重外脚本还会自动下载仓库依赖的辅助权重如人脸关键点2DFAN4、s3fd与vgg19统一放到checkpoint_root/hub/checkpoints/供需要感知网络的模型如人脸相关生成模型使用下载优先使用wget -q --show-progress -p root url对旧版 wget 自动降级为wget -P root url。3.2 提交全模型基准测试test_benchmark.py 的位置参数与文档不同partition和checkpoint_root都是必填位置参数源码第 26–28 行因此实际用法形如python .dev_scripts/test_benchmark.py partition checkpoint_root \ [--job-name 前缀] [--work-dir 结果目录] \ [--use-ceph-config] [--run] [--local] [--models 正则...]partitionSlurm 集群分区名checkpoint_root第 3.1 步下载权重的根目录可传s3://开头的路径源码会通过mmengine.fileio.FileClient检测 Ceph 对象存储上的文件是否存在第 119–131 行默认只打印每个模型将要生成的job.sh脚本预览与 shell 命令只有加上--run才会真正sbatch提交第 255–273 行每个测试任务固定申请 2 块 GPU、每节点 2 个任务、每任务 16 个 CPU 核源码第 160–164 行调用 tools/test.py 并把--outwork_dir/model/result.pkl传给测试脚本用于后续汇总--P0与--model-list互斥源码第 72–80 行用于只测试 P0 优先级清单或指定模型清单--use-ceph-config会把配置路径中的configs替换为configs_ceph第 95–96 行配合第 4 节生成的 Ceph 配置使用。3.3 测试结果汇总test_benchmark.py支持--summary模式读取各模型work_dir/model/result.pkl与model-index.yml中记录的期望指标对比按 metric_mapping.py 定义的映射PSNR/SSIM/FID/NIQE 等各类指标及其容差tolerance与方向rule输出富文本表格--save可把表格另存为test_benchmark_summary.md--by-task则按任务类型如修复、抠图、生成分别汇总。颜色规则见源码第 297–303 行达标为绿色、超标为红色方向由rule决定未在容差内即视为回归。四、训练全部模型create_ceph_configs.py train_benchmark.py训练全部模型是这套工具链的核心分为配置生成与任务提交两个阶段。由于 MMagic 内部数据集存放于 Cephopenmmlab:s3://openmmlab/datasets/...训练前必须先通过create_ceph_configs.py把configs/下的本地数据路径批量改写为 Ceph 路径。4.1 Debug 快速训练第 3.1 节# create configs python .dev_scripts/create_ceph_configs.py \ --target-dir configs_ceph_debug \ --gpus-per-job 2 \ --iters 100 \ --save-dir-prefix work_dirs/benchmark_debug \ --work-dir-prefix work_dirs/benchmark_debug参数含义原文档已给出结合源码补充默认值参数默认值含义--target-dirconfigs_ceph新生成配置的存放目录--gpus-per-jobNone每个任务使用的 GPU 数最终取min(该值, 配置文件推断值)--itersNone若指定把所有模型的max_iters改为该值并重排验证/日志/保存间隔--save-dir-prefixwork_dirs日志与 checkpoint 在存储桶中的前缀--work-dir-prefixwork_dirs训练工作目录前缀--test-fileNone只更新指定的单个配置文件干跑模式--add-pavi/--add-wandb/--add-tensorboard关闭为每个配置追加对应的可视化后端--ceph-pathNoneCeph 存储路径前缀未指定时工作目录写本地若只想更新某一个配置用--test-filepython .dev_scripts/create_ceph_configs.py \ --test-file configs/aot_gan/aot-gan_smpgan_4xb4_places-512x512.py--test-file模式下脚本会把该配置复制到configs_ceph/对应位置并单独处理源码第 326–331 行适合先验证单个配置再全量生成。源码要点create_ceph_configs.py全量模式下先用shutil.copytree(configs, args.target_dir)复制整棵配置树再递归处理每个.py_base_下的基础配置会被跳过第 139–141、298–315 行update_intervals第 11–29 行当指定--iters时把train_cfg改写为IterBasedTrainLoop且val_interval iters // 5LoggerHook间隔为iters // 10CheckpointHook间隔为iters // 15convert_data_config第 32–135 行把data_root/data_rootsPGGAN 用字典形式中的data、./data前缀替换为openmmlab:s3://openmmlab/datasets/classification/或.../editing/ImageNet、CIFAR10 归入 classification其余归入 editing并同步改写LoadImageFromFile、LoadMask、RandomLoadResizeBg、CompositeFg等 pipeline 中的文件访问后端为petrel可视化后端第 187–243 行可按需追加PaviVisBackend以目录名作为project、配置名作为exp_name、WandbVisBackend与TensorboardVisBackendlogger 与 checkpoint 的out_dir被改写为save_dir第 245–255 行即训练日志与权重默认落到 Ceph 存储桶。4.2 提交训练任务python .dev_scripts/train_benchmark.py mm_lol \ --config-dir configs_ceph_debug \ --run \ --gpus-per-job 2 \ --job-name debug \ --work-dir work_dirs/benchmark_debug \ --resume \ --quotatypeauto其中位置参数partition此处为mm_lol是 Slurm 分区名。各选项含义如下源码第 87–149 行参数默认值含义--config-dirconfigs_ceph使用 Ceph 配置目录而非configs/--run否是否真正提交不加则仅打印预览--gpus-per-jobNone每个任务 GPU 数上限--cpus-per-job16每个任务 CPU 核数--job-name Slurm 任务名前缀实际任务名为job-name_model--work-dirwork_dirs/benchmark_train工作目录每个模型一个子目录--resume否训练中断后自动从 checkpoint 恢复--amp否开启 FP16 混合精度训练--deterministic否确定性训练见第 9 节--quotatypeNone配额类型reserved/auto/spotphoenix-slurm≥0.2 可用--models全部只训练名字匹配正则的模型--mail/--mail-typeNone/BEGIN邮件通知地址与类型NONE/BEGIN/END/FAIL/REQUEUE/ALL--port29666分布式训练起始 MASTER_PORT每个任务递增--local否在本机直接跑bash job.sh而非sbatch提交--skip/--rerunNone见第 6、7 节--summary否训练结束后汇总回归结果同测试脚本的 summary 模式源码要点train_benchmark.py以 model-index.yml 为数据源cvt开头的转换型配置会被跳过第 315–317 行无results记录的模型也跳过第 310–312 行每个模型的 GPU 数优先取 metafile 中Metadata[GPUs]缺失时从配置文件名正则\dxb\d推断推断失败默认 1 卡再与--gpus-per-job取较小值第 195–210 行为每个模型生成独立job.sh含#SBATCH --gresgpu、--ntasks、--cpus-per-task、MASTER_PORT等调用 tools/train.py 并追加--launcherslurm、--resume、--amp、--cfg-options randomness.deterministicTrue等参数第 236–267 行提交后会把JOBID JOBNAME列表写入形如train-YYYYMMDD-HHMMSS.log的历史文件第 343–351 行这是第 5 节监控、第 6–8 节重跑/跳过/失败重跑的数据基础。4.3 FP32 全量训练第 3.2 节# create configs for fp32 python .dev_scripts/create_ceph_configs.py \ --target-dir configs_ceph_fp32 \ --gpus-per-job 4 \ --save-dir-prefix work_dirs/benchmark_fp32 \ --work-dir-prefix work_dirs/benchmark_fp32 python .dev_scripts/train_benchmark.py mm_lol \ --config-dir configs_ceph_fp32 \ --run \ --resume \ --gpus-per-job 4 \ --job-name fp32 \ --work-dir work_dirs/benchmark_fp32 \ --quotatypeauto该流程即常规精度与configs/原始设置一致的全量复现4 卡/任务--resume保证断点续训。4.4 FP16AMP训练第 3.3 节python .dev_scripts/create_ceph_configs.py \ --target-dir configs_ceph_amp \ --gpus-per-job 4 \ --save-dir-prefix work_dirs/benchmark_amp \ --work-dir-prefix work_dirs/benchmark_amp python .dev_scripts/train_benchmark.py mm_lol \ --config-dir configs_ceph_amp \ --run \ --resume \ --gpus-per-job 4 \ --amp \ --job-name amp \ --work-dir work_dirs/benchmark_amp \ --quotatypeauto与 FP32 的唯一区别是提交时追加--amp源码第 261–262 行该参数会传入 tools/train.py 开启自动混合精度。仓库中部分原生配置本身就带有 fp16 设置如 configs/styleganv2/stylegan2_c2-PL-R1_8xb4-apex-fp16-no-scaler-800kiters_ffhq-256x256.py可通过--models筛选单独验证。五、监控训练任务job_watcher.py提交任务后会产生xxx.log形如train-20220923-140317.log记录所有任务的 job id 与 job name。监控命令为python .dev_scripts/job_watcher.py --work-dir work_dirs/benchmark_fp32/ --log 20220923-140317.log注意按当前仓库 job_watcher.py 的实现第 149–170 行实际参数名为--list读取该 log 文件而非--log用法为python .dev_scripts/job_watcher.py --list 20220923-140317.log --work-dir work_dirs/benchmark_fp32/脚本会为每个任务调用swatch examine job_id查询状态running/success/queue/failed 等读取对应job.id.out输出文件的最新 7 行第 55–73 行最终生成同名 CSV 文件如20220923-140317.csv报告每个 job 的 Name、ID、Status 与最近日志同时把纯文本状态表写入status.log。此外job_watcher.py 还内置了一个交互式 TUI基于simple_term_menu第 135–146 行不传--list时默认从~/.task_watcher/latest恢复上次任务列表支持--type默认failed可选 running/success/queue/failed/all过滤、--resume指定缓存文件可在终端中逐任务查看尾部日志或整体状态。状态查询与过滤逻辑get_info_from_id/filter_jobs位于 .dev_scripts/utils/job_util.py任务行格式统一为JOBID JOBNAME。六、只训练部分模型--rerun --rerun-list当只需重跑个别模型时用--rerun配合--rerun-list指定模型清单python .dev_scripts/train_benchmark.py mm_lol \ --config-dir configs_ceph_fp32 \ --run \ --resume \ --gpus-per-job 4 \ --job-name fp32 \ --work-dir work_dirs/benchmark_fp32 \ --quotatypeauto \ --rerun \ --rerun-list 20220923-140317.log--rerun-list接受一个包含模型名的文件log 文件即可。源码中--rerun读取该文件得到 job 列表--rerun-list得到的模型名集合将作为白名单过滤只有名单内的模型才会生成任务train_benchmark.py 第 213–217 行。更轻量的替代方案是直接用--models传正则如--models sagan pix2pix二者可以配合使用。七、跳过部分模型--skip --skip-list与重跑相反若希望全量训练但跳过某些模型使用--skippython .dev_scripts/train_benchmark.py mm_lol \ --config-dir configs_ceph_fp32 \ --run \ --resume \ --gpus-per-job 4 \ --job-name fp32 \ --work-dir work_dirs/benchmark_fp32 \ --quotatypeauto \ --skip \ --skip-list 20220923-140317.log--skip读取--skip-list指定的文件作为黑名单名单内的模型不生成任务源码第 151–156、213 行。两个模式实现上的区别在于--skip在parse_args阶段直接读取文件填充args.skip_list而--rerun会先解析 job 列表再交给--rerun-list使用。八、重跑失败或被取消的任务--rerun-fail / --rerun-cancel基于上次提交的历史 log可以只重跑失败或被取消的任务python .dev_scripts/train_benchmark.py mm_lol \ --job-name RERUN \ --rerun train-20221009-211904.log \ --rerun-fail \ --run--rerun-fail只重跑状态为 FAILED 的任务--rerun-cancel只重跑状态为 CANCELLED 的任务二者可同时使用即同时重跑失败与被取消的任务。实现上parse_args会解析 log 中每个 job 的 id通过swatch examine查询状态并用 utils/job_util.py 的filter_jobs按[FAILED]/[CANCELLED]过滤train_benchmark.py第 157–173 行过滤结果以富文本表格打印。还可以用--models进一步把重跑范围限定为失败/取消任务中的子集python .dev_scripts/train_benchmark.py mm_lol \ --job-name RERUN \ --rerun train-20221009-211904.log \ --rerun-fail \ --models sagan \ # only rerun sagan models in all failed tasks --run九、确定性训练--deterministic深度学习中 cuDNN 的随机算法会导致训练结果不可复现。开启确定性训练需满足torch.backends.cudnn.deterministic Truetorch.backends.cudnn.benchmark False在基准训练命令中追加--deterministic即可消除随机性影响python .dev_scripts/train_benchmark.py mm_lol --job-name xzn --models pix2pix --cpus-per-job 16 --run --deterministic从源码看--deterministic会做两件事第 250–251、264–265 行在生成的job.sh中导出CUBLAS_WORKSPACE_CONFIG:4096:8保证 cuBLAS 工作空间配置固定给 tools/train.py 追加--cfg-options randomness.deterministicTrue即通过 MMEngine 的randomness配置项关闭 cudnn benchmark 并固定随机种子。十、自动检查文档链接doc_link_checker.py文档链接是文档质量的重要组成。用以下命令批量校验python .dev_scripts/doc_link_checker.py --target docs/zh_cn python .dev_scripts/doc_link_checker.py --target README_zh-CN.md python .dev_scripts/doc_link_checker.py --target docs/en python .dev_scripts/doc_link_checker.py --target README.md--target既可以是文件也可以是目录--ignore可忽略指定目录。其检查逻辑doc_link_checker.py 第 28–91 行用正则\[.*?\]\(.*?\)提取 Markdown 链接跳过代码块 围栏内不检查与图片链接http(s)://开头的链接中只有download.openmmlab.com域名会发 HEAD 请求验证状态码须为 200其余外部链接不检查锚点#开头与跳过xxx.md#anchor截取#前部分校验相对链接按文档所在目录解析若目标文件不存在则记录为错误并抛出异常。注意文档明确提示该脚本不要接入 CI——CI 环境中大量并发 HTTP 请求会触发 503导致 CI 误报失败。十一、计算 FLOPs原文档给出的命令为python .dev_scripts/benchmark_valid_flop.py --flops --flops-str说明当前仓库的.dev_scripts目录下并不存在benchmark_valid_flop.py文件该命令属于文档中的历史残留。实际计算模型 FLOPs 与参数量应使用仓库维护的分析工具 tools/analysis_tools/get_flops.py例如python tools/analysis_tools/get_flops.py 配置文件路径 [--shape 输入尺寸]此外 .dev_scripts/inference_benchmark.sh 提供了推理侧的性能基准脚本可配合 tools/analysis_tools/print_config.py 先查看解析后的完整配置再计算 FLOPs。十二、更新 model indexupdate_model_index.pyMMagic 的 model-index.yml 是 MIMModel Index Manager依赖的索引文件同时驱动着上文download_models.py、test_benchmark.py、train_benchmark.py三个脚本的模型枚举。手动维护极易出错因此仓库提供了自动生成脚本python .dev_scripts/update_model_index.py其工作流程update_model_index.py解析 README 生成 metafile第 101–240 行扫描configs/**/README.md从标题行解析模型名与年份从Task行解析任务类型从 Markdown 表格解析Model配置路径、Dataset、Download权重链接与各指标列如 PSNR/SSIM 支持xx/xx形式拆分为 dict生成对应目录下的metafile.yml汇总生成 model-index第 243–264 行收集所有metafile.yml的相对路径写入根目录model-index.yml的Import字段差异检测通过utils.dump_yaml_and_check_difference对比新旧内容若文件有变化则退出码为 1源码第 267–291 行因此该脚本被设计为可接入 pre-commit 钩子提交前自动同步元数据。文档同时给出了 metafile 的字段规范Collection与Model两类含Name、Config、Results、Weights、Metadata等字段及各自的必填/可选属性开发者新增模型时按此规范补充configs/算法/README.md后运行该脚本即可自动维护索引。十三、结语一条完整的模型回归工作流把上述工具串联起来就得到 MMagic 维护者每日的例行工作流改代码→ 运行python .dev_scripts/update_ut.py补齐缺失/空白 UT准备数据→python .dev_scripts/create_ceph_configs.py --target-dir configs_ceph_debug --iters 100生成 Debug 配置小规模验证→train_benchmark.py partition --config-dir configs_ceph_debug --run --resume快速跑通全管线全量训练→ 按 FP32 / FP16 分别生成configs_ceph_fp32/configs_ceph_amp并提交辅以--deterministic、--quotatypeauto监控→job_watcher.py --list 历史log生成 CSV异常任务用--rerun --rerun-fail定向重跑测试回归→download_models.py拉权重 →test_benchmark.py partition checkpoint_root --run→--summary --save汇总发布前→doc_link_checker.py --target docs/...校验链接update_model_index.py同步 metafile 与 model-index最后用tools/analysis_tools/get_flops.py补充 FLOPs 数据。这套脚本体系与 tools/train.py、tools/test.py、model-index.yml 及 configs 各算法配置紧密耦合理解其参数与源码实现是参与 MMagic 大规模模型训练与发布流程的必备技能。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载相关推荐终极Android安全资源宝典从链接检查到智能治理的完整指南终极Android安全资源宝典从链接检查到智能治理的完整指南 想要快速找到最全面的Android安全工具和资源吗android security aweso文档应用安全CocoIndex 开发脚本完全指南CLI 文档自动生成、类型检查与 Rust 工具链维护CocoIndex 开发脚本完全指南CLI 文档自动生成、类型检查与 Rust 工具链维护 导读 CocoIndex 仓库的 dev/ https://lin人工智能大模型RAGAI AgentAgent 记忆数据工程流处理Hy3 昇腾0day适配 基于CANN的高性能推理优化实践Hy3 昇腾0day适配 基于CANN的高性能推理优化实践 Hy3 正式版发布面向真实业务场景打磨采用 295B 总参数、21B 激活参数架构原生支持示例工程人工智能大模型模型推理服务模型优化模型量化CANNAscend上一篇TVBoxOSC 主题开发完整指南把电视盒子界面变成自己的下一篇10分钟搭建个人游戏云Sunshine开源串流服务器终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PL/SQL存储过程配 TaoToken:settings.json 骨架与报错排查 2026/9/28 4:17:55

PL/SQL存储过程配 TaoToken:settings.json 骨架与报错排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenAI Tibo 拆解 Codex 限额:同一张 Rate Card,Sol 为何更快耗尽? 2026/9/28 4:17:49

OpenAI Tibo 拆解 Codex 限额:同一张 Rate Card,Sol 为何更快耗尽?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Cursor 配 TaoToken:settings.json 骨架与报错排查实录 2026/9/28 4:17:30

Cursor 配 TaoToken:settings.json 骨架与报错排查实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenManus源码架构分析:从入口到工具调用的配置骨架拆解 2026/9/28 4:17:30

OpenManus源码架构分析:从入口到工具调用的配置骨架拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
LangChain多智能体Router配置TaoToken:settings.json骨架与路由验证 2026/9/28 4:17:30

LangChain多智能体Router配置TaoToken:settings.json骨架与路由验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
如何在本地部署OpenClaw:TaoToken统一Key接入与config.toml配置实战 2026/9/28 4:17:30

如何在本地部署OpenClaw:TaoToken统一Key接入与config.toml配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉