前言¶
DeepSeek Harness (DSH) 的 Web 运行时默认通常绑定在本地回环地址上,这限制了在局域网内其他设备访问 Web GUI 的能力。同时,在开发或运维过程中,直接在命令行或脚本中处理 DeepSeek 官方接口(如查询余额)需要暴露 API Key,存在安全风险。dsh-lan 作为一个 bundle 插件,解决了这两个问题:它将 Web GUI 绑定至局域网地址,并提供一个不离开 PC 端的余额查询 RPC 接口。
这是什么¶
dsh-lan 是一个 DeepSeek Harness (DSH) 插件,由开发者 SparkWeiyang 维护。它属于联网工具类别,许可证为 MIT。该插件的核心价值在于将 Web GUI 的访问范围扩展至局域网,并利用 PC 端已配置的凭证提供官方余额查询服务,确保 API Key 永远不离开本地环境。
核心功能¶
- 局域网开放 Web GUI:修改 Web 服务器的绑定地址为
0.0.0.0,并自动枚举 IPv4 地址作为信任栅栏白名单,无需额外启动参数或补丁。 - 余额查询 RPC:提供
deepseek/balanceRPC 接口,使用 PC 端配置的DEEPSEEK_API_KEY向官方 API 发起请求。
安装与启用¶
执行以下命令将插件安装到 web profile:
dsh plugin --profile web add dsh-lan
安装完成后,需编辑 $DSH_HOME/profiles/web/package.json,确保 dsh-lan 位于 @deepseek-ai/dsh-web-app 之后,将其加入 bundles 列表:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-lan"
]
}
}
}
典型用法¶
安装并配置完成后,启动 Web 服务:
dsh web # 默认绑定 0.0.0.0:3080
dsh web --port 8080 # 指定端口
启动后,web-runtime 会输出局域网访问地址(如 http://192.168.x.x:3080)。
通过 RPC 调用余额查询。客户端发送标准 RPC 信封:
{
"type": "client-request",
"rpcId": "uuid",
"method": "deepseek/balance",
"payload": { "args": {} }
}
成功响应示例:
{
"is_available": true,
"balance_infos": [
{ "currency": "CNY", "total_balance": "8.27", "granted_balance": "0.00", "topped_up_balance": "8.27" }
]
}
若 PC 端未配置 DEEPSEEK_API_KEY,RPC 将返回 internal 错误。
原理¶
插件通过两个文件实现功能:
1. cordis.patch.yml:这是一个 bundle patch 文件。它覆盖 webserver 的配置,将 host 设置为 0.0.0.0(端口随 --port 参数可调),并插入 deepseek-service 服务加载逻辑。
2. lib/index.js:实现了一个 TypertRemoteService 子类。它使用 @Remote('balance') 注册 deepseek/balance 端点。在处理请求时,它通过 ctx.credentials.resolve('DEEPSEEK_API_KEY') 获取 PC 端凭证,并调用官方接口查询余额。
注意事项¶
- 安全边界:DSH Web carrier 没有内置鉴权层。这里的“信任栅栏”仅指网络可达性策略。一旦绑定
0.0.0.0,同网段内的任何设备均可访问 Web GUI 并驱动会话执行命令。 - 凭证依赖:余额查询功能依赖 PC 端已配置的
DEEPSEEK_API_KEY,密钥逻辑上不出 PC,但前提是 PC 端必须正确配置了凭证。 - 部署建议:请仅在可信网络环境下暴露该服务,或在其前方部署反向代理并开启认证机制,以防止未授权访问。
结语¶
dsh-lan 通过简单的配置实现了 DSH 在局域网内的可用性,并利用 PC 端凭证提供了安全的余额查询手段。它符合 DSH “一切皆插件” 的理念,适合需要在本地网络中协作或通过脚本自动化查询余额的开发场景。
- 插件目录:https://www.skillhub.cn/plugins/SparkWeiyang/dsh-lan
- 仓库地址:https://github.com/SparkWeiyang/dsh-lan