# WSL1 安装 Hermes Agent + Browser Automation 完整踩坑记录(含 Playwright / agent-browser 修复) > 适用于: > > - Windows + WSL1 > - Ubuntu 24.04 > - Hermes Agent > - Playwright > - agent-browser > - Chromium Browser Automation --- # 一、环境说明 本文环境: | 项目 | 版本 | |---|---| | Windows | Windows 10 | | WSL | WSL1 | | Ubuntu | 24.04 | | Node.js | v22 | | Hermes Agent | 最新版 | | Playwright | 最新版 | --- # 二、安装 WSL(重要:这里最容易卡) 很多教程默认: ```powershell wsl --install ``` 但实际上: - 精简版 Windows - 企业版 Windows - Ghost 系统 - LTSC - 无微软商店系统 经常会卡。 --- # 1. 推荐安装方式 管理员 PowerShell: 虚拟机而且没有开嵌套虚拟化所以使用WSL1 ```powershell wsl --set-default-version 1 wsl --install --web-download ``` 这个参数会: - 绕过 Microsoft Store - 直接从微软服务器下载 - 适合没有商店的系统 --- # 2. 如果卡在下载 Ubuntu 有时候: ```text Installing Ubuntu... ``` 会卡很久。 这时不要默认 Ubuntu。 先查看可用发行版: ```powershell wsl --list --online ``` 例如: ```text NAME Ubuntu Ubuntu-22.04 Ubuntu-24.04 Debian ``` 然后手动指定: ```powershell wsl --install -d Ubuntu-24.04 ``` 或者: ```powershell wsl --install -d Ubuntu-22.04 ``` --- # 3. 安装完成后卡在首次初始化 最常见问题: 打开 Ubuntu 后: ```text Installing, this may take a few minutes... ``` 一直不结束。 或者: ```text Please create a default UNIX user account ``` 但始终不弹: ```text Enter new UNIX username: ``` --- # 原因 通常是: - 子系统初始化损坏 - WSL filesystem 损坏 - Windows Defender 拦截 - 某些精简系统组件缺失 --- # 4. 解决方法:注销并重装子系统 ## 先关闭 WSL 管理员 PowerShell: ```powershell wsl --shutdown ``` --- ## 查看已安装发行版 ```powershell wsl -l -v ``` 例如: ```text Ubuntu-24.04 ``` --- ## 删除损坏发行版 ⚠ 注意:会删除该 Linux 数据。 ```powershell wsl --unregister Ubuntu-26.04 ``` --- ## 重新安装 ```powershell wsl --install -d Ubuntu-26.04 ``` --- # 5. 如果 Ubuntu 26.04 一直异常 直接换: ```powershell wsl --install -d Ubuntu-24.04 --web-download ``` 很多时候: ```text 24.04 比 24.04 稳定 ``` 尤其: - WSL1 - 老机器 - 精简 Windows 环境。 --- # 6. 查看当前 WSL 版本 ```powershell wsl -l -v ``` 输出: ```text NAME STATE VERSION Ubuntu Running 1 ``` 说明当前是: ```text WSL1 ``` --- # 7. WSL1 和 WSL2 区别 | 项目 | WSL1 | WSL2 | |---|---|---| | 内核 | 非完整 Linux | 真 Linux 内核 | | Docker | 很差 | 正常 | | Chromium | 容易崩 | 稳定 | | Playwright | 需要特殊参数 | 基本直接可用 | | systemd | 不支持 | 支持 | | IO 性能 | Windows 文件快 | Linux 文件快 | |用户界面|仅Terminal|有GUI --- # 8. 为什么我仍然用 WSL1 因为: - 启动快 - 占用小 - 某些 IO 场景更快 - 老机器兼容更好 但: ```text Browser Automation 会非常折腾 ``` 后面所有: - Playwright - Hermes Browser Tool - agent-browser 问题几乎都与: ```text WSL1 不是完整 Linux ``` 有关。 --- # 三、安装 Ubuntu 进入系统后: ```bash sudo apt update ``` --- # 四、安装 Node.js 访问[Node.js官网]([https://](https://nodejs.org/zh-cn/download))查看教程 Node26不行就24,24不行就22 Hermes和Claw都只要求22及以上 --- # 五、安装 Hermes Agent ## 安装 ```bash curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash ``` 初始化设定: ```bash hermes setup ``` 安装模型: ```bash hermes setup model ``` 安装 browser tool: ```bash hermes setup tools ``` 配置通信 ```bash hermes setup gateway ``` --- # 六、安装 Playwright 进入 Hermes 安装目录: ```bash cd /usr/local/lib/hermes-agent ``` 安装 Chromium: ```bash npx playwright install chromium ``` 不要先用 `--with-deps`,因为它经常在 WSL1/Ubuntu 24.04 里因为 apt 依赖返回 code 100。 --- # 七、验证 Playwright 是否成功 ## 测试 Chromium 是否能启动 ```bash node -e " const { chromium } = require('playwright'); (async() => { const browser = await chromium.launch({ args:['--no-sandbox'] }); console.log(browser.version()); await browser.close(); })(); " ``` 成功输出: ```text 147.0.xxxx.xx ``` 说明: - Playwright 正常 - Chromium 正常 - Browser Runtime 正常 --- # 八、WSL1 下的常见问题 --- # 问题 1:缺少动态库 典型错误: ```text error while loading shared libraries: libnspr4.so libasound.so.2 ``` ## 解决 安装依赖: ```bash sudo apt install -y \ libnspr4 \ libnss3 \ libasound2t64 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libxkbcommon0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxrandr2 \ libgbm1 \ libpango-1.0-0 \ libcairo2 ``` --- # 问题 2:WSL1 不支持 systemd 错误: ```text Failed to take /etc/passwd lock ``` 或: ```text dpkg returned an error code (1) ``` ## 原因 WSL1 不支持真正的 systemd。 Ubuntu 24.04 某些包会在安装时尝试调用 systemd。 --- ## 解决 临时禁用 postinst: ```bash cd /var/lib/dpkg/info for p in systemd-timesyncd udev polkitd systemd-resolved snapd netplan.io packagekit packagekit-tools cloud-init software-properties-common systemd systemd-hwe-hwdb; do if [ -f "$p.postinst" ]; then mv "$p.postinst" "$p.postinst.disabled" fi done ``` 然后: ```bash sudo dpkg --configure -a sudo apt -f install ``` --- # 九、WSL1 下 Playwright 无法访问网页 ## 现象 ```text page.goto timeout ``` 或者: ```text Chrome exited early ``` --- # 原因 WSL1 不是完整 Linux 内核。 Chromium 多进程模型会异常。 --- # 十、WSL1 Chromium 必须参数 最终稳定参数: ```text --no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu --disable-ipv6 --single-process --no-zygote ``` --- # 十一、验证浏览器访问网页 ## 测试代码 ```bash node - <<'EOF' const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true, args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu', '--disable-ipv6', '--single-process', '--no-zygote' ] }); const page = await browser.newPage(); await page.goto('https://example.com', { waitUntil: 'domcontentloaded', timeout: 60000 }); console.log(await page.title()); await page.screenshot({ path: 'example.png' }); await browser.close(); })(); EOF ``` 成功输出: ```text Example Domain ``` 说明 Playwright + Chromium 已经能正常访问网页。 --- 如果后面测试 `agent-browser --args ...` 时提示: ```text --args ignored: daemon already running. Use 'agent-browser close' first to restart with new options. ``` 说明 `agent-browser` 后台 daemon 已经启动,新参数没有生效。 先关掉旧 daemon: ```bash agent-browser close --all ``` 必要时再清理残留进程: ```bash pkill -f agent-browser pkill -f chrome ``` 然后重新运行带 `--args` 的命令。 --- # 十二、安装 agent-browser Hermes Browser Tool 实际依赖: ```text agent-browser ``` 安装: ```bash npm install -g agent-browser ``` --- # 十三、修复 agent-browser PATH 检查: ```bash npm prefix -g ``` 我的输出: ```text /root/.hermes/node ``` 所以 PATH 应加入: ```bash export PATH="/root/.hermes/node/bin:$PATH" ``` 永久: ```bash echo 'export PATH="/root/.hermes/node/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` --- # 十四、验证 agent-browser ```bash agent-browser --help ``` 成功会输出完整帮助。 --- # 十五、WSL1 下 agent-browser 崩溃问题 ## 错误 ```text Chrome exited early without writing DevToolsActivePort ``` 或: ```text crashpad getsockopt: Invalid argument ``` --- # 原因 agent-browser 默认启动完整 Chrome。 WSL1 下会崩。 --- # 十六、最终解决方案(核心) ## 1. 使用 Playwright 自带的 chrome-headless-shell 查找: ```bash find /root/.cache/ms-playwright -name chrome-headless-shell ``` 得到: ```text /root/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ``` --- ## 2. 创建 agent-browser 配置 创建: ```bash mkdir -p ~/.agent-browser nano ~/.agent-browser/config.json ``` 内容: ```json { "executablePath": "/root/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell", "args": "--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-gpu,--disable-ipv6,--single-process,--no-zygote,--disable-crash-reporter,--disable-crashpad" } ``` --- # 十七、测试 agent-browser 关闭旧 daemon: ```bash agent-browser close --all pkill -f chrome ``` 测试: ```bash agent-browser open https://example.com ``` 然后: ```bash agent-browser get title ``` 输出: ```text Example Domain ``` 说明: - agent-browser 正常 - Chromium 正常 - WSL1 browser automation 正常 --- # 十八、Hermes Browser Tool 最终配置 编辑: ```bash nano /root/.hermes/.env ``` 加入: ```env PATH=/root/.hermes/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin AGENT_BROWSER_EXECUTABLE_PATH=/root/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell AGENT_BROWSER_ARGS=--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-gpu,--disable-ipv6,--single-process,--no-zygote,--disable-crash-reporter,--disable-crashpad ``` 加载: ```bash source /root/.hermes/.env ``` --- # 十九、启用 Hermes Browser Tool ```bash hermes config set toolsets '["hermes-cli","browser"]' ``` 检查: ```bash hermes doctor ``` --- # 二十、最终验证 Hermes Browser 启动: ```bash hermes ``` 输入: ```text 打开 https://example.com 并输出标题 ``` 成功即可。 --- # 二十一、WSL1 注意事项(非常重要) ## 1. WSL1 不是真 Linux Chromium 很多功能不稳定。 --- ## 2. 必须使用: ```text --single-process --no-zygote ``` 否则: ```text page.goto timeout Chrome exited early ``` 几乎必现。 --- ## 3. 推荐使用 chrome-headless-shell 不要用完整 Chrome。 --- ## 4. daemon 崩溃时清理 ```bash agent-browser close --all pkill -f chrome pkill -f agent-browser ``` --- ## 5. 最推荐方案仍然是 WSL2 WSL1 只是 workaround。 长期建议: ```powershell wsl --set-version Ubuntu 2 ``` --- # 二十二、最终架构 最终稳定方案: ```text Hermes -> agent-browser -> chrome-headless-shell + WSL1 special args ``` --- # 二十三、最终结果 最终成功实现: - Hermes Agent - Browser Tool - Playwright - Chromium - agent-browser - Browser Automation - Headless Browser - Web Navigation - Screenshot - AI Browser Agent 全部在: ```text WSL1 + Ubuntu 24.04 ``` 环境下稳定运行。 Loading... # WSL1 安装 Hermes Agent + Browser Automation 完整踩坑记录(含 Playwright / agent-browser 修复) > 适用于: > > - Windows + WSL1 > - Ubuntu 24.04 > - Hermes Agent > - Playwright > - agent-browser > - Chromium Browser Automation --- # 一、环境说明 本文环境: | 项目 | 版本 | |---|---| | Windows | Windows 10 | | WSL | WSL1 | | Ubuntu | 24.04 | | Node.js | v22 | | Hermes Agent | 最新版 | | Playwright | 最新版 | --- # 二、安装 WSL(重要:这里最容易卡) 很多教程默认: ```powershell wsl --install ``` 但实际上: - 精简版 Windows - 企业版 Windows - Ghost 系统 - LTSC - 无微软商店系统 经常会卡。 --- # 1. 推荐安装方式 管理员 PowerShell: 虚拟机而且没有开嵌套虚拟化所以使用WSL1 ```powershell wsl --set-default-version 1 wsl --install --web-download ``` 这个参数会: - 绕过 Microsoft Store - 直接从微软服务器下载 - 适合没有商店的系统 --- # 2. 如果卡在下载 Ubuntu 有时候: ```text Installing Ubuntu... ``` 会卡很久。 这时不要默认 Ubuntu。 先查看可用发行版: ```powershell wsl --list --online ``` 例如: ```text NAME Ubuntu Ubuntu-22.04 Ubuntu-24.04 Debian ``` 然后手动指定: ```powershell wsl --install -d Ubuntu-24.04 ``` 或者: ```powershell wsl --install -d Ubuntu-22.04 ``` --- # 3. 安装完成后卡在首次初始化 最常见问题: 打开 Ubuntu 后: ```text Installing, this may take a few minutes... ``` 一直不结束。 或者: ```text Please create a default UNIX user account ``` 但始终不弹: ```text Enter new UNIX username: ``` --- # 原因 通常是: - 子系统初始化损坏 - WSL filesystem 损坏 - Windows Defender 拦截 - 某些精简系统组件缺失 --- # 4. 解决方法:注销并重装子系统 ## 先关闭 WSL 管理员 PowerShell: ```powershell wsl --shutdown ``` --- ## 查看已安装发行版 ```powershell wsl -l -v ``` 例如: ```text Ubuntu-24.04 ``` --- ## 删除损坏发行版 ⚠ 注意:会删除该 Linux 数据。 ```powershell wsl --unregister Ubuntu-26.04 ``` --- ## 重新安装 ```powershell wsl --install -d Ubuntu-26.04 ``` --- # 5. 如果 Ubuntu 26.04 一直异常 直接换: ```powershell wsl --install -d Ubuntu-24.04 --web-download ``` 很多时候: ```text 24.04 比 24.04 稳定 ``` 尤其: - WSL1 - 老机器 - 精简 Windows 环境。 --- # 6. 查看当前 WSL 版本 ```powershell wsl -l -v ``` 输出: ```text NAME STATE VERSION Ubuntu Running 1 ``` 说明当前是: ```text WSL1 ``` --- # 7. WSL1 和 WSL2 区别 | 项目 | WSL1 | WSL2 | |---|---|---| | 内核 | 非完整 Linux | 真 Linux 内核 | | Docker | 很差 | 正常 | | Chromium | 容易崩 | 稳定 | | Playwright | 需要特殊参数 | 基本直接可用 | | systemd | 不支持 | 支持 | | IO 性能 | Windows 文件快 | Linux 文件快 | |用户界面|仅Terminal|有GUI --- # 8. 为什么我仍然用 WSL1 因为: - 启动快 - 占用小 - 某些 IO 场景更快 - 老机器兼容更好 但: ```text Browser Automation 会非常折腾 ``` 后面所有: - Playwright - Hermes Browser Tool - agent-browser 问题几乎都与: ```text WSL1 不是完整 Linux ``` 有关。 --- # 三、安装 Ubuntu 进入系统后: ```bash sudo apt update ``` --- # 四、安装 Node.js 访问[Node.js官网]([https://](https://nodejs.org/zh-cn/download))查看教程 Node26不行就24,24不行就22 Hermes和Claw都只要求22及以上 --- # 五、安装 Hermes Agent ## 安装 ```bash curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash ``` 初始化设定: ```bash hermes setup ``` 安装模型: ```bash hermes setup model ``` 安装 browser tool: ```bash hermes setup tools ``` 配置通信 ```bash hermes setup gateway ``` --- # 六、安装 Playwright 进入 Hermes 安装目录: ```bash cd /usr/local/lib/hermes-agent ``` 安装 Chromium: ```bash npx playwright install chromium ``` 不要先用 `--with-deps`,因为它经常在 WSL1/Ubuntu 24.04 里因为 apt 依赖返回 code 100。 --- # 七、验证 Playwright 是否成功 ## 测试 Chromium 是否能启动 ```bash node -e " const { chromium } = require('playwright'); (async() => { const browser = await chromium.launch({ args:['--no-sandbox'] }); console.log(browser.version()); await browser.close(); })(); " ``` 成功输出: ```text 147.0.xxxx.xx ``` 说明: - Playwright 正常 - Chromium 正常 - Browser Runtime 正常 --- # 八、WSL1 下的常见问题 --- # 问题 1:缺少动态库 典型错误: ```text error while loading shared libraries: libnspr4.so libasound.so.2 ``` ## 解决 安装依赖: ```bash sudo apt install -y \ libnspr4 \ libnss3 \ libasound2t64 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libxkbcommon0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxrandr2 \ libgbm1 \ libpango-1.0-0 \ libcairo2 ``` --- # 问题 2:WSL1 不支持 systemd 错误: ```text Failed to take /etc/passwd lock ``` 或: ```text dpkg returned an error code (1) ``` ## 原因 WSL1 不支持真正的 systemd。 Ubuntu 24.04 某些包会在安装时尝试调用 systemd。 --- ## 解决 临时禁用 postinst: ```bash cd /var/lib/dpkg/info for p in systemd-timesyncd udev polkitd systemd-resolved snapd netplan.io packagekit packagekit-tools cloud-init software-properties-common systemd systemd-hwe-hwdb; do if [ -f "$p.postinst" ]; then mv "$p.postinst" "$p.postinst.disabled" fi done ``` 然后: ```bash sudo dpkg --configure -a sudo apt -f install ``` --- # 九、WSL1 下 Playwright 无法访问网页 ## 现象 ```text page.goto timeout ``` 或者: ```text Chrome exited early ``` --- # 原因 WSL1 不是完整 Linux 内核。 Chromium 多进程模型会异常。 --- # 十、WSL1 Chromium 必须参数 最终稳定参数: ```text --no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu --disable-ipv6 --single-process --no-zygote ``` --- # 十一、验证浏览器访问网页 ## 测试代码 ```bash node - <<'EOF' const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true, args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu', '--disable-ipv6', '--single-process', '--no-zygote' ] }); const page = await browser.newPage(); await page.goto('https://example.com', { waitUntil: 'domcontentloaded', timeout: 60000 }); console.log(await page.title()); await page.screenshot({ path: 'example.png' }); await browser.close(); })(); EOF ``` 成功输出: ```text Example Domain ``` 说明 Playwright + Chromium 已经能正常访问网页。 --- 如果后面测试 `agent-browser --args ...` 时提示: ```text --args ignored: daemon already running. Use 'agent-browser close' first to restart with new options. ``` 说明 `agent-browser` 后台 daemon 已经启动,新参数没有生效。 先关掉旧 daemon: ```bash agent-browser close --all ``` 必要时再清理残留进程: ```bash pkill -f agent-browser pkill -f chrome ``` 然后重新运行带 `--args` 的命令。 --- # 十二、安装 agent-browser Hermes Browser Tool 实际依赖: ```text agent-browser ``` 安装: ```bash npm install -g agent-browser ``` --- # 十三、修复 agent-browser PATH 检查: ```bash npm prefix -g ``` 我的输出: ```text /root/.hermes/node ``` 所以 PATH 应加入: ```bash export PATH="/root/.hermes/node/bin:$PATH" ``` 永久: ```bash echo 'export PATH="/root/.hermes/node/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` --- # 十四、验证 agent-browser ```bash agent-browser --help ``` 成功会输出完整帮助。 --- # 十五、WSL1 下 agent-browser 崩溃问题 ## 错误 ```text Chrome exited early without writing DevToolsActivePort ``` 或: ```text crashpad getsockopt: Invalid argument ``` --- # 原因 agent-browser 默认启动完整 Chrome。 WSL1 下会崩。 --- # 十六、最终解决方案(核心) ## 1. 使用 Playwright 自带的 chrome-headless-shell 查找: ```bash find /root/.cache/ms-playwright -name chrome-headless-shell ``` 得到: ```text /root/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ``` --- ## 2. 创建 agent-browser 配置 创建: ```bash mkdir -p ~/.agent-browser nano ~/.agent-browser/config.json ``` 内容: ```json { "executablePath": "/root/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell", "args": "--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-gpu,--disable-ipv6,--single-process,--no-zygote,--disable-crash-reporter,--disable-crashpad" } ``` --- # 十七、测试 agent-browser 关闭旧 daemon: ```bash agent-browser close --all pkill -f chrome ``` 测试: ```bash agent-browser open https://example.com ``` 然后: ```bash agent-browser get title ``` 输出: ```text Example Domain ``` 说明: - agent-browser 正常 - Chromium 正常 - WSL1 browser automation 正常 --- # 十八、Hermes Browser Tool 最终配置 编辑: ```bash nano /root/.hermes/.env ``` 加入: ```env PATH=/root/.hermes/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin AGENT_BROWSER_EXECUTABLE_PATH=/root/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell AGENT_BROWSER_ARGS=--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-gpu,--disable-ipv6,--single-process,--no-zygote,--disable-crash-reporter,--disable-crashpad ``` 加载: ```bash source /root/.hermes/.env ``` --- # 十九、启用 Hermes Browser Tool ```bash hermes config set toolsets '["hermes-cli","browser"]' ``` 检查: ```bash hermes doctor ``` --- # 二十、最终验证 Hermes Browser 启动: ```bash hermes ``` 输入: ```text 打开 https://example.com 并输出标题 ``` 成功即可。 --- # 二十一、WSL1 注意事项(非常重要) ## 1. WSL1 不是真 Linux Chromium 很多功能不稳定。 --- ## 2. 必须使用: ```text --single-process --no-zygote ``` 否则: ```text page.goto timeout Chrome exited early ``` 几乎必现。 --- ## 3. 推荐使用 chrome-headless-shell 不要用完整 Chrome。 --- ## 4. daemon 崩溃时清理 ```bash agent-browser close --all pkill -f chrome pkill -f agent-browser ``` --- ## 5. 最推荐方案仍然是 WSL2 WSL1 只是 workaround。 长期建议: ```powershell wsl --set-version Ubuntu 2 ``` --- # 二十二、最终架构 最终稳定方案: ```text Hermes -> agent-browser -> chrome-headless-shell + WSL1 special args ``` --- # 二十三、最终结果 最终成功实现: - Hermes Agent - Browser Tool - Playwright - Chromium - agent-browser - Browser Automation - Headless Browser - Web Navigation - Screenshot - AI Browser Agent 全部在: ```text WSL1 + Ubuntu 24.04 ``` 环境下稳定运行。 最后修改:2026 年 05 月 10 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏