Memo:在 VPS 上搭建 DeepSeek Harness + One API 接入

起因

VPS 上已经跑着 K3s、n8n、WordPress、One API、Whisper 等一堆服务。想再加一个能做文件操作和命令执行的 AI Agent 工具,看看能不能用它来管理现有的服务配置。

DeepSeek Harness(dsh)是 DeepSeek 官方开源的 AI Agent 运行框架,定位是“把模型接入文件系统、终端、网页、代码工具”的运行时。它的核心设计原则是 “一切皆插件”——模型适配器、工具、会话、Agent Loop 本身都可以替换。

关键洞察:Harness 本身不是模型,只是一个“壳”。它可以通过 openai-completions 协议对接任何 OpenAI 兼容端点。你的 One API 正好符合,不需要另外申请 DeepSeek 官方 Key。

环境

  • VPS:Ubuntu 22.04,内存 5.8Gi,可用约 1.8Gi
  • Node.js:v24.18.0
  • 已运行服务:K3s、n8n、WordPress、One API、Whisper
  • One API:http://172.17.0.1:3000

安装步骤

第一步:安装 Node.js

bash

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -v

预期输出 v20.x.x 和 10.x.x。我这边装出来的是 v24.18.0 和 11.16.0,也可以。

踩坑:安装过程中会出现一个内核升级提示框(Pending kernel upgrade),按 Enter 关掉即可,不影响 Node.js 安装。

第二步:启动 Harness

bash

npx @deepseek-ai/dsh web --no-open

首次运行会提示安装 @deepseek-ai/dsh@0.1.5-rc.1,输入 y 确认。

启动成功后输出:

text

dsh web: http://127.0.0.1:3080/?token=5oU2TX_lQapdHy-xPpnLU1MlXxoS7Z9B-SumikkwM_o

关键点

  • --no-open:因为你在 SSH 里,不需要它尝试打开浏览器
  • 监听地址是 127.0.0.1:3080,只在本机可访问
  • URL 里的 ?token=... 是一次性访问令牌,不要泄露

第三步:SSH 隧道

Harness 只监听 127.0.0.1,公网访问不到。用 SSH 隧道转发:

本地电脑的新终端执行:

bash

ssh -L 3081:127.0.0.1:3080 root@162.43.92.249 -N
  • 本地 3081 端口 → 远程 3080 端口
  • -N 表示不执行远程命令,只做端口转发
  • 这个终端要一直开着,关掉隧道就断了

然后本地浏览器打开:

text

http://127.0.0.1:3081/?token=5oU2TX_lQapdHy-xPpnLU1MlXxoS7Z9B-SumikkwM_o

注意端口是 3081(本地转发端口),不是 3080。

第四步:配置模型

打开 Web UI 后,会看到 “Add an API key to get started” 的提示。不要申请 DeepSeek 官方 Key,直接用已有的 One API。

  1. 点击 “Configure Later” 跳过官方配置
  2. 进入 Settings → Models → Add a custom provider
  3. 填入:
字段
Provider IDoneapi
Display NameOne API
Base URLhttp://172.17.0.1:3000/v1
API Protocolopenai-completions
API Keysk-你的OneAPI令牌
Model IDdeepseek-ai/deepseek-v4-flash-0731
  1. 保存

第五步:切换模型并测试

关键一步:添加 provider 后,必须在聊天界面的模型选择器里切换到 One API 的模型,否则会报错:

text

no API key for provider route "deepseek-official"

这是因为 Harness 默认使用 DeepSeek 官方路由,需要手动切换到你的自定义 provider。

切换到 One API 的模型后,发一条测试消息:

text

你好,请用一句话介绍你自己

预期返回:

text

你好!我是基于 DeepSeek 大模型的 AI 编程助手...

当前状态

组件状态
Node.js✅ v24.18.0
DeepSeek Harness✅ 运行在 3080
One API provider✅ 已配置
模型deepseek-ai/deepseek-v4-flash-0731
SSH 隧道✅ 本地 3081 → 远程 3080

踩坑记录

1. 内核升级提示框卡住安装
apt-get install 过程中出现 Pending kernel upgrade 提示框,按 Enter 关掉即可。不是错误,系统只是提示有新内核可用但需要重启生效。

2. no API key for provider route "deepseek-official"
添加自定义 provider 后,Harness 默认还是走 DeepSeek 官方路由。必须在模型选择器里手动切换到 One API

3. 端口选择
本地转发端口用 3081,避免和远程 3080 混淆。浏览器访问时注意用 3081。

4. Token 是一次性的
URL 里的 ?token=... 是访问令牌。如果关闭 Harness 重启,token 会变,需要重新获取 URL。

下一步可以做的事

Harness 是一个有文件操作和命令执行能力的 Agent,可以:

  • 读取配置文件:比如 ~/.openclaw/openclaw.json
  • 修改配置:更新 Telegram botToken 等
  • 执行命令:查看系统资源、检查服务状态
  • 管理 OpenClaw:通过 ACP 协议桥接

测试指令示例

text

帮我查看当前目录下有哪些文件

text

读取 ~/.openclaw/openclaw.json,告诉我里面配置了哪些 channel

text

运行 free -h 和 df -h,告诉我系统资源状况

安全提醒

Harness 有文件读写和命令执行能力。在生产环境使用前:

  1. 不要给它 root 权限:如果它跑在 root 下,任何误操作都可能影响整个 VPS
  2. 限制工作目录:在配置里指定沙箱目录,避免它访问敏感文件
  3. 人工审核关键操作:修改配置文件、执行删除命令前,让它先展示计划再执行

持久化运行(可选)

当前 Harness 是前台运行,关闭 SSH 会话会被终止。想后台运行:

bash

nohup npx @deepseek-ai/dsh web --no-open > /var/log/dsh.log 2>&1 &

建议先在前台跑通、确认稳定后再持久化

关键文件位置

项目位置
Harness Web UIhttp://127.0.0.1:3081(本地隧道)
远程监听127.0.0.1:3080
One APIhttp://172.17.0.1:3000
模型deepseek-ai/deepseek-v4-flash-0731

一句话总结

npx 启动 Harness → SSH 隧道转发 → 配置 One API provider → 切换模型 → 测试。 不需要 DeepSeek 官方 Key,复用已有的 One API 网关即可。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注