1. 问题背景

目标是在一台搭载 AMD 7840H 处理器、32GB 内存、运行 Windows 11 的笔记本上,搭建一套完全离线的 AI 翻译系统,实现印尼语 ↔ 中文的互译。选用 Ollama 作为模型运行框架,Pot Desktop 作为前端翻译工具,并下载了针对东南亚语言优化的 sailor2:8b 模型。系统曾正常工作约两天,之后突然出现 Pot 无法翻译的问题。

2. 环境说明

操作系统:Windows 11 专业版 (版本 26200)

CPU:AMD Ryzen 7 7840H

内存:32GB

软件栈:

Ollama (后台服务,监听 localhost:11434)

模型:sailor2:8b(后改为 hy-mt-local 测试)

Pot Desktop 3.0.7

网络环境:可能存在代理或 VPN(用户位于印尼),但最终问题与代理无关。

3. 故障现象

Pot 所有翻译功能失效,无论选择本地 Ollama 服务还是在线翻译服务(如百度翻译),均无响应。

Ollama 自身运行正常:通过 curl 测试 http://localhost:11434/api/generate 能正常返回流式响应。

重新安装 Pot、删除配置文件、更换网络环境、关闭防火墙均无效。

Pot 启动时日志显示无法检查更新(连接 dl.pot-app.com 失败),但翻译请求无任何日志输出。

4. 排查过程

4.1 确认 Ollama 服务正常

在命令提示符(CMD)中执行:

curl http://localhost:11434/api/generate -d "{\"model\":\"hy-mt-local\",\"prompt\":\"Hello\"}"

返回了一连串 JSON 格式的流式响应,表明 Ollama 服务完全正常,且模型已加载。

4.2 网络基础测试

nslookup registry.ollama.ai 

能正确解析出 IP 地址(包括 IPv4 和 IPv6),说明 DNS 解析正常。

浏览器直接访问 http://localhost:11434 显示 “Ollama is running”,证明端口可达。

尝试其他翻译工具(如浏览器插件)调用本地 Ollama,成功工作,说明问题局限于 Pot。

4.3 Pot 日志分析

Pot 的日志(开启 RUST_LOG=debug 后)显示:

启动时尝试连接 dl.pot-app.com 和 github.com 失败,提示无法获取更新信息。

翻译操作没有任何网络请求相关的日志,甚至没有错误输出,说明 Pot 内部可能根本没有发起 HTTP 请求。

4.4 高级诊断工具

4.4.1 Process Monitor

用 Process Monitor 监控 pot.exe,过滤条件设置为 Process Name is pot.exe 且 Path contains 11434。在尝试翻译时,没有任何记录,证明 Pot 确实未尝试连接本地 Ollama 端口。

4.4.2 TCPView

使用 Sysinternals TCPView 实时监控网络连接,翻译操作时 pot.exe 没有任何新的网络连接出现,进一步确认 Pot 未发起任何网络请求。

4.4.3 事件查看器

在 Windows 事件查看器(eventvwr.msc)的 Windows 日志 → 应用程序 中,发现了 Pot 的崩溃记录:

事件名称: APPCRASH
P1: pot.exe
P2: 3.0.7.0
P3: 681eab80
P4: pot.exe
P5: 3.0.7.0
P6: 681eab80
P7: c000001d   <-- 非法指令异常
P8: 00000000004c5589

这表明 Pot 在执行过程中发生了非法指令错误,导致程序崩溃,因此无法完成任何翻译请求。

4.5 尝试各种修复手段

  • 卸载并重装 Pot(包括删除所有配置文件夹)

  • 安装/修复 Visual C++ 运行库(遇到版本已存在错误,忽略)

  • 关闭防火墙和杀毒软件

  • 以兼容模式运行 Pot

  • 使用 Pot 便携版(免安装)——同样崩溃

  • 新建 Windows 用户账户测试——依然崩溃

  • 所有常规手段均告失败,问题指向系统底层环境。

4.6 最终发现:Hyper-V 虚拟网卡冲突

几乎所有的原因都排查了,但是依然没有找到,问题既然出在pot上,并且确认是网络不通,笔者干脆从电脑的所有网络连接入手,发现除了hyper-v启用了虚拟网卡及网桥,没有其它可以怀疑的了,尝试关闭 Hyper-V 虚拟网卡后,Pot 立即恢复正常翻译。进一步确认:Hyper-V 的虚拟网络组件干扰了 Pot 对本地回环地址 (localhost) 的访问,导致 Pot 内部网络栈异常,进而引发非法指令崩溃。

5. 解决方案

5.1 临时解决方案

禁用 Hyper-V 虚拟网卡和网桥。

  • 打开 网络和共享中心 → 更改适配器设置。

找到名为 “vEthernet” 或包含 “Hyper-V” 的虚拟网卡,右键 禁用。

或者直接关闭 Hyper-V 功能:

  • 在 Windows 功能 中取消勾选 “Hyper-V”、“虚拟机平台” 等选项,重启电脑。

5.2 永久解决方案(若需保留 Hyper-V)

如果因为需要使用 WSL2、Docker 或其他虚拟机而必须保留 Hyper-V,可以采用以下方法避免冲突:

  • 方法一:调整网络适配器优先级
    打开 网络和共享中心 → 更改适配器设置。

按 Alt 键显示菜单,选择 高级 → 高级设置。

在 适配器和绑定 选项卡中,将物理网卡(如 Wi-Fi 或以太网)上移到第一位,将 Hyper-V 虚拟网卡下移。

重启 Pot 测试。

  • 方法二:禁用 Hyper-V 虚拟网卡(不影响 Hyper-V 核心功能)

以管理员身份运行 PowerShell,执行:

Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Hyper-V*"} | Disable-NetAdapter -Confirm:$false

需要时可用 Enable-NetAdapter 重新启用。

  • 方法三:调整虚拟交换机配置
    打开 Hyper-V 管理器 → 虚拟交换机管理器。

检查与物理网卡绑定的外部虚拟交换机,将其改为 内部 或 专用 模式,或取消与物理网卡的绑定。

6. 总结与建议

根本原因:Hyper-V 虚拟网卡干扰了部分 Windows 应用程序(尤其是基于 WebView2 的软件)对本地回环地址的访问,导致 Pot 崩溃。

教训:当应用程序突然无法访问 localhost 且常规网络排查无效时,应考虑虚拟化网络组件的干扰。

后续维护:若需同时使用 Hyper-V 和 Pot,采用上述优先级调整或选择性禁用虚拟网卡的方法,可以两者兼顾。

本次排障过程历时数天,综合运用了 curl、nslookup、Process Monitor、TCPView、事件查看器等多种工具,最终锁定 Hyper-V。希望这份记录能帮助遇到类似问题的用户快速定位问题。

  1. 附录:相关命令速查
# 测试 Ollama 是否正常
curl http://localhost:11434/api/generate -d "{\"model\":\"模型名\",\"prompt\":\"Hello\"}"

# 查看 DNS 解析
nslookup registry.ollama.ai

# 清除 WinHTTP 代理
netsh winhttp reset proxy

# 禁用 Hyper-V 虚拟网卡(PowerShell)
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Hyper-V*"} | Disable-NetAdapter -Confirm:$false