基于Python与YOLOv8的鱼类疾病检测系统实战指南
简介基于Python与YOLOv8开发的鱼类疾病检测系统源码面向水产养殖从业者、计算机视觉学习者和算法工程师用于对多种鱼类常见病症如出血、眼部缺陷、鳍部缺陷、溃疡进行自动化识别与实时监测。系统支持图片、视频及摄像头多种输入方式检测结果可自动保存并导出为Excel同时内置Web前端展示页面便于现场或远程查看。项目还提供了模型训练相关说明并集成70余种YOLOv8改进点方便用户按需优化识别精度与速度。压缩包共24个文件主体为19张PNG界面与效果图、4个Python脚本分别承担训练、验证、预测和UI交互以及1份Markdown说明文档整体大小约2.26MB结构轻量但覆盖完整流程。目前已有90人学习浏览适合希望快速上手目标检测在水产场景应用的开发者。通过阅读源码与说明可掌握数据准备、模型训练、结果导出和界面定制等环节的具体实现为后续自建鱼类病害检测系统提供可直接参考的工程范式。1. 鱼类疾病检测的坑这套源码包怎么替你填水产养殖里鱼病发现晚了损失按整池算。传统靠老师傅肉眼巡检等看到体表出血、烂鳍往往已经传染开。基于 Python 和 YOLOv8 的鱼类疾病检测系统做的是机器替人盯摄像头对着鱼池模型实时框出病鱼病灶区分出血、眼部缺陷、鳍部缺陷、溃疡等症状自动存图、导出 Excel、Web 界面展示。源码包把训练、验证、预测、展示四条链路都备齐了train.py 训练、val.py 出指标、predict.py 推断、ui.py 拉界面支持 22 类鱼类疾病识别还带 70 种 YOLOv8 改进模块。适合养殖场技术员、做目标检测毕设的学生、想在 YOLOv8 上做垂直场景落地的开发者。它不是原理讲义是能直接改、直接训的工程包。2. 先把环境踩平Python 与 YOLOv8 的安装配置环境装不对后面跑训练全是玄学报错。这一章把 Python 版本、PyTorch、CUDA 和 ultralytics 的搭配一次讲清楚照着抄能少折腾半天。2.1 版本选型Python 3.8 与 YOLOv8 的搭配逻辑YOLOv8 的核心是 ultralytics 库底层计算靠 PyTorch。版本搭配上我习惯 Python 优先 3.8不是越高越好而是 3.8 的编译型依赖兼容性最稳。之前我在 Python 3.11 上装 pycocotools 遇到过没有预编译 wheel 的情况现场编译折腾了半小时换了 3.8 一次过。如果你手头有 GPU先确认显卡驱动和它支持的 CUDA 版本再决定 PyTorch 装哪个版本这步顺序反了会很麻烦。场景PythonPyTorchCUDA说明NVIDIA 显卡训练3.82.x11.8 或 12.1日常训练推理最稳老显卡 / 驱动旧3.81.1311.6兼容老驱动纯 CPU 跑3.82.x无跑 demo 够用训练非常慢选型逻辑很简单显卡驱动装好之后nvidia-smi 能看到一个 CUDA 版本号PyTorch 的 CUDA 版本必须小于等于它否则会直接报驱动不兼容。GTX 1660 Ti 这种 6G 显存的卡也能用但模型尺寸和 batch 要克制后面 2.3 节单独讲。2.2 从零装到能跑通依赖安装与权重准备用 conda 建独立虚拟环境最省心不会污染系统 Python出了问题删掉重建就行。三行命令搞定conda create -n fish python3.8 -y conda activate fish pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple第一行创建名为 fish 的 Python 3.8 环境第二行激活它第三行安装 ultralytics。装 ultralytics 时会自动拉取 PyTorch、opencv-python、pandas 这些依赖国内网络环境下加清华源能把下载时间从半小时压到几分钟。装完别急着跑训练先验证环境import torch import ultralytics print(torch:, torch.__version__) print(cuda available:, torch.cuda.is_available()) print(ultralytics:, ultralytics.__version__)torch.cuda.is_available() 返回 True 说明 CUDA 版 PyTorch 可用返回 False 就回到 2.1 的表格换 PyTorch 版本。ultralytics 的版本号看一眼确认是 8.x 就行不同小版本 API 会有细微差异但 train、predict 这两个入口基本稳定。再跑一下 nvidia-smi 确认显卡驱动状态nvidia-smi能正常显示显卡型号和驱动版本就说明驱动没问题。注意这里显示的 CUDA 版本是驱动支持的版本和 PyTorch 内部用的 CUDA 不是一回事很多人把这两个搞混导致装错版本浪费一晚上。权重方面YOLOv8 的预训练权重 yolov8n.pt 第一次使用时会自动下载但国内网络下经常卡住。常见做法是手动下载对应文件放到项目根目录或 weights/ 文件夹训练时 model 参数直接指定路径省去下载等待。2.3 中低端显卡的显存规划GTX 1660 Ti 跑 YOLOv8 的取舍6G 显存跑目标检测训练是够用的关键是把超参数控制在显存安全线内。我之前用 GTX 1660 Ti 跑鱼类疾病数据集batch16、imgsz640、yolov8n 模型训练过程很稳。但如果你用 yolov8s 或更大模型batch 就得降到 8 甚至 4。训练前先跑一段显存检查脚本心里有底再开训import torch free, total torch.cuda.mem_get_info() print(f显存 {total / 1024**3:.1f} GB, 剩余 {free / 1024**3:.1f} GB) if free / 1024**3 2: print(剩余显存不足 2GB, 建议调小 batch 或 imgsz)torch.cuda.mem_get_info() 返回当前显存剩余和总量单位是字节除以 1024 的立方转成 GB。剩余不足 2GB 时训练大概率 OOM这时候优先降 batch 而不是降 imgsz因为 imgsz 影响模型感受野降太多小病灶会直接学不到。另外 ultralytics 默认开启 AMP 混合精度训练显存占用能省约一半不要手动关掉除非遇到 loss 震荡等兼容性问题。3. 读懂源码包train.py、val.py、predict.py 三条主线拿到源码包先别急着跑花十分钟理清文件结构后面操作会顺很多。这套包的核心是三个 Python 脚本加一个 Web 界面脚本图片素材主要是检测效果示例。3.1 文件结构与数据流向文件作用train.py训练入口加载数据集和模型权重产出 best.pt / last.ptval.py验证入口在验证集上计算 mAP、精确率、召回率predict.py预测入口支持单张图片、视频、摄像头实时检测ui.pyWeb 界面封装检测逻辑做可视化展示README.md环境安装与训练步骤说明*.png19 张示例图片既当效果展示也当测试素材数据流向是训练阶段 train.py 读数据集产出权重val.py 在验证集上评估权重质量预测阶段 predict.py 加载 best.pt 输出标注框ui.py 把同样的检测逻辑包装成 Web 服务。训练和预测共用同一套 YOLO 模型定义所以权重文件可以互通不会有格式问题。3.2 先跑通预测predict.py 的参数与输入输出拿到源码包第一件事建议先跑预测而不是先训练。预测链路短能最快确认模型、环境、图片输入输出整个闭环是通的。源码里的 predict.py 核心结构是这个模式import argparse from ultralytics import YOLO parser argparse.ArgumentParser(description鱼类疾病检测预测脚本) parser.add_argument(--weights, typestr, defaultbest.pt, help模型权重路径) parser.add_argument(--source, typestr, default1.png, help图片路径/视频路径/摄像头ID) parser.add_argument(--conf, typefloat, default0.25, help置信度阈值) parser.add_argument(--iou, typefloat, default0.45, helpNMS的IoU阈值) parser.add_argument(--device, typestr, default0, help推理设备, cpu或0) args parser.parse_args() model YOLO(args.weights) results model.predict( sourceargs.source, confargs.conf, iouargs.iou, deviceargs.device, saveTrue, save_txtTrue, ) for box in results[0].boxes: cls int(box.cls[0]) score float(box.conf[0]) print(f类别ID {cls}, 置信度 {score:.2f})逻辑说明ultralytics 的 YOLO 对象封装了推理全流程predict 返回 Results 列表每个元素对应一帧。saveTrue 会把标注框画到原图并存到 runs/detect 目录save_txtTrue 额外导出标签文件后面做批量分析和 Excel 统计时直接读 txt 就行。参数说明conf 是置信度阈值调低会放过更多低置信度框但误报变多调高漏检变多。鱼类体表病灶对比度低我一般会调到 0.2 而不是默认 0.25。iou 是 NMS 的去重阈值0.45 是通用值如果出现一条鱼被重复框住的情况可以调到 0.5 加强合并。source 传图片路径就是单张检测传视频路径就是逐帧检测传 0 则打开默认摄像头实时检测多摄像头环境传 1、2 切换。3.3 val.py 与 mAP 指标怎么读训练完模型好不好不能凭肉眼感觉要看 val.py 出的指标。常见做法是python val.py --weights best.pt --data fish.yaml --batch 16val.py 的逻辑是让模型在验证集上做一次完整推理把所有预测框和标注框做对比统计出 precision、recall、mAP50、mAP50-95 四个核心指标。指标含义鱼病场景注意precision预测框中真正目标的比例误报多时偏低recall真实目标被找到的比例漏检多时偏低mAP50IoU0.5 时的平均精度主要参考指标mAP50-95严格的多阈值平均病灶边缘不规则时偏低鱼类疾病里眼部缺陷、出血点都是小目标边缘还模糊mAP50-95 比 mAP50 低一截是正常的不用慌。如果 mAP50 都不到 0.5那要先查数据集和标注。还有个实用的排查技巧val.py 结束后会在 runs/val 目录生成混淆矩阵图打开看哪些类别互相混。鳍部缺陷和溃疡形态接近模型容易把两者搞混这是数据分布问题解决办法是给混淆多的类别补样本而不是盲目调超参。4. 训练自己的鱼类疾病模型数据集格式与超参数选型源码包本身带训练脚本但真正要训出自己的模型数据集格式和超参数选型是关键。这一章讲的是从数据集准备到训练完成的全流程。4.1 数据从哪来YOLO 格式数据集与 YAML 配置YOLOv8 训练吃的是标准化格式每张图片对应一个同名 .txt 标注文件每行是一个目标五个数字分别表示类别ID、中心点x坐标、中心点y坐标、框宽、框高坐标全部归一化到 0~1。源码包里只有 19 张示例图想训自己的模型得先准备一批带标注的鱼病图片。目录结构按这个组织dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── fish.yaml标注文件写法和内容示例# 001.png 对应 001.txt每行一个目标 3 0.512 0.431 0.142 0.098 7 0.233 0.612 0.108 0.121第一列 3 和 7 是类别ID必须从 0 开始连续编号。后面四列是目标框的中心点相对坐标和宽高比例。标注工具选 labelImg 或 labelme 都行导出时直接选 YOLO 格式。如果原始标注是 COCO 或 VOC 格式需要先转成这种 txt转换逻辑后面避坑章节会讲。训练配置写在 YAML 文件里train: dataset/images/train val: dataset/images/val nc: 22 names: 0: fin-rot 1: eye-disease 2: ulcer # 其余类别按标注顺序补齐train 和 val 路径写相对路径时是基于当前工作目录解析的所以执行训练命令前先 cd 到项目根目录。nc 必须和 names 列表长度一致写少一个都会在训练启动时报错而且报错信息不够直观容易让人以为数据集路径配错了。4.2 训练命令与超参数epochs、batch、imgsz 怎么调数据集就绪后训练命令一行就跑起来了yolo train datafish.yaml modelyolov8n.pt epochs150 batch16 imgsz640 device0modelyolov8n.pt 表示加载预训练权重做迁移学习比从零训练收敛快很多鱼病数据集一般几百到几千张从零训容易欠拟合。epochs150 是训练轮数batch16 是每轮喂给模型的图片数imgsz640 是输入分辨率device0 指定用第一张 GPU。超参数怎么选直接看这张表参数含义建议值model模型骨架6G 显存用 n 或 s显存大用 m/lepochs训练轮数100~300看数据集大小batch批次大小显存不够就降到 4/8imgsz输入分辨率640 默认病灶小可试 960device训练设备0 是第一张卡cpu 是纯 CPU模型尺寸这块重点说下YOLOv8 有 n/s/m/l/x 五档n 最小最快但精度最低x 反之。鱼病检测里病灶是小目标理论上大模型精度更高但工程落地得看卡。GTX 1660 Ti 这类 6G 卡老老实实用 n 或 s一晚上能训完有 3090 或 A100 再上 m 或 l。注意模型变大的同时 imgsz 也可以跟着提比如从 640 提到 960小病灶在特征图上占的像素更多但同样要接受显存占用翻倍。训练完成后权重在 runs/detect/train/weights/ 目录下best.pt 是验证集上 mAP 最优的模型last.pt 是最后一轮的。预测时用 best.pt不用 last.pt因为最后一轮往往已经过拟合best.pt 才是泛化能力最好的。4.3 训练曲线怎么看results.png 的读图逻辑训练完先别急着测打开训练日志和 results.png 看看过程是否健康。ultralytics 每轮训练会自动把损失和指标画成曲线存到 runs/detect/train/results.png包含 train/loss、val/loss、metrics/mAP50 这些子图。判断训练是否正常的经验法则train/loss 和 val/loss 一起下降说明模型在正常收敛train/loss 降但 val/loss 掉头向上就是过拟合了需要加增广或换小模型mAP50 曲线先升后平说明学得差不多了继续加 epochs 提升有限。训练过程中想看实时数据直接看 CSVtail -f runs/detect/train/results.csvresults.csv 是 results.png 的数据源每行一轮。想自己重新画损失曲线图用 pandas 读 CSV 再 matplotlib 画就行import pandas as pd import matplotlib.pyplot as plt df pd.read_csv(runs/detect/train/results.csv) epochs range(1, len(df) 1) plt.plot(epochs, df[train/box_loss], labeltrain box_loss) plt.plot(epochs, df[val/box_loss], labelval box_loss) plt.legend() plt.show()注意 results.csv 的列名以你本机 ultralytics 版本实际输出为准如果 KeyError先打印 df.columns 看真实列名再改。这套画法同样适用于想单独看 mAP50 曲线把列名换成 metrics/mAP50(B) 就行。5. 避坑指南鱼类疾病检测里最容易翻车的五个地方这套源码包我拆过之后自己也拿鱼病数据训过踩了不少坑。下面五条按出现频率排每条都按现象、原因、解决的顺序写给你省点调试时间。5.1 数据侧的坑标注、增广与类别不平衡坑1loss 降得很低mAP 却一直上不去现象训练 100 轮train/loss 降到 0.05但 val.py 一跑mAP50 只有 0.3 左右。原因数据量太少模型把训练集背下来了。鱼病数据集通常只有几百张图病灶又小极易过拟合。解决加强数据增广。ultralytics 的增广参数默认开了一部分还不够就把 mosaic1.0 打开让小目标在拼图里反复出现还有一个土办法是把 imgsz 从 640 提到 960病灶占的像素变多模型更容易学到有效特征。坑2标注文件里的类别 ID 和 names 对不上现象训练能跑但预测时输出的类别名全乱了眼部缺陷显示成鳍部缺陷。原因标注工具的类别顺序和 YAML 里 names 顺序不一致最常见的是漏了第 0 类所有 ID 整体平移一位。解决训练前写个脚本扫一遍 labels 目录把所有出现过的类别 ID 打印出来和 names 对齐import os label_dir dataset/labels/train ids set() for f in os.listdir(label_dir): if not f.endswith(.txt): continue with open(os.path.join(label_dir, f)) as fp: for line in fp: ids.add(int(line.split()[0])) print(出现过的类别ID:, sorted(ids))这个脚本遍历 labels 目录下所有 txt把每行第一个数字存入集合并排序输出。如果输出的最大 ID 是 21 而 names 有 22 项没问题如果输出的是 0~20 共 21 个 ID说明有类别没出现或者 ID 错位需要回标注工具里检查。5.2 训练与推理侧的坑显存、卡顿与重复框坑3训练中段 CUDA out of memory现象前 20 轮正常第 30 轮突然 OOM 退出重启训练又在前 20 轮附近挂掉。原因mosaic 增广把 4 张图拼成一张尺寸超出预期加上验证阶段 batch 太大验证集图片分辨率又高。解决训练参数里加 val_batch 单独控制验证批次或者把 batch 降到 4。另外确保 AMP 混合精度开着from ultralytics import YOLO model YOLO(yolov8n.pt) model.train(datafish.yaml, epochs150, batch8, imgsz640, ampTrue)ampTrue 在 ultralytics 8.x 里默认开启但显式写出来能确认没被全局配置或老版本覆盖。AMP 能省接近一半显存6G 卡跑 yolov8n 全靠它。坑4摄像头实时检测卡成 PPT现象predict.py 里 source0画面一帧一帧跳延迟明显。原因鱼病画面上目标多时 NMS 计算量大每帧还重新画框、写日志、存图CPU 被拖垮conf 阈值太低会让候选框数量爆炸。解决推理设备强制指定 GPU存图改成间隔帧conf 从 0.25 提到 0.35。具体做法是每 5 帧保存一次检测结果而不是每帧都存实时画面为主、存图留痕为辅。坑5一条鱼被框了好几个重叠框现象模型对同一病灶输出多个 IoU 很高的重叠框没有被合并。原因NMS 的 IoU 阈值设太低默认 0.45而病灶区域特征响应强容易产生多个高置信度框。解决把 iou 参数调到 0.5 或 0.55重叠框会被更激进地合并。注意别调太高超过 0.7 会把两条紧贴的鱼错误合成一个框漏检更麻烦。6. 进阶玩法创新点改进、Web 界面与边缘部署基础链路跑通之后这套源码包的进阶价值在三个方向改进模型结构、Web 化展示、边缘设备部署。6.1 70 创新点怎么接从注意力机制到 Head 改进源码包里带了 70 多种 YOLOv8 创新点改进本质是把模型结构模块化通过改 YAML 实现替换。以给 Backbone 加注意力机制为例复制一份 yolov8n.yaml把某层 C2f 换成改进模块backbone: - [-1, 1, Conv, [64, 3, 2]] - [-1, 1, C2f_Attention, [128, True]]改之前先确认对应模块在源码 modules 目录里有定义没有就得自己补注册。我自己的习惯先跑通原版做 baseline再逐个替换模块每换一个跑一次 val.py 对比 mAP别一次性全换否则模型涨了或跌了都说不清是哪个模块的贡献。6.2 从 .pt 到 rknnRK3588 部署流程训完的 best.pt 要上 RK3588 这类边缘设备得经历 .pt → ONNX → RKNN 的转换。导出 ONNX 用 ultralytics 自带命令yolo export modelbest.pt formatonnx imgsz640导出时 imgsz 必须和训练时一致否则特征图尺寸对不上转 RKNN 后输出会偏移。再用 RKNN-Toolkit2 把 ONNX 转成 rknn 格式量化校准图片用 val 集里抽几张就行不需要全量。部署后在板子上跑一张测试图对比 RKNN 输出和 PyTorch 输出的框坐标误差在几个像素内说明转换成功。有一次我图省事训练用 960 导出却写 640部署完 mAP 掉了一截查了半天才发现是 imgsz 不一致。从那以后我每次改模型尺寸都强制把训练、导出、部署三处的 imgsz 写进 README训完先导出再验证再上板一步都不跳过。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Hadoop+Spark电商用户行为分析实战:从集群部署到可视化大屏

Hadoop+Spark电商用户行为分析实战:从集群部署到可视化大屏

如果你手里正好有一批电商用户行为日志,比如几十万甚至上千万条带用户ID、商品ID、行为类型和时间戳的记录,老板或者导师只丢给你一句话:分析一下用户都在干什么,再做一个可视化大屏。我最近刚把一个HadoopSpark基于Python的电商用…

2026/10/5 8:52:43 阅读更多 →
GPU、NPU、TPU怎么选?先分清训练与推理再谈硬件

GPU、NPU、TPU怎么选?先分清训练与推理再谈硬件

一、GPU、NPU、TPU,别急着选牌子,先看清楚方向盘我这两年经常被问到一个问题:我想跑AI,是不是无脑上英伟达就完事了?问的人里面有做图像识别的,有跑大模型微调的,有做视频渲染的,还有…

2026/10/5 8:52:43 阅读更多 →
Win11 C盘空间不足?从系统清理到软件迁移的全套实战方案

Win11 C盘空间不足?从系统清理到软件迁移的全套实战方案

用Win11的朋友,对“C盘空间不足”这种提示应该都不陌生。装着装着系统,没下载几个大软件,C盘就红了,然后电脑开始卡,更新装不上,软件打不开。我处理过不少这类问题,自己也踩过坑——比如把不该删…

2026/10/5 8:52:43 阅读更多 →

最新新闻

OpenHarmony上Flutter实战:MaterialApp、Scaffold与状态组件核心解析

OpenHarmony上Flutter实战:MaterialApp、Scaffold与状态组件核心解析

刚把 Flutter 工程适配到 OpenHarmony 设备上跑通的时候,我相信很多人跟我的感受一样:环境折腾半天,真正写业务代码时,最常用的还是 MaterialApp、Scaffold 这对“老少组合”,以及绕不开的有状态、无状态组件问题。不少…

2026/10/5 13:50:17 阅读更多 →
OpenShell完全指南:让Windows 10/11找回Win7开始菜单手感

OpenShell完全指南:让Windows 10/11找回Win7开始菜单手感

1. 为什么Windows用户离不开OpenShell 1.1 每个版本的系统都在逼你改变操作习惯 先说点扎心的事实:从Windows 8开始,微软就把开始菜单这颗“老朋友”折腾得不像样子。到了Windows 10,好歹给了个能用的磁贴界面,但很多人真正怀念的…

2026/10/5 13:50:17 阅读更多 →
插件机制全解析:从IAR到播放器,破解插件加载失败之谜

插件机制全解析:从IAR到播放器,破解插件加载失败之谜

“plugins”这个词,你在任何软件生态里逛一圈基本都能撞见。前阵子有人问我,IAR 里的插件到底是干嘛的;紧接着又有人拿着一句 failed to load plugins web boot: 2 entries did not activate linxin666/dsh-p 来求助;没过两天&…

2026/10/5 13:50:17 阅读更多 →
鸿蒙开发实战:SQLite单例封装与数据持久化方案

鸿蒙开发实战:SQLite单例封装与数据持久化方案

1. 项目背景与方案选型思考1.1 会议随记Pro为什么选择SQLite做鸿蒙原生开发的时候,数据持久化是绕不开的一环。我手里这个"会议随记Pro"项目,核心功能是记录会议纪要、议程、待办事项,后来还加了录音转写和标签分类。数据量不算大&…

2026/10/5 13:50:17 阅读更多 →
插件机制与加载失败排查:从did not activate到IAR/Harness实战

插件机制与加载失败排查:从did not activate到IAR/Harness实战

写插件相关的文章,最容易犯的错就是一上来就钻进某个工具的配置界面里,结果被一大堆报错绕晕。最近我连续看到几条很典型的热搜词,比如“failed to load plugins web boot: 2 entries did not activate linxin666/dsh-p”“harness failed to…

2026/10/5 13:50:17 阅读更多 →
插件加载失败怎么排查?从IAR到Harness,一次讲透插件机制与修复方法

插件加载失败怎么排查?从IAR到Harness,一次讲透插件机制与修复方法

前阵子一个朋友给我转来一长串截图,全是同一个主题: harness failed to load plugins web boot: 2 entries did not activate 。扫一眼没头没尾,但类似的报错我在不同工具里见过太多次了。紧接着嵌入式群又有人问“iar plugins 是干什么的”…

2026/10/5 13:49:17 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/4 20:14:29 阅读更多 →