[English](README.md) | **简体中文**
# dsh-owui-chat2api
把 [Open WebUI](https://github.com/open-webui/open-webui) 里的模型接进
[DSH](https://github.com/anywhere-labs/dsh-desktop)(DSH Desktop 或原版 web
界面均可):一个把 Open WebUI 变成标准 OpenAI 兼容 `/v1` API 的本地反向代理,
外加一个内置在 DSH 里的用量面板。
它内置了 [chat2api](https://github.com/Sozbo-Tang/openwebui-chat2api),以本地
反向代理的方式运行,并在 DSH 的页面里注入一个控制面板:
```
DeepSeek Harness(或任何 OpenAI 兼容客户端)
│ 标准 /v1 接口 → http://127.0.0.1:8000
▼
dsh-owui-chat2api (本地反向代理,自带登录凭据)
▼
你的 Open WebUI (浏览器登录一次,之后自动复用)
```
## 功能 ✨
- ▶️ 从面板启动 / 停止代理
- 🩺 环境检查:Python 是否可用、依赖是否装好
- ⚙️ 配置 Open WebUI 地址、主机、端口
- 📊 用量面板:今天 / 昨天 / 本月 / 累计,按模型排行,彩色份额条;附手动
**价格表**(每百万 tokens、缓存单独计价),把统计变成成本估算
- ⚡ 诚实的缓存统计:后端上报了缓存 tokens 就显示命中率卡片,没上报就明说;
估算调用与失败调用也会单独标出
- 🪟 一套引擎两种挂载:悬浮 pill 面板 + **右侧栏停靠标签页**(DSH Desktop
2.0.10+)——标签页停在会话旁边,不会盖住会话;旧版 DSH 自动只有 pill
- 🧠 一键同步模型与推理等级(见[推理等级](#推理等级-))
- 📜 进程日志:错误高亮、跟随最新、一键复制
- 🎨 分区配色 + 内联 Tabler 图标,跟随 DSH 深浅主题,零外部请求
## 安装 📦
三种方式任选:**A** 一条命令(推荐)、**B** 不需要 git、**C** 直接让 DSH 帮你装。
### ⚡ 方式 A —— 一条命令(推荐)
`dsh` CLI 自带插件管理器,一条命令完成安装 **和** profile 注册
(依赖声明 + bundles 自动写入,不用手改 package.json)。按你的环境选
profile:DSH Desktop 用 `desktop`,原版 web 界面用 `web`:
```powershell
dsh plugin --profile desktop add github:Wecury/dsh-owui-chat2api#v0.10.0
dsh plugin --profile web add github:Wecury/dsh-owui-chat2api#v0.10.0
```
- `#v0.10.0` 锁定 Release tag,换成你想要的版本(不写则跟踪 `main` 分支)。
- 需要本机有 `git`(pnpm 走 git 拉取);网络需要代理时先设
`http_proxy` / `https_proxy` 再执行。
- Windows 下报 `[ERR_PNPM_EPERM] ... rename ..._tmp_...`?之前手动装过
(方式 B)留下的 junction 挡路了——**只删链接本身**再重试:
```powershell
cmd /c rmdir "%USERPROFILE%\.dsh\profiles\\node_modules\dsh-owui-chat2api"
```
(对 junction 用 `rmdir` 只删链接、不动目标文件夹。)
- 装完重启 DSH 即可。以后升级(`--profile` 与安装时一致):
`dsh plugin --profile update dsh-owui-chat2api`。
### 📦 方式 B —— 从 Release 的 tgz 手动装(无需 git)
1. 到 [Releases](https://github.com/Wecury/dsh-owui-chat2api/releases) →
**Assets** 下载 `dsh-owui-chat2api-<版本>.tgz`。
2. 解压到插件目录。tgz 解出来是一个 `package/` 文件夹,把它改名挪过去
(Windows 10+ 自带 `tar` 命令):
```powershell
tar -xzf dsh-owui-chat2api-0.10.0.tgz
Move-Item package "$env:USERPROFILE\.dsh\plugins\dsh-owui-chat2api-0.10.0"
```
在旧的手动安装上升级?若
`%USERPROFILE%\.dsh\profiles\\node_modules\dsh-owui-chat2api`
已存在(旧 junction),先用 `cmd /c rmdir "<该路径>"` 删掉链接,让新的
`link:` 依赖解析到新目录,而不是指向残留的旧目标。
3. 在 `%USERPROFILE%\.dsh\profiles\\package.json` 里注册
(DSH Desktop 用 `desktop`,原版 web 界面用 `web`):
```jsonc
"dependencies": {
"dsh-owui-chat2api": "link:%USERPROFILE%\\.dsh\\plugins\\dsh-owui-chat2api-0.10.0"
},
"dsh": { "profile": { "bundles": [ /* ... */ "dsh-owui-chat2api" ] } }
```
版本号、文件夹名换成你实际下载的版本即可。
### 🤖 方式 C —— 直接喊你的 DSH 装
把下面这段发给你的 DSH 助手,剩下的它来做:
```text
请帮我安装 DSH 插件 dsh-owui-chat2api(GitHub 仓库 Wecury/dsh-owui-chat2api)。
步骤:
1. 执行:dsh plugin --profile desktop add github:Wecury/dsh-owui-chat2api#v0.10.0
(用原版 web 界面就把 --profile desktop 换成 --profile web。需要本机有 git。
如果 dsh plugin 不可用,改用手动方式:从仓库 Releases 的 Assets 下载
dsh-owui-chat2api-<版本>.tgz,解压得到 package/ 文件夹,移动并改名为
%USERPROFILE%\.dsh\plugins\dsh-owui-chat2api-<版本>;然后在
%USERPROFILE%\.dsh\profiles\\package.json 的 dependencies 里加
"dsh-owui-chat2api": "link:<该目录的绝对路径>",并把 "dsh-owui-chat2api"
加进 dsh.profile.bundles 数组)
2. 重启 DSH。
3. 验证:DSH 页面右上角出现 OWUI 圆标;点开面板,Status 区能显示状态即成功。
```
## 快速开始 🚀
1. 重启 DSH(任一方式装完后),右上角出现 **OWUI** 圆标。
2. 打开面板,把 **Open WebUI 地址**改成你自己的(默认是占位符)。
3. 点 **Start**。第一次运行会弹出浏览器窗口,登录一次你的 Open WebUI,
之后自动复用。
## 常见问题 🔧
| 现象 | 处理 |
| --- | --- |
| Diagnostics 显示 **Attention** | 装依赖:`pip install requests playwright`,再 `playwright install` |
| 登录失败 / 提示重新登录 | 面板里点 **Login**,在弹窗里登一次即可 |
| 模型不在 DSH 模型列表里 | 配置区点 **Sync models & reasoning levels**,然后重启 DSH |
| 地址还是 `your-open-webui.example.com` | 那是占位符,改成本机实际地址再 Start |
| 安装时报 `[ERR_PNPM_EPERM] ... rename ..._tmp_...` | 旧的手动安装留下的 junction 挡路——`cmd /c rmdir "%USERPROFILE%\.dsh\profiles\\node_modules\dsh-owui-chat2api"`(只删链接),然后重新执行安装命令 |
## 推理等级 🧠
推理模型(比如 vLLM 网关后面那种)支持 `reasoning_effort`,DSH 的模型选择器
里对应有 **Off / Low / Medium / High** 四档。
最省事:在面板配置区点一次 **Sync models & reasoning levels**。它会自动探测
模型、给支持推理的模型声明好等级,并且先写一份备份。以后后端上了新模型再
点一次即可(已探测过的会走缓存)。
想手动声明,或独立使用 `chat2api.py`,见 [DEVELOPMENT.md](DEVELOPMENT.md)。
## 数据与安全 🔒
- 你的 Open WebUI 登录会话(`.chrome-profile`、`token.json`、用量库)
只保存在本机,已排除出 git 和发布包。
- 用量数据库、代理配置放在 `~/.dsh`(插件目录之外),升级插件不会丢。
- 代理默认只监听 `127.0.0.1`。
## 面向开发者 🛠️
代码结构、核心约定、如何本地测试改动 → [DEVELOPMENT.md](DEVELOPMENT.md)。
## 许可证 ⚖️
- 插件本体(`chat2api/` 之外):MIT — 见 [LICENSE](LICENSE)。
- 内置 `chat2api/` 代理:MIT © openwebui-chat2api contributors — 见
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) 与
[Sozbo-Tang/openwebui-chat2api](https://github.com/Sozbo-Tang/openwebui-chat2api)。