Rocky Linux上的Hermes Agent与Web-UI部署避坑指南
最近给一台刚装好的 Rocky Linux 9.5 搭 Hermes Agent 和 Hermes-Web-UI前后折腾了两天多。说真的Hermes Agent 本身的安装步骤不算复杂难点都在配套环境上静态 IP 没配好导致重启过后 IP 变了、SELinux 默认拦住 Nginx 转发、Web-UI 会话默认只存在内存里页面一刷新就全没了……这些坑你光看官方文档很难定位因为报错往往从“看起来不相干”的地方冒出来。这篇文章我想把一条能直接跑通的部署路线完整记录下来从组件拆分、环境初始化到 Agent 服务端、Web 前端、systemd 守护和会话持久化一次性讲透彻。这篇文章适合手里有一台干净 Rocky Linux 服务器、想自建一套可视化 AI Agent 界面的运维或开发者参考。即使你之前没接触过 Hermes 系列只要跟着顺序做也大概率能在半天内把服务跑起来。下文我会尽量把每一个“为什么这么做”说清楚而不是给一段复制粘贴了事的命令。说明由于不同小版本 Release 的默认目录和参数名存在细微差异文中配置我会尽量按主流、稳妥的方式来写具体以你下载版本的官方示例为准。1. 部署前必须想清楚的几个问题1.1 Hermes Agent 到底是个什么形态的服务动手之前先对齐一下概念。Hermes Agent 在实际部署中通常不是“一个可执行文件包打天下”而是拆成两个部分核心引擎和配套前端。核心引擎负责接收用户请求、编排工具调用、和上游模型服务通信对外提供的是本地 HTTP/WebSocket APIHermes-Web-UI 则是给人操作的可视化界面本质是一个纯静态前端项目通过反向代理和后端交互。这个模型很像常见的“后端服务 Nginx 托管前端”组合Agent 引擎监听某个本地端口Web-UI 页面通过同一个域名的不同路径把 API 请求转发过去。官方的一键安装脚本虽然省事但生产环境我更推荐手动拆开部署。理由很简单后续升级任一组件、调整模型参数、拷走会话数据、切换 Redis 存储手动方式的可控性都明显好很多。出了问题也知道去哪个日志文件里找心里有底。1.2 直接装系统服务而不是无脑上容器现在很多人一听到部署就想到 Docker但 Hermes Agent 这种个人工作站或中小团队自用服务我觉得直接跑 systemd 服务最合适。第一它没有复杂的横向依赖一台机器跑一个进程就够了第二用 systemd 管理后开机自启、崩溃重启、日志收集都是系统原生能力不需要额外维护编排文件第三省掉一层容器网络转换Web-UI 连本地 API 时排查起来更直观。不是说容器方案不行。如果你本身就有一套成熟的 Docker Compose 体系那用容器也完全可以。只是在这篇指南里我会以“原生部署 systemd 守护”为主线这也是社区里踩坑最少、复现性最强的路径。1.3 版本约定与整机拓扑规划我在部署前习惯先把组件清单列出来避免装到一半才发现端口冲突或者依赖缺失。这次测试环境的确认版本如下供你对照参考组件版本/说明路径或端口Rocky Linux9.5 最小化安装主机名 hermesHermes Agent 核心release 二进制版/opt/hermes-agentHermes 配置目录/etc/hermes-agent配置文件 config.yamlHermes 数据目录/var/lib/hermes-agent数据库、会话、日志均由该目录承载RedisRocky 仓库自带 6.2127.0.0.1:6379NginxRocky 仓库自带 1.20 左右对外 80/443Node.js20 LTSWeb-UI 构建可选仅部署静态包则不需要端口规划上Agent 引擎我习惯绑定127.0.0.1:7830不直接暴露到公网所有外部访问都走 Nginx 转发。这样做既能减少攻击面又方便在 Nginx 层统一做 HTTPS 和访问控制。会话存储选择 Redis是因为它能同时解决“服务重启丢会话”和“多实例共享会话”两个问题。2. 环境初始化Rocky Linux 的基础配置2.1 先把静态 IP 设好别让服务“找不到家”这一步看起来不起眼但如果你装完系统后发现“明明刚才还能访问 Web-UI重启后就不行了”大概率就是 DHCP 分配的 IP 变了。Agent 服务本身无所谓但你的浏览器书签、域名解析、Nginx 的 server_name 都写死了旧地址IP 一换整套就全断。Rocky Linux 默认使用 NetworkManager推荐直接用nmcli设置静态 IP命令如下# 查看当前网卡和设备名常见是 ens160 / ens3 / eth0 nmcli device status # 将 ens160 修改为静态 IP请按你实际网段替换 nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 nmcli con mod ens160 ipv4.gateway 192.168.1.1 nmcli con mod ens160 ipv4.dns 223.5.5.5 119.29.29.29 nmcli con mod ens160 ipv4.method manual # 重新激活连接 nmcli con up ens160设置完以后用ip addr show ens160确认地址生效再顺手把主机名改掉hostnamectl set-hostname hermes这里有个坑要提醒如果你的网卡配置之前在 DHCP 模式下自动生成过连接配置修改后一定要nmcli con up重新激活否则配置不会立即生效。很多新手指的是“改了配置文件但没重启网络”结果误判成修改失败。2.2 配置软件仓库并完成系统更新Rocky Linux 9 默认启用 BaseOS 和 AppStream 仓库但有些扩展包在 CRBCodeReady Builder和 EPEL 里建议直接全开。在 Rocky 9 上执行dnf install -y epel-release dnf config-manager --set-enabled crb dnf update -y如果你是从早期版本升级上来的老系统先确认一下当前版本cat /etc/rocky-releaseRocky 8 的软件源维护节奏和 9 不同网上关于 “Rocky Linux 8.10 yum 源” 的讨论很多这里我只建议一条原则新部署直接选 Rocky Linux 9.x别在 8 上从头搭新服务。8 的生命周期已经进入维护后期部分现代 Agent 依赖的 Python 3.11、Node.js 20 等软件包在 8 上要额外折腾不划算。更新完以后顺手把几个基础工具装上后面都会用到dnf install -y curl wget git tar unzip vim bash-completion2.3 安装 Python、Node.js、Redis、Nginx 运行依赖Hermes Agent 核心如果是二进制 Release 包理论上不需要 Python 环境但官方社区版本里常包含一些管理脚本或插件内部会调用 Python 3。为了不给自己埋雷我建议统一把依赖装齐dnf install -y python3 python3-pip python3-devel dnf install -y gcc gcc-c make openssl-devel libffi-devel sqlite-develNode.js 直接用 Rocky 9 AppStream 的模块安装dnf module reset nodejs -y dnf module enable nodejs:20 -y dnf install -y nodejs npmRedis 和 Nginx 一条命令一起装dnf install -y redis nginx systemctl enable --now redis systemctl disable --now nginx # 先装不启动等配置完成后再说这里特别注意如果只部署 Web-UI 的静态包Node.js 可以不用装但如果你打算从源码自行构建前端就必须有 Node.js 20。我先装好省得后面二选一时还要回头补。2.4 SELinux 与防火墙能不解禁就不解禁Rocky Linux 默认开启 SELinux很多人偷懒直接setenforce 0甚至改配置文件禁掉我强烈不建议这么做。其实这里 Nginx 转发本地端口只需要一个布尔值放行setsebool -P httpd_can_network_connect 1这行的作用是允许 Nginx 作为反向代理去连接后端端口。不加它的话你配置好一切后访问 Web-UI会发现页面能打开、但所有/api/请求都超时或返回 502日志里还会出现Permission denied的 connect 错误。静态文件目录还涉及 SELinux 文件上下文。如果你把前端解压到非默认目录记得用semanage fcontext设置类型比如dnf install -y policycoreutils-python-utils semanage fcontext -a -t httpd_sys_content_t /usr/share/nginx/hermes-web(/.*)? restorecon -Rv /usr/share/nginx/hermes-web防火墙方面如果你只想通过 Nginx 对外提供服务只需要放行 HTTP/HTTPSfirewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --reload后端 7830 端口不需要对外开放保持只监听本机即可。这也是我前面强调“后端绑 127.0.0.1”的原因安全策略会简单很多。3. 安装并配置 Hermes Agent 核心服务3.1 创建专用用户与目录结构直接拿 root 跑 Agent 虽然省事但万一被利用权限就全裸奔了。我习惯创建一个不能登录的系统用户专门跑服务useradd -r -s /usr/sbin/nologin hermes mkdir -p /opt/hermes-agent mkdir -p /etc/hermes-agent mkdir -p /var/lib/hermes-agent/data mkdir -p /var/log/hermes-agent chown -R hermes:hermes /opt/hermes-agent chown -R hermes:hermes /var/lib/hermes-agent chown -R hermes:hermes /var/log/hermes-agent chown -R root:hermes /etc/hermes-agent chmod 750 /etc/hermes-agent目录职责分开的好处是程序放/opt配置放/etc数据放/var/lib日志单独放/var/log。以后升级时只需要替换/opt/hermes-agent里的二进制配置文件和数据文件不会被动到回滚也方便。3.2 下载 Release 包并安装请到 Hermes Agent 官方仓库或官方下载页找最新的 Linux x86_64 Release 包。文件名类似hermes-agent_v0.6.x_linux_amd64.tar.gz下载后解压到/opt/hermes-agentcd /opt/hermes-agent curl -LO https://your-download-url/hermes-agent_v0.6.x_linux_amd64.tar.gz tar xf hermes-agent_v0.6.x_linux_amd64.tar.gz rm -f hermes-agent_v0.6.x_linux_amd64.tar.gz ./hermes-agent version建议不要直接把二进制丢在/usr/local/bin里因为你还需要配套的模型插件和辅助脚本放在独立目录更方便整体管理。如果你选择源码编译安装步骤会多不少需要先拉取源码、准备虚拟环境、安装前端依赖再go build或python setup。这个流程留给愿意折腾的人生产部署我优先推荐官方二进制。3.3 修改主配置模型、端口与会话存储Hermes Agent 的配置集中在一个 YAML 文件里默认路径是/etc/hermes-agent/config.yaml。我结合“会话丢”这个常见问题直接给出一个面向实践的主配置模板server: host: 127.0.0.1 port: 7830 # 强烈建议改成一段随机字符串用于会话签名 secret: please-change-to-a-long-random-string log: level: info file: /var/log/hermes-agent/agent.log max_size_mb: 100 backups: 7 session: provider: redis ttl: 720h key_prefix: hermes:session: database: driver: sqlite dsn: /var/lib/hermes-agent/data/hermes.db llm: provider: openai-compatible base_url: https://your-llm-endpoint.example.com/v1 api_key_env: HERMES_LLM_API_KEY model: qwen-plus timeout: 120s这里解释几个关键字段server.host绑定127.0.0.1只让本机回环访问Nginx 转发没问题如果你想局域网内直连后端需要改成0.0.0.0但那样就真的暴露到网络里了最好加上防火墙白名单。server.secret是会话签名密钥。如果留空部分版本会在进程启动时自动生成临时密钥重启后所有旧会话直接失效这就是“会话老丢失”最常见的隐藏原因。session.provider从默认的memory改成redis会话就能跨进程重启保留。llm.api_key_env指向环境变量而不是直接把密钥写进 YAML避免配置文件被备份或提交到代码仓库时泄露。base_url兼容 OpenAI 格式的服务。目前不少云厂商都提供 OpenAI 兼容接口比如阿里云百炼的兼容模式地址就是这种格式接入时直接换base_url、api_key和model即可。创建环境变量文件cat /etc/hermes-agent/env EOF HERMES_LLM_API_KEYsk-your-key-here EOF chmod 600 /etc/hermes-agent/env如果你本地有可用的模型服务也可以用 Ollama 这类 OpenAI 兼容本地接口model填本地模型名就行。上线之前先用hermes-agent doctor之类的自检命令确认配置没有语法问题。3.4 初始化数据库并验证进程启动第一次启动前部分版本需要执行初始化命令用于建表和管理员账号cd /opt/hermes-agent ./hermes-agent init --config /etc/hermes-agent/config.yaml ./hermes-agent serve --config /etc/hermes-agent/config.yaml看到类似 “server listening on 127.0.0.1:7830” 的日志后再开一个终端验证 APIcurl -i http://127.0.0.1:7830/api/health如果返回 JSON 带ok或类似状态说明核心服务已经起来了。这一步一定要在配置 Nginx 之前确认否则后面排错会分不清是后端问题还是转发问题。3.5 用 systemd 托管实现开机自启和自动拉起手工跑起来只是验证真正用还得交给 systemd。创建/etc/systemd/system/hermes-agent.service[Unit] DescriptionHermes Agent Core Service Afternetwork.target redis.service Wantsredis.service [Service] Typesimple Userhermes Grouphermes EnvironmentFile/etc/hermes-agent/env ExecStart/opt/hermes-agent/hermes-agent serve --config /etc/hermes-agent/config.yaml Restarton-failure RestartSec5 LimitNOFILE65535 NoNewPrivilegestrue PrivateTmptrue [Install] WantedBymulti-user.target这里解释几个重要参数EnvironmentFile会自动读取前面创建的环境变量文件注入到进程环境里。Restarton-failure保证 Agent 异常退出时 systemd 能在 5 秒后自动拉起不需要额外写守护脚本。NoNewPrivilegestrue和PrivateTmptrue是安全加固项尽量保留。配置完成后重载并启动systemctl daemon-reload systemctl enable --now hermes-agent systemctl status hermes-agent journalctl -u hermes-agent -f看到日志里没有报错再跑一次curl验证。这里多强调一句以后查看 Agent 日志都统一用journalctl -u hermes-agent不要再去翻 nohup.out 或前台窗口了这样排查问题会干净很多。4. 部署 Hermes-Web-UI 前端4.1 获取前端静态包并放置到站点目录Hermes-Web-UI 会随 Agent 版本一起发布独立的静态压缩包通常叫hermes-web-ui_v0.x.x_dist.tar.gz里面是打包后的dist目录。解压到 Nginx 站点根目录mkdir -p /usr/share/nginx/hermes-web tar xf hermes-web-ui_v0.x.x_dist.tar.gz -C /usr/share/nginx/hermes-web --strip-components1不要直接把整个站点文件交给 root 所有生产环境建议把目录属主设置成 Nginx 用户避免权限告警chown -R nginx:nginx /usr/share/nginx/hermes-web restorecon -Rv /usr/share/nginx/hermes-web如果你是拿到源码自己构建那么在项目目录执行npm install npm run build构建产物在dist目录再手动同步到/usr/share/nginx/hermes-web。静态包和源码构建两种方式最终效果一样但前者更方便回滚。4.2 Nginx 反向代理配置这是最容易出错的一步。Web-UI 页面本身不会任何数据它所有对话、会话列表、工具调用状态都要走后端 API同时聊天是流式的必然涉及 WebSocket。所以 Nginx 配置里必须有“静态文件 API 转发 WebSocket 转发”三段逻辑完整配合缺一个都会出问题。创建/etc/nginx/conf.d/hermes-web.confserver { listen 80; server_name hermes.example.com; root /usr/share/nginx/hermes-web; index index.html; # 后端 REST API 转发 location /api/ { proxy_pass http://127.0.0.1:7830/api/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # WebSocket 转发 location /ws/ { proxy_pass http://127.0.0.1:7830/ws/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_read_timeout 3600s; proxy_send_timeout 3600s; } # 前端 SPA 路由回退 location / { try_files $uri $uri/ /index.html; } }配置写完后先测语法再 reloadnginx -t systemctl start nginx systemctl reload nginx这里有个非常关键的细节proxy_pass后面到底带不带/会直接决定请求路径前缀是否被保留。我在配置里写了http://127.0.0.1:7830/api/即把/api/xxx原样转发给后端/api/xxx如果你漏了末尾的/路径可能被替换成/xxx后端收到后直接 404。这种问题浏览器控制台一眼能看出来但新手往往半天找不到在哪。4.3 浏览器访问并跑通一次对话完成以上配置后直接打开http://hermes.example.com能看到 Web-UI 的登录页就算成功一半。用初始化时创建的账号登录新建一个会话问一个简单问题如果流式回复能正常出现说明 REST 和 WebSocket 两条链路都通了。如果你发现页面能打开但登录接口报错或一直转圈先别改前端代码在服务器上执行curl -i http://127.0.0.1:7830/api/health curl -i http://127.0.0.1/api/health第一条走后端直连第二条走 Nginx 转发。两条都通问题就在浏览器第二条不通问题在 Nginx第一条不通问题在 Agent 服务。这种二分法排查能让你少走很多弯路。4.4 上线 HTTPS别让明文请求和会话一起裸奔既然要做 Web-UI强烈建议顺手把 HTTPS 配上。今天已经不适合再用明文 HTTP尤其是 Agent 面板里会有提示词、对话历史等敏感内容经过公网传输时不加密等于裸奔。如果你的域名能用 Lets Encrypt 之类的工具直接dnf install certbot python3-certbot-nginx然后执行certbot --nginx -d hermes.example.com如果只是内网测试没有域名可以用自签名证书但要注意浏览器会警告且部分 Web-UI 服务对自签名证书的 WebSocket 连接有额外校验失败概率会高一些。生产环境请尽量用真实域名。配上 HTTPS 后记得把 Nginx 里所有代理头补充X-Forwarded-Proto $scheme否则后端会认为所有请求都是 HTTP可能导致回调地址错误。5. 破解“会话老是丢失”这个经典难题5.1 先确认你遇到的是哪种“丢会话”“Hermes-Web-UI 会话老是丢”这句话可以对应好几种完全不同的现象排查前必须先分清楚是页面刷新后当前聊天窗口清空还是第二天登录后所有历史记录消失还是聊天到一半连接断开我见过不少人把三种情况混在一起排查最后啥也没修好。按我经验这几种场景的根因通常是浏览器刷新后聊天上下文还在但历史列表消失多半是前端把会话列表存在了 localStorage 里而服务端会话 ID 变化导致关联不上。服务重启后所有会话消失基本可以断定session.provider还是默认的memory或者ttl设得太短。前端页面正常但隔几分钟就提示“连接已断开”优先检查 Nginx WebSocket 代理超时以及 Redis 连接数是否被打满。换了浏览器或设备就看不到旧会话这不是错误而是设计如此除非你专门做了跨设备账号同步否则别指望本地会话能在不同设备间共用。5.2 最重要的一步把会话存储从内存切到 Redis前面配置里已经写过把session.provider改成redis。这里我再展开解释一下为什么“内存存储”会那么坑。默认情况下为了让你下载后能“零配置”跑起来Hermes Agent 会把会话数据存在进程内存里。这样做的好处是启动快、无外部依赖坏处是进程一退出所有会话连锅端。系统更新、服务崩溃、机器重启都会导致内存态丢失。你可能会觉得“我电脑没重启啊”但如果你用过systemctl restart hermes-agent或者系统因为 OOM 自动重启过服务那内存里的会话就已经没救回来了。改成 Redis 后会话数据落到了独立进程里Agent 核心无论怎么重启都能恢复会话。如果要更稳你还可以给 Redis 开启 AOF 持久化让 Redis 重启也不丢数据redis-cli CONFIG SET appendonly yes永久生效需要修改/etc/redis.conf里的appendonly yes然后systemctl restart redis。这样一来从 Agent 到 Redis两层都有了持久化保障。5.3 检查会话签名密钥是否“每次重启都在变”很多人配置了 Redis 后发现会话依然丢这时候就要怀疑server.secret是不是没设置固定值。有些版本在secret为空时会自动生成一个随机密钥用于给会话签名美其名曰“安全默认值”但对运维来说这就是灾难每次进程重启旧密钥作废所有浏览器端保存的会话 Cookie 和 token 全部验签失败表现就是所有登录状态消失、聊天记录也像没了一样。解法特别简单就是我在 3.3 节强调的在配置里固定一段长随机字符串openssl rand -hex 32把它填到server.secret重启 Agent。以后除非你手动修改这个值否则会话签名不会因为重启而变化。5.4 用浏览器开发者工具做一次“会话体检”如果以上两个大头都排除了剩下的就需要动手查了。我一般按这个顺序操作先打开浏览器开发者工具切到 Application应用面板看 Local Storage、Session Storage 和 Cookies 三个位置如果 Cookies 里能看到会话 Cookie且刷新后仍在说明浏览器端没问题。如果刷新后 Cookie 消失重点检查 Cookie 的Domain、SameSite属性尤其是你从http://127.0.0.1:8080访问 Web-UI但 API 却被代理到别的域名上时跨域导致的 Cookie 不写入非常常见。再看 Network 面板点击一个会话关注/api/conversations之类的请求返回状态。如果返回 401 而不是 200基本可以确定是前端保存的令牌和后端签名密钥对不上回到 5.3 节处理。如果返回 200 但列表是空的说明服务端会话存储里确实没有数据那就要到 Redis 里验证redis-cli keys hermes:session:* redis-cli TTL hermes:session:具体key如果 key 显示(nil)说明 Redis 里根本没有写入先查服务日志journalctl -u hermes-agent --since 10 minutes ago看到redis connection failed、timeout之类的字样就去查 Redis 是否运行、密码是否匹配、Redis 的bind配置是否允许本机访问。6. 常见问题速查与实战补充6.1 直接对照排查表下面这份表格是我这几天实际踩坑记录整理出来的如果你部署时遇到问题建议先在这里找对应项现象可能原因处理方法页面能打开登录/注册接口一直转圈Nginx API 转发路径错误检查proxy_pass末尾是否带/后端是否监听正确端口登录后刷新页面就掉登录态server.secret未固定或重启后变化设置随机字符串并确保配置文件未变服务重启后所有聊天记录消失session.provider仍是 memory改为 redis并确认 Redis 已持久化聊天到一半提示连接断开Nginx 缺少 WebSocket 升级头补充Upgrade和Connection upgrade浏览器控制台出现 CORS 报错前端页面域和后端 API 域不一致统一用 Nginx 同域转发不要跨域直连 7830Nginx 返回 502 Bad GatewaySELinux 阻止 Nginx 访问后端执行setsebool -P httpd_can_network_connect 1静态资源 403 Forbidden目录 SELinux 类型不对执行restorecon -Rv /usr/share/nginx/hermes-webWeb-UI 提示无法连接服务器Agent 服务没启动或绑定地址不是本机检查journalctl -u hermes-agent确认 host 为 127.0.0.1对话响应超时上游模型服务响应慢调大llm.timeout和 Nginxproxy_read_timeout6.2 关于桌面版安装报错和登录网站行为的补充说明网上有不少 Hermes Agent 桌面版的讨论包括安装报错、要求登录官网账号等。这里我想说清楚如果你走的服务器部署路线其实不需要桌面端。桌面客户端本质上是把 Agent 核心和 Web-UI 打包进本地 GUI 程序服务器场景下完全没有必要反而会因为缺少图形库、安装路径问题增加出错概率。如果你是出于好奇尝鲜桌面版常见的安装报错通常是缺少系统图形依赖比如libgtk-3.so.0、libnss3.so等可以尝试安装dnf install gtk3 nss。但我的建议很直接服务器上老老实实用 Web-UI别为了“界面看起来像桌面软件”去引入额外复杂度。6.3 日常维护备份、升级、回滚一条龙最后补充一点日常维护经验。Hermes Agent 的配置和数据要定期备份核心就三个地方/etc/hermes-agent配置、/var/lib/hermes-agent数据目录、环境变量文件。写个简单的 tar 脚本配合 crontab 就能跑tar czf /backup/hermes-$(date %F).tar.gz \ /etc/hermes-agent \ /var/lib/hermes-agent \ /etc/nginx/conf.d/hermes-web.conf升级时先备份再停服务替换/opt/hermes-agent下的二进制最后启动。如果新版本启动报错直接把旧二进制放回去重启就能回滚配置和数据完全不用动这也是原生部署比 docker 卷映射更直观的地方。6.4 一条系统级的避坑经验最后再分享一个容易被忽略的小问题如果你发现 Agent 跑了一阵子后日志文件特别大占满磁盘导致 Redis 写入失败、Web-UI 会话全部异常那不是 Hermes 的问题是你日志轮转没配好。我在写 systemd 服务时用到了log.max_size_mb和backups配置但如果你没有把日志输出重定向到日志文件所有 stdout 还是会进 journald记得给 journald 设置SystemMaxUse500M之类的限制避免日志无限增长。我个人在实际操作中最大的体会是自建这类 Agent 服务真正拉开体验差距的不是“装得起来”而是“重启后还能不能完全恢复原样”。只要把固定密钥、Redis 持久化、systemd 自启这三件事做好后面的所有使用体验都会顺很多。你把这套部署完以后也可以继续往插件方向扩展比如给 Agent 挂上本地的知识库检索或者自动化工具调用那时候你会发现提前把部署架构理清楚远比反复折腾一键脚本要省心。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →