爱大客 - 2026年5月
type: channel
link: https://www.idarc.cn/index.php/2026/05/
description: Every piece of all creatures in this freezing world, are racing for freedom.
items: 通过MCP实现长调用结果的多次流式返回
items: YOLO学习总结
items: 把android手机变为PC摄像头的工具

通过MCP实现长调用结果的多次流式返回
type: item
date: 2026-05-27T18:21:00+08:00
description: 要求： 大模型请求1分钟内每10秒钟的温度，MCP server每10秒返回一次温度给大模型。 通过Server Notification的方式返回，MCP Server示例代码如下(这个任务千问3.6没有完成，让google ai完成的)： import asyncio import random from fastmcp import FastMCP, Context 初始化 FastMCP 服務，並為其命名 mcp = FastMCP("TemperatureStreamer") @mcp.tool() async def monitor_temperature(duration_seconds: int = 60, interval_seconds: int = 10, ctx: Context = None) -> str: """ 在指定的時間內，每隔固定秒數監測並返回一次環境溫度。 Args: duration_seconds: 總監測時長（秒），預設 60 秒 interval_seconds: 數據採集間隔（秒），預設 10 秒 """ # 計算總共需要採集幾次數據 total_steps = duration_seconds // interval_seconds temperatures_log = [] print(f"開始溫度監控任務：預計執行 {duration_seconds} 秒，每 {interval_seconds} 秒採集一次...") for step in range(1, total_steps + 1): # 模擬讀取硬體傳感器溫度 current_temp = round(random.uniform(22.0, 28.0), 2) temperatures_log.append(current_temp) # 構造本次採集的進度訊息 status_msg = f"第 {step * interval_seconds} 秒 - 當前實時溫度: {current_temp}°C" print(f"[Server Log] {status_msg}") # 【核心】如果客戶端支持並傳入了 Context，則通過 SSE 通道即時推送進度通知 if ctx: # report_progress 參數: (當前進度值, 總進度值, 附帶的文本訊息) await ctx.report_progress( progress=step, total=total_steps, message=status_msg ) # 異步等待下一次採集 if step < total_steps: await asyncio.sleep(interval_seconds) # 任務結束，返回最終的標準 Response avg_temp = round(sum(temperatures_log) / len(temperatures_log), 2) return f"【監控任務完成】共採集 {total_steps} 次數據。歷史溫度: {temperatures_log}。平均溫度: {avg_temp}°C" if name == "main": 以 sse 傳輸模式啟動服務，默認會掛載在 http://127.0.0 # 備註：新版 FastMCP 也支持 "http" (Streamable HTTP)，兩者在網路層皆可實現流式推送 mcp.run(transport="sse", host="127.0.0.1", port=8000) 在Inpector中，仍然是采用常规的tools调用方式，不同的是，每过10秒在右下角会出现`notifications/progress`的返回结果，例如： ```json { "method": "notifications/progress", "params": { "progress": 1, "total": 6, "message": "第 10 秒 - 當前實時溫度: 23.22°C" } } 在此期间，工具一直是Running状态，在60秒结束后，才会返回正常的结果。

YOLO学习总结
type: item
date: 2026-05-19T19:17:00+08:00
description: 这两天学习了一下YOLO，也就是You Only Look Once。学习这个模型的原因是GitHub上有一个激光打蚊子的项目，有不少的Star数目，就是用的这个模型。这个项目已经好多年没有更新了，使用的还是 YOLO v4 模型。 这个模型是快速的视频实时目标识别的模型，发展至今已经历了很多代。YOLOv4模型使用的是CNN框架，也就是卷积神经网络，基于一个叫做Darknet的神经网络实现。这个版本的模型还有比较多问题，第一，它是有锚框的，也就是Anchor-based，主要是增加了很多运算量，然后无法实时处理特别长或者扁的物体，另外就是只能进行目标识别，不能做其他的工作。第二是建立了NMS非极大值抑制的后处理方式，不要在一个物体上圈好多个框。 在后面的版本 V8 11，26这些版本中都增加了更多的功能，并且从C++转向了PyTorch，维护者也变成了ultralytics。首先就是取消了锚框，变成了无锚框的方式，其次除了目标识别，还增加了图片分类/实例分割（就是把目标抠图出来而不是只画个框）。其次还有多目标检测/姿态检测等。 YOLO26这是一个轻量化的版本，还取消了NMS，进一步降低运算量，使其可以在嵌入式设备上或者说是运算能力比较差的设备上运行。 YOLO模型有不同的规模，从小到大有nano/small/medium/large/extra large。 其中nano只有几兆大，extra large也不到300M，经过FP16或者INT8量化还能进一步降低体积和运算量。 YOLO模型的原始格式是.pt（pytorch），可以导出为不同的格式，最重要的是onnx，这个格式支持openCV中的dnn（深度神经网络）来调取，也支持在浏览器中/ios/android/react native/flutter中调取。最重要的一个项目是微软的https://github.com/microsoft/onnxruntime 跨平台项目，对多端调用提供了可能。 还支持tflite格式，是谷歌tensorflow的一种格式，官方维护了 https://github.com/tensorflow/tfjs 这个js库，支持node和浏览器等环境调用。在安卓手机上由特别的性能优化。 其他巨头也有自己的格式，如英伟达GPU上有TensorRT (.engine 或 .trt）格式，苹果手机上有CoreML (.mlpackage 或 .mlmodel) 格式，Intel有OpenVINO (_openvino_model/)，国产的瑞芯微也有rknn格式。 介绍下原始训练的模型格式，最重要的是pytorch保存的pt模型，以及pytorch延伸框架（如 PyTorch Lightning）的ckpt（checkpoint)模型。 这两种模型除了权重数据还打包了python代码，所以被认为是不安全的，后来huggingface等社区就推出了只有权重数据的safesensor模型，并且做了内存映射，加载更快。

把android手机变为PC摄像头的工具
type: item
date: 2026-05-19T10:50:00+08:00
description: 测试了driodCam和iriun webcam, 两者都有水印，其中iriun webcam没有画面，driodcam会更好用些。需要注意的是，PC和手机要在同一个路由器下。 免费无水印的方案里面， OBS studio就有虚拟相机功能，结合scrcpy就可以。 另外还有vdo.ninja 通过网页读取摄像头，传输给obs。然而清晰度不是很好，并且摄像头参数要反复调整，比较麻烦。 另外，github上有一个开源项目 VCamDriod ,然而它需要在android app中扫PC APP上的QR码来配置，然而就是死活扫不出来。不推荐。 推荐方案： droidCam 连接方便，但是免费版有水印。 scrcpy + OBS studio, 功能强大但是连接麻烦。