rumilhz/dsh-pylon-workbuddy ↗★ 0
dsh-pylon-workbuddy
管理本地网关进程并同步其模型至DSH 适合需要对接并自动运行本地workbuddy2api网关的用户。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:rumilhz/dsh-pylon-workbuddy說明文件
閱讀完整 README ↗配置
插件配置写在 profile 的 cordis.patch.yml 里(或任何引用 id: pylon-workbuddy 的补丁)。全部字段都可省略:
- insert:
- id: pylon-workbuddy
name: 'dsh-pylon-workbuddy'
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,再取插件运行目录 ~/.dsh/wb2api/ |
listenPort | 7863 | 仅用于端口占用判定与状态展示 |
autoStart | true | dsh 启动时是否自动拉起网关 |
autoDownloadBinary | false | dsh 启动时若缺二进制是否自动下载(见下) |
binaryReleaseRepo | rumilhz/dsh-pylon-workbuddy | 预编译二进制的发布仓库(首次发 tag 前 Release 为空 → 下载 404) |
binaryReleaseBase | '' | 覆盖下载根地址(自建镜像 / 钉版本) |
defaultRealm | '' | 登录默认域(cn / global);为空则每次询问 |
realmPrefixPolicy | strip-cn | 模型 id 的前缀策略,见下 |
modelsTtlSeconds | 600 | /v1/models 缓存 TTL |
requestTimeoutSeconds | 600 | 单次请求整体超时 |
idleTimeoutSeconds | 300 | SSE 帧间空闲超时(超时报可重试的 TIMEOUT) |
firstTokenTimeoutSeconds | 120 | 首个 token 等待超时 |
healthTimeoutSeconds | 3 | 单次探活超时 |
graceMs | 5000 | 子进程优雅退出宽限期 |
crashRestartLimit | 3 | 崩溃自动重启上限 |
env | {} | 传给网关子进程的显式环境变量 |
网关二进制与运行目录
/wb2api-setup 会把东西装在这些位置(都在插件自己的目录下,不碰你的其它文件):
| 用途 | 位置 |
|---|---|
| 可执行文件 | ~/.dsh/wb2api/bin/wb2a-server[.exe] |
| 配置文件 | ~/.dsh/wb2api/config.json |
| 账号凭证 | ~/.dsh/wb2api/auths/ |
| 池状态 | ~/.dsh/wb2api/data/state.json |
产物来自本仓库的 Releases(GitHub Actions 从上游源码原样交叉编译,未改一行上游代码),下载后会与 SHA256SUMS.txt 比对,不匹配就拒绝安装。
生成的 config.json 有两处刻意选择:
- 只监听
127.0.0.1(上游示例的:7863会绑0.0.0.0,等于把带账号池的网关暴露到局域网); - 随机
api_key(网关在api_key为空时完全不鉴权,而/status会暴露账号与积分)。
已存在的 config.json 绝不会被覆盖 —— 你改了池参数、冷却策略或 auth_dir 都会被保留。
autoDownloadBinary 为什么默认关
隐式时机的联网下载在离线/内网环境只会刷报错,而用户从未要求联网。显式执行 /wb2api-setup 时无视该开关(那是明确意图)。想彻底零步骤的话把它设为 true。
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 解析歧义。