news 2026/8/24 5:42:06

Windows驱动开发:自签名证书创建与驱动程序签名全流程指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows驱动开发:自签名证书创建与驱动程序签名全流程指南

1. 项目概述:为什么我们需要自签名驱动程序?

如果你在Windows上尝试安装一个自己开发的硬件驱动,或者测试一个第三方未签名的驱动,大概率会碰到那个令人头疼的黄色感叹号,系统弹窗冷冰冰地告诉你“Windows无法验证此驱动程序的发布者”。这背后是微软从Windows Vista时代开始强化的驱动程序强制签名策略。简单说,微软要求所有在内核模式(也就是能直接和硬件、系统核心打交道的深层权限)下运行的驱动程序,都必须由一个受微软信任的证书颁发机构(CA)签发的证书进行数字签名。这个机制就像给驱动程序发了一张“良民证”,系统通过验证这张“证”的真伪和有效性,来判断这个驱动是否可信、是否被篡改过。

那么,自签名驱动证书就是为了解决我们这些开发者和测试者在“良民证”办下来之前(或者根本不想办)的临时身份问题。购买一个受微软信任的、能用于内核模式代码签名的EV代码签名证书,不仅流程繁琐、需要公司资质,而且价格不菲。对于个人开发者、学生、或是公司内部在真机上进行驱动测试和调试的阶段,自签名证书就成了一个必不可少的工具。它允许我们在自己可控的测试机器上,安装并运行我们自己编译的驱动程序,而不用每次都去折腾禁用驱动强制签名(那需要修改BIOS/UEFI设置,既麻烦又不安全)。这个过程的核心,就是创建一套我们自己的“私人印章”(自签名根证书),然后用它来给我们的驱动“盖戳”(签名),最后让我们的电脑信任这个“私人印章”(将根证书安装到受信任的根证书颁发机构存储)。听起来有点绕,但实际操作起来,借助Windows SDK里的工具和PowerShell,流程可以非常清晰。

2. 核心工具链与环境准备

在开始动手之前,我们需要把“厨房”准备好。整个自签名流程主要依赖两个核心工具集:Windows SDK(特别是其中的签名工具)和PowerShell。别被吓到,你不需要安装一整个Visual Studio。

2.1 必备工具安装与验证

首先,确保你的系统是Windows 10或Windows 11。然后,我们需要获取Windows SDK。最轻量化的方式是直接下载并安装“Windows SDK for Windows 10/11”的独立安装包。在安装时,你只需要勾选“Windows Software Development Kit”以及其下的“Signing Tools for Windows”这一个功能即可。这样安装后,你会在C:\Program Files (x86)\Windows Kits\10\bin\<版本号>\x64这样的路径下找到我们后续要用到的关键工具:makecert.exe(较旧,但某些场景简单)、certmgr.exe,以及更现代的signtool.exepvk2pfx.exe

不过,对于全新的Windows 11或较新的Win10系统,我更推荐直接使用系统内置的PowerShellNew-SelfSignedCertificatecmdlet和SignTool(它可能已随Visual Studio Build Tools或SDK安装)。你可以打开一个管理员权限的PowerShell窗口,通过以下命令快速检查关键工具是否可用:

# 检查SignTool是否在环境变量中 where.exe signtool # 检查PowerShell证书模块是否可用 Get-Command -Name New-SelfSignedCertificate -ErrorAction SilentlyContinue

如果signtool命令找不到,你需要将SDK的bin目录(比如C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64)添加到系统的PATH环境变量中,或者后续在使用时指定完整路径。

注意:所有与证书创建、签名相关的操作,强烈建议在管理员权限的PowerShell中进行。因为安装证书到受信任的根存储区需要管理员权限,否则你会遇到“拒绝访问”的错误。

2.2 理解证书存储与密钥容器

在动手创建证书前,花两分钟理解两个概念会让你后续操作更清晰:

  1. 证书存储:Windows像一个文件柜,把不同类型的证书分门别类放在不同的“抽屉”里,这些“抽屉”就是证书存储。我们最关心两个:“受信任的根证书颁发机构”(Cert:\LocalMachine\Root)和“个人”(Cert:\LocalMachine\My)。根证书要放进“受信任的根”抽屉,系统才会信任由它签发的所有东西;而用于签名的具体证书(包含私钥),通常放在“个人”抽屉。
  2. 密钥容器与私钥保护:证书包含公钥,而对应的私钥是签名行为的关键,必须妥善保护。在创建证书时,私钥可以生成在软件密钥容器里(相对方便),或者使用硬件安全模块(HSM)等更安全的方式。对于测试用途,软件容器足够。你需要知道私钥的访问密码(如果有的话),signtool签名时会用到。

3. 创建自签名根证书与代码签名证书

这是整个流程的第一步,也是奠定信任基础的一步。我们将创建一个自签名的根证书(CA),然后用这个根证书去签发一个具体的代码签名证书。为什么分两步?模仿了真实世界的PKI体系,结构清晰,也便于管理(例如,一个根证书可以签发多个不同用途的子证书)。

3.1 使用PowerShell创建证书

这是目前最推荐的方式,无需额外工具,直接使用PowerShell内置命令,清晰且强大。

# 以管理员身份运行PowerShell # 1. 为当前用户创建一个自签名根证书(CA证书) # -DnsName 指定主题名称,这里我们起名为“MyPrivateRootCA” # -KeyUsage 指定证书用途,CertSign表示可用于签发其他证书,CRLSign用于吊销列表签名 # -KeyUsageProperty All 允许所有密钥用法 # -KeyAlgorithm指定算法为RSA,-KeyLength 2048指定密钥长度 # -HashAlgorithm指定哈希算法为SHA256 # -KeyExportPolicy Exportable 允许私钥可导出(重要!方便备份和转移到其他机器) # -CertStoreLocation 指定证书存储位置为当前用户的“个人”存储 $rootCert = New-SelfSignedCertificate ` -Type Custom ` -KeySpec Signature ` -Subject “CN=MyPrivateRootCA” ` -KeyUsage CertSign, CRLSign, DigitalSignature ` -KeyUsageProperty All ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -HashAlgorithm SHA256 ` -KeyExportPolicy Exportable ` -CertStoreLocation “Cert:\CurrentUser\My” ` -NotAfter (Get-Date).AddYears(10) # 设置10年有效期 Write-Host “根证书指纹:” $rootCert.Thumbprint # 2. 将根证书导出为.cer文件(仅公钥),用于分发和安装到“受信任的根” $rootCertPath = “Cert:\CurrentUser\My\$($rootCert.Thumbprint)” Export-Certificate -Cert $rootCertPath -FilePath “.\MyPrivateRootCA.cer” # 3. 使用刚创建的根证书,签发一个代码签名证书 # -Signer 参数指定用哪个证书来签发(即我们的根证书) # -TextExtension 设置增强型密钥用法,必须包含代码签名(1.3.6.1.5.5.7.3.3) # -KeyUsage DigitalSignature 指定密钥用法为数字签名 $codeSignCert = New-SelfSignedCertificate ` -Type CodeSigning ` -KeySpec Signature ` -Subject “CN=MyDriverCodeSign” ` -KeyUsage DigitalSignature ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -HashAlgorithm SHA256 ` -KeyExportPolicy Exportable ` -CertStoreLocation “Cert:\CurrentUser\My” ` -Signer $rootCert ` -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.3”) ` -NotAfter (Get-Date).AddYears(5) Write-Host “代码签名证书指纹:” $codeSignCert.Thumbprint # 4. 将代码签名证书连同其私钥导出为.pfx文件(密码保护) # 这个.pfx文件是给signtool用来签名的关键文件 $securePassword = ConvertTo-SecureString -String “YourStrongPassword123!” -Force -AsPlainText Export-PfxCertificate -Cert $codeSignCertPath -FilePath “.\MyDriverCodeSign.pfx” -Password $securePassword

执行完以上脚本,你会在当前目录得到两个文件:MyPrivateRootCA.cer(根证书公钥)和MyDriverCodeSign.pfx(代码签名证书及私钥,有密码保护)。请务必妥善保管.pfx文件和密码,私钥泄露等同于你的签名权泄露。

3.2 传统方式:使用MakeCert和Pvk2Pfx(备用方案)

如果你的环境非常老,或者遇到PowerShell命令兼容性问题,可以使用Windows SDK中的传统工具。但请注意,makecert已被标记为弃用。

REM 以管理员身份打开CMD,并切换到SDK工具目录,如: REM cd “C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64” REM 1. 创建根证书的私钥(.pvk)和证书(.cer) makecert -r -pe -n “CN=MyPrivateRootCA” -ss Root -sr LocalMachine -sky signature -sv MyRootCA.pvk MyRootCA.cer REM 执行上述命令后,会弹出窗口让你设置私钥的保护密码,请牢记。 REM 2. 使用根证书创建一个代码签名证书 makecert -pe -n “CN=MyDriverCodeSign” -ss MY -sr LocalMachine -sky signature -eku 1.3.6.1.5.5.7.3.3 -iv MyRootCA.pvk -ic MyRootCA.cer MyDriverCodeSign.cer REM 3. 将.cer和.pvk合并成.pfx文件(signtool需要的格式) pvk2pfx -pvk MyRootCA.pvk -spc MyRootCA.cer -pfx MyRootCA.pfx -pi <你的私钥密码> pvk2pfx -pvk MyDriverCodeSign.pvk -spc MyDriverCodeSign.cer -pfx MyDriverCodeSign.pfx -pi <你的私钥密码>

实操心得:PowerShell方案是首选,它更现代,与系统集成更好,避免了图形界面弹窗,易于脚本化自动化。传统工具链在涉及复杂属性设置时可能更灵活,但对于标准的驱动自签名,PowerShell完全够用。务必记录下证书的指纹(Thumbprint)或保存好.pfx文件路径,下一步要用。

4. 安装证书并配置系统信任

创建了证书只是做好了“印章”,现在需要让系统认识并信任这个“印章”。

4.1 安装根证书到“受信任的根证书颁发机构”

这是最关键的一步。系统必须信任我们的自签名根证书(CA),才会信任由它签发的任何子证书(包括我们的驱动签名证书)。

方法一:通过证书管理器(MMC)图形界面安装(推荐给新手)

  1. Win + R,输入mmc,回车打开管理控制台。
  2. 点击“文件” -> “添加/删除管理单元”。
  3. 在左侧列表找到“证书”,点击“添加”。
  4. 选择“计算机账户”,点击“下一步”,然后选择“本地计算机”,点击“完成”->“确定”。
  5. 在控制台左侧,展开“证书(本地计算机)”,右键点击“受信任的根证书颁发机构” -> “所有任务” -> “导入”。
  6. 在导入向导中,浏览并选择你刚才生成的MyPrivateRootCA.cer文件。
  7. 后续步骤全部点击“下一步”或“完成”,直到导入成功。

方法二:通过PowerShell命令安装(适合自动化)

# 以管理员身份运行PowerShell $rootCertPath = “.\MyPrivateRootCA.cer” Import-Certificate -FilePath $rootCertPath -CertStoreLocation Cert:\LocalMachine\Root

执行后,你可以通过Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -eq “CN=MyPrivateRootCA”}来验证根证书是否已成功安装。

4.2 确认代码签名证书在“个人”存储中

如果你按照第3节的PowerShell脚本操作,代码签名证书已经自动安装到了当前用户的“个人”存储(Cert:\CurrentUser\My)。对于驱动签名,有时需要将其安装到本地计算机的“个人”存储。你可以通过MMC控制台(添加“计算机账户”的证书管理单元)查看“个人”存储,或者用PowerShell移动/导入:

# 从当前用户存储获取证书对象 $codeSignCert = Get-ChildItem Cert:\CurrentUser\My | Where-Object {$_.Subject -eq “CN=MyDriverCodeSign”} | Select-Object -First 1 # 导出为.pfx再导入到本地计算机存储(如果尚未存在) if ($codeSignCert) { $tempPfxPath = “$env:TEMP\tempCodeSign.pfx” $securePassword = ConvertTo-SecureString -String “YourStrongPassword123!” -Force -AsPlainText Export-PfxCertificate -Cert $codeSignCert -FilePath $tempPfxPath -Password $securePassword Import-PfxCertificate -FilePath $tempPfxPath -CertStoreLocation Cert:\LocalMachine\My -Password $securePassword -Exportable Remove-Item $tempPfxPath }

注意事项:将根证书安装到“受信任的根证书颁发机构”是一个全局性的、高权限操作。这意味着任何由你这个根证书签发的软件,在本机上都会被系统视为可信。因此,这个根证书和对应的私钥必须严格保管,仅限于测试环境使用,绝不能泄露或用于生产环境签名分发给他人的软件

5. 使用SignTool为驱动程序文件签名

现在,“信任链”已经建立,我们可以开始给实际的驱动程序文件(通常是.sys.dll.exe.cat文件)签名了。signtool.exe是微软官方的签名工具,功能强大。

5.1 为单个驱动文件签名

假设你有一个编译好的驱动程序文件MyDriver.sys,并且你的代码签名证书.pfx文件在当前位置。

# 切换到包含signtool和驱动文件的目录,或在命令中使用完整路径 $signtoolPath = “C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe” $driverFile = “.\MyDriver.sys” $pfxFile = “.\MyDriverCodeSign.pfx” $pfxPassword = “YourStrongPassword123!” # 基本签名命令 & $signtoolPath sign /fd SHA256 /f $pfxFile /p $pfxPassword $driverFile # 更完整的命令,添加时间戳(推荐,即使证书过期,签名在时间戳时刻仍有效) & $signtoolPath sign /fd SHA256 /f $pfxFile /p $pfxPassword /tr http://timestamp.digicert.com /td SHA256 $driverFile

参数解析:

  • sign:执行签名操作。
  • /fd SHA256:指定文件摘要算法为SHA256。SHA1已不安全,务必使用SHA256。
  • /f:指定包含私钥的证书文件(.pfx格式)。
  • /p:提供.pfx文件的密码。
  • /tr:指定时间戳服务器的URL。这是一个极其重要的选项。它会在签名中嵌入一个来自第三方权威时间戳服务器的“时间戳”。这样,即使你的签名证书在未来过期了,系统也会根据时间戳判断,在证书有效期内做的签名仍然是有效的。没有时间戳,证书一过期,签名立即失效。
  • /td SHA256:指定时间戳请求的摘要算法,也使用SHA256。

5.2 为驱动程序包(.inf和.cat)签名

对于通过.inf文件安装的驱动,通常需要对驱动包进行签名,而不仅仅是单个.sys文件。这涉及到创建目录文件(.cat)并对其进行签名。

  1. 创建目录文件(.cat):目录文件是一个包含了驱动包内所有文件哈希值的集合文件。可以使用Inf2Cat.exe工具(同样在Windows SDK中)来生成。

    $inf2catPath = “C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\inf2cat.exe” $driverDir = “.\DriverPackage\” # 你的驱动包目录,内含 .inf 文件 & $inf2catPath /driver:$driverDir /os:10_X64 /verbose

    /os参数指定目标操作系统,如10_X64表示Win10/11 64位。执行后会在驱动包目录生成一个.cat文件。

  2. 为目录文件(.cat)签名:使用signtool对生成的.cat文件进行签名,命令与签名.sys文件类似。

    $catFile = “.\DriverPackage\MyDriver.cat” & $signtoolPath sign /fd SHA256 /f $pfxFile /p $pfxPassword /tr http://timestamp.digicert.com /td SHA256 $catFile
  3. 修改.inf文件:确保.inf文件中的[Version]节包含了正确的CatalogFile指向。

    [Version] ... CatalogFile=MyDriver.cat

签名完成后,你可以右键点击.sys.cat文件,选择“属性” -> “数字签名”选项卡,查看签名详情,确认签名者是你自己的证书,并且签名有效、带有时间戳。

6. 启用测试签名模式与安装驱动

即使驱动已经正确签名,在标准的Windows系统上,默认仍然只接受由微软“Windows Hardware Developer Center”门户签发的、受信任的证书。为了让系统接受我们自签名的驱动,需要启用“测试模式”。

6.1 启用测试模式

在管理员权限的PowerShell或CMD中执行:

bcdedit /set testsigning on

执行后必须重启计算机。重启后,你会在桌面右下角(系统托盘时钟附近)看到“测试模式”和Windows版本号的水印,这表明测试模式已启用。在这个模式下,系统允许安装由测试根证书(即我们安装的MyPrivateRootCA)签名的驱动程序。

注意:测试模式会降低系统的安全级别,因为它允许未经过微软正式认证的驱动加载。仅应在专用的开发或测试机器上开启,切勿在生产环境或个人日常使用的电脑上开启。

6.2 安装已签名的驱动

现在可以安装你的驱动了。有多种方法:

  • 通过设备管理器:如果有未知设备带感叹号,右键“更新驱动程序软件” -> “浏览我的计算机以查找驱动程序软件”,选择包含已签名.inf.cat文件的驱动包目录。
  • 使用PnPUtil命令行工具(推荐):这是最干净、可脚本化的方式。
    # 以管理员身份运行PowerShell pnputil /add-driver “.\DriverPackage\MyDriver.inf” /install
    这个命令会将驱动包添加到驱动存储区并尝试安装。使用pnputil /enum-drivers可以查看所有已安装的驱动包。

如果一切顺利,设备管理器中的感叹号会消失,你的驱动将成功加载。你可以使用sc query <服务名>或设备管理器的“驱动程序详细信息”来确认驱动文件路径和签名信息。

7. 常见问题排查与实战技巧

在实际操作中,你几乎一定会遇到各种报错。这里整理了一份速查表,帮你快速定位问题。

问题现象可能原因排查步骤与解决方案
签名时错误:SignTool Error: No certificates were found that met all the given criteria.1..pfx文件路径或密码错误。
2..pfx证书不包含代码签名增强密钥用法(EKU)。
3. 证书不在指定的存储中。
1. 检查文件路径和密码,确保无误。可用certutil -dump -p <密码> <pfx文件>测试。
2. 用certutil -dump查看证书详情,确认有1.3.6.1.5.5.7.3.3 (Code Signing)
3. 尝试通过指纹从证书存储签名:signtool sign /sha1 <证书指纹> /tr ... <文件>
安装驱动时提示“Windows 无法验证此设备所需的驱动程序的数字签名”1. 测试模式未开启或未生效。
2. 根证书未正确安装到“受信任的根证书颁发机构”。
3. 驱动文件签名无效或损坏。
1. 运行bcdedit确认testsigning值为Yes,并已重启。
2. 在MMC中确认MyPrivateRootCA证书在“计算机账户”的“受信任的根证书颁发机构”存储中。
3. 右键检查驱动文件属性中的数字签名是否有效,签名链是否完整(应显示到你的根CA)。
签名带有时间戳,但系统仍提示签名证书过期时间戳服务器未响应或返回错误,导致时间戳未成功嵌入。1. 检查网络连接。
2. 尝试更换时间戳服务器URL,如微软的http://timestamp.sectigo.comhttp://timestamp.digicert.com
3. 使用signtool verify /pa /v <文件>验证签名和时间戳详情。
使用PnPUtil安装时失败,错误代码0xE000024B驱动包的.cat文件签名无效,或.inf文件中的CatalogFile指向错误。1. 重新对.cat文件进行签名并确保成功。
2. 检查.inf文件,确认CatalogFile=后的文件名与实际.cat文件名完全一致。
3. 尝试手动在设备管理器中指定安装,看是否有更具体的错误信息。
驱动加载成功但设备仍无法正常工作这是驱动本身的功能性问题,与签名无关。1. 使用调试工具(如WinDbg)附加内核调试,查看驱动加载日志和可能的BugCheck。
2. 检查系统事件查看器(eventvwr.msc)中“Windows日志”->“系统”里是否有来自“DriverFrameworks-UserMode”或“Kernel-PnP”的错误事件。
如何彻底清理测试环境?需要移除驱动、证书并关闭测试模式。1. 使用pnputil /delete-driver <驱动包.inf的完整路径> /uninstall /force移除驱动包。
2. 在MMC中从“受信任的根证书颁发机构”和“个人”存储中删除你导入的自签名证书。
3. 运行bcdedit /set testsigning off并重启。

独家避坑技巧:

  1. 时间戳服务器是生命线:一定要用/tr参数。不同的时间戳服务器可能有不同的可用性和延迟,准备2-3个备用(如 DigiCert, Sectigo, GlobalSign)。如果某个服务器失败,换一个再试。
  2. 证书指纹比文件更方便:一旦将代码签名证书导入到系统的“个人”存储,在signtool中使用/sha1/sha256参数指定证书的指纹(Thumbprint)进行签名,比每次都指定.pfx文件和密码更安全、更方便,尤其适合自动化脚本。
    & $signtoolPath sign /fd SHA256 /sha1 “你的证书指纹” /tr http://timestamp.digicert.com /td SHA256 $driverFile
  3. 交叉验证签名:签名后,养成用signtool verify /v /pa <文件>命令验证的习惯。/pa参数使用默认验证策略,输出会详细显示签名者、时间戳和整个证书链,一目了然。
  4. 虚拟机是你的最佳沙盒:驱动开发与测试强烈建议在虚拟机(如Hyper-V、VMware)中进行。可以方便地做快照,在签名、安装、测试出错时一键还原,避免搞乱宿主机系统。
  5. INF文件细节:确保.inf文件中的[Version]CatalogFile指向正确,且[SourceDisksNames][SourceDisksFiles]等节中的文件路径和名称与实际文件完全匹配,一个字符的错误都可能导致安装失败。

整个流程走下来,你会发现驱动自签名的核心逻辑就是“创建信任链(根CA->代码签名证书) -> 让系统信任根(安装根证书) -> 用链中的证书签名驱动 -> 在特定模式(测试模式)下允许加载”。理解了这个逻辑,无论工具命令如何变化,你都能从容应对。最后再次强调,这套方法仅用于开发、测试和学习,切勿将用自签名证书签名的驱动分发出去。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 5:41:57

LLM对话代理的数据库故障安全恢复:提示工程与韧性设计

1. 当数据库宕机时&#xff1a;任务导向对话的“安全网”设计想象一下这个场景&#xff1a;你正在和一个智能客服对话&#xff0c;想要查询最近的航班信息或者修改一个订单。你问&#xff1a;“帮我查一下明天上午从北京飞往上海的航班。” 系统背后的流程通常是这样的&#xf…

作者头像 李华
网站建设 2026/8/24 5:39:48

Redis面试核心知识点与实战优化全解析

1. Redis面试核心知识点全景解析Redis作为当今最流行的内存数据库之一&#xff0c;已经成为中高级开发者面试的必考内容。根据我参与技术面试和担任面试官的经验&#xff0c;80%的候选人会在Redis相关问题上暴露出知识盲区。本文将系统梳理Redis面试中的高频考点和深度问题&…

作者头像 李华
网站建设 2026/8/24 5:39:41

2026春招AI人才争夺战:大模型岗位趋势与薪资解析

1. 2026春招AI人才争夺战全景观察2026年的春季招聘季正在成为AI人才市场的分水岭。作为从业十年的技术招聘顾问&#xff0c;我亲眼见证了这场没有硝烟的战争——大模型相关岗位的供需比已经突破1:8&#xff0c;头部企业为顶级候选人开出的package普遍比去年同期上涨了40%。这场…

作者头像 李华
网站建设 2026/8/24 5:39:24

VSCode+CMake中文乱码终极解决方案:从编码原理到工程实践

1. 项目概述&#xff1a;当VSCode遇上CMake的中文乱码困局作为一名常年混迹在C和跨平台开发一线的老码农&#xff0c;我几乎每天都要和VSCode、CMake以及各种终端打交道。最近在帮团队新人排查环境问题时&#xff0c;又双叒叕遇到了那个经典又恼人的问题&#xff1a;在VSCode里…

作者头像 李华
网站建设 2026/8/24 5:38:49

Redis面试核心知识点与实战技巧解析

1. Redis面试核心知识点解析Redis作为当前最流行的内存数据库之一&#xff0c;已经成为技术面试中的必考内容。根据我参与过的近百场技术面试经验&#xff0c;面试官通常会从基础概念、数据结构、持久化机制、高可用方案等维度展开考察。下面我将结合真实面试案例&#xff0c;拆…

作者头像 李华
网站建设 2026/8/24 5:38:46

DeepSeek Harness:从零搭建工业级AI智能体的开源框架实战指南

这次我们来看一个能让你从零开始搭建工业级知识库和智能体的开源框架——DeepSeek Harness。它不是简单的聊天机器人&#xff0c;而是一个集成了Skills&#xff08;技能&#xff09;、插件系统和Agent预设的全栈开发平台。如果你正在寻找一个能快速构建、部署和优化AI智能体的工…

作者头像 李华