KMD开发环境搭建全指南:从零构建GPU内核驱动调试闭环

做GPU驱动开发多年,经常被新入行的同学问到一个共性问题:想学KMD(Kernel Mode Driver,内核模式驱动),结果光看着“内核态、蓝屏、调试器”这些词就被劝退了,更不用说环境搭建这种第一关。

这篇文章就专注一件事:把KMD开发环境从零到一完整搭起来。我会把每一步、每一个关键决策背后为什么这么选、有什么坑都讲明白,避免你像我当年那样在搜索引擎里拼拼凑凑,踩了一周坑才跑通第一个内核模块。如果你是对GPU驱动感兴趣的学生、想转行做驱动开发的程序员,或者只是想给自己补内核调试这门课,那这篇文章里的路径可以直接照抄。

先把话放前面:KMD开发环境搭建这件事,本质上不是“装两个软件”,而是要建立一条“改代码—编译—部署—调试—分析”的完整闭环。缺了任何一环,后期开发都会寸步难行。

1. 先搞懂:KMD在整个GPU软件栈里处于什么位置

1.1 GPU驱动架构的基础概念

很多人一上来就急着安装WDK,我反过来建议:动手之前,先在脑子里把驱动体系的地图建立起来。

现代GPU驱动体系基本都是分层结构。最上层是操作系统面向应用提供的图形API,比如DirectX、Vulkan、OpenGL,游戏和应用开发者调用它们画画面、跑计算。最下层自然是GPU硬件本身,包括计算单元、显存、显示控制器、编解码引擎。中间夹着的,才是驱动的天下。

关键点来了:驱动层不是单一一个文件,而是通常被拆成前后两台“翻译官”协同工作。一台叫用户态驱动(UMD),运行在普通应用的进程空间里,负责把上层API调用翻译成底层指令包。它像是前台接待,把客户需求梳理成内部工单,但绝不直接碰硬件。另一台就是KMD,运行在操作系统内核态,拥有最底层权限,直接管理显存映射、GPU命令提交、中断处理、电源状态切换这些硬骨头任务。

这里要特别讲清楚KMD遵循的接口规范。现代Windows显示驱动遵循WDDM(Windows Display Driver Model)模型,该模型定义了一整套内核态DDI函数,也就是大家常说的DxgkDdi系列接口。系统图形调度器会主动调用KMD暴露的接口来完成工作。比如DxgkDdiStartDevice负责设备初始化,DxgkDdiPresent负责提交显示画面,DxgkDdiRender负责接收来自UMD的渲染命令并交由GPU执行。

理解这层关系以后,你会发现KMD的代码结构核心其实就是“实现一套DDI接口函数,暴露给系统调用”。它并没有你想象中那么玄乎,只是对正确性和性能的要求非常高,因为任何一个低效操作都可能直接拖垮整台机器的显卡性能。

1.2 为什么环境搭建值得被当作一个专门话题

因为KMD是内核态代码,这一点决定了整个开发方式和普通应用开发完全不同。

写普通程序,挂了大不了进程崩溃退出,重启一下就行。但KMD一旦出现内存访问越界、自旋锁没释放、DMA操作失败,结果就是整个操作系统蓝屏。你没有第二个机会去现场抢救,所有事后分析都依赖内核转储(dump)文件、调试器日志和之前埋下的追踪点。

所以我一直强调,KMD开发环境的本质不是“装好一个IDE”,而是建立一套不影响主机的隔离实验体系。你需要一个单独的调试链:源码在主机上改、生成驱动后传到目标机部署、目标机蓝屏后通过内核调试器抓取现场。如果不把这条链打通,后面的驱动开发就是盲人摸象。

这也解释了为什么行业中普遍推荐使用独立测试机或虚拟机,而绝不建议在自己的主力开发机上直接挂KMD。一次误操作,开发机直接蓝屏,未保存代码和数据可能全部丢失,代价实在太大。

2. 开发环境组件与选型思路

2.1 核心组件构成清单

KMD开发需要准备的东西,比普通应用开发多几样,我列个完整清单,后面逐项展开。

第一,源码编辑与编译工具链。主流选择是Visual Studio 2022(17.x),IDE自带驱动项目的MSBuild配置和代码模板,省去手工编写构建脚本的麻烦。对初学者来说,用对了IDE就等于成功了一半。

第二,Windows SDK。它提供公共的API声明、库文件和各种标准头文件。驱动代码里用到的很多数据类型也依赖它,所以装WDK之前必须先把SDK配好。

第三,Windows Driver Kit,也就是WDK。这是驱动开发的灵魂组件,里面包含驱动专属头文件、库文件、INF模板、签名工具和项目模板。没有WDK,你连驱动项目的编译规则都无从谈起。

第四,内核调试工具。主流选择是WinDbg,配合内核调试连接来观察目标机的寄存器、内存和调用栈。这台调试器是你排查内核问题的眼睛,重要程度不亚于编译器。

第五,目标机环境。物理机或虚拟机都行,专门用来安装、运行、测试KMD,目的是和开发主机、日常使用环境隔离开。

第六,签名方案。驱动文件未经签名无法安装到系统里,开发阶段可以选择开启测试签名模式,正式分发则需要企业签名证书。

2.2 版本对应关系

这里有一个新手最容易踩的坑:版本三者必须匹配。你选择的VS版本、Windows SDK版本、WDK版本是有关联的,某套组合编译顺滑,换一套组合可能连头文件都找不到。

组件推荐版本说明
Visual Studio2022 17.x当前主流,对新SDK与WDK的适配最好
Windows SDK与目标系统对应,如10.0.22621或10.0.26100先装SDK,后装WDK
WDK与SDK版本保持一致,如10.0.26100.x安装器会给出版本对应提示

最省事的办法:去官方渠道下载最新WDK,安装器会明确提示“需要哪个版本的SDK和VS”,按提示补齐即可。千万不要用VS2019配最新WDK,也尽量不要让三者跨大版本组合,各种令人摸不着头脑的编译错误,八成都是版本错位引起的。

老项目则另说。如果你手头已有维护中的旧驱动工程,那么保持原有环境版本不变最安全,只有在确认新WDK未移除所需接口后,才考虑整套升级。

2.3 调试连接方式:网络调试是第一选择

目标机调试主要有三种连接方式:串口、网络、USB。我实测下来的体验是,日常开发首选网络调试。

连接方式优点缺点适用场景
串口(COM)稳定、无网络依赖速度慢、需串口线应急、老旧设备
网络(Net)速度快、配置简单需要网络环境、偶发丢包日常调试主力
USB速度快需要专门调试电缆特定设备

网络调试的最大优势是速度快。比如分析一个几GB的显存转储文件,串口传输能把人折磨到怀疑人生,网络传输则是几分钟的事。配置起来也很方便:目标机设置网络调试参数,主机端WinDbg填IP、端口和key就能连上。

另一个强烈建议:如果用的是虚拟机作为目标机,一定要善用快照功能。每次安装驱动之前先打个快照,驱动把系统搞蓝屏后,直接恢复到上一个干净状态,整个过程不超过一分钟。这个福利只有真正踩过坑的人才懂得有多么珍贵。

3. 手把手:从零搭建一套KMD开发环境

3.1 安装Visual Studio并勾选正确组件

打开Visual Studio安装器,在“工作负载”页里勾选“使用C++的桌面开发”。这一项默认会带C++编译器和基础Windows SDK组件,但为了驱动项目,建议把右侧“单个组件”里的最新“Windows SDK”显式勾上。

安装完成后,有个顺手验证方法:打开“开发者命令提示符”,输入cl看编译器版本,再输入where.exe wdk看WDK工具路径是否可访问。这一步不是必须,但在后续排查问题时很有用——至少能确认PATH环境变量指向正确。

磁盘充足的情况下,是不是该装多个VS版本备用?我的建议是不必。一个VS 2022足够覆盖新旧项目。真需要旧工具链时,通过“单个组件”安装对应版本的工具集就行,没必要装两个大版本同时保留,维护成本极高,还容易造成路径混乱。

这里还建议把WDK扩展组件一并勾上。WDK安装器里有“Driver Kit”和“Visual Studio Extension”两个选项,后者一定要勾选,它负责把驱动项目模板和编译规则集成到VS中。漏了这个扩展,你会发现VS里根本没有“空WDM驱动”这类工程模板可选。

3.2 安装Windows SDK与WDK,让版本对齐

先装Windows SDK,再装WDK,顺序千万别反。WDK安装器会检查当前系统里的SDK版本,如果发现版本不匹配,会弹窗警告,甚至拒绝安装。强装的结果就是后来编译时头文件缺失、库文件路径错乱,白白浪费时间。

安装完成后,确认一下WDK头文件目录是否存在,例如C:\Program Files (x86)\Windows Kits\10\Include\<版本号>\下应当能看到wdm.h、ntddk.h、dxgiddi.h这些关键头文件。这些头文件就是KMD代码的“字典”,缺少任何一个关键的,编译都过不去。

还要提一句:WDK自带的示例代码,建议保留安装。虽然没有专门的KMD显示驱动示例,但有很多可靠的通用驱动框架示例。这些示例工程编译配置都是现成模板,直接在这基础上改造,比从空白工程手写配置省力得多。

3.3 配置目标机的测试签名与调试模式

KMD要装进目标机,最难过的一关是驱动签名。

开发阶段,最实用的是测试签名模式。在目标机上打开管理员命令提示符,执行两条命令:

bcdedit /set testsigning on bcdedit /set debug on

然后重启。重启后桌面右下角如果出现“测试模式”水印,就说明签名限制已放松。

如果开了测试签名还是无法安装驱动,那多半是目标机固件里的Secure Boot还处于开启状态。Secure Boot会拦截未经签名的内核模块加载,这一点很隐蔽,很多人排查半天最后才发现是固件层的问题,必须进BIOS/UEFI把它关掉。

顺带回答一个常见疑问:企业签名证书是不是必须?如果你要做正式发布、要让驱动通过系统自动更新分发到真实用户手上,那是必须的。但学习、内部测试、本地部署,测试签名完全够用。正式签名的申请需要EV证书并走WHQL认证流程,这是另一套话题,等把驱动逻辑开发透再去补不迟。

3.4 创建第一个驱动骨架并编译

在VS 2022里新建项目,选择“空WDM驱动(Empty WDM Driver)”模板。这个模板已经为我们配好了驱动构建所需的编译参数、链接库和INF生成规则,是起步最好的模板。

新建源文件Driver.cpp,写一个最简驱动框架:

#include <ntddk.h> VOID UnloadDriver(PDRIVER_OBJECT DriverObject) { // 暂停相关操作、释放资源,后续可以在这里加日志 } extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { DriverObject->DriverUnload = UnloadDriver; return STATUS_SUCCESS; }

选x64配置,点击生成。编译通过以后,输出目录里会出现一个.sys文件,并自动生成配套的INF文件。INF不是编译必须,但驱动安装时需要通过它声明硬件ID和加载方式,建议保留。

这一步的目标只有一个:确保你的工具链能编译出一个可加载的内核模块。真正的KMD显示驱动要实现的接口函数远不止这两个,每个接口背后都有复杂的内存管理或命令调度逻辑。所以先别急着写业务逻辑,先把骨架跑通,让编译和部署路径都顺畅起来,后面扩展起来才不慌。

3.5 部署到目标机并建立内核调试会话

把编译输出的.sys和INF文件复制到目标机。在目标机右键INF选择“安装”,或者用devcon这类工具安装。测试签名模式下,安装过程不会弹“无法验证签名”的警告。

接着在主机端配置WinDbg,典型连接命令格式:

WinDbg -k net:port=50000,key=1.2.3.4

这个key需要在目标机上生成。目标机管理员命令行运行:

bcdedit /dbgsettings net hostip:192.168.1.100 port:50000 key:1.2.3.4

其中hostip填主机IP,port是自定义调试端口,key是一串调试握手密码。目标机重启后,主机端WinDbg发起连接,就能实时看到目标机的内核输出。

配置完成后,建议花几分钟做三件事:确认能否正常看到目标机的启动日志;设置符号路径,例如srv*C:\LocalSymbols*符号服务器地址;验证公共符号能正常加载。符号在蓝屏分析时极其重要,没有符号的崩溃栈只能靠猜,有符号后调用栈一目了然。这一步别偷懒,真到排查问题时会救你命。

4. 搭建过程中的常见问题与排查技巧

4.1 版本不匹配引发的编译问题

我见过最多的就是这类问题,不服不行。

现象一:编译报error MSB8041。通常是VS里缺少对当前SDK版本的配套支持,或WDK与VS版本不匹配。回到VS安装器重新确认SDK组件,基本能解决。

现象二:提示找不到wdm.h或ntddk.h,明明已经装了WDK。此时检查项目的“WindowsTargetPlatformVersion”属性是否和实际安装的SDK版本一致。默认值可能写的是10.0.19041.0,但你实际装的是10.0.22621的SDK,自然找不到头文件。

现象三:链接时报LNK1181 无法打开输入文件 ntoskrnl.lib。这表示链接库路径没有指向WDK的库目录,或对应架构的库文件不全。打开项目“链接器—常规—附加库目录”,确认是否指向WDK“Lib”目录下对应架构(x64或ARM64)的文件夹。

4.2 签名与部署环节的坑

安装驱动时报“未经签名无法安装”,第一反应不是去翻驱动,先确认两点:目标机是否处于测试模式,桌面上的“测试模式”水印在不在;Secure Boot是否已关闭。

还有一类隐蔽问题:驱动安装成功后,设备管理器里设备也正常,但功能死活不生效。多数是INF声明的硬件ID和目标设备实际ID不一致,设备被系统以兼容模式加载了。用devcon查看实际硬件ID,对比INF里的字符串,往往一改就好。

这里再分享一个经验:部署驱动之前,一定要在目标机上备份或做快照。万一驱动运行中触发了蓝屏,恢复干净系统只需要几十秒。不做快照的话,一旦系统崩溃,重装环境的时间够你重新读完一半这篇专栏。

4.3 调试连接无响应,教你排查顺序

WinDbg连不上目标机,常见原因不外乎三种:端口被防火墙拦截、连接key不一致、目标机没有真正进入调试模式。

我自己的排查顺序很固定,按顺序走完基本都能定位:

  • 先在目标机上执行bcdedit /dbgsettings,确认调试模式确实开启
  • 目标机上用工具探测调试端口是否在监听
  • 主机端ping一下目标机IP,确认网络通
  • 对比两边的连接key,确保完全一致

这套流程走完,九成的连接问题都能解决。剩余一成可能和虚拟机网络模式有关,把NAT模式改成桥接模式,往往就通了。

4.4 老项目升级环境时的构建同步技巧

从零搭建环境遇到问题,逻辑清楚;老项目迁到新环境出问题,才是最让人抓狂的。

我处理老项目升级的思路是:先从项目配置入手,把WindowsTargetPlatformVersion、平台工具集、WDK目录这三大项逐一核对。很多时候老项目的vcxproj是旧格式,里面硬编码了旧SDK路径,必须手动更新。

比较糟糕的是老驱动代码中用到的DDI接口在当前版本里被废弃了,编译时冒出一堆warning。这时候不能只修警告,需要查清楚废弃接口的替代方案。维护旧驱动最怕的就是“能用就不动”,实际上底层接口一旦不兼容,未来系统更新后驱动可能直接崩溃。

我的建议是保持一个“基准驱动骨架”——把搭建当天编译通过、部署成功的第一个驱动工程完整打包,连同VS、SDK、WDK版本号记录进文档。以后环境升级或回滚,有据可查,有包可用,可以大幅降低排查成本。

5. 后续方向:从驱动骨架到真正的KMD功能

环境搭建只完成了第一步,KMD开发真正的内容比这丰富得多。按我的学习路径,下一步建议扩展这几条线。

第一,内存管理。要理解GPU显存和系统内存之间如何映射,弄清楚怎样向系统注册内存段、怎样申请内存块给GPU使用,这是KMD最核心的职责之一。

第二,命令提交。要学会UMD如何把命令缓冲区交给KMD,KMD怎样管理队列并提交到GPU执行引擎。这里涉及锁、同步对象和硬件调度,也是性能优化的重点区域。

第三,电源管理。KMD需要处理休眠、唤醒、温控等事务,跟系统电源策略密切配合,这一步在很多笔记本平台尤其关键。

第四,显示控制。包括显示控制器的模式设置、扫描输出管理、热插拔事件处理,这些决定显卡画面如何真正输出到显示器。

这些功能各自都值得开独立专题去写,但核心前提都是同一个:先把环境闭环建立起来,让“改代码—编译—部署—调试—分析”这个循环跑通,后续学习再深入,路才会越走越顺。

最后分享一个我坚持的小习惯。每次搭完环境,我不会急着写业务代码,而是花半小时做一次“压测式验证”:编译一个最简单驱动,部署到目标机,手动触发加载和卸载,确认WinDbg能捕捉到加载日志,最后再干净地结束内核会话。这一套流程走完,环境里每个环节是否可用,心里就有底了。

如果把KMD开发比作开车,环境搭建就是在修车和加油。磨刀不误砍柴工,这半小时的踏实验证,能帮你在未来几个月里省下无数个“为什么连不上”“为什么蓝屏”的晚上。

相关新闻

PDF图片转写与RAG检索增强:从解析到问答的完整流程

PDF图片转写与RAG检索增强:从解析到问答的完整流程

1. 为什么PDF里的图片会成为RAG的"盲区"1.1 RAG的基础链路默认忽略图片RAG&#xff08;检索增强生成&#xff09;的核心逻辑其实不复杂&#xff1a;大模型记不住你本地的几十份甚至几百份PDF文档&#xff0c;所以先把文档切成文本块&#xff0c;转成向量存进索引库&a…

2026/10/19 16:48:26 阅读更多 →
从意象库到格律约束:AI古诗生成全流程技术拆解

从意象库到格律约束:AI古诗生成全流程技术拆解

第一次读到《大象万镜》里“雾散柴门见酒旗&#xff0c;山家日午始开扉”这两句时&#xff0c;我盯着屏幕愣了一会儿。不是震惊于AI能写古体诗——那早就不稀奇了——而是这两句带着一种很少见的“日常感”。以前我批量产AI古诗&#xff0c;得到的多半是“苍山”“白鹤”“幽谷…

2026/10/19 16:48:26 阅读更多 →
STM32 HAL库下MPU6050稳定输出姿态角的工程实践

STM32 HAL库下MPU6050稳定输出姿态角的工程实践

简介&#xff1a;本资源是基于STM32F103C8T6与MPU6050六轴传感器的HAL库驱动工程&#xff0c;面向嵌入式初学者及STM32进阶开发者&#xff0c;解决姿态解算与串口实时输出的核心问题&#xff0c;适用于无人机、机器人、VR设备等需实时运动感知的实践场景。压缩包共94个文件&…

2026/10/19 16:48:26 阅读更多 →

最新新闻

STM32智能交通灯系统:自适应车流、紧急干预与Proteus仿真实战

STM32智能交通灯系统:自适应车流、紧急干预与Proteus仿真实战

简介&#xff1a;本资源是一套基于STM32F103系列单片机的智能交通灯系统完整开发包&#xff0c;面向嵌入式初学者、电子信息类专业学生及课程设计实践者&#xff0c;解决交通灯控制逻辑实现、硬件仿真验证与工程代码落地等核心学习痛点。压缩包共370个文件&#xff0c;涵盖105个…

2026/10/19 18:03:37 阅读更多 →
双目立体视觉实战:从OpenCV视差计算到毫米级测距

双目立体视觉实战:从OpenCV视差计算到毫米级测距

简介&#xff1a;本资源是一套基于Python与OpenCV实现的双目立体视觉图像匹配与测距系统&#xff0c;面向计算机、人工智能、自动化、电子信息等专业的本科生及研究生&#xff0c;专为毕业设计、课程设计与期末大作业打造。项目已通过导师指导并获95分高分答辩评审&#xff0c;…

2026/10/19 18:03:37 阅读更多 →
自研万亿参数MoE+强化学习:AI编程Agent性能提升61%的技术拆解

自研万亿参数MoE+强化学习:AI编程Agent性能提升61%的技术拆解

过去这一年多&#xff0c;我几乎是眼睁睁看着AI编程工具从"自动补全玩具"一步步长成"能独立干活的小组员"的。所以当"Cursor 自研 Composer 2&#xff1a;1万亿参数 MoE 强化学习&#xff0c;编程 Agent 性能暴涨 61%"这个消息传出来的时候&…

2026/10/19 18:03:37 阅读更多 →
大模型generate接口生成原理与调用实践详解

大模型generate接口生成原理与调用实践详解

不少开发者刚接触大模型SDK时&#xff0c;最先遇到的就是generate方式。不管你在哪个平台接大模型&#xff0c;官方文档里几乎都会给出类似这样的示例代码&#xff1a;构建一个请求&#xff0c;塞进去一段提示词&#xff0c;然后调generate方法&#xff0c;拿到返回的文本。很多…

2026/10/19 18:03:37 阅读更多 →
KMD开发环境搭建全攻略:双机调试、测试签名与避坑指南

KMD开发环境搭建全攻略:双机调试、测试签名与避坑指南

1. 为什么KMD环境搭建是劝退率最高的一关如果你是从应用层开发转过来学GPU内核驱动&#xff08;KMD&#xff09;的&#xff0c;我猜你大概率有过这样的经历&#xff1a;跟着文档敲了一整天命令&#xff0c;装了驱动开发套件、配好了调试器、签好了测试证书&#xff0c;结果第一…

2026/10/19 18:03:37 阅读更多 →
提权攻击全解析:从权限提升原理到防御实战

提权攻击全解析:从权限提升原理到防御实战

1. 从“为什么”说起&#xff1a;提权攻击的真实威胁面我最早接触“提权”这个词&#xff0c;是在一次内部系统的安全审计复盘里。当时某台业务服务器已经被入侵者拿到低权限账户&#xff0c;但对方并没有止步于此——他利用系统里一个疏于维护的第三方组件&#xff0c;在几小时…

2026/10/19 18:02:27 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介&#xff1a;本资源为电源技术方向的学术研究文档&#xff0c;聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略&#xff0c;面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集&#xff0c;共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →