把讯飞 Loomy 云端通道作为 OpenAI 兼容供应商接入 dsh-router,提供模型列表与流式对话补全。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-router-loomy
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:2404723600/dsh-router-loomy
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
把 Loomy(讯飞 Loomy 办公助手云端通道) 作为供应商接入 dsh-router,
供 dsh 使用的插件。参照 dsh-router-traework 的同构范式编写。
- 上游通道对 OpenAI Chat Completions 完全兼容(单一端点
POST {baseUrl}/chat/completions,SSE 流式); - 鉴权为
Authorization: Bearer <session>,session 取自 Loomy 客户端userData/auth-session.json的session字段; - 插件只暴露差异化逻辑(
status/listModels/chatOnce/dispose/addApiKey/removeLink), 选号、冷却、换号、别名、模型启用状态、积分缓存等通用能力全部由 dsh-router 核心统一管理。
安装
npm install dsh-router-loomy
@deepseek-ai/cordis 与 cordis 是 peerDependencies,由 dsh 宿主注入,无需手动安装。
装好后按 装配到 dsh profile 把本包注册进 bundle。
快速开始(本地开发)
在克隆后的仓库里:
# 1) 安装依赖(peerDependencies 由 dsh 宿主注入,本工程不落地)
npm install
# 2) 干净构建:先删 lib/ 再 tsdown 打包
npm run build
# 3) 类型检查 + 单元测试
npm run typecheck
npm test
# 4) 端到端冒烟(真实调用上游:listModels + 最小 chatOnce,含一次非流式与一次流式)
npm run smoke
目录结构
src/
index.ts 插件 host half:把 factory 追加进 cordis `router.suppliers` 聚合表
supplier.ts 独立入口(default 导出 factory,供目录投放用)
provider.ts LoomySupplier:会话/账号、模型目录、chatOnce 编排
accounts.ts 账号(link)管理与 session 解析
models.ts 模型目录拉取与内置回退清单
contract.ts 结构镜像契约(不 import 宿主类型,离线可构建)
types.ts 内部类型
api/
plugin.ts 供应商模块元信息(id/name/priority/icon/apiKeyHint)+ factory
http.ts 请求构造与状态码 → AccountState 映射
headers.ts 四个必带追踪头(traceparent / chatid / msgid / loomy-version)+ 会话亲和
sse.ts SSE 帧切分 / 错误嗅探 / 迟到失败上报 / 非流式聚合
errors.ts 错误归一化
constants.ts 常量(上游版本号、端点、默认模型等)
lib/ 构建产物(index.js / supplier.js / plugin-*.js chunk)
scripts/smoke.mjs 端到端冒烟脚本
docs/loomy-upstream.md 上游契约实测记录(鉴权头、SSE 帧形态、最小请求规格)
cordis.patch.yml 声明本包是 DSH bundle(insert dsh-router-loomy 进插件图)
装配到 dsh profile
插件通过 profile 的 package.json 的 dsh.profile.bundles 挂载,与 dsh-router-traework 同构。
以 web profile(C:\Users\Administrator\.dsh\profiles\web)为例:
- 在 profile 目录安装本插件,二选一:
- 从 npm 安装(推荐)
npm install dsh-router-loomy - 本地目录(开发调试)
或直接投放软链:npm install "<本工程绝对路径>"cmd /c mklink /J "node_modules\dsh-router-loomy" "<本工程绝对路径>"
- 从 npm 安装(推荐)
- 在 profile 的
package.json里注册包与 bundle:
本地开发时依赖可写成{ "dependencies": { "dsh-router-loomy": "^0.1.0" }, "dsh": { "profile": { "bundles": [ "dsh-router-loomy" ] } } }"file:<本工程绝对路径>"。dsh-router-traework与dsh-router-core必须在 bundles 中存在;本插件与它们的先后顺序无关 (核心用ctx.inject延迟注入,等router.suppliers就绪后再追加)。 - 重启 dsh(或重新加载 profile)。启动日志出现
[dsh-router-loomy] registered router.suppliers: loomy即装配成功。 - 在 dsh-router 面板的 Loomy 供应商卡片里粘贴登录态会话串(
auth-session.json的session字段)。
上游契约
详见 docs/loomy-upstream.md。要点:
| 项 | 取值 |
|---|---|
| 端点 | POST https://loomyad.xunfei.cn/api/v1/chat/completions |
| 鉴权 | Authorization: Bearer <session> |
| 必带头 | traceparent(缺失会挂死)、chatid、msgid、loomy-version、invokeorigin |
| 可选头 | x-session-affinity(会话亲和);子调用可带 x-parent-session-id |
| 响应 | 200 + text/event-stream,data: chat.completion.chunk 帧 + data: [DONE] |
| 末帧 usage | {prompt_tokens, completion_tokens, total_tokens, ..., points_consumed}(points_consumed 为平台积分字段) |
| 注意 | 响应帧内 model 可能与请求不一致(网关改写),解析以帧内为准 |
发布(维护者)
prepack 会自动触发构建,直接发布即可。注意两点:
- 本机默认 registry 若被设为镜像站(如 npmmirror),需显式指定官方源;
- 账号开启 2FA 时,需使用带 2FA 豁免(bypass 2FA)且具备 Read and write 权限的
Granular Access Token,否则
npm publish会返回E403。
npm publish --registry https://registry.npmjs.org/
许可
MIT
链接
同类插件
V1ki/dsh-plugin-subscriptions★ 373
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 289
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
corrinehu/dsh-workbuddy-connect★ 140
将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness,在 DSH 对话窗口里零配置使用。
volcengine/ark-cli#ark-plan-api★ 133
在 DSH 原生模型选择器中注册方舟 Agent Plan、Coding Plan 与后付费模型路由。
franksong2702/dsh-codex-connect★ 114
通过 ChatGPT OAuth 将 OpenAI Codex 模型接入 DeepSeek Harness,并提供可选的搜索与图片工具。
Stormycry-cryp/dsh-AuthInOne★ 104
为 DeepSeek Harness 47f 提供账号登录、API 与自定义 Provider 配置、模型切换、纯文本模型图片兜底,以及 Token 与费用归因。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。