把笔记本变工作站,Strix Halo 运行多 Agent 协作的真实记录
从单兵作战到集群协作:Strix Halo 上的多 Agent 实战
以前我们聊端侧 AI,大多停留在“跑通一个模型”的阶段:打开 LM Studio,加载一个 Qwen2.5-7B,问几个问题,看看生成速度够不够快。这当然有意义,但对于真正想把 AI 融入工作流的开发者来说,单个模型就像是一个孤立的聪明人,能回答问题,却很难独立承担复杂的项目任务。
最近入手了搭载 AMD Strix Halo 架构的笔记本(Ryzen AI Max+ 395),最让我兴奋的不是它游戏帧数有多高,而是那块 Radeon GPU 配合统一内存架构(UMA)所释放出的并发潜力。既然显存不再是被物理隔离的“孤岛”,而是可以与 CPU 共享的 64GB 大池子,那为什么不能在这台笔记本上同时运行多个 Agent,让它们像一个小团队一样协作呢?
这篇文章不聊虚的理论,直接记录我如何在这台机器上搭建本地多 Agent 协作环境,包括网络配置、任务编排脚本,以及在长时间高负载下的真实散热表现。
打破单实例限制:构建本地 Agent 集群
要在单机上实现多 Agent 协作,核心难点在于如何让多个模型实例互不干扰地并行运行。在传统架构的笔记本上,显存只有 8GB 或 16GB,跑一个 14B 模型就捉襟见肘,根本别提并发。但在 Strix Halo 上,统一内存架构让这一切成为了可能。
我的思路很简单:利用 Ollama 和 LM Studio 的不同特性,启动多个服务实例,分别扮演不同的角色。比如,让一个实例充当“规划者(Planner)”,负责拆解任务;另一个充当“执行者(Coder)”,负责写代码;再开一个充当“审查者(Reviewer)”,负责检查错误。
多端口服务部署策略
Ollama 默认监听 11434 端口,要启动第二个实例,最直接的方法是修改环境变量。我在 PowerShell 中写了个简单的批处理脚本来管理这些实例:
# 启动规划者实例 (使用轻量级 7B 模型,响应快)
$env:OLLAMA_HOST = "127.0.0.1:11434"
$env:OLLAMA_MODELS = "D:\AI_Models\Planner"
ollama serve &
# 启动执行者实例 (使用高性能 14B 模型,算力集中)
$env:OLLAMA_HOST = "127.0.0.1:11435"
$env:OLLAMA_MODELS = "D:\AI_Models\Coder"
ollama serve &
# 启动审查者实例 (复用 7B 模型,侧重逻辑检查)
$env:OLLAMA_HOST = "127.0.0.1:11436"
$env:OLLAMA_MODELS = "D:\AI_Models\Reviewer"
ollama serve &
这里有个关键细节:模型文件的物理隔离。虽然 Strix Halo 的内存是共享的,但为了避免不同实例在加载模型时发生文件锁冲突或缓存混乱,我为每个角色指定了独立的模型存储路径。更重要的是,通过 OLLAMA_HOST 区分端口,上层编排脚本就可以精准地向特定 IP:Port 发送请求,实现真正的并行调用。
对于图形化需求更强的场景,我也尝试同时运行一个 LM Studio 实例(监听 1234 端口),专门用于加载那些需要超长上下文(128k)的文档分析任务。实测表明,在 64GB 内存下,同时运行三个 Ollama 实例(两个 7B,一个 14B)和一个 LM Studio 实例(加载 32B 量化模型),系统依然流畅,没有出现明显的交换延迟。这就是 UMA 架构的红利:只要总内存够,显存就不再是瓶颈。
任务编排:让 Agent 们“开口说话”
有了多个服务实例,接下来就是编写编排脚本,让它们协同工作。我没有使用复杂的 LangChain 框架,而是用 Python 写了一个轻量级的调度器,模拟真实的开发流程:用户输入需求 -> 规划者拆解步骤 -> 执行者编写代码 -> 审查者验证 -> 输出结果。
下面是核心的调度逻辑片段:
import requests
import json
# 定义各个 Agent 的接入点
AGENTS = {
"planner": "http://127.0.0.1:11434/api/generate",
"coder": "http://127.0.0.1:11435/api/generate",
"reviewer": "http://127.0.0.1:11436/api/generate"
}
def call_agent(role, prompt, model_name):
payload = {
"model": model_name,
"prompt": prompt,
"stream": False,
"options": {"temperature": 0.7}
}
response = requests.post(AGENTS[role], json=payload)
return response.json()['response']
def workflow(user_request):
print(f"🤖 规划者正在拆解任务:{user_request[:30]}...")
plan_prompt = f"请将以下任务拆解为具体的编程步骤:{user_request}"
steps = call_agent("planner", plan_prompt, "llama3:8b")
print("💻 执行者开始编写代码...")
code_prompt = f"根据以下步骤编写 Python 代码:\n{steps}"
code = call_agent("coder", code_prompt, "qwen2.5-coder:14b")
print("🔍 审查者正在检查代码逻辑...")
review_prompt = f"检查以下代码是否存在边界条件错误或安全隐患:\n{code}"
feedback = call_agent("reviewer", feedback_prompt, "llama3:8b")
return {"plan": steps, "code": code, "feedback": feedback}
# 执行示例
result = workflow("写一个递归函数计算斐波那契数列,并添加类型提示")
print(json.dumps(result, indent=2))
在这个流程中,你可以清晰地看到多 Agent 的优势:规划者不需要懂具体代码细节,只需关注逻辑拆分;执行者专注于生成高质量代码;审查者则像一位严格的导师,专门挑刺。这种分工在单模型模式下很难完美实现,因为单一上下文容易受到前面步骤的干扰,导致“顾此失彼”。而在 Strix Halo 上,三个模型同时满载运行,CPU 和 GPU 的利用率都被充分吃满,但任务切换几乎无感。
极限压力测试:散热与噪音的真实记录
理论跑得通不代表实际能用。多 Agent 协作意味着长时间的高负载推理,这对移动设备的散热系统是巨大考验。我进行了一轮持续 2 小时的压测:循环执行上述工作流,每次生成约 2000 tokens 的代码和评论,中间不间歇。
温度表现:
开机前 15 分钟,CPU 和 GPU 温度迅速攀升至 85°C 左右,风扇转速拉满,噪音明显,类似于玩大型 3A 游戏时的状态。但随着运行稳定,温度逐渐回落并维持在 78°C-82°C 区间。Strix Halo 的散热模组似乎对这种持续的计算负载有较好的适应性,没有出现降频导致的生成速度骤降。
噪音控制:
这是唯一需要妥协的地方。在安静办公室里,全速运转的风扇声确实有些打扰。如果你需要在图书馆或会议室使用,建议外接一个 USB 散热底座,或者通过软件限制最大功耗(TDP),牺牲约 10%-15% 的生成速度来换取更安静的环境。
性能稳定性:
最令人惊喜的是显存带宽的稳定性。即使在三个模型并发读写的情况下,Token 生成速度也没有出现剧烈波动。7B 模型保持在 45 tokens/s,14B 模型稳定在 25 tokens/s 左右。这说明统一内存架构在处理多进程并发访问时,确实比传统“显存 + 内存”分离架构更具优势,避免了数据在不同存储介质间频繁拷贝带来的延迟。
端侧自动化的未来图景
这次实践让我意识到,Strix Halo 这样的硬件不仅仅是“能跑大模型”,更是“能跑好工作流”。过去我们认为复杂的 Agent 编排必须依赖云端集群,是因为本地设备无法支撑多模型并发。现在,一台高性能笔记本就能构建一个私有的、低延迟的微型 AI 工厂。
想象一下未来的场景:你在飞机上离线写作,本地运行的三个 Agent 分别负责资料检索、大纲梳理和润色校对;或者在保密项目中,所有代码生成和审计都在本机闭环完成,数据从未离开过你的硬盘。这种“数据主权”完全掌握在自己手中的安全感,是任何云服务都无法替代的。
当然,目前的方案还有优化空间。比如,可以进一步细化模型量化策略,让非核心 Agent 使用更低比特率的模型以节省资源;或者引入更智能的动态调度机制,根据任务复杂度自动唤醒或休眠某些实例。但无论如何,端侧 AI 的高阶玩法已经大门敞开。对于开发者而言,手中的笔记本不再只是终端,而是一个充满无限可能的智能工作站。
200小时GPU算力已就位,快来领取:https://marketing.csdn.net/questions/Q2604140858304426315?utm_source=AIpaper

更多推荐
所有评论(0)