无sudo无npm?三步在受限服务器部署Claude命令行工具
1. 限制边界没有 sudo、没有 npm 不等于没法部署 Claude先给结论只要你的账号在服务器上有可写的用户目录并且能执行文件那么即使没有 sudo也没有全局 npm一样能把 Claude 官方命令行工具装好、跑起来。唯一要调整的是安装的位置和思路——所有东西都放进 $HOME而不是系统目录。我接触到这个需求时第一反应也是去翻现有教程。结果发现大多数教程的默认姿势都是sudo apt install或者npm i -g换到这种受限服务器上第一步就卡住了。你甚至会怀疑是不是这台服务器就不该部署这类工具其实不是。没有 sudo 只影响系统级目录的写入npm 也只是众多分发渠道中的一种。我们完全可以绕开这两条路用“用户态安装”的方式完成部署。1.1 两类限制分别限制了什么先拆开看“没有 sudo”意味着你无法写 /usr/bin、/usr/local/bin也无法运行 apt、yum、dnf 这类需要提权的包管理器。它并不限制你在自己的家目录里创建文件也不限制你运行自己的程序。“没有 npm”意味着系统中不存在全局 npm 命令你没法用常见的npm install -g来完成安装。这两者叠加到一起确实把“系统管理式安装”堵死了但“用户态安装”这个思路依然畅通。所谓用户态安装就是把软件装到 $HOME 下的某个目录里。比如 ~/.local、~/bin、~/node 这类位置。然后把这个目录加到 PATH 环境变量中让 shell 能找到新装的命令。系统要不要知道这个软件存在根本不重要只要你的 shell 能执行它任务就完成了。1.2 部署 Claude 的三种可选路线根据服务器网络环境和手上工具的不同部署路线大概有三种官方原生安装器不需要 sudo也不需要 npm直接从官方安装脚本把二进制放到用户目录。这是最省事的主方案。用户级 Node 环境先下载官方 Node 二进制包到 $HOME解压后自带的 npm 就可用再用它把 Claude 作为前端包安装到用户目录。适合需要配合 npm 生态或原生安装器不可用的情况。离线搬运安装在网络隔离服务器上提前下载好安装包通过 scp 或其他方式传进服务器再解压。适合完全无法访问外网的环境。这套思路不仅适用于 Claude任何需要在无权限服务器上安装的命令行工具都可以照搬。下面我会把每一步说细包括最容易让人翻车的隐藏细节。2. 动手前先查四个环境指标避免照搬命令翻车别急着执行安装命令。受限服务器和开发机差异很大先花两分钟确认环境能帮你省掉大半天的排查时间。我见过有人在 ARM 服务器上硬装 x86 包也见过 glibc 版本太老导致程序起不来这些都属于一开始就能规避的问题。2.1 CPU 架构、系统发行版和 glibc 版本预编译二进制对 CPU 架构和系统库版本非常敏感。用下面这几条命令先探底uname -m cat /etc/os-release ldd --version | head -n 1uname -m输出 x86_64 还是 aarch64决定了你该下载哪个架构的包。/etc/os-release告诉你系统是什么发行版、什么版本方便判断软件兼容性。ldd --version里的 glibc 版本很关键。老系统如果 glibc 低于 2.28新版本的 Node 和部分官方原生包可能起不来后面会专门讲对策。如果你发现架构是 aarch64而网上教程里给的下载链接基本都是 x86_64那照抄肯定失败。2.2 用户目录的写权限和磁盘配额无 sudo 环境最大的前提就是 HOME 可写但很多服务器对家目录有配额限制。先确认一下df -h $HOME df -i $HOME touch $HOME/.write_test rm $HOME/.write_testdf -h看剩余空间df -i看 inode 是否足够。有些共享服务器会给每个用户几百 MB 甚至更少的配额而 Node 加 Claude 的安装体积可能超过 200 MB。提前确认能避免装到一半写不进文件的问题。那行 touch 则是快速验证你是否真的有权限写入家目录有些服务器虽然给了 shell但家目录挂载在只读分区上。2.3 网络连通性检测不同网络环境决定了走哪条路线。执行一个快速探测curl -fsSI --max-time 8 https://claude.ai/install.sh /dev/null 21 echo online || echo offline如果返回 online可以直接走官方原生安装器。如果 offline也别慌跳到第 5 章的离线搬运方案即可。还有一种情况是返回 online 但下载速度极慢这种通常需要配置代理变量可以参考第 7 章的相关经验。3. 主路线官方原生安装器不依赖 npm 也能完成这是我最推荐的主方案因为它的设计目标就是让用户在自己目录里完成安装。整个过程不需要 root不需要 npm也不需要先装 Node 运行时。安装器会把可执行文件、运行时依赖和资源文件一并释放到用户目录里本质上和“绿色版软件”差不多只是安装脚本帮你完成了布置。3.1 下载安装脚本并检查先把安装脚本拉下来不要直接管道执行。不是不信任官方而是每个服务器的环境差异太大先看一眼脚本内容能知道它到底往哪些路径写文件。cd ~ curl -fsSL https://claude.ai/install.sh -o install.sh less install.sh如果服务器上没有 less用cat install.sh也一样。重点看脚本里有没有写死绝对路径以及是否用了 sudo 之类的命令。正常情况它只会写入 $HOME 和用户级别的临时目录。3.2 执行安装不要加 sudo直接运行chmod x install.sh ./install.sh这里最重要的一条经验是千万别在安装命令前面加sudo。加了 sudo 之后$HOME 和当前用户身份都会发生变化安装器会把文件写到 root 的家目录下造成权限错乱反而让你的用户账号无法正常使用。我见过有人下意识加了 sudo结果后续每次运行都要去 root 目录找可执行文件非常别扭。安装过程如果顺利几秒钟到一两分钟就能完成。安装器默认会把可执行文件放到~/.local/bin/claude数据目录放在~/.claude或类似的用户目录下。3.3 配置 PATH 并验证安装完成后shell 还不一定认识这个新命令需要把用户目录加入 PATHexport PATH$HOME/.local/bin:$PATH claude --version如果希望以后每次登录都能直接用把这行 export 追加到~/.bashrc或~/.profile里echo export PATH$HOME/.local/bin:$PATH ~/.bashrc source ~/.bashrc验证命令能输出版本号就说明部署成功了。官方原生安装器适合在线环境因为它可能需要拉取远端资源来校验版本或执行首次初始化。如果服务器完全离线就不适合直接跑安装脚本建议走第 5 章。4. 备用路线用户级 Node 环境加局部 npm有些场景下官方原生安装器不可用比如内网安全策略禁止执行外来脚本或者你需要同时使用 Node 生态里的其他工具。这时可以把 Node 和 npm 一起安置在用户目录再用 npm 安装 Claude。记住npm 的“全局安装”并不一定要求 root 权限关键在于把 npm 的全局目录指到你的 HOME 下。4.1 在 HOME 里还原一个 Node 运行时官方 Node 二进制发布包自带 npm所以不需要系统预装 npm。下载对应架构的包并解压到用户目录即可NODE_VERSIONv20.19.0 ARCH$(uname -m) mkdir -p ~/.local curl -fsSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-${ARCH}.tar.xz -o ~/node.tar.xz tar -xJf ~/node.tar.xz -C ~/.local mv ~/.local/node-${NODE_VERSION}-linux-${ARCH} ~/.local/node rm ~/node.tar.xz然后把这个 Node 路径加入 PATHexport PATH$HOME/.local/node/bin:$PATH node -v npm -v如果服务器上没有 xz 解压工具可以改用 Python 解压 tar.xz一般服务器都会带 python3python3 - EOF import tarfile with tarfile.open(/home/user/node.tar.xz, r) as t: t.extractall(/home/user/.local) EOF然后用 mv 命令整理目录名。需要注意的是下载 Node 时必须确认架构和之前uname -m的结果一致。4.2 把 npm 的全局前缀指到 HOME这是整条路线里最容易踩坑的地方。直接跑npm install -g时npm 默认可能尝试写入 /usr/local因为系统全局路径仍然指向那里。必须先把 prefix 指到用户目录export NPM_CONFIG_PREFIX$HOME/.local export PATH$HOME/.local/bin:$PATH npm config set prefix $HOME/.local --global这样设置之后npm install -g里的 global 就不再是系统全局而是你用户目录下的全局目录。理解这一点很重要npm 的 global 含义是“安装到全局那个 prefix 指定的目录”这个目录完全可以通过环境变量控制。然后安装 Claudenpm install -g anthropic-ai/claude-code安装完成后可执行文件会出现在~/.local/bin/claude。验证一下which claude claude --version4.3 和原生安装器的方案怎么选两种方案不冲突但建议不要同时安装否则容易出现新旧版本混用的混乱。做个简单对比对比项官方原生安装器用户级 Node npm是否需要 sudo不需要不需要是否需要系统 npm不需要不需要是否引入 Node 运行时否是安装体积相对小Node 本体约 60MB 起总体偏大后续升级claude updatenpm install -g anthropic-ai/claude-code适合场景在线、追求最小依赖需要同时用 Node 生态或原生方案不可用如果只看“部署 Claude”这一个目标原生安装器更干净。如果你后续还要写脚本、跑本地 Node 服务那用户级 Node 方案一石二鸟也值得。5. 离线场景先把包搬进服务器再落地前面说过有很多服务器是网络隔离的没法直接访问外网。这种时候不能用在线安装器但思路很简单在一个有网的跳板机或本地电脑上把需要的文件准备好再传进服务器。5.1 要提前准备哪些文件如果走原生安装器路线你需要的不只是 install.sh还包括它背后要下载的二进制压缩包。比较好用的方式是先在联网机器上执行一次安装观察安装器实际拉取了哪些 URL然后把对应文件全部下载下来。或者更稳妥一点直接走 Node 路线因为 Node 二进制包本身是单独的 tar.xzClaude 的 npm 包也可以提前打成一个 tarball。在联网机器上先打 Claude 包npm pack anthropic-ai/claude-code这会生成一个类似anthropic-ai-claude-code-x.x.x.tgz的文件。之后把这个 tgz 和 Node 的 tar.xz 一起传到服务器上。5.2 上传并解压到用户目录假设服务器地址是 10.x.x.x用户名是 user可以这样传scp node-v20.19.0-linux-x64.tar.xz user10.x.x.x:/home/user/ scp anthropic-ai-claude-code-x.x.x.tgz user10.x.x.x:/home/user/到服务器上再按第 4 章的步骤解压 Node、配置 PATH。安装 Claude 时因为无法访问 npm 远程仓库直接安装本地打包文件npm install -g ~/anthropic-ai-claude-code-x.x.x.tgz如果没有 npm 可用也可以手动把 npm 包里的内容解压到~/.local/lib/node_modules/anthropic-ai/claude-code再在~/.local/bin下创建软链接指向cli.js。这个方法略繁琐但完全可行。5.3 检查依赖库处理 glibc 版本问题离线服务器往往是老系统最容易在这里遇到动态库缺失。安装完成后先做一次检查ldd ~/.local/bin/claude | grep not found如果没有输出说明所有动态库都已满足。如果有输出比如缺少 libstdc.so.6可以在同架构的另一台相近系统上把这个库文件复制过来放到~/.local/lib下然后设置export LD_LIBRARY_PATH$HOME/.local/lib:$LD_LIBRARY_PATH这个操作不需要 sudo因为读 /usr/lib64 下的库文件用的是普通用户权限复制到自己目录也没有权限问题。不过复制库文件本质上是在打补丁最好还是找一台 glibc 版本相近的机器来复制避免绕进去新的兼容问题。6. 登录鉴权与密钥管理运行前必须想清楚的事命令行工具装好之后第一件要面对的事就是身份认证。Claude 官方命令行工具有两种常见使用方式交互式登录和 API 密钥环境变量。在无 sudo 环境里两者都能用但密钥管理的细节格外重要因为密钥一旦泄露权限就在别人手中。6.1 交互式登录和 API 密钥如果这台服务器允许你手动操作直接运行claude首次运行会进入登录流程通常需要在浏览器中完成授权。这种方式的优点是密钥不会明文常驻在终端里缺点是不适合自动化场景。如果是无人值守或定时任务使用建议配置 API 密钥环境变量export ANTHROPIC_API_KEY你的API密钥 claude环境变量在 shell 中的作用范围只在当前会话如果你希望长期有效可以写到~/.bashrc或~/.profile里。写到文件里有个隐患如果家目录权限设置过宽别人登录同机账号就能读走密钥。6.2 把密钥文件变成私有配置比较稳妥的做法是单独建一个配置文件再在 shell 启动时引入touch ~/.env chmod 600 ~/.env echo export ANTHROPIC_API_KEY你的API密钥 ~/.env echo if [ -f $HOME/.env ]; then source $HOME/.env; fi ~/.bashrcchmod 600 保证只有你自己能读写这个文件。即便在多用户服务器上其他账号也看不到密钥内容。另外千万别把 .env 文件放进任何 git 仓库目录里那等于把密钥公开了。6.3 数据集目录和配置目录Claude 会在用户目录下维护配置文件、会话历史、缓存等数据。不同版本用的目录名可能略有不同常见的有 ~/.claude 以及按 XDG 规范存放的 ~/.config 下的相关目录。这些目录默认不需要 sudo只要 HOME 可写就能创建。如果你的 HOME 空间紧张可以留意这些缓存目录的大小必要时清理掉旧会话数据。7. 三个重灾区PATH 顺序、磁盘配额、动态库缺失部署本身并不复杂但我实际排查过的问题几乎都集中在这三处。这里单独拿出来说是因为它们各自都有“表面看起来成功、运行起来失败”的特点非常容易浪费大量时间。7.1 PATH 顺序被系统目录抢先安装完成后如果运行claude提示找不到命令或者which claude返回的不是你安装的那个路径基本就是 PATH 顺序问题。服务器上可能本来就有旧版本或者管理员在 /usr/local/bin 里放了同名可执行文件而系统目录在 PATH 中排在前面。解决方式是把用户目录放到 PATH 最前面export PATH$HOME/.local/bin:$PATH注意${HOME}/.local/bin 必须出现在 /usr/local/bin 和 /usr/bin 之前。有的 shell 还会缓存命令路径改完 PATH 后用hash -r清一下缓存否则当前会话仍可能指向旧路径。7.2 磁盘配额和 inode 数量这个问题在共享服务器上特别常见。Node 安装目录可能占去 60 到 80 MBClaude 的依赖再占几十 MB加上缓存目录很快就能突破小配额。如果你发现运行时行为诡异比如提示无法写入临时文件检查一下配额df -h $HOME du -sh ~/.local ~/.npm ~/.cachenpm 会在~/.npm下保留大量缓存清理时可以执行npm cache clean --force这个操作同样不需要 sudo。如果配额实在太小还可以把 Node 和 Claude 安装到其他有空间的可写路径比如 /tmp 的某个独占目录然后通过 PATH 和 HOME 变量指向那里。7.3 动态库缺失和版本兼容前面第 5 章提过用ldd检查动态库。在较老的 CentOS 7 或 equivalent 系统上预编译的 Node 20 可能因为 glibc 版本过低而直接报错。应对办法有两个方向一是改用较早版本的 Node比如 v18 或 v16它们对旧系统的兼容性更好二是放弃 Node 方案改用官方原生安装器因为它的二进制可能针对特定平台做了更好的兼容处理。如果两种都不行那就需要找一台相同发行版、相同架构的机器把系统库文件复制过来或者申请管理员在当前服务器上补充基础运行库。复制库文件是临时手段能跑通但不够优雅遇到更新版本时可能还要重复操作。8. 部署完成后的自检与升级路径安装、鉴权都做完之后别急着说“搞定了”。做一遍完整自检确保重启、重登之后依然可用。自检建议按这个顺序来claude --version claude --help如果--help能正常输出说明核心程序运行正常。再开一个新终端确认which claude指向用户目录。最后检查一下~/.bashrc里的 PATH 是否写对了避免重启后又要手动 export。升级也不用 sudo。原生安装器的升级命令是claude updatenpm 安装的升级命令是npm install -g anthropic-ai/claude-code两个命令都会在用户目录内完成升级不会去碰系统目录。离线环境下升级就需要重新搬一次包所以离线服务器通常建议不要频繁升级先跑稳定版本。我自己的习惯是在任何受限服务器上做这类部署时都会先存一个最小可复现步骤文档。不仅因为步骤本身很容易忘更因为在多人共用的服务器上你安装的版本、使用的路径、设置的 PATH都可能在若干天后被其他操作干扰。提前记下“安装到了哪里、 PATH 是怎么配的、密钥放在哪个文件”后续排障会轻松很多。先跑通最小安装再考虑自动化这样的节奏最稳妥。

相关新闻

TP301系列DTU配置与调试:从串口转网络到故障排查的完整指南

TP301系列DTU配置与调试:从串口转网络到故障排查的完整指南

简介:TP301系列DTU使用说明是一份面向物联网现场工程师与设备调试人员的官方技术文档,适用于工业自动化、智能农业、环境监测等场景的无线数据采集与传输项目。压缩包内含1个PDF文件,大小仅2.15MB,正文围绕产品接口、配置工具、平…

2026/10/14 22:06:25 阅读更多 →
面向对象程序设计-第一阶段补充-教材6-3:自定义函数实现有序数组的删除

面向对象程序设计-第一阶段补充-教材6-3:自定义函数实现有序数组的删除

作者 陈春丽单位 中国地质大学(北京)从一个有序数组(由小到大)中删除一个数据。如数组a{1,3,5,7,9},删除3后的a是{1,5,7,9},长度减1(不会释放数组内存)。如果要删除的数据不在数组中…

2026/10/14 22:06:25 阅读更多 →
OpenShell:跨平台终端运行时框架解析

OpenShell:跨平台终端运行时框架解析

1. OpenShell 是什么:一个被严重误读的开源终端生态项目OpenShell 这个名字在最近几个月突然出现在 Linux、macOS 和 Windows 开发者社区的热搜榜单里,但绝大多数人点进去后都愣住了——它既不是 Shell 解释器,也不是类 PowerShell 的新命令行…

2026/10/14 22:06:25 阅读更多 →

最新新闻

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

简介:一份基于原生JavaScript实现的组态软件源码包,面向Web前端与工业自动化开发者,用于在无后台依赖环境中通过拖拽方式快速构建电力一次接线图、工业流程图等图形界面。压缩包共1013个文件,约14.4MB,以svg、png、gif…

2026/10/14 22:55:37 阅读更多 →
离职原因这样回答,面试官当场刮目相看:三步包装法详解

离职原因这样回答,面试官当场刮目相看:三步包装法详解

“我的离职原因是个人的职业发展规划……”这话一出口,对面面试官的眼神是不是闪了一下?别觉得奇怪,很多求职者都折在这句话上。明明说的是真心话,怎么就变成了减分项?干了十几年招聘,我筛过几万份简历、做…

2026/10/14 22:55:37 阅读更多 →
HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

做图像处理这几年,被问得最多的问题之一就是:HEIC格式怎么转成JPG。来源基本都是iPhone用户,拍的照片在手机上看一切正常,发到Windows电脑上打不开,传到某些网络平台上不认,发给安卓朋友半天收不到预览。HE…

2026/10/14 22:55:37 阅读更多 →
Selenium自动化测试实战:定位策略、等待机制与框架搭建

Selenium自动化测试实战:定位策略、等待机制与框架搭建

1. 为什么还在用Selenium:一个老牌框架的历久弥新做Web自动化测试的朋友,几乎没人绕得过Selenium。哪怕这几年新工具层出不穷,Playwright、Puppeteer、Cypress一个比一个火,但我在一线项目里兜兜转转这么多年,但凡遇到…

2026/10/14 22:55:37 阅读更多 →
腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

1. 从标题拆解 Octop 的定位与野心 第一次看到“Octop:像 WorkBuddy 的腾讯开源 Agent”这个标题,我的直觉是:这又是一个把“Agent”当卖点的项目,但“像 WorkBuddy”这个类比很关键。WorkBuddy 在圈内的口碑是“把复杂任务拆成可…

2026/10/14 22:55:37 阅读更多 →
Axure交互动效入门:事件、用例与动作三要素实战解析

Axure交互动效入门:事件、用例与动作三要素实战解析

很多刚接触原型设计的人,一听到“Axure交互动效”就觉得这是进阶内容,得先把元件、样式、页面这些基础吃透了才敢碰。我实际带新人的过程中发现,这个顺序其实是反过来的:动效不但不是进阶内容,反而是理解Axure底层逻辑…

2026/10/14 22:54:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →