Minisforum MS-S1 MAX 离线运行 Hermes Agent:一台主机,每月 0 元成本

@N01ennn
英语4周前 · 2026年6月17日
370K
132
4
21
298

TL;DR

学习如何配置 Minisforum MS-S1 MAX,利用 Hermes Agent 和 llama.cpp 构建全天候运行的本地 AI Agent,无需云端费用即可实现高性能推理。

128GB 统一内存。最多 96GB 分配给 GPU。Hermes Agent 指向本地主机,而不是他人的服务器

NO1ennn - inline image

"大家总说本地 Agent 是免费的。我不这么看。" 在云模型上运行 Hermes Agent 每天要花 10-20 美元的额度,此外还有隐私风险——API 密钥、客户数据和业务流程都要经过他人的服务器。解决方案是把 Agent 和它所调用的模型放在你自己拥有的硬件上,24/7 运行,这样整个东西就成了基础设施,而不是重复性的账单

这是一篇构建日志,不是对比:Minisforum MS-S1 MAX 作为常开机器,Hermes Agent 作为运行在它之上的工作流层。 合在一起,这套设备能放在柜子里、永久开机,处理真实的业务任务——起草内容、执行研究、运行工具调用、管理子 Agent——没有按 token 计费的云成本,数据也不离开网络。下面会介绍:MS-S1 MAX 的内部构造、如何设置、真实性能数据,以及如何将 Hermes Agent 架在它上面,构建一个可以工作的业务自动化栈

硬件:MS-S1 MAX 内部有什么

MS-S1 MAX 基于 AMD 的 Strix Halo 平台——目前是本地运行大语言模型最强大的迷你 PC 芯片,因为它将强大的 CPU 与 AMD 为此尺寸出货的最大集成 GPU 结合在一起。这决定了机器是只能处理简单对话,还是能自己运行一个带有工具调用、子 Agent 和长上下文的真实 Agent 循环

SoC 规格(AMD Ryzen AI Max+ 395,4nm Strix Halo,45-120W TDP):

text
1组件 规格
2CPU 16核/32线程,Zen 5,3.0 GHz 基础 – 5.1 GHz 加速,64MB L3缓存
3显卡 Radeon 8060S,40 CU RDNA 3.5,2.9 GHz,系统共享显存
4NPU XDNA,50 TOPS
5PCIe Gen 4,16 通道
6内存 LPDDR5X,8000 MT/s,最大 128GB,四通道,256GB/s 带宽

40 CU / 2560 着色单元的 iGPU 在原始性能上大致相当于一块独立的 RX 7600 XT,而且集成在足够小的迷你 PC 里,可以放在架子上 24/7 运行

NO1ennn - inline image

为什么 iGPU 在这里比在笔记本中运行得更强劲: 8060S 在笔记本外壳中通常被限制在 55W 左右。MS-S1 MAX 更大的散热方案(6 根热管,双风扇)让 Minisforum 能在性能模式下将功耗上限推到 120W,并相应获得更高的持续频率——这对于一台需要持续运行推理、而不是短时爆发的机器来说很重要

让这种业务工作流成为可能的内存技巧: MS-S1 MAX 搭载了 128GB 的板载统一四通道 LPDDR5X。AMDGPU 驱动可以通过 GTT(图形转换表)将系统内存分配为显存,在这台机器上 iGPU 能占用其中最多 96GB,剩下的 32GB 留给 CPU。这 96GB 的上限意味着单台机器就能托管一个真正有能力的模型,同时在同一台机器上运行 Agent 进程、仪表盘和其他常开服务

设置模型层(Strix Halo 上的 llama.cpp)

有维护预构建的 Strix Halo 上 llama.cpp 的 Toolbox 容器,支持多个后端:vulkan-amdvlk、vulkan-radv、rocm-6.4.4、rocm-6.4.4-rocwmma、rocm-7rc-rocwmma。它们主要是为 HP G1a Mini(同一 Strix Halo 芯片)构建的,但也能在大多数 Strix Halo 机器上工作,包括 MS-S1 MAX。测试中 vulkan-radv 后端最稳定,加载大模型没有出现问题

BIOS/UEFI: 将最小 VRAM 分配设置为 1GB(Minisforum BIOS 的最小值),这样 AMDGPU 驱动就可以通过 GTT 自由地将系统内存分配为显存

内核参数(在 Arch Linux 上测试过,但任何支持 Strix Halo 内核的较新发行版应该都可以)以最大化 VRAM 分配并减少延迟:

amd_iommu=off amdgpu.gttsize=131072 amdttm.pages_limit=33554432 amdttm.page_pool_size=15728640

创建带有 GPU 直通的 toolbox:

toolbox create llama-vulkan-radv --image docker.io/kyuz0/amd-strix-halo-toolboxes:vulkan-radv -- --device /dev/dri --group-add video --security-opt seccomp=unconfined

进入它:

toolbox enter llama-vulkan-radv

在里面,llama-cli 和 llama-server 已经准备好可以运行模型。强制将所有层放到 GPU 上,这样 CPU 就可以腾出来处理其他事情(Agent 进程、Tailscale、仪表盘):

text
1# 仅终端
2llama-cli --no-mmap -ngl 999 --flash-attn on -m <模型>
3
4# Web 服务器界面——Hermes Agent 将指向这个
5llama-server --no-mmap -ngl 999 --flash-attn on --host <ip_address> --port <port_number> -m <模型>

这里使用的模型来自 Unsloth on Hugging Face,GGUF 格式。

在模型之间切换: llama-swap 可以轻松切换哪个模型为 Agent 服务,无需手动重启任何东西。下载 Linux 二进制文件,chmod +x,然后定义一个 config.yaml

text
1models:
2 "OpenAI-20B-GPT-OOS":
3 cmd: |
4 llama-server --no-mmap -ngl 999 --flash-attn on --port ${PORT} -m /models/gpt-oss-20b-GGUF/gpt-oss-20b-F16.gguf -c 40000
5 "gemma-3-27b-it-abliterated":
6 cmd: |
7 llama-server --no-mmap -ngl 999 --flash-attn on --port ${PORT} -m /models/gemma-3-27b-it-abliterated-GGUF/gemma-3-27b-it-abliterated.q6_k.gguf -c 40000
8 "OpenAI-20B-NEO-CODEPlus":
9 cmd: |
10 llama-server --no-mmap -ngl 999 --flash-attn on --port ${PORT} -m /models/OpenAI-20B-NEO-CODEPlus-Q5_1/OpenAI-20B-NEO-CODEPlus-Q5_1.gguf -c 40000
11 "OpenAI-120B-GPT-OOS":
12 cmd: |
13 llama-server --no-mmap -ngl 999 --flash-attn on --port ${PORT} -m /models/gpt-oss-120b-GGUF/gpt-oss-120b-UD-Q4_K_XL-00001-of-00002.gguf -c 40000

这样就有了一个 Web 界面,可以针对不同任务切换模型(轻量/快速模型用于快速回复,120B 用于需要更多推理的场景),而无需直接接触机器,并且聊天历史在切换时会保留

NO1ennn - inline image

性能数据(为什么这台机器能承载 Agent 工作负载)

使用 llama-bench 进行提示处理(pp512)和文本生成(tg128):

text
1模型 大小 提示处理(t/s) 文本生成(t/s)
2GPT-OSS-120B (Q4_K_XL) 58.7GB 454.15 ± 2.98 56.61 ± 0.03
3GPT-OSS-20B (F16) 12.8GB 965.54 ± 9.56 46.84 ± 0.06
4Gemma-3-27B (Q6_K) 20.6GB 178.14 ± 1.09 9.65 ± 0.01
5Qwen3-30B-A3B (BF16) 56.9GB 163.01 ± 1.33 9.23 ± 0.04
NO1ennn - inline image

对于常开 Agent 最重要的数字:一个 120B 模型,完全本地运行,生成速度为 56.6 token/秒。这足够快,Hermes Agent 可以运行多步工具调用链,而不会让每次任务都变成漫长的等待

实际负载测试: 用 GPT-OSS-120B 执行"生成一篇关于 LLM 的论文(5000 字)"产生了 7,990 个 token,速度为 51.2 token/秒。iGPU 平均功耗约 110W,边缘温度稳定在 68-69°C——安静且不太热,这得益于 6 热管/双风扇散热器和 1.03 版 BIOS 更新改进了风扇曲线。这样的功耗和散热特性使得这台机器可以 24/7 作为业务盒子运行,而不是一个火灾隐患

NO1ennn - inline image

NPU: 这个设置中尚未使用 XDNA 2 NPU(50 TOPS)——支持仍然不成熟。FastFlowLM 是一个项目,可让 Ryzen AI NPU 进行 LLM 推理,看起来很有前途,未来可以作为卸载更多工作负载的方式,但目前需要 Windows

工作流层:在上面连接 Hermes Agent

这一步让机器从基准测试工具变成真正的业务工具。Hermes Agent 是这样一个层:它把上面的本地模型变成能够做事情的东西——起草内容、运行工具调用、浏览、管理子 Agent,并按计划行动

1. 安装 Hermes Agent 并指向本地模型。 Hermes 的引导过程会询问模型提供商。选择本地/自托管 OpenAI 兼容,将其指向运行 llama-server 的 localhost:<port>,由于是本地,跳过 API 密钥。Hermes 特别需要最小上下文长度为 64,000 个 token——如果工作流涉及大量编码或长文档,可以增加这个值;如果是简短任务如电子邮件或社交帖子,可以设低一些

2. 将本地模型设为默认,但不是唯一选项。 真正的生产设置是混合的,但原因不是硬件跟不上——而是因为有些任务确实不需要 120B 本地模型:快速回复、简单格式化、简短查询。将本地模型设为默认,然后添加一个备用提供商(OpenAI、Claude 或 Open Router),并附上路由指令,用于那些它确实能增加价值的情况——繁重的工具调用链、长调试循环,或者速度比隐私更重要的任务。Open Router 是一个经济实惠的方式:10 美元大约能买 1,000 次请求,对于非关键的子 Agent 任务来说是一个有用的泄压阀

3. 保持 24/7 运行。 业务工作流只有在关闭笔记本时不会中断才有效。启用 Hermes Agent 在启动时自动重启:

text
1sudo systemctl enable tailscaled
2sudo systemctl enable hermes-agent

如果 Hermes Agent 默认没有安装为 systemd 服务,任何 AI 编程助手(Codex、Claude、Gemini、Warp)都可以生成等效的服务文件

4. 通过 Tailscale 从任何地方访问它。 这一步将 MS-S1 MAX 从"一台我必须坐在前面操作的机器"变成了基础设施。在迷你 PC 和你日常工作的设备(笔记本、手机)上都安装 Tailscale(免费个人计划,最多六名用户)。一旦两者都在同一个 Tailscale 网络上:

  • 从笔记本 SSH 到迷你 PC,以运行 Agent 自身无法运行的管理命令
  • 远程打开 Hermes Agent 仪表盘,就像它运行在本地主机上一样,尽管它实际上在房间的另一头或全国的另一端
  • 在 iOS 上,由于某些终端应用(如 Termius)会跳过 Tailscale 期望的 SSH 握手,请在 Tailscale 的访问控制中将 SSH 访问模式设置为"接受",这样手机就能连接——这在离开办公桌时修复卡住的工作流时很有用

5. 让 Agent 运行业务任务。 这样堆叠起来后,日常工作模式就变成了:研究、写作、总结和常规工具调用在 MS-S1 MAX 上本地免费运行,结果通过 Telegram、仪表盘或 Hermes 集成的任何方式推送。任何需要快速(实时、面向客户)或需要本地模型确实无法匹敌的推理的任务,都会按异常情况路由到备用提供商,而不是默认走这条路

为什么硬件选型决定了你能真正实现多少

本地模型是上面所有一切的瓶颈。一个 9B 模型,以十几 token/秒的速度运行,可以运行 Hermes Agent,但带有子 Agent 和工具调用的多步 Agent 任务会拖长到很多分钟,这限制了在备用路由必须接管之前,工作负载能真正保持本地的程度。一个 120B 级别的本地模型,以 56+ token/秒的速度运行,会改变日常工作负载能被本地机器独立吸收的程度——更多的业务逻辑停留在你拥有的硬件上,而云端备用变成了真正边缘情况的工具,而不是任何非平凡任务的默认路径

隐私是硬件不会改变的部分。 无论本地运行什么模型,API 密钥、客户数据和业务流程都不会离开网络。这在树莓派上运行一个小模型时成立,在 MS-S1 MAX 上运行 120B 模型时也成立——硬件只是决定了在需要触及云选项之前,你能完成多少有用的工作

实用要点

对于一个旨在真正承载业务工作流(而不仅仅是演示聊天回复)的 24/7 本地 Agent 堆栈,需要的条件是:足够大的统一内存来加载真正有能力的模型,足够持续功耗/散热余量来持续运行该模型,以及足够低的空闲功耗,使保持开机不会成为一项实际开支

MS-S1 MAX 的 96GB 可寻址 iGPU 内存、110W 持续负载功耗以及安静的 6 热管散热器涵盖了硬件方面。指向本地运行的 llama-server 并通过 Tailscale 可从任何地方访问的 Hermes Agent 涵盖了工作流方面。合在一起,这就是一台迷你 PC,可以放在柜子里永久开机,运行业务日常 AI 工作负载的相当一部分,而没有重复的云账单,数据也不离开建筑

对于一般工作站用途,MS-S1 MAX 还提供 PCIe 和双 M.2 扩展、约 5W 空闲功耗、双 10Gbps 以太网以及 USB4 v2(80Gbps)——这些都不是 LLM 特有的,但如果这台机器除了作为 Agent 盒子之外还承担其他任务,就都很重要

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章