Releases: tearslee/dsh-workbuddy2api
Release list
v0.3.0
预编译的 workbuddy2api 网关二进制,由本仓库的 GitHub Actions
从上游 Sliverkiss/workbuddy2api
源码交叉编译产生(未修改上游代码)。
通常不需要手工下载:dsh 插件 dsh-workbuddy2api 的 /wb2api-setup
会自动取用 releases/latest/download/ 下的产物并校验 SHA256。
手工安装时请一并下载 SHA256SUMS.txt 校验:
sha256sum -c SHA256SUMS.txt许可证与免责声明归上游仓库所有。
Full Changelog: v0.1.0...v0.3.0
v0.1.0 — 首个发布
把 workbuddy2api 接进 DeepSeek Harness
装好之后:dsh 启动时自动拉起网关、退出时回收;模型元数据全部从 /v1/models 自动读取。
但这个插件最重要的作用是让一次对话在上游后台只记一个 RequestID。
为什么重要:RequestID 不再碎片化
直连 CodeBuddy 时一次对话只产生 1 个 RequestID;经网关转发后曾变成几十上百个,
表现为「请求放大与积分非预期消耗」。这是同一个问题在三个阶段的实测:
① 修复前 —— 上游后台把一次对话拆成无数次小请求
② 上游第一次修复后 —— 加了会话头族,但仍然是多个请求
③ PR #73 合并后 —— 按对话轮聚合
修复链条:上游先加会话头族,但 OpenAI 兼容客户端(dsh / Codex / Cherry Studio)
请求体里既无 conversationId 也无 metadata,ExtractKey 恒为空 → 聚合主键只能逐请求
新生成。本仓库作者提交的 PR #73(已合并)
为无会话键客户端补了「对话轮级」兜底键:
TurnKey(body) = body 里最后一条 role=="user" 消息的「序号:文本」
TurnRequestID(turnKey) = sha256(盐|turnKey) 前 16 字节 hex
本插件保证那个键在 dsh 这条链路上真的稳定 —— TurnKey 的输入是适配器发出的请求体,
所以有两条隐含前提(工具结果不得落 role:"user"、末条用户文本轮内不变),
破坏即静默复发(网关照常回包,只有腾讯后台的用量明细看得出问题)。
两条都有跨语言契约测试锁定,并用上游真实 Go 实现验证:一次对话轮内三个 step 派生
完全相同的聚合 ID。
详见 README。
三块职责
- 进程托管 —— spawn →
/healthz探活 → dispose 回收;端口已有健康网关时直接复用;崩溃退避重启。 - provider 路由
workbuddy2api—— 把网关/v1/models的非标准扩展字段
(context_length/max_output_tokens/supports_images/reasoning_*)
自动翻译成 dsh 模型元数据,不再手写settings.yaml。 - 管理命令 ——
/wb2api-status·/wb2api-start·/wb2api-restart·/wb2api-login。
安装
# 方式一:本 Release 附带的 tarball
dsh plugin --profile web add file:./dsh-workbuddy2api-0.1.0.tgz
# 方式二:从源码
git clone https://github.com/tearslee/dsh-workbuddy2api && cd dsh-workbuddy2api
pnpm install && node node_modules/typescript/bin/tsc -p tsconfig.json
pnpm pack && dsh plugin --profile web add file:./dsh-workbuddy2api-0.1.0.tgz装完重启 dsh。
⚠️ 从手工配置迁移必须先删冲突段
若 ~/.dsh/settings.yaml 里还有 llm-pi-ai.providers.workbuddy2api,
插件会只降级不生效(dsh 仍能正常启动,日志与 /wb2api-status 会给出提示):
pwsh -File scripts/migrate-settings.ps1 -WhatIf # 预览
pwsh -File scripts/migrate-settings.ps1 # 执行(请在 dsh 关闭时)前置条件
- dsh >=
0.1.6-alpha.1 - 自行构建的 wb2api 可执行文件(上游不提供预编译 release)
- 至少一个已登录账号(
./login.sh)
验证
tsc构建通过;173 个单元测试通过- 针对真实运行中的网关的 6 个集成测试通过(含真实对话与工具调用轮)
- 跨语言验证:适配器产出的请求体喂给上游真实 Go 实现,一次对话轮内三个 step
派生出完全相同的聚合 ID(tools/turnkey-verify/) - 变异测试确认防护有效:把
role:'tool'改回role:'user'会让 8 个测试立刻失败 - 从 GitHub 全新 clone → 安装 → 构建 → 全绿
已知限制
global:模型的context_length被上游硬编码为 131072 且不下发max_output_tokens/
supports_images—— 国际版模型的窗口与输出上限是占位值而非真实值。CN 侧无此问题。- 本版不做按需
go build,需自行准备二进制。
合规
本插件不包含、不转发、不再分发 workbuddy2api 的任何二进制或源码,只托管并消费你自己构建的产物。



