DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
L

dsh-llm-motomoto

Llm Motomoto

面向 MotoMoto relay 的 DeepSeek Harness 套件:提供出站身份和 SSE 兼容性,并在 Settings 和 Plugins 详情页中显示状态卡片。提供商路由本身位于用户设置层。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:HandsYe/dsh-llm-motomoto#8e01289c0694edb43146b5f9b34d40c76a5c57b0
README兼容性版本

兼容性与来源证明

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

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/28

版本

1.0.1stable
2026/9/28
1.0.0stable
2026/9/24
0.3.0stable
2026/9/16

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rRemote Bridge@linxin666/dsh-remote-bridgeDSH 远程桥接:主机端通过唯一且精确的 /ios/v1 WebSocket 路由提供协议 v1——会话列表、历史记录基线、提示、包含工具活动的实时回合增量、中断以及进程内代理审批——连接到通过一次性配对的设备Im@xmanrui/dsh-im将微信、飞书、企微、钉钉、QQ、Telegram、WhatsApp、Slack、Discord 和 Matrix 接入 DSH。

README

dsh-llm-motomoto

A DeepSeek Harness bundle for the MotoMoto relay: everything a request must do that the provider route cannot say, plus a status card in Settings → MotoMoto relay and the sidebar's Plugins → dsh-llm-motomoto detail page (dsh >= 0.1.7).

What belongs to whom

This bundle deliberately ships no provider route. The route — protocol, baseURL, credential reference, models — is the user settings layer's to own: the llm-pi-ai: section of ~/.dsh/settings.yaml. dsh-settings resolves that section from the user layer alone when a bundle ships no base, so the MotoMoto group in your model picker is exactly what you configured, and this bundle never fights your edits.

What the bundle contributes is the relay's wire contract, which no route field can express:

Fact (verified live)What the bundle does
MotoMoto's public homepage advertises the OpenAI Chat Completions endpoint (POST /v1/chat/completions) and describes availability as best-effortSet api: openai-completions on your route. Models can be entered manually; /v1/models may not provide a JSON listing
The provider adapter supplies its own attribution headers; some relay deployments require a Codex CLI identityThe runtime fence rewrites user-agent, sets originator: codex_cli_rs, and applies configured extra headers on requests to the relay host
Some Responses-compatible upstreams reject max_output_tokensThe fence deletes configured fields (stripBodyParams) from JSON bodies addressed to the relay
Some SSE deployments keep the connection open after the final frameThe fence closes only after recognized Responses terminal events or the Chat Completions data: [DONE] sentinel. It does not mistake response.done or response.cancelled for a pi-ai terminal event

Everything is scoped to the relay host (motomoto.lol by default): requests to any other host pass through the fence untouched, and unloading the plugin restores the fetch it replaced.

MotoMoto's public homepage describes the API as best-effort, with no availability guarantee. A valid Chat Completions request can still receive an upstream 502; the plugin cannot repair an outage behind the relay. See motomoto.lol.

The settings section

On dsh >= 0.1.7, open Settings → MotoMoto relay (Chinese: 设置 → MotoMoto 中转站) for the route status card, or Plugins → dsh-llm-motomoto from the sidebar. The runtime's live configuration is served under the llm-motomoto entry. On older hosts, the fence's choices live under the llm-motomoto: key of ~/.dsh/settings.yaml:

llm-motomoto:
  host: motomoto.lol              # requests to this host carry the identity below
  userAgent: codex_cli_rs/0.46.0 (Windows 10.0.26200; x86_64) WindowsTerminal
  originator: codex_cli_rs        # empty string omits the header
  headers: {}                     # extra headers, applied last; an empty value removes the header
  stripBodyParams:                # request-body fields the backend rejects
    - max_output_tokens
  announce: true

Every knob except announce is live: a settings change reaches the next request without a restart. announce is read once at activation, so it stays out of the form.

On dsh >= 0.1.7 the Host derives this form from the exported Config schema and serves only the fields marked volatile, so host, userAgent, originator, headers and stripBodyParams carry that mark (liveField in lib/index.js); an unmarked field would be absent from the page, not read-only. The written value is committed into the running configuration reference and read again per request, which is what makes the change apply without a reload. announce is deliberately unmarked and lives in the composed bundle config.

The card itself has a seat per generation: dsh >= 0.1.7 binds the route once through configForms.get('llm-pi-ai') and shares it between settings.section (list id llm-motomoto, with the localized relay title) and plugins.bundle.config, keyed by the package name (dsh-llm-motomoto). Both slots are awaited independently, so either page can be absent or reload without removing the other. Older hosts use the settingsScope binder and settings.plugin.item, keyed by namespace. Both are reached through a dynamic ctx.inject, so the static inject list holds only slots and locale — declaring a service no provider supplies leaves the fiber inactive, which the Host reports as a renderer boot failure for the whole bundle.

The route to configure beside it

The bundle expects the motomoto provider in your user layer, e.g.:

llm-pi-ai:
  providers:
    motomoto:
      displayName: MotoMoto
      apiKeyEnv: MOTOMOTO_API_KEY
      api: openai-completions     # MotoMoto advertises /chat/completions
      baseURL: https://motomoto.lol/v1
      compat:
        supportsDeveloperRole: false
        maxTokensField: max_tokens
      models:
        - id: gpt-5.5
          ...

Route notes: set maxTokensField: max_tokens for Chat Completions relays that expect that field; the adapter may otherwise choose max_completion_tokens for newer OpenAI model IDs. A chatTemplateKwargs: {} left by the settings page is an empty object and is ignored.

Where to look after installing

  1. Model picker — the MotoMoto group, from your route.
  2. Settings → MotoMoto relay (Chinese: 设置 → MotoMoto 中转站) — a direct navigation entry for the live route status (group, endpoint, credential reference, models) on dsh >= 0.1.7.
  3. Sidebar Plugins → dsh-llm-motomoto — the same card on the package detail page. Older hosts still show it under Settings → Plugins.

After editing the hand-written lib/client.js in a linked local install, refresh the current DSH page. Without a build watcher, do not expect automatic client updates.

Security notice

The API key is never stored in this package. Provide it as the MOTOMOTO_API_KEY credential.

Install from this source directory

git clone https://github.com/HandsYe/dsh-llm-motomoto
dsh plugin --profile desktop add "file:<克隆下来的仓库路径>"

Then fully restart the desktop app. Verify the load:

Select-String -Path "$env:APPDATA\DSH Desktop\logs\dsh-*.log" -Pattern 'llm-motomoto' | Select-Object -Last 5

Test

npm install
npm test

28 offline checks: the patch's shape (it loads the runtime half and declares no route), the manifest and secret scan, the client bundle's registration and rendering (including that no static inject names a service this Host no longer provides), the live-field marks the Plugins page derives its form from, and the fence's identity rewrite, header extras, body strip, stream close at each terminal event, error-body pass-through, and unload behavior — plus one check that a live edit takes effect with no installSection and no re-apply, which is the dsh >= 0.1.7 posture.

test/live-probe.mjs (not part of the suite) sends one request shaped exactly like a real agent turn, directly and through the fence:

node test/live-probe.mjs fenced gpt-5.5 high
node test/live-probe.mjs raw gpt-5.5 high

Uninstall

dsh plugin --profile desktop remove dsh-llm-motomoto