news 2026/8/17 14:43:35

Ubuntu虚拟机VMware Tools安装与共享文件夹配置全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu虚拟机VMware Tools安装与共享文件夹配置全攻略

1. 从“能用”到“好用”:为什么VMware Tools和共享文件夹是虚拟化体验的分水岭

如果你在Ubuntu虚拟机里装过VMware Tools,并且折腾过共享文件夹,那你大概率和我一样,有过一段“痛并快乐着”的经历。快乐在于,一旦搞定,鼠标可以自由穿梭、文件能无缝拖拽、屏幕分辨率自适应,整个虚拟机的使用体验会从“能用”直接跃升到“好用”。痛苦在于,这个过程里埋着不少坑,从依赖缺失、内核头文件对不上,到共享文件夹权限的“玄学”问题,每一步都可能让你卡上半天。

网上教程很多,但大多只告诉你“输入这条命令”,却很少解释“为什么是这条命令”以及“如果出错了,背后的原因是什么”。今天这篇记录,就是把我自己以及团队里同事们在Ubuntu(尤其是LTS版本)上安装VMware Tools和配置共享文件夹时踩过的所有坑,进行一次完整的复盘和梳理。我会把每一步操作背后的逻辑、可能遇到的错误信息及其根因、以及最稳妥的解决方案都讲清楚。目标很简单:让你看完之后,不仅能成功配置,更能理解整个流程,下次再遇到问题,自己就能快速定位。

2. 环境准备与内核头文件:安装前的“隐形门槛”

很多人安装失败,第一步就栽在了环境准备上。VMware Tools本质上是一套驱动程序和用户态工具的集合,它需要编译内核模块来与虚拟硬件(如VMware SVGA显示适配器、vmxnet网卡、vmci和vsock通信接口等)深度交互。因此,编译环境是必须的。

2.1 更新系统与安装编译工具链

这不是可选项,而是必选项。一个刚安装好的、最小化的Ubuntu系统,很可能连gccmake都没有。

sudo apt update sudo apt upgrade -y sudo apt install build-essential -y
  • build-essential:这个元包是Ubuntu/Debian系统的“编译全家桶”,它包含了gcc,g++,make,libc6-dev等核心工具。没有它,后续的./vmware-install.pl脚本在编译内核模块时会直接报错,提示找不到编译器。
  • updateupgrade:这是一个好习惯。update刷新软件包索引,确保你知道有哪些可用的最新版本;upgrade才执行实际的升级操作。这能避免因本地索引过期而安装旧版本,可能引发依赖冲突。

2.2 安装Linux内核头文件:最关键的依赖,也是最大的坑源

这是整个安装过程中最容易出问题的一环。VMware Tools在编译vmmonvmnet等内核模块时,必须知道当前运行内核的内部数据结构和方法。这些信息就包含在内核头文件包里。关键点在于:头文件版本必须与当前正在运行的内核版本严格一致。

首先,查看你当前运行的内核版本:

uname -r

输出可能类似于5.15.0-91-generic。这个字符串由以下几部分组成:

  • 5.15.0:主版本号。
  • -91:ABI(应用二进制接口)版本号,Ubuntu内核定制和补丁的标识。
  • -generic:内核风味(flavor),对于桌面版通常是generic

接下来,安装对应版本的头文件。这里强烈推荐使用apt搜索并安装,而不是手动下载:

# 方法一:直接安装与当前内核同版本的头文件包 sudo apt install linux-headers-$(uname -r)

如果apt提示找不到该精确版本(可能因为刚更新内核还未重启),可以:

# 方法二:搜索可用的头文件包 apt search linux-headers-$(uname -r | cut -d- -f1,2) # 这会列出所有主版本匹配的头文件,选择版本号最接近的一个安装

为什么不能随便装一个linux-headers-genericlinux-headers-generic是一个元包,它总是指向当前Ubuntu发行版默认内核系列的最新头文件。如果你的系统内核因为自动更新而升级了,但linux-headers-generic可能还指向旧系列,或者你手动安装了不同版本的内核,就会导致版本不匹配。编译时,VMware Tools脚本会去/lib/modules/$(uname -r)/build这个符号链接指向的位置找头文件,如果链接的目标(由头文件包安装决定)和实际运行的内核版本不一致,编译就会失败,报错通常是“找不到内核源码树”或头文件中某些结构体定义不一致。

踩坑实录1:内核更新后的“幽灵”错误有一次,我在周五下班前更新了系统(包含了内核安全更新),但没有重启。周一直接打开虚拟机,运行uname -r显示的是老内核(如5.15.0-91),但系统里通过apt能安装的最新头文件已经是5.15.0-92了。此时安装linux-headers-5.15.0-91会失败(因为仓库里移除了旧版本)。如果强行安装-92的头文件,VMware Tools编译会因为版本不匹配而失败。解决方案:重启虚拟机,让新内核生效,然后安装对应新内核的头文件。

2.3 可选但推荐的依赖

为了让VMware Tools的安装脚本运行得更顺畅,可以考虑安装以下包:

sudo apt install dkms perl git
  • dkms(Dynamic Kernel Module Support):这是一个框架,用于在系统内核升级后自动重新编译和安装第三方内核模块(比如VMware编译出的那些.ko文件)。如果你安装了open-vm-tools(Ubuntu官方源里的替代品),它会依赖dkms。对于从VMware ISO安装的传统方式,虽然不是必须,但装了也没坏处。
  • perl:VMware的安装脚本vmware-install.pl就是一个Perl脚本。虽然大多数桌面版Ubuntu默认安装了Perl,但最小化安装可能没有。
  • git:如果你后续考虑使用open-vm-tools的开源版本,或者需要从源码构建,会用到git。

完成以上步骤后,你的系统才真正具备了编译VMware Tools内核模块的基础环境。可以进入下一个阶段了。

3. 安装VMware Tools的两种路径:传统ISO与Open-VM-Tools

到了安装环节,你实际上有两条路可以走:使用VMware自带的ISO镜像安装“传统”的VMware Tools,或者使用Ubuntu官方仓库里的open-vm-tools。两者功能大部分重叠,但细节上有差异。

3.1 路径一:使用VMware Workstation/Fusion提供的ISO安装

这是最经典、VMware官方文档主要描述的方式。在VMware菜单中点击“虚拟机” -> “安装VMware Tools”,虚拟机会加载一个包含安装程序的ISO镜像。

  1. 挂载ISO:通常,VMware会自动将ISO挂载到/media/目录下。你也可以手动操作:
    sudo mount /dev/cdrom /mnt # 如果自动挂载失败,可以尝试手动挂载到/mnt
  2. 复制安装包:ISO里有一个.tar.gz压缩包,需要复制到临时目录并解压。
    cp /media/$(whoami)/VMware\ Tools/VMwareTools-*.tar.gz /tmp/ cd /tmp tar -xzf VMwareTools-*.tar.gz cd vmware-tools-distrib/
  3. 运行安装脚本:使用sudo执行Perl安装脚本。
    sudo ./vmware-install.pl

安装脚本交互过程中的关键选择:

脚本会问一系列问题,对于大多数用户,一路按回车使用默认值即可。但有以下几个点值得注意:

  • “In which directory do you want to install the binary files?”:二进制文件安装目录,默认/usr/bin即可。
  • “What is the directory that contains the init directories (rc0.d/ to rc6.d/)?”:初始化脚本目录,默认/etc
  • “What is the directory that contains the init scripts?”:init脚本目录,默认/etc/init.d
  • 对于systemd系统(Ubuntu 16.04及以后):脚本可能会问关于systemd的问题,通常选择“yes”让它集成到systemd。
  • 编译内核模块:脚本会自动检测头文件并开始编译vmmon,vmnet,vmci,vsock等模块。如果前面环境准备得当,这里应该顺利通过。如果失败,错误信息会明确指出是编译器问题还是头文件问题。

安装后的操作:安装完成后,脚本会提示你运行/usr/bin/vmware-config-tools.pl来配置一些功能(如HGFS共享文件夹)。我建议先不要运行这个配置脚本,而是先重启系统,让新加载的内核模块和后台服务完全生效。

sudo reboot

重启后,你应该能立即感受到变化:鼠标可以自由进出虚拟机窗口,屏幕分辨率可以自适应调整。

踩坑实录2:安装脚本卡住或报错“Unable to build the vmmon module.”这几乎100%是内核头文件问题。首先,再次确认linux-headers-$(uname -r)已安装。其次,检查/lib/modules/$(uname -r)/build是否是一个有效的符号链接,并指向正确的头文件目录(通常是/usr/src/linux-headers-$(uname -r))。如果链接损坏,可以尝试:sudo apt --reinstall install linux-headers-$(uname -r)。还有一种罕见情况是,系统里存在多个内核版本,uname -r显示的和默认启动的不一致,需要检查/boot/grub/grub.cfg或使用sudo update-grub

3.2 路径二:安装Open-VM-Tools(推荐给桌面用户)

open-vm-tools是VMware Tools的开源实现,由VMware和社区共同维护。对于Ubuntu这样的Linux发行版,它已经被很好地集成到官方仓库中。对于Ubuntu桌面版,我通常更推荐这种方式,理由如下:

  1. 管理方便:通过apt管理,更新系统时会自动更新open-vm-tools
  2. 依赖清晰apt会自动处理所有依赖,包括dkms和内核模块。
  3. 与系统集成更好:作为发行版的原生包,其服务管理、配置文件位置都更符合Ubuntu的规范。

安装命令非常简单:

sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop -y
  • open-vm-tools:核心包,提供了共享文件夹、时间同步、内存气球驱动等基础功能。
  • open-vm-tools-desktop:桌面增强功能包,必须安装,它提供了图形界面所需的3D加速、拖放、剪贴板共享、自适应分辨率等特性。如果不安装这个,你仍然没有鼠标集成和屏幕自适应。

安装完成后,同样需要重启虚拟机以加载所有模块和服务。

sudo reboot

如何选择?

  • 追求稳定、易管理,且主要使用Ubuntu桌面版首选open-vm-tools。这是Canonical和VMware共同推荐的方式。
  • 需要使用一些非常前沿的、可能还未并入开源版本的特性:或者你使用的Linux发行版官方仓库没有提供足够新的open-vm-tools包,可以考虑使用传统ISO安装。
  • 服务器环境:安装open-vm-tools(不需要-desktop包)即可。

无论选择哪种方式,安装并重启后,虚拟机的基本增强功能(鼠标集成、显示优化)就应该正常工作了。接下来是另一个重头戏:共享文件夹。

4. 共享文件夹配置详解:从挂载到权限的完整链条

共享文件夹(Shared Folders)功能允许宿主机上的一个目录映射到虚拟机内,实现文件双向共享。在VMware中,这个功能通过HGFS(Host-Guest File System)驱动实现。

4.1 在VMware中设置共享文件夹

首先,必须在虚拟机关机或挂起的状态下,在VMware客户端进行配置。

  1. 右键虚拟机 -> “设置” (Settings)。
  2. 选择“选项” (Options) 标签页 -> “共享文件夹” (Shared Foldows)。
  3. 选择“总是启用” (Always enabled)。(“在下次关机前启用”选项在虚拟机运行时添加文件夹更方便,但“总是启用”更稳定)。
  4. 点击“添加” (Add),按照向导选择宿主机上的一个目录,并给它起一个在虚拟机内显示的“名称”(例如myshare)。你可以选择“只读”或“启用此共享”。

启动虚拟机。

4.2 在Ubuntu虚拟机内挂载共享文件夹

如果使用传统ISO安装的VMware Tools,安装后需要运行配置脚本来启用HGFS:

sudo /usr/bin/vmware-config-tools.pl

在交互中,当问及“Do you wish to enable VMware Guest Authentication?”时,如果你不需要特殊的认证,可以选“no”。脚本会配置HGFS模块。

如果使用**open-vm-tools**,HGFS驱动默认已包含并加载。你可以通过以下命令检查模块是否加载:

lsmod | grep vmw

应该能看到vmw_vmcivmw_vsock_vmci_transport等模块。vmhgfs模块可能不会直接显示在lsmod中,因为它可能被编译进内核或作为其他模块的一部分。

手动挂载共享文件夹:

共享文件夹在Ubuntu中不会自动挂载到某个固定位置(如/mnt/hgfs),你需要手动操作。首先,创建一个挂载点:

sudo mkdir -p /mnt/hgfs

然后,使用mount命令挂载。挂载类型是fuse.vmhgfs-fuse

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
  • -t fuse.vmhgfs-fuse:指定文件系统类型。
  • .host:/:这是一个特殊的标识,代表宿主机上所有已共享的根目录。你也可以挂载特定的共享文件夹,例如.host:/myshare
  • -o allow_other:这个选项非常重要。它允许非root用户(即你的普通用户)访问挂载点内的文件。没有这个选项,即使挂载成功,普通用户执行ls /mnt/hgfs也会看到“Permission denied”。

执行ls /mnt/hgfs,你应该能看到你在VMware中设置的共享文件夹名称(如myshare)。

4.3 实现开机自动挂载

手动挂载每次重启都会失效。为了实现自动挂载,我们需要编辑/etc/fstab文件。

sudo nano /etc/fstab

在文件末尾添加一行:

.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults,allow_other 0 0

参数解释:

  • defaults:包含了一组默认挂载选项(如rw, suid, dev, exec, auto, nouser, async)。
  • allow_other:同上,允许其他用户访问。
  • 0 0:dump和fsck相关参数,对于虚拟文件系统通常设为0。

保存并退出。理论上,重启后就会自动挂载。但这里有一个巨大的坑启动顺序问题

踩坑实录3:fstab自动挂载失败,提示“mount error(115): Operation now in progress”这是共享文件夹配置中最常见的问题。根本原因在于:/etc/fstab中的挂载操作发生在系统启动的早期,而vmhgfs内核模块或open-vm-tools服务可能还没有完全准备好。系统会尝试挂载,但HGFS驱动尚未就绪,导致挂载失败。

解决方案一:使用_netdev选项(针对网络文件系统,HGFS也适用)修改/etc/fstab为:

.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults,allow_other,_netdev 0 0

_netdev选项告诉系统,这个文件系统位于网络设备上(虽然HGFS不是真正的网络,但行为类似),需要等待网络就绪后再尝试挂载。这通常能解决大部分启动顺序问题。

解决方案二:使用systemd mount单元(更现代、更可控)这是更优雅的方式。创建一个systemd mount文件:

sudo nano /etc/systemd/system/mnt-hgfs.mount

输入以下内容:

[Unit] Description=VMware HGFS Mount Requires=open-vm-tools.service # 如果用的open-vm-tools After=open-vm-tools.service network-online.target Before=remote-fs.target [Mount] What=.host:/ Where=/mnt/hgfs Type=fuse.vmhgfs-fuse Options=defaults,allow_other [Install] WantedBy=multi-user.target

这里的关键是After=open-vm-tools.service,它确保了挂载动作一定在open-vm-tools服务启动之后执行。然后启用并启动这个mount单元:

sudo systemctl daemon-reload sudo systemctl enable mnt-hgfs.mount sudo systemctl start mnt-hgfs.mount

这种方式对启动顺序的控制粒度更细,强烈推荐。

4.4 共享文件夹的权限与所有权问题

即使成功挂载,你可能会发现,在/mnt/hgfs/myshare里,你无法创建或修改文件,提示“Permission denied”。这是因为挂载点的所有权和权限。

检查挂载点的属性:

ls -ld /mnt/hgfs/

很可能所有者是root,组是root,权限是drwxr-xr-x(755)。这意味着只有root用户有写权限。

解决方法:

  1. 在挂载时指定uid和gid(推荐):修改/etc/fstab或systemd mount单元的Options

    Options=defaults,allow_other,uid=1000,gid=1000

    这里的1000通常是Ubuntu安装时创建的第一个用户的UID和GID。你可以通过id -uid -g命令查看当前用户的ID。这样挂载后,目录的所有者就变成了你的用户。

  2. 使用bind mount(灵活但稍复杂):先以root权限挂载到/mnt/hgfs,然后再用bind选项将一个子目录绑定到用户有权限的目录(如~/shared)。

    • 首先,确保/mnt/hgfs正常挂载。
    • 然后,mkdir ~/shared
    • 最后,sudo mount --bind /mnt/hgfs/myshare ~/shared这样,你就能在~/shared里以普通用户身份读写文件了。你也可以将bind命令加入/etc/fstab或创建一个systemd mount单元来实现自动绑定。
  3. 修改umask(控制新建文件的默认权限):在挂载选项中加入umask=000umask=022等。umask=000表示新建文件权限为777(减去umask),但这样安全性较低。umask=022是更常见的选择,对应新建文件权限755(目录)和644(文件)。

综合来看,最清晰、一劳永逸的方案是:使用systemd mount单元,并在Options中明确指定allow_other,uid=1000,gid=1000

5. 故障排查与进阶调试:当问题依然存在时

按照上述步骤,99%的情况应该都能解决。但如果问题依旧,我们需要更系统的排查方法。

5.1 检查模块加载状态

lsmod | grep -E “(vmw|hgfs)” sudo dmesg | grep -i hgfs sudo systemctl status open-vm-tools # 如果使用open-vm-tools sudo /usr/bin/vmware-toolbox-cmd -v # 检查工具版本
  • lsmod查看相关内核模块是否加载。
  • dmesg查看内核日志,搜索HGFS相关的错误或警告信息。
  • systemctl status检查服务是否正常运行。

5.2 验证HGFS功能

VMware提供了一个命令行工具来测试和诊断共享文件夹:

/usr/bin/vmware-hgfsclient

这个命令会列出宿主机共享给当前虚拟机的所有文件夹名称。如果这个命令没有输出,或者报错,说明宿主机到虚拟机的共享配置根本没有生效。请回到VMware设置中检查共享文件夹是否已正确添加并启用。

5.3 手动加载模块与详细日志

如果模块没有自动加载,可以尝试手动加载:

sudo modprobe vmhgfs

加载时打开详细日志,有助于诊断:

sudo dmesg -C # 清空当前内核环缓冲区 sudo modprobe -v vmhgfs # -v 显示详细过程 sudo dmesg | tail -20 # 查看加载过程中的内核消息

5.4 文件系统挂载调试

使用mount命令的-v(详细)或-l(列出所有挂载)选项查看HGFS是否已挂载,以及挂载参数是否正确。

mount -l | grep hgfs

如果手动挂载失败,尝试使用更详细的FUSE调试选项:

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,debug

(注意:debug选项会产生大量日志,仅在排查时使用,完成后请移除)。

5.5 终极排查:检查VMware Tools安装完整性

如果所有方法都失败,怀疑是VMware Tools本身安装不完整或损坏。

对于传统安装:

cd /usr/lib/vmware-tools sudo ./vmware-uninstall-tools.pl # 完全卸载 # 然后重新按照第3.1节步骤安装

对于open-vm-tools:

sudo apt purge open-vm-tools open-vm-tools-desktop sudo apt autoremove sudo apt install open-vm-tools open-vm-tools-desktop

一个容易被忽略的细节:VMware硬件兼容性。确保你的VMware Workstation/Fusion版本与虚拟机的硬件版本兼容。有时,创建一个新的、硬件版本更新的虚拟机,并重新安装系统,可能是绕过某些深层次兼容性问题的最快方法。

6. 性能调优与安全考量

配置成功后,我们还可以做一些优化,让共享文件夹用起来更顺手、更安全。

6.1 性能优化建议

  1. 避免大量小文件操作:HGFS的协议开销决定了它在处理海量小文件(如node_modules,git仓库)时,性能远不如宿主机本地文件系统或虚拟机内的原生磁盘。如果开发项目涉及大量小文件,建议将项目目录放在虚拟机内部磁盘。
  2. 使用noatimerelatime挂载选项:在/etc/fstab或systemd mount单元的Options中添加noatime,可以禁止系统在每次读取文件时更新其访问时间戳,减少不必要的写操作,提升性能。relatime是一个折中方案,只在访问时间早于修改时间时才更新。
    Options=defaults,allow_other,uid=1000,gid=1000,noatime
  3. 考虑Samba/NFS作为替代:对于对性能要求极高,或需要在复杂网络环境下共享的场景,在宿主机上设置Samba或NFS服务器,然后在虚拟机内挂载网络驱动器,有时能获得更稳定和可调优的性能。但这增加了配置复杂度。

6.2 安全与权限管理

  1. 最小权限原则:在VMware中设置共享文件夹时,如果不是必要,请勾选“只读”。在虚拟机内挂载时,使用合适的uid/gidumask,避免目录权限过于开放(如777)。
  2. 隔离敏感数据:不要在共享文件夹内存放虚拟机或宿主机的敏感配置文件、密码文件等。
  3. 注意符号链接:共享文件夹内如果存在指向虚拟机外部(或宿主机其他位置)的符号链接,其行为可能不可预期,甚至带来安全风险。
  4. 定期检查:对于长期运行的虚拟机,定期检查/etc/fstab和挂载点,确保配置依然符合预期。系统大版本升级(如从Ubuntu 20.04升级到22.04)后,最好重新验证VMware Tools和共享文件夹的功能。

7. 总结与个人实践心得

回顾整个流程,从安装VMware Tools到配置共享文件夹,其核心逻辑可以概括为:提供编译环境 -> 确保内核模块匹配 -> 正确挂载文件系统 -> 妥善处理权限与启动顺序。每一步的失败,都有其明确的错误信息和对应的解决思路。

我个人在多次配置后,形成了一套固定的习惯:

  1. 对于Ubuntu桌面版,优先使用apt install open-vm-tools open-vm-tools-desktop。省心,易维护,与系统更新同步。
  2. 共享文件夹的自动挂载,坚决使用systemd mount单元。通过After=open-vm-tools.service依赖关系,完美解决启动顺序问题,比fstab_netdev更可靠。
  3. 挂载选项里一定会加上uid,gidallow_other。一劳永逸地解决普通用户的读写权限问题。
  4. 在VMware设置中,共享文件夹的路径避免使用中文或特殊字符,命名也尽量简单(如dev_sharedata),减少潜在的文件系统编码或解析问题。
  5. 重要项目的工作目录,我仍然会选择放在虚拟机内部的SSD磁盘上。共享文件夹主要用于临时文件交换、安装包传递等场景,这样可以获得最佳的性能和稳定性。

最后,如果遇到任何奇怪的问题,第一个排查动作永远是:查看系统日志journalctl -xesudo dmesg | tail -50/var/log/syslog,这些日志文件里往往藏着最直接的线索。虚拟机技术虽然成熟,但宿主机系统、VMware软件版本、客户机系统的不同组合,依然可能产生独特的“化学反应”。耐心阅读错误信息,理解每一层(VMware虚拟硬件、内核模块、FUSE用户态文件系统、挂载配置)的作用,你就能从被动地搜索解决方案,变为主动地分析和解决问题。

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

Excel文件密码遗忘破解指南:从原理到实战恢复数据

1. 项目概述:当Excel文件被“锁”住时 相信很多朋友都遇到过这个让人头疼的场景:一份至关重要的Excel文件,因为设置了“打开密码”,而密码又被自己或同事遗忘在了记忆的角落。文件就在那里,数据就在里面,但…

作者头像 李华
网站建设 2026/8/17 14:42:29

GBase 8a表信息查询全攻略:从系统表到高级应用场景

1. 项目概述:为什么需要掌握GBase 8a的表信息查询?在数据仓库和数据分析的日常工作中,无论是排查一个慢查询的性能瓶颈,还是评估一次数据变更的影响范围,亦或是为新来的同事梳理数据资产,我们第一个要打交道…

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

Synthetic Persona Pretraining:从Token Zero实现大模型对齐的新范式

最近在尝试让大模型更好地理解人类意图时,发现一个普遍痛点:传统的指令微调(Instruction Tuning)虽然有效,但往往是在模型已经具备强大语言能力之后,再“教”它如何遵循指令。这个过程有点像先让一个孩子博…

作者头像 李华
网站建设 2026/8/17 14:28:05

Node.js生产环境部署实战:宝塔面板与PM2的工程化解决方案

1. 项目概述:为什么选择宝塔PM2这个组合? 如果你是一个Node.js开发者,或者正在尝试将你的Node后端应用部署到Linux服务器上,那么“如何在生产环境中稳定、高效地运行Node服务”一定是你绕不开的课题。我经历过从手动敲命令、写脚本…

作者头像 李华
网站建设 2026/8/17 14:26:57

基于ReAct架构的Mole深度研究代理本地部署与代码实操

近日,在Hacker News的Show HN板块,一款名为Mole的深度研究代理项目引起了技术社区的关注。与传统的单轮问答大语言模型不同,Mole旨在解决复杂课题的自动化调研需求。它能够自主拆解研究问题,规划搜索路径,执行多轮网络…

作者头像 李华