DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Llm Openai Completions — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
L

dsh-llm-openai-completions

Llm Openai Completions

适用于自定义网关(vLLM / LM Studio / 自托管代理)的 OpenAI-completions-compatible 适配器:始终使用 role:"system",由 llm-pi-ai 模型配置驱动 enable_thinking / chat_template_kwargs / reasoning_effort,并在接收端按 </think> 进行拆分——不猜测 pi-ai 的行为。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:drscrewdriver/dsh-llm-openai-completions#7efd87cb1a2ee5c0bebd65c21b686dbff2c920ef
README兼容性版本

兼容性与来源证明

Llm Openai Completions 以 dsh-llm-openai-completions 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/8/30

版本

0.2.0stable
2026/8/30
0.1.0stable
2026/8/29

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/16
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编码计划配额,并提供实时令牌使用记录,同时在侧边栏条目中显示当前会话提供商今日的使用量Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Usage Stats@ychris12138/dsh-usage-statsdsh Web GUI 的令牌使用热力图、提供商余额和订阅配额Codex Connectdsh-codex-connect用于 DeepSeek Harness 的 ChatGPT OAuth 和 Codex 模型。

README

dsh-llm-openai-completions

  • English README
  • 中文 README
  • 日本語 README
  • 한국어 README
  • Installation guide
  • 中文安装指南
  • 日本語インストールガイド
  • 한국어 설치 안내
  • Changelog

OpenAI-completions-compatible adapter for custom gateways (vLLM / LM Studio / self-hosted OpenAI proxies) — a "fourth adapter class" next to llm-deepseek and llm-pi-ai, with behavior that never guesses:

  • system is always role: "system" — a custom gateway never receives developer, so the Unexpected message role 400 is gone even when thinking is enabled (pi-ai's detectCompat defaults supportsDeveloperRole: true for non-standard URLs, which breaks every custom gateway once a reasoningEfforts table marks the model as reasoning).
  • Thinking is driven by the model's compat.thinkingFormat:
    • qwen → wire enable_thinking: boolean (Qwen3.6-style; no reasoning_effort, no budget)
    • qwen-chat-template → chat_template_kwargs.enable_thinking (+ preserve)
    • effort-capable → reasoning_effort passthrough (Qwen3.8-style)
  • The receive side splits Qwen3-style response content (vLLM renders thinking into content with no reasoning_content field) into a reasoning block — no more thinking text mixed into the body.

🎉 Major Feature — Vision/Image Input (v0.2.0)

Vision models can now receive user-uploaded images — single or multiple (multi-image order preserved, text parts interleaved in source order):

  • When the target model declares vision capability in its llm-pi-ai config (input contains image, written by the dsh-thinking-levels capability card as ['text','image']), user image content blocks are serialized as OpenAI-compatible multi-part content arrays — each image_url is a data:<mediaType>;base64,<…> data URI (bytes resolved via the attachment store's readImage and base64-encoded). Multiple images in one message are supported and kept in order.
  • Non-vision models still reject loudly (UNSUPPORTED_CONTENT) — nothing is silently dropped.
  • Requirements: image reading depends on the host providing ctx.attachments (attachment store); text-only models are unaffected.

Configuration lives in the llm-pi-ai section (Settings → Models): baseURL, models, reasoningEfforts, compat.thinkingFormat, input. This plugin only swaps the wire behavior of the providers you list.

Capability detection config: vision / thinking / reason-effort support / level tiers are all read from a model entry's input / reasoningEfforts / compat fields in llm-pi-ai (the base editor does not expose these fields). They are written by the dsh-thinking-levels capability card per user action, or edited by hand in settings.yaml — one shared config, the adapter just reads it. Full field table and wire contract: docs/settings-spec.md §4.1.

Install

# npm (recommended)
dsh plugin --profile web add dsh-llm-openai-completions -w
# local link (development)
# dsh plugin --profile web add link:E:/test/rewrite-agently/dsh-llm-openai-completions -w
dsh web

Enable

The plugin replaces the stream of the providers you list (default off; existing routes owned by llm-pi-ai are wrapped, not re-registered, so no adapter conflict). The short-circuit settings contract — the llm-openai-completions namespace, its fields, the takeover semantics, and the wire behavior — is specified in docs/settings-spec.md. Third-party plugins (e.g. a dsh-thinking-effort control layer) that want to interoperate with this takeover mechanism should follow the standard docs/takeover-spec.md (Takeover Control Spec).

# ~/.dsh/profiles/web/cordis.patch.yml (or Settings → Plugins → dsh-llm-openai-completions)
llm-openai-completions:
  enabled: true
  providers:
    - local-35b

Your local-35b / Qwen3.6-35B-A3B config in llm-pi-ai stays as-is:

llm-pi-ai:
  providers:
    local-35b:
      api: openai-completions
      baseURL: http://192.168.100.242:8200/v1
      models:
        - id: Qwen3.6-35B-A3B
          reasoningEfforts: { off: null, high: 'high' }
          compat:
            thinkingFormat: qwen        # enable_thinking only, no reasoning_effort

Known limitations (v0.2.0)

  • Non-vision models do not support images: a model that does not declare image input (via input containing image) is rejected with UNSUPPORTED_CONTENT (image bytes live in the attachment service and are only resolved on the vision path).
  • No thinking_budget (deliberate: avoid truncation surprises).
  • The thinking-level selector still comes from the model's reasoning metadata (llm-pi-ai + dsh-thinking-levels' Off/On toggle); this plugin controls the wire behavior.
  • Restart dsh web after install; the wrap re-applies on llm/adapters-updated.

Development

npm install
npm run typecheck   # tsc --noEmit
npm test            # vitest (serialize / sse / translate)
npm run build       # tsc → lib/

E2E check: node <repo>/scripts/... or the local-SSE-server harness in the tests (system role / enable_thinking / </think> split against a fake vLLM).

Upstream proposal

This plugin doubles as a reference implementation for the llm-pi-ai / pi-ai compatibility gaps: custom URLs should default supportsDeveloperRole: false, the receive side should split </think> content, and compat should expose supportsDeveloperRole for gateways that genuinely support it.