Hermes Agent 云端部署实战:从零到一在 DigitalOcean 上构建 24/7 智能体服务

news2026/5/8 4:57:23
1. 项目概述与核心价值如果你正在构建一个基于 Claude Code 或 agent-skills 的智能体并且希望它能像一台永不关机的服务器一样7x24小时在线随时响应你的指令那么将 Hermes Agent 部署到云端虚拟服务器VPS几乎是必经之路。我最近就为我的个人求职辅助智能体完成了这项部署选择了 DigitalOcean 作为云平台。整个过程并非一帆风顺从环境配置、依赖安装到服务守护踩了不少坑也总结出了一套稳定可靠的部署流程。这个项目hermes-on-digitalocean正是这些实战经验的结晶它不仅仅是一个技能文件更是一份详尽的部署指南旨在帮助其他智能体构建者绕过我遇到的那些“坑”快速、顺利地将你的 Hermes Agent 送上云端。简单来说这个技能的核心目标是将你在本地笔记本电脑上运行的、功能完整的 Hermes Agent无缝、稳定地迁移到 DigitalOcean 的一台虚拟服务器Droplet上并确保它能以系统服务的形式持续运行。这解决了本地运行的两个核心痛点一是需要你的电脑始终保持开机和联网状态二是难以应对突发的高负载或需要长期运行的任务。无论是用于自动化工作流、个人助手还是像我一样的求职智能体云端部署都意味着更高的可用性和可靠性。2. 部署方案设计与核心思路拆解2.1 为什么选择 DigitalOcean 与 Systemd 组合在众多云服务提供商中选择 DigitalOcean 主要基于其对新开发者友好、性价比高以及doctl命令行工具的强大。对于 Hermes Agent 这类对计算资源要求中等、但需要稳定网络环境的应用DigitalOcean 的常规套餐 Droplet 完全足够其按小时计费的模式也便于成本控制。更重要的是doctl工具允许我们将整个服务器的创建和初始化过程脚本化、自动化这为未来可能的批量部署或 CI/CD 集成打下了基础。而选择Systemd作为进程守护方案则是 Linux 服务器环境下的“标准答案”。相比简单的nohup或screenSystemd 提供了完整的服务生命周期管理启动、停止、重启、查看状态、日志集中管理通过journalctl、依赖关系定义以及开机自启动。这意味着一旦部署完成你可以像管理任何其他系统服务如 Nginx、MySQL一样管理你的 Hermes Agent运维体验极佳。2.2 整体部署流程全景图整个部署流程可以清晰地划分为四个阶段每个阶段都有其明确的目标和需要克服的挑战基础设施准备阶段在 DigitalOcean 上创建一台符合要求的虚拟服务器Droplet。关键在于选择正确的操作系统镜像、硬件规格并预先注入启动脚本以完成基础环境配置。Hermes 运行环境构建阶段在全新的 Ubuntu 系统上搭建 Hermes Agent 所需的 Python 运行环境。这里最大的挑战是如何在不使用第三方 PPA如 deadsnakes的情况下安全、快速地安装特定版本的 Python如 3.11并配置好虚拟环境。应用部署与配置迁移阶段将 Hermes Agent 的代码、依赖以及你本地的关键配置特别是含有平台访问令牌的profiles.toml安全地迁移到服务器上。同时需要处理好工作空间workspace目录的链接以适应 Hermes 的文件结构预期。服务化与持久化阶段将 Hermes Agent 进程包装成一个 Systemd 服务单元service unit。这不仅包括编写服务配置文件还要解决如何让服务以普通用户身份运行、如何配置“linger”以确保用户注销后服务仍能运行等细节问题。这个流程设计确保了部署的可靠性和可重复性。接下来我们将深入每个阶段拆解其中的核心细节与实操要点。3. 核心细节解析与实操要点3.1 使用 Doctl 非交互式创建 Dropletdoctl是 DigitalOcean 的官方命令行工具通过它我们可以用一行命令创建并配置服务器。这比在网页控制台上点击要高效且不易出错尤其适合自动化。关键命令与参数解析doctl compute droplet create hermes-agent \ --region sfo3 \ --image ubuntu-24-04-x64 \ --size s-2vcpu-4gb \ --ssh-keys your_ssh_key_fingerprint \ --user-data-file cloud-init.yaml \ --tag-name hermes \ --wait--region sfo3: 选择数据中心区域。sfo3旧金山通常对亚洲和美洲连接都不错你也可以根据你的主要用户地理位置选择nyc3、sgp1等。--image ubuntu-24-04-x64: 指定操作系统为 Ubuntu 24.04 LTS。选择 LTS 版本是为了获得长期的安全更新和支持保证系统底层的稳定性。--size s-2vcpu-4gb: 选择服务器规格。对于运行单个 Hermes Agent2核CPU和4GB内存是一个甜点配置足以应对大多数场景同时成本可控。如果智能体需要频繁调用大模型或处理复杂任务可以考虑升级到4核8GB。--ssh-keys: 这是安全访问的基石。你必须提前将本地 SSH 公钥添加到 DigitalOcean 账户并在此处使用其指纹。这确保了只有你能通过 SSH 无密码登录服务器杜绝了密码泄露的风险。--user-data-file cloud-init.yaml:这是自动化配置的灵魂。cloud-init是云实例初始化的事实标准。我们通过一个 YAML 文件在 Droplet 首次启动时自动执行一系列命令如更新系统、创建用户、安装基础软件包等。这避免了手动登录服务器进行重复性初始设置。--tag-name hermes: 为资源打上标签。这在你有多个云资源时非常有用便于通过标签进行过滤、管理和成本分摊。--wait: 让命令阻塞直到 Droplet 创建完成并返回 IP 地址。这样你可以在脚本中直接获取 IP 进行后续操作。注意务必在本地安装并配置好doctl(doctl auth init)并妥善保管你的 API 令牌。API 令牌相当于你的云端“万能钥匙”绝不能泄露或提交到代码仓库。3.2 Python 3.11 环境的安全引导Ubuntu 24.04 的默认仓库可能不包含我们所需的特定 Python 版本如 3.11。虽然deadsnakesPPA 是常见选择但引入第三方仓库总有一定风险。这里我们采用一种更“干净”的方法从源代码编译。为什么不直接用 Ubuntu 自带的 PythonUbuntu 系统自身很多工具依赖自带的 Python通常是 3.12。直接修改系统 Python 或在其上安装大量 pip 包可能导致系统组件崩溃。因此最佳实践是为应用编译一个独立的 Python 版本并通过虚拟环境venv进行隔离。从源码编译的关键步骤与原理安装编译依赖build-essential,libssl-dev,zlib1g-dev,libncurses5-dev等是编译 Python 和其核心模块如ssl所必需的开发库。缺少它们会导致编译失败或功能不全。下载源码并编译从 Python 官网下载指定版本的源码 tarball。使用./configure --enable-optimizations进行配置--enable-optimizations选项会进行一些性能优化但会使编译时间显著变长。如果追求快速部署可以省略此选项。“altinstall”而非“install”make altinstall是至关重要的一步。它会把新编译的 Python 安装为python3.11和pip3.11而不会覆盖系统默认的python3链接。这完美实现了与系统 Python 的共存互不干扰。创建虚拟环境使用python3.11 -m venv /opt/hermes/venv在系统目录如/opt/hermes下创建虚拟环境。将虚拟环境放在这里而不是用户家目录是为了方便后续 systemd 服务以任何用户身份都能找到并使用它。3.3 Hermes 的非交互式安装与配置迁移在本地你可能通过交互式命令pipx install hermes-agent来安装 Hermes。在服务器上我们需要模拟这个过程但要以非交互式无人值守的方式完成。非交互式安装的核心使用pip install hermes-agent直接安装到之前创建的虚拟环境中 (/opt/hermes/venv)。这绕过了pipx的交互式封装更适合脚本化部署。配置迁移的安全与技巧Hermes 的核心配置是~/.hermes/profiles.toml其中包含了如 Slack、Discord 等消息平台的 Bot Token 或 OAuth 凭证。这些是最高机密。安全传输绝对不要通过明文邮件、即时通讯工具发送。使用scp或rsync通过 SSH 加密通道直接复制到服务器。例如scp ~/.hermes/profiles.toml userdroplet_ip:~/.hermes/。权限管理确保服务器上的profiles.toml文件权限设置为600仅所有者可读写防止其他用户或进程窥探。工作区Workspace链接模式Hermes 期望在~/.hermes/workspace目录下工作。但我们的代码可能存放在/opt/hermes/repo。一个巧妙的做法是在~/.hermes/目录下创建一个指向实际代码仓库的符号链接symlink。ln -s /opt/hermes/repo /home/hermes/.hermes/workspace这样做的好处是你可以在/opt/hermes/repo里用 git 管理你的技能和配置而 Hermes 运行时看到的路径结构完全符合预期。更新代码时只需在/opt/hermes/repo中操作即可。3.4 OAuth 回调的云端适配难题这是部署中最容易卡住的点之一。许多消息平台如 Slack的 OAuth 流程要求你提供一个可公开访问的Redirect URI用于在授权后接收回调。本地开发时你可能会用ngrok或localhost.run生成一个临时公网地址。但在生产服务器上你需要一个固定的地址。解决方案使用服务器公网 IP最简单的方式是使用 Droplet 的公网 IP 地址。在 OAuth 应用设置中将 Redirect URI 设置为http://你的Droplet_IP:端口/callback。Hermes 的网关Gateway默认会监听一个端口如 8080来处理这些回调。配置域名推荐为你的 Droplet IP 配置一个域名A记录。然后将 Redirect URI 设置为https://your-domain.com/callback。这更专业且如果你后续启用 HTTPS 也更方便。对于测试或个人项目使用 IP 地址通常也可行。确保网关可访问你必须确保服务器的防火墙如ufw打开了 Hermes 网关监听的端口例如8080并且安全组在 DigitalOcean 控制台是 Firewall也允许该端口的入站流量。实操心得在 DigitalOcean 控制台创建 Firewall 规则时除了 SSH22端口务必为 Hermes 网关添加一条自定义 TCP 规则允许来自0.0.0.0/0或特定IP段对指定端口如8080的访问。否则OAuth 回调永远无法到达你的服务。3.5 Systemd 服务与 Linger 配置详解这是实现“24/7运行”的最后一步也是确保服务稳定性的关键。Systemd 服务文件剖析我们通常在/etc/systemd/system/下创建一个服务文件例如hermes-gateway.service。[Unit] DescriptionHermes Agent Gateway Afternetwork.target [Service] Typesimple Userhermes Grouphermes WorkingDirectory/home/hermes EnvironmentPATH/opt/hermes/venv/bin ExecStart/opt/hermes/venv/bin/hermes gateway Restartalways RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.targetUser/Group: 指定服务以一个专门的、非root用户如hermes运行。这是安全最佳实践可以限制潜在安全问题的影响范围。Environment: 显式设置PATH确保服务能找到虚拟环境中的hermes可执行文件。WorkingDirectory: 设置工作目录为用户家目录这样 Hermes 就能正确找到~/.hermes/下的配置。Restartalways: 无论进程因何退出正常、错误、崩溃都自动重启。这是实现高可用的核心。StandardOutputjournal: 将服务的所有标准输出和错误输出重定向到 systemd 的日志系统。之后你可以用sudo journalctl -u hermes-gateway -f来实时查看和调试日志。“Linger”是什么为什么需要它默认情况下当一个用户如hermes注销logout或其所有会话结束时该用户的所有进程会被终止。对于通过 SSH 部署并启动服务的场景一旦你关闭 SSH 连接用户会话结束服务就可能被 systemd 杀掉。loginctl enable-linger hermes这个命令就是为了解决这个问题。它告诉系统“即使用户hermes没有活跃的登录会话也请允许其运行长时间的服务。” 启用 linger 后该用户的服务将在系统启动时自动启动并在用户“不在线”时持续运行。完整启用流程sudo systemctl daemon-reload # 重载服务配置 sudo systemctl enable hermes-gateway # 设置开机自启 sudo systemctl start hermes-gateway # 立即启动服务 sudo systemctl status hermes-gateway # 检查状态4. 完整实操过程逐步拆解4.1 第一阶段本地准备与 Droplet 创建在开始任何云端操作前充分的本地准备能事半功倍。步骤 1安装并配置 Doctl# 以 macOS 为例使用 Homebrew 安装 brew install doctl # 验证安装 doctl version # 初始化认证按照提示输入你的 DigitalOcean API Token doctl auth init步骤 2准备 SSH 密钥对如果你没有 SSH 密钥生成一对ssh-keygen -t ed25519 -C your_emailexample.com将公钥通常是~/.ssh/id_ed25519.pub的内容添加到 DigitalOcean 账户。在控制台的Settings - Security - SSH Keys中添加。添加后获取该密钥的指纹后续创建 Droplet 时会用到。步骤 3编写 Cloud-Init 配置脚本创建一个名为cloud-init.yaml的文件内容如下。这个脚本会在 Droplet 首次启动时自动执行。#cloud-config package_update: true package_upgrade: true packages: - build-essential - libssl-dev - zlib1g-dev - libncurses5-dev - libsqlite3-dev - libreadline-dev - libtk8.6 - libgdm-dev - libffi-dev - libbz2-dev - liblzma-dev - wget - curl - git - ufw users: - name: hermes groups: users, admin sudo: ALL(ALL) NOPASSWD:ALL shell: /bin/bash ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2E...替换为你的公钥内容 runcmd: - | # 设置防火墙仅允许SSH和后续Hermes的端口 ufw allow OpenSSH ufw --force enable - | # 为 hermes 用户启用 linger loginctl enable-linger hermes这个脚本完成了系统更新、安装编译和基础工具、创建专用用户hermes、配置防火墙基础规则、启用 linger。步骤 4执行创建命令在终端中运行之前解析过的doctl compute droplet create命令。确保将--ssh-keys参数替换为你的密钥指纹--user-data-file指向你刚创建的cloud-init.yaml文件。命令成功执行后记下输出的Droplet IP 地址。这是你后续连接服务器的凭证。4.2 第二阶段服务器环境初始化与 Python 安装通过 SSH 连接到你的新服务器。ssh hermes你的Droplet_IP步骤 1编译并安装 Python 3.11# 切换到有临时空间和权限的目录 cd /tmp # 下载 Python 3.11.9 源码可选择其他小版本 wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz # 解压 tar -xzf Python-3.11.9.tgz cd Python-3.11.9 # 配置编译选项。--enable-optimizations 会进行大量测试以优化性能但耗时很长可能10分钟以上。 # 如果追求速度可以去掉此选项./configure ./configure --enable-optimizations # 编译。使用 make -j $(nproc) 可以利用所有CPU核心加速编译。 make -j $(nproc) # 使用 altinstall 安装避免覆盖系统python3 sudo make altinstall # 验证安装 python3.11 --version pip3.11 --version步骤 2创建应用目录和虚拟环境# 创建统一的应用程序目录 sudo mkdir -p /opt/hermes # 将目录所有权交给 hermes 用户方便后续操作 sudo chown -R hermes:hermes /opt/hermes # 切换到该目录 cd /opt/hermes # 使用刚安装的 python3.11 创建虚拟环境 python3.11 -m venv venv # 激活虚拟环境仅当前会话有效 source venv/bin/activate # 验证虚拟环境中的 Python 版本 python --version # 应显示 3.11.x4.3 第三阶段Hermes 部署与配置步骤 1在虚拟环境中安装 Hermes Agent# 确保在 /opt/hermes 目录下且虚拟环境已激活 pip install hermes-agent # 也可以安装特定版本例如 # pip install hermes-agent0.1.0步骤 2初始化 Hermes 配置文件结构以hermes用户身份运行一次 Hermes 命令让它生成默认的配置文件目录结构。# 退出 /opt/hermes 目录回到用户家目录 cd ~ # 运行一个简单的命令如查看帮助这会触发创建 ~/.hermes 目录 /opt/hermes/venv/bin/hermes --help执行后你应该能看到~/.hermes/目录被创建出来。步骤 3迁移本地配置和代码传输 profiles.toml在你的本地电脑上打开一个新的终端窗口执行scp ~/.hermes/profiles.toml hermes你的Droplet_IP:~/.hermes/设置工作区符号链接回到服务器的 SSH 会话中# 假设你的技能代码仓库将放在 /opt/hermes/repo mkdir -p /opt/hermes/repo # 创建符号链接将 Hermes 的工作区指向实际代码目录 ln -sfn /opt/hermes/repo ~/.hermes/workspace现在你可以将你的技能文件.py或.md放在/opt/hermes/repo下Hermes 就能正常加载它们。步骤 4测试 Hermes 运行在 SSH 会话中手动启动一次 Hermes Gateway确保一切配置正确。# 确保在虚拟环境中 source /opt/hermes/venv/bin/activate # 启动网关指定端口例如 8080 hermes gateway --port 8080如果看到类似Starting gateway on http://0.0.0.0:8080的输出说明服务启动成功。按CtrlC停止它我们接下来将其配置为后台服务。4.4 第四阶段Systemd 服务配置与上线步骤 1创建 Systemd 服务文件需要 root 权限来创建服务文件。sudo nano /etc/systemd/system/hermes-gateway.service将前面章节解析过的服务文件内容粘贴进去保存并退出。步骤 2调整服务器防火墙我们需要允许外部流量访问 Hermes Gateway 的端口这里以8080为例。# 允许 8080 端口 sudo ufw allow 8080/tcp # 重新加载防火墙规则 sudo ufw reload # 查看规则状态确认 8080 端口已开放 sudo ufw status verbose步骤 3启用并启动服务# 重新加载 systemd 配置使其识别新的服务文件 sudo systemctl daemon-reload # 启用服务使其在系统启动时自动运行 sudo systemctl enable hermes-gateway.service # 立即启动服务 sudo systemctl start hermes-gateway.service # 查看服务状态确认运行正常状态应为 active (running) sudo systemctl status hermes-gateway.service步骤 4验证服务与日志检查服务是否监听端口sudo ss -tlnp | grep 8080应该能看到hermes用户进程正在监听0.0.0.0:8080。查看实时日志sudo journalctl -u hermes-gateway -f这会持续输出服务的日志你可以看到 Hermes 的启动信息、加载的技能以及任何错误。这是最重要的调试工具。进行 OAuth 回调测试如果适用访问你的消息平台应用配置页面发起一次 OAuth 安装流程。在journalctl日志中你应该能看到类似Received OAuth callback for provider: slack的日志条目表明回调成功接收。至此你的 Hermes Agent 已经作为一个稳定的系统服务在 DigitalOcean Droplet 上持续运行了。你可以安全地关闭 SSH 连接服务不会停止。5. 常见问题与排查技巧实录即使按照指南操作也可能会遇到问题。以下是我在部署过程中遇到的一些典型问题及其解决方法。5.1 服务启动失败状态显示failed或inactive这是最常见的问题。首先使用sudo systemctl status hermes-gateway.service查看详细错误信息。可能原因 1ExecStart 路径错误症状日志显示Failed at step EXEC spawning ... No such file or directory。排查检查服务文件中ExecStart和Environment的路径。确保ExecStart指向的二进制文件绝对路径存在且可执行。可以手动运行/opt/hermes/venv/bin/hermes gateway测试。解决修正服务文件中的路径然后运行sudo systemctl daemon-reload和sudo systemctl restart hermes-gateway。可能原因 2用户/权限问题症状日志显示Permission denied。排查确保服务文件中指定的User和Group如hermes真实存在。检查/opt/hermes/目录及其下文件的所有权是否为hermes:hermes。解决使用sudo chown -R hermes:hermes /opt/hermes修正所有权。同时检查~/.hermes/profiles.toml的权限是否为600。可能原因 3WorkingDirectory 不存在或无权限症状服务日志可能没有明显错误但 Hermes 无法读取配置。排查确保WorkingDirectory如/home/hermes存在并且hermes用户对其有读写权限。解决创建目录或调整权限。5.2 OAuth 回调失败消息平台报错redirect_uri_mismatch症状在 Slack 等平台进行 OAuth 授权时页面跳转后显示错误提示回调地址不匹配。排查步骤检查服务器端口开放在本地使用telnet 你的Droplet_IP 8080命令看是否能连接。如果连接失败说明端口未开放或服务未监听。回顾防火墙ufw和 DigitalOcean 控制台的 Firewall 规则。检查 Hermes 网关日志运行sudo journalctl -u hermes-gateway -f在发起 OAuth 请求时观察是否有新的日志行出现。如果完全没有说明请求根本没到服务器。核对 Redirect URI逐字符比对消息平台应用配置中填写的Redirect URI和 Hermes 服务实际监听的地址包括协议http/https、IP/域名、端口、路径/callback。特别注意末尾的斜杠和大小写。检查服务监听地址Hermes Gateway 默认监听0.0.0.0所有接口。确保你的服务没有因为配置而只监听127.0.0.1本地环回。解决根据排查结果修正防火墙规则、服务配置或平台上的 Redirect URI。5.3 技能加载失败Hermes 日志提示ModuleNotFoundError症状服务能启动但日志显示无法导入某个自定义技能模块。排查确认技能文件位置技能文件必须放在~/.hermes/workspace目录或其子目录下。由于我们创建了符号链接实际位置是/opt/hermes/repo。检查文件是否放对了地方。检查 Python 依赖你的自定义技能可能依赖额外的 Python 包。这些包需要安装在 Hermes 运行的虚拟环境中。# 切换到 hermes 用户激活虚拟环境 sudo -u hermes -i source /opt/hermes/venv/bin/activate # 安装技能所需的包 pip install some-package检查技能文件语法确保技能文件.py或.md没有语法错误。可以尝试在虚拟环境中用 Python 直接导入测试。5.4 服务意外停止查看日志发现进程被杀死症状服务运行一段时间后停止status显示inactive (dead)日志可能显示SIGTERM或SIGKILL。可能原因 1内存不足OOM Killer排查运行dmesg | grep -i kill查看系统日志如果发现有关hermes进程因内存不足被终止的记录即是此原因。解决升级 Droplet 规格如从 2GB 内存升级到 4GB。或者优化你的技能代码减少内存占用。可能原因 2Linger 未正确启用排查运行loginctl show-user hermes查看输出中Linger是否为yes。解决如果为no再次执行sudo loginctl enable-linger hermes。5.5 性能问题响应缓慢或超时排查方向服务器资源使用htop或vmstat 1命令监控 CPU 和内存使用率。如果持续接近 100%说明资源是瓶颈。网络延迟智能体如果需要频繁调用外部 API如 OpenAI、Claude网络延迟影响很大。可以考虑选择离 API 服务商更近的数据中心区域。技能逻辑检查自定义技能中是否有低效的循环、阻塞操作或未做缓存的重复请求。一个实用的监控命令组合# 在一个 SSH 会话中运行实时查看资源使用和 Hermes 日志 ssh hermesIP watch -n 2 \free -m echo --- ps aux --sort-%mem | head -10\ # 在另一个会话中查看日志 ssh hermesIP sudo journalctl -u hermes-gateway -n 50 -f部署完成后一个良好的习惯是定期查看日志 (sudo journalctl -u hermes-gateway --since yesterday) 以监控服务健康状况。DigitalOcean 也提供了基础的服务器监控图表可以关注 CPU、内存和磁盘 I/O 的趋势。对于个人项目这套部署方案在稳定运行了数月后证明了其简单性和可靠性。最关键的是它让你从“维护服务器”的琐事中解放出来能够更专注于智能体技能本身的开发与优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2593760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…