rumilhz/dsh-pylon-workbuddy ↗★ 0

dsh-pylon-workbuddy

管理本地网关进程并同步其模型至DSH 适合需要对接并自动运行本地workbuddy2api网关的用户。

套件
dsh-pylon-workbuddy
相容性
待驗證
Harness 依賴範圍
>=0.1.2-rc.1 <0.2.0-0 || >=0.2.0-rc.1 <0.3.0-0
Cordis 依賴範圍
^4.0.2
版本
0.4.0
授權
MIT
最近更新
2026年10月15日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:rumilhz/dsh-pylon-workbuddy

配置

插件配置写在 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
字段默认值说明
baseURLhttp://127.0.0.1:7863/v1网关 OpenAI 兼容端点根
apiKeyRefWORKBUDDY2API_API_KEYdsh 凭据库里的 ref 名
binaryPath''网关可执行文件绝对路径;为空则自动探测
repoPath''网关源码目录(也用作默认工作目录)
workingDir''子进程工作目录;为空时取 repoPath,再取插件运行目录 ~/.dsh/wb2api/
listenPort7863仅用于端口占用判定与状态展示
autoStarttruedsh 启动时是否自动拉起网关
autoDownloadBinaryfalsedsh 启动时若缺二进制是否自动下载(见下)
binaryReleaseReporumilhz/dsh-pylon-workbuddy预编译二进制的发布仓库(首次发 tag 前 Release 为空 → 下载 404)
binaryReleaseBase''覆盖下载根地址(自建镜像 / 钉版本)
defaultRealm''登录默认域(cn / global);为空则每次询问
realmPrefixPolicystrip-cn模型 id 的前缀策略,见下
modelsTtlSeconds600/v1/models 缓存 TTL
requestTimeoutSeconds600单次请求整体超时
idleTimeoutSeconds300SSE 帧间空闲超时(超时报可重试的 TIMEOUT)
firstTokenTimeoutSeconds120首个 token 等待超时
healthTimeoutSeconds3单次探活超时
graceMs5000子进程优雅退出宽限期
crashRestartLimit3崩溃自动重启上限
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 的解析顺序

  1. dsh 凭据库(~/.dsh/.credentials.yaml 的 refs.WORKBUDDY2API_API_KEY)
  2. 同名环境变量
  3. 网关自己的 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 解析歧义。