tearslee/dsh-workbuddy2api ↗★ 0
dsh-workbuddy2api
管理本地网关进程并自动注册其模型为提供商 适合使用本地网关并需要自动同步模型元数据的用户。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:tearslee/dsh-workbuddy2api說明文件
閱讀完整 README ↗⚠️ 迁移:先删掉冲突的旧配置
插件注册 workbuddy2api 路由后,如果 ~/.dsh/settings.yaml 里还留着同名 provider,启动日志会出现:
[workbuddy2api] provider 目录注册被拒:configurable provider "workbuddy2api" is already declared
[workbuddy2api] 适配器注册被拒(DUPLICATE_ADAPTER):an adapter for provider "workbuddy2api" is already registered
[workbuddy2api] provider 路由 "workbuddy2api" 由外部配置占用(见上条)。请删除 ...
dsh 仍会正常启动(插件故意不把冲突抛出去,避免把一个本来可用的环境弄成起不来):
此时模型请求走的是 settings.yaml 里那份手工配置,本插件的自动元数据不会生效。
/wb2api-status 也会显示这条警告。
从 ~/.dsh/settings.yaml 删除整段(连同它下面那 20 个模型的元数据)后重启即可:
llm-pi-ai:
providers:
workbuddy2api: # ← 从这一行删到该 provider 段的末尾
其余引用保持不变 —— provider id 没变,所以这些无需改动:
agent-default-model:
provider: workbuddy2api # 保持不变
subagent-model-selection:
allowedModels:
- provider: workbuddy2api # 保持不变
改完重启 dsh。
用脚本做这一步
仓库自带 scripts/migrate-settings.ps1,按缩进精确摘除该段并自动备份(不会重写整个文件,因此 dsh 自己的注释与键顺序都保留):
## 配置
插件配置写在 profile 的 `cordis.patch.yml` 里(或任何引用 `id: workbuddy2api` 的补丁)。全部字段都可省略:
```yaml
- insert:
- id: workbuddy2api
name: 'dsh-workbuddy2api'
config:
baseURL: http://127.0.0.1:7863/v1
binaryPath: /path/to/workbuddy2api/wb2a-server.exe
repoPath: /path/to/workbuddy2api
autoStart: true
realmPrefixPolicy: strip-cn
| 字段 | 默认值 | 说明 |
|---|---|---|
baseURL | http://127.0.0.1:7863/v1 | 网关 OpenAI 兼容端点根 |
apiKeyRef | WORKBUDDY2API_API_KEY | dsh 凭据库里的 ref 名 |
binaryPath | '' | 网关可执行文件绝对路径;为空则自动探测 |
repoPath | '' | 网关源码目录(也用作默认工作目录) |
workingDir | '' | 子进程工作目录;为空时取 repoPath |
listenPort | 7863 | 仅用于端口占用判定与状态展示 |
autoStart | true | dsh 启动时自动拉起网关 |
realmPrefixPolicy | strip-cn | 模型 id 的 realm 前缀策略,见下 |
modelsTtlSeconds | 600 | /v1/models 缓存 TTL |
requestTimeoutSeconds | 600 | 单次请求整体超时 |
idleTimeoutSeconds | 300 | SSE 帧间空闲超时(超时报可重试 TIMEOUT) |
firstTokenTimeoutSeconds | 120 | 首个 token 等待超时 |
healthTimeoutSeconds | 3 | 单次探活超时 |
graceMs | 5000 | 子进程优雅退出宽限期 |
crashRestartLimit | 3 | 崩溃自动重启上限 |
env | {} | 传给网关子进程的显式环境变量 |
apiKey 的解析顺序
- dsh 凭据库(
~/.dsh/.credentials.yaml的refs.WORKBUDDY2API_API_KEY) - 同名环境变量
- 网关自己的
config.json里的api_key
同机部署时第 3 条即可命中,通常无需任何额外配置。
子进程环境会被 dsh 清洗(凭据形名称与
DSH_*全部移除),所以网关需要的变量必须经上面的env显式传入。
realmPrefixPolicy:模型 id 的前缀策略
网关的模型 id 带 realm 前缀(cn:deepseek-v4.1-flash / global:gpt-5.4)。
strip-cn(默认) —— 剥掉cn:,保留global:。模型列表里的 id 与你手工配置时期一致,历史会话与预设无需迁移。keep—— 原样透出cn:/global:。双域账号并存时可显式路由到国际版账号。
两种策略在只有 CN 账号时行为一致:网关的
resolveModel对无前缀名一律判为cn域。线格式与展示是两件事:无论哪种策略,插件发出请求前都会把无前缀 id 补成
cn:,避免 realm 解析歧义。