tearslee/dsh-workbuddy2api ↗★ 0

dsh-workbuddy2api

DeepSeek Harness plugin: supervise a local workbuddy2api gateway process and auto-register its models as an LLM provider 适合使用本地网关并需要自动同步模型元数据的用户。

パッケージ
dsh-workbuddy2api
互換性
未検証
Harness ピア範囲
>=0.1.2-rc.1 <0.2.0-0
Cordis ピア範囲
^4.0.2
バージョン
0.1.0
ライセンス
MIT
最終更新
2026/09/15

インストール

$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
字段默认值说明
baseURLhttp://127.0.0.1:7863/v1网关 OpenAI 兼容端点根
apiKeyRefWORKBUDDY2API_API_KEYdsh 凭据库里的 ref 名
binaryPath''网关可执行文件绝对路径;为空则自动探测
repoPath''网关源码目录(也用作默认工作目录)
workingDir''子进程工作目录;为空时取 repoPath
listenPort7863仅用于端口占用判定与状态展示
autoStarttruedsh 启动时自动拉起网关
realmPrefixPolicystrip-cn模型 id 的 realm 前缀策略,见下
modelsTtlSeconds600/v1/models 缓存 TTL
requestTimeoutSeconds600单次请求整体超时
idleTimeoutSeconds300SSE 帧间空闲超时(超时报可重试 TIMEOUT)
firstTokenTimeoutSeconds120首个 token 等待超时
healthTimeoutSeconds3单次探活超时
graceMs5000子进程优雅退出宽限期
crashRestartLimit3崩溃自动重启上限
env{}传给网关子进程的显式环境变量

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 解析歧义。