钱包顶不住了:从 FRP 内网穿透本地 Ollama 到 DeepSeek Harness 多模型实战全记录

前几天 DeepSeek 官方 API 迎来了一波价格调整与并发限制,调用账单肉眼可见地上涨。作为一个重度依赖代码 Agent 的开发者,每天频繁让模型读代码、修 Bug,调用量动辄几百万 Token,全走官方云端 API 钱包实在吃不消。

最初是决定把家里的高配台式机利用起来,在本地部署开源模型,配合 FRP 内网穿透 将算力开放给 Mac 笔记本,打造一套"本地主力抗高频开销 + 云端高精度模型兜底"的 DeepSeek Harness (dsh) 混合算力工作台。

整个折腾过程从搭建穿透、本地 32B 模型推理卡顿、模型开口就甩代码 JSON,到 npm 包启动报错、环境变量被抢占与配置文件崩溃,踩坑不少。这里以第一人称完整记录整个实战流程。

先说结果:

  1. 本地启动大模型生成速度拉跨,多agent电脑吃不消,可能后续就用它来做本地知识库,用在开发还是得上矿卡
  2. deepseek harness 缓存命中率高达99%,一千八百万token就花了4.94元,对比使用codex,节省了百分之60-80%的rmb

对比于涨价后使用codex的消费

阶段一:用 FRP 搭建免 Token 费用的本地穿透算力

为了把局域网内的台式机 Ollama 算力无缝暴露给外出使用的笔记本,我采用云服务器配合 FRP 搭建反向代理通道。

1. 云服务器端配置(FRP Server)

在有一台公网 IP(例如 120.79.***.***)的轻量服务器上配置 frps.toml

Ini, TOML

ini 复制代码
bindPort = 7000
auth.token = "your_secure_frp_token"

启动 frps,并在服务器防火墙中放行 7000(FRP 通信)和 11434(Ollama 穿透端口)。

2. 本地主机配置(FRP Client)

在运行 Ollama 的本地主机上,首先让 Ollama 监听所有网卡请求,编辑 systemd 配置:

Bash

ini 复制代码
# /etc/systemd/system/ollama.service
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"

接着在本地主机配置 frpc.toml,将本地 11434 端口打通到云服务器上:

Ini, TOML

ini 复制代码
serverAddr = "120.79.***.***"
serverPort = 7000
auth.token = "your_secure_frp_token"

[[proxies]]
name = "ollama-llm"
type = "tcp"
localIP = "127.0.0.1"
localPort = 11434
remotePort = 11434

启动客户端后,我就拥有了一个完全免费且不限 Token 的公网 OpenAI 兼容接口:[http://120.79](http://120.79).***.***:11434/v1

阶段二:接入穿透模型后的两大"劝退"现场

接口打通后,我迫不及待地将穿透地址接进 Agent,但立刻遭遇了两个意料之外的阻碍:

1. 32B 大模型像树懒一样慢

我在本地拉取了 qwen2.5-coder:32b,本以为能实现精度与免费的兼得,结果模型吐字奇慢无比。

  • 原因分析:大模型在纯 CPU 环境下的推理速度受制于内存带宽。32B 模型量化后体积接近 20GB,每生成 1 个 Token,CPU 就必须完整读取一遍这 20GB 内存,内存带宽直接成为瓶颈。

  • 解决方案 :放弃 32B,换成纯 CPU 推理的甜点级模型 qwen2.5-coder:14b7b。吞吐速度瞬间飙升至秒回级别,日常读代码、补全和写测试完全够用,但是多agent还是很吃力。

2. 问句"你好",模型直接甩出代码 JSON

在测试交互时输入简单的打招呼,模型直接输出了如下内容:

JSON

json 复制代码
{"name": "write", "arguments": {"file_path": "greet.txt", "content": "你好! welcome to your assistant.", "justification": "This is a simple text file to greet the user with a friendly message."}}
  • 原因分析 :这是代码类 Agent 模型的工具过度触发(Tool Over-triggering)现象。框架预先注入了文件读写与终端工具,代码专精模型动手欲极强,把日常问候误判为了开发任务,试图在工作区直接创建 greet.txt 文件来完成回应。

阶段三:源码拉取受阻与快速启动方案

在明确使用官方的 deepseek-ai/deepseek-harness 仓库后,我尝试直接克隆源码:

Bash

bash 复制代码
git clone https://github.com/deepseek-ai/deepseek-harness.git

终端在卡顿数分钟后直接抛出 RPC failed / Operation timed out 错误。

  • 原因排查:该仓库包含近 30 万个历史提交与数据集对象,全量拉取在中途极易发生网络中断。

  • 解决策略:放弃全量 Git 源码克隆,直接使用官方发布的预编译 npm 包启动:

    Bash

    bash 复制代码
    npx --registry=https://registry.npmmirror.com @deepseek-ai/dsh web

阶段四:Node 运行时报错排查

在通过 npx 启动时,终端抛出了模块语法缺失异常:

Plaintext

javascript 复制代码
SyntaxError: The requested module 'node:zlib' does not provide an export named 'createZstdDecompress'
SyntaxError: The requested module 'node:module' does not provide an export named 'stripTypeScriptTypes'
  • 原因排查 :我本地的 Node.js 版本是 v23.1.0,而 dsh 深度依赖了 Node.js 最新的原生 Zstd 压缩与原生 TypeScript 类型剥离特性,这些 API 在较新的 Node.js 版本中才正式支持。

  • 解决步骤

    Bash

    perl 复制代码
    # 升级 Node.js 到最新版本
    nvm install 23 --latest-npm
    nvm use 23
    
    # 重新启动 WebUI
    npx --registry=https://registry.npmmirror.com @deepseek-ai/dsh web

升级后,浏览器成功拉起 Web 控制台:[http://127.0.0.1:3080](http://127.0.0.1:3080)

阶段五:环境变量被抢占与多模型配置文件修复

在控制台跑起来后,为了实现"本地模型主力跑高频、商业模型跑复杂任务",我尝试把 DeepSeek 官方 API 和 MiniMax M3 一同接入,结果又遇到了两次配置异常:

  1. 官方 Key 始终显示为只读且不生效 :前面在配置本地穿透的 Ollama 时,不小心将 apiKeyEnv: DEEPSEEK_API_KEY 绑定给了本地节点,导致启动时系统环境变量被本地节点抢先占用,官方节点读不到该变量。

  2. 手写自定义列表导致所有模型全消失 :为了强制注册模型,在配置文件里手写了 presets: [...] 数组,触发了底层的 Schema 校验失败,程序静默放弃加载所有自定义模型,连原本正常的 Ollama 也一同消失了。

最终生效的多模型配置文件

点击控制台右上角的 【打开配置文件】 ,将内容替换为精简且严格遵循规范的标准配置:

YAML

yaml 复制代码
ui-onboarding:
  welcomeNoticeVersion: 2026-08-13.1

llm-pi-ai:
  providers:
    # 1. MiniMax 官方接口(长文本与高性价比备选)
    minimax:
      apiKeyEnv: MINIMAX_API_KEY
      api: openai-completions
      baseURL: https://api.minimax.chat/v1
      models:
        - id: MiniMax-M3
        - id: MiniMax-Text-01

    # 2. DeepSeek 官方接口(用于高难度复杂推理)
    deepseek-official:
      apiKeyEnv: DEEPSEEK_API_KEY
      api: openai-completions
      baseURL: https://api.deepseek.com
      models:
        - id: deepseek-chat
        - id: deepseek-reasoner

    # 3. 本地 FRP 内网穿透的 Ollama 节点(主力省钱引擎)
    ollama:
      apiKey: ollama
      api: openai-completions
      baseURL: http://120.79.***.***:11434/v1
      models:
        - id: qwen2.5-coder:7b
        - id: qwen3.8:27b

# 设置默认优先启动本地省钱模型或 MiniMax
agent-default-model:
  provider: ollama
  model: qwen2.5-coder:7b

agent-presets:
  default: standard

启动与日常使用方式

配置保存后,在 Mac 终端中把密钥导出来并启动:

Bash

ini 复制代码
export MINIMAX_API_KEY="你的MiniMax密钥"
export DEEPSEEK_API_KEY="你的DeepSeek密钥"

npx --registry=https://registry.npmmirror.com @deepseek-ai/dsh web

启动之后打开网页,按 Cmd + Shift + R 强制刷新 清除浏览器本地缓存,点击左侧的 【+ 新建对话】

相关推荐
阿里云大数据AI技术2 小时前
基于 EMR Serverless Ray 实现 Qwen 模型批量推理实践
人工智能·算法·agent
华尔街的幻觉AI2 小时前
全网都在推 DeepSeek Harness 插件,skill 还有必要装吗?
deepseek
牧艺2 小时前
DeepSeek Harness 上手:一切皆插件的 Agent 运行时,核心流程怎么走
llm·agent·deepseek
魔术师Grace4 小时前
模型“开源”了,就能直接拿来做 Agent 吗?
llm·aigc·agent
枫叶丹44 小时前
MCP、A2A、AG-UI:一篇讲清 Agent 协议栈
人工智能·ui·chatgpt·agent·codex
纯爱掌门人4 小时前
从 Agent 到 Harness:AI 进入研发流程,真正缺的是什么?
人工智能·程序员·agent
小七-七牛开发者4 小时前
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
ai·大模型·agent·claude·token·工作流·skill·claudecode·ai coding
阿里云大数据AI技术5 小时前
一句话即可用好 MaxCompute:AI 全能搭子 MaxAgent 来了——会运维、能分析
人工智能·agent